On Mon, Jul 05, 2004, Marcus Carey wrote:

> 
> 

<snip>
> 
> 
>     cnt = X509_get_ext_count(cert);
>     pos = X509_get_ext_by_NID(cert, NID_key_usage, -1);
>     keyUsage = X509_get_ext(cert,pos);
> 
>     /* This is just a generic print key usage function */
>     /* See the OpenSSL source for more details */
>     /* See v3_prn.c  openssl/crypto/x509v3/v3_prn.c */
> 
>     method = X509V3_EXT_get(keyUsage);
> 
>     if(method->it)
>         Usage =
> ASN1_item_d2i(NULL,&keyUsage->value->data,keyUsage->value->length,
> ASN1_ITEM_ptr(method->it));
>     else
>         Usage = method->d2i(NULL, &keyUsage->value->data,
> keyUsage->value->length);
> 

Don't do this. The calls in internal library files make use of structure
internals which aren't guaranteed to change. Some source lifted code from
v3_prn.c before which crashed when the new ASN1 code was written.

All of the preceding code can be replaced with the portable call:

Usage = X509_get_ext_d2i(cert, NID_key_usage, NULL, NULL);


>     if(method->i2v)
>     {
> 
>         int cnt = 0;
>         nval = method->i2v(method, Usage, NULL);
>         cnt = sk_CONF_VALUE_num(nval);         // The number of key usage
> extensions
>         uval = sk_CONF_VALUE_value(nval, 0); // First ext
>         printf("%s\n",uval->name);   /* You can save uval->name to a buffer
> or use a pointer value */
>         uval = sk_CONF_VALUE_value(nval, 1); // Second ext
>         printf("%s\n",uval->name);
> 
>     }
> 
> }
> 

Similar comment above. If the OP just wants a human readable version of the
extension a memory BIO and printing the extension to it will do.

Steve.
--
Dr Stephen N. Henson. Email, S/MIME and PGP keys: see homepage
OpenSSL project core developer and freelance consultant.
Funding needed! Details on homepage.
Homepage: http://www.drh-consultancy.demon.co.uk
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to