[EMAIL PROTECTED] - Fri Jun 24 18:23:27 2005]:

> Sometimes it is needed to do something with errors during X.509
> certificate validation. For example, collect all error messages
> in some memory space.
> 
> Unfortunately, verify callback function only takes preverify status
> and a pointer to X509_STORE structure. If this structure had some
> "void* userdata" field - it would be possible to do it without using
> global variables.

Use the ex_data structure.  Some very simple code to get an appropriate 
index, store data and retreive it:

X509_user_data_ex_free(void *obj, void *item, CRYPTO_EX_DATA *ad,
                       int ind,long argl, void *argp)
{
  free(item);
}

int X509_user_data_index()
{
  static index = -1;
  if (index == -1)
    {
      index = X509_STORE_CTX_get_ex_new_index(0, "X509 Store", NULL, 
NULL,
                                              X509_user_data_ex_free);
    }
  return index;
}


/* Store */
X509_STORE_CTX_set_ex_data(ctx, X509_user_data_index(), your_data);

/* Retreive */
your_data = X509_STORE_CTX_set_ex_data(ctx, X509_user_data_index());


Case dismissed.

-- 
Richard Levitte
[EMAIL PROTECTED]
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to