diff options
Diffstat (limited to 'crypto/x509v3/v3_purp.c')
-rw-r--r-- | crypto/x509v3/v3_purp.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/crypto/x509v3/v3_purp.c b/crypto/x509v3/v3_purp.c index 2d5a29fbc8..e5231b3231 100644 --- a/crypto/x509v3/v3_purp.c +++ b/crypto/x509v3/v3_purp.c @@ -132,6 +132,7 @@ int X509_check_purpose(X509 *x, int id, int ca) x509v3_cache_extensions(x); CRYPTO_w_unlock(CRYPTO_LOCK_X509); } + /* Return if side-effect only call */ if (id == -1) return 1; idx = X509_PURPOSE_get_by_id(id); @@ -850,12 +851,14 @@ int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid) uint32_t X509_get_extension_flags(X509 *x) { + /* Call for side-effect of computing hash and caching extensions */ X509_check_purpose(x, -1, -1); return x->ex_flags; } uint32_t X509_get_key_usage(X509 *x) { + /* Call for side-effect of computing hash and caching extensions */ X509_check_purpose(x, -1, -1); if (x->ex_flags & EXFLAG_KUSAGE) return x->ex_kusage; @@ -864,6 +867,7 @@ uint32_t X509_get_key_usage(X509 *x) uint32_t X509_get_extended_key_usage(X509 *x) { + /* Call for side-effect of computing hash and caching extensions */ X509_check_purpose(x, -1, -1); if (x->ex_flags & EXFLAG_XKUSAGE) return x->ex_xkusage; @@ -872,6 +876,7 @@ uint32_t X509_get_extended_key_usage(X509 *x) const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x) { + /* Call for side-effect of computing hash and caching extensions */ X509_check_purpose(x, -1, -1); return x->skid; } |