code_junkie

Openssl: Querying extensions on X509 certificates

Nov 14th, 2011
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx)
  2.  
  3. X509* x509_cert = ...
  4. // without X509_check_ca x509_cert->ex_kusage always returns 0 (no idea why)
  5. int ca = X509_check_ca(x509_cert);
  6. unsigned long usage = x509_cert->ex_kusage;
  7.  
  8. SC_PKCS15INIT_X509_DIGITAL_SIGNATURE 0x0080UL
  9. SC_PKCS15INIT_X509_NON_REPUDIATION 0x0040UL
  10. SC_PKCS15INIT_X509_KEY_ENCIPHERMENT 0x0020UL
  11. SC_PKCS15INIT_X509_DATA_ENCIPHERMENT 0x0010UL
  12. SC_PKCS15INIT_X509_KEY_AGREEMENT 0x0008UL
  13. SC_PKCS15INIT_X509_KEY_CERT_SIGN 0x0004UL
  14. SC_PKCS15INIT_X509_CRL_SIGN 0x0002UL
  15.  
  16. /* Handle key usage */
  17. if((usage=X509_get_ext_d2i(x, NID_key_usage, NULL, NULL))) {
  18. if(usage->length > 0) {
  19. x->ex_kusage = usage->data[0];
  20. if(usage->length > 1)
  21. x->ex_kusage |= usage->data[1] << 8;
  22. } else x->ex_kusage = 0;
  23. x->ex_flags |= EXFLAG_KUSAGE;
  24. ASN1_BIT_STRING_free(usage);
  25. }
Add Comment
Please, Sign In to add comment