maybe another bug:
int maxage = (int)((now.getTime() - expires.getTime()) /1000);
should be
int maxage = (int)((expires.getTime() - now.getTime()) /1000);