mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
Backport of Creation-Date parameter for unattended key generation.
This commit is contained in:
parent
a4fd67937c
commit
631a0de335
5 changed files with 185 additions and 51 deletions
|
@ -152,6 +152,57 @@ isotimestamp (u32 stamp)
|
|||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
/* Scan am ISO timestamp and return an Epoch based timestamp. The only
|
||||
supported format is "yyyymmddThhmmss" delimited by white space, nul, a
|
||||
colon or a comma. Returns 0 for an invalid string. */
|
||||
u32
|
||||
isotime2seconds (const char *string)
|
||||
{
|
||||
const char *s;
|
||||
int year, month, day, hour, minu, sec;
|
||||
struct tm tmbuf;
|
||||
int i;
|
||||
time_t result;
|
||||
|
||||
if (!*string)
|
||||
return 0;
|
||||
for (s=string, i=0; i < 8; i++, s++)
|
||||
if (!digitp (s))
|
||||
return 0;
|
||||
if (*s != 'T')
|
||||
return 0;
|
||||
for (s++, i=9; i < 15; i++, s++)
|
||||
if (!digitp (s))
|
||||
return 0;
|
||||
if ( !(!*s || (isascii (*s) && isspace(*s)) || *s == ':' || *s == ','))
|
||||
return 0; /* Wrong delimiter. */
|
||||
|
||||
year = atoi_4 (string);
|
||||
month = atoi_2 (string + 4);
|
||||
day = atoi_2 (string + 6);
|
||||
hour = atoi_2 (string + 9);
|
||||
minu = atoi_2 (string + 11);
|
||||
sec = atoi_2 (string + 13);
|
||||
|
||||
/* Basic checks. */
|
||||
if (year < 1970 || month < 1 || month > 12 || day < 1 || day > 31
|
||||
|| hour > 23 || minu > 59 || sec > 61 )
|
||||
return 0;
|
||||
|
||||
memset (&tmbuf, 0, sizeof tmbuf);
|
||||
tmbuf.tm_sec = sec;
|
||||
tmbuf.tm_min = minu;
|
||||
tmbuf.tm_hour = hour;
|
||||
tmbuf.tm_mday = day;
|
||||
tmbuf.tm_mon = month-1;
|
||||
tmbuf.tm_year = year - 1900;
|
||||
tmbuf.tm_isdst = -1;
|
||||
result = timegm (&tmbuf);
|
||||
return (result == (time_t)(-1))? 0 : (u32)result;
|
||||
}
|
||||
|
||||
|
||||
/****************
|
||||
* Note: this function returns local time
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue