gnutls_x509_crt_get_expiration_time problem on window
Simon Josefsson
simon at josefsson.org
Sun Apr 19 21:38:18 CEST 2009
"Code Join" <info at codejoin.com> writes:
> Hi all,
> first of all: many thanks, gnutls is a precious work. .
> I'm using the 2.7.3 library with Microsoft Visual C++ 2008 Express. I have build on my own a server application and a client application using some code snippets from the examples programs included in the installation pack. Everything is fine but I am not able to print the activation/expiration time of my client certificate (I have created it using the certtol utility).
>
> If I run certtool to view the client certificate information I can see them.
>
> Here is my code:
> ...
> expiration_time = gnutls_x509_crt_get_expiration_time(cert);
> activation_time = gnutls_x509_crt_get_activation_time(cert);
> ...
>
> Form1.display.Append("\tCertificate is valid since: "+xstring( ctime(&activation_time))+"\n");
> Form1.display.Append("\tCertificate expires: "+xstring( ctime(&expiration_time))+"\n");
> ...
>
> It seems like those functions return strange values rather good or bad (-1 ) values
Strange that certtool works. Here is the code that certtool uses:
time_t tim;
tim = gnutls_x509_crt_get_activation_time (cert);
{
char s[42];
size_t max = sizeof (s);
struct tm t;
if (gmtime_r (&tim, &t) == NULL)
addf (str, "error: gmtime_r (%ld)\n", (unsigned long) tim);
else if (strftime (s, max, "%a %b %d %H:%M:%S UTC %Y", &t) == 0)
addf (str, "error: strftime (%ld)\n", (unsigned long) tim);
else
addf (str, _("\t\tNot Before: %s\n"), s);
}
Are you sure this doesn't work in your application?
Hm. Maybe there is a 64-bit issue. What values does it return for you?
Can you print just the integer returned by the functions, like this:
printf ("foo: %ld\n", (long) gnutls_x509_crt_get_activation_time (cert));
/Simon
More information about the Gnutls-devel
mailing list