X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=crypto%2Fx509v3%2Fv3_lib.c;h=268617303f324f56aa60b34315babd040cd4784f;hb=1f0f37b0a434cddc87d5c891cc897530338942f6;hp=bc159b4432cbe8075dca78142bd07d4dd346cd8e;hpb=9aeaf1b4a7924cabf829bf57d0ca87d311cd2dfe;p=oweals%2Fopenssl.git diff --git a/crypto/x509v3/v3_lib.c b/crypto/x509v3/v3_lib.c index bc159b4432..268617303f 100644 --- a/crypto/x509v3/v3_lib.c +++ b/crypto/x509v3/v3_lib.c @@ -57,15 +57,14 @@ */ /* X509 v3 extension utilities */ -#include -#include -#include -#include +#include +#include "cryptlib.h" +#include "conf.h" #include "x509v3.h" static STACK *ext_list = NULL; -static ext_cmp(X509V3_EXT_METHOD **a, X509V3_EXT_METHOD **b); +static int ext_cmp(X509V3_EXT_METHOD **a, X509V3_EXT_METHOD **b); static void ext_list_free(X509V3_EXT_METHOD *ext); int X509V3_EXT_add(ext) @@ -108,7 +107,6 @@ X509_EXTENSION *ext; return X509V3_EXT_get_nid(nid); } -extern X509V3_EXT_METHOD v3_bcons, v3_nscert, v3_key_usage, v3_ext_ku, v3_ns_ia5_list[]; int X509V3_EXT_add_list(extlist) X509V3_EXT_METHOD *extlist; @@ -132,7 +130,7 @@ int nid_to, nid_from; } *tmpext = *ext; tmpext->ext_nid = nid_to; - tmpext->ext_flags = X509V3_EXT_DYNAMIC; + tmpext->ext_flags |= X509V3_EXT_DYNAMIC; return 1; } @@ -147,12 +145,37 @@ X509V3_EXT_METHOD *ext; if(ext->ext_flags & X509V3_EXT_DYNAMIC) Free(ext); } +extern X509V3_EXT_METHOD v3_bcons, v3_nscert, v3_key_usage, v3_ext_ku; +extern X509V3_EXT_METHOD v3_pkey_usage_period; +extern X509V3_EXT_METHOD v3_ns_ia5_list[], v3_alt[], v3_skey_id, v3_akey_id; + +extern X509V3_EXT_METHOD v3_crl_num, v3_crl_reason; + int X509V3_add_standard_extensions() { X509V3_EXT_add_list(v3_ns_ia5_list); + X509V3_EXT_add_list(v3_alt); X509V3_EXT_add(&v3_bcons); X509V3_EXT_add(&v3_nscert); X509V3_EXT_add(&v3_key_usage); X509V3_EXT_add(&v3_ext_ku); + X509V3_EXT_add(&v3_skey_id); + X509V3_EXT_add(&v3_akey_id); + X509V3_EXT_add(&v3_pkey_usage_period); + X509V3_EXT_add(&v3_crl_num); + X509V3_EXT_add(&v3_crl_reason); return 1; } + +/* Return an extension internal structure */ + +char *X509V3_EXT_d2i(ext) +X509_EXTENSION *ext; +{ + X509V3_EXT_METHOD *method; + unsigned char *p; + if(!(method = X509V3_EXT_get(ext)) || !method->d2i) return NULL; + p = ext->value->data; + return method->d2i(NULL, &p, ext->value->length); +} +