gnutls-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gnutls_x509_crt_get_expiration_time problem on window


From: Simon Josefsson
Subject: Re: gnutls_x509_crt_get_expiration_time problem on window
Date: Sun, 19 Apr 2009 21:38:18 +0200
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.90 (gnu/linux)

"Code Join" <address@hidden> 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]