From bd9fc1d6673f110411d03d2c2c80a25dbb5339dc Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Wed, 26 Dec 2012 14:31:05 +0000 Subject: [PATCH] New functions to retrieve certificate signatures and signature OID NID. (backport from HEAD) --- CHANGES | 4 ++++ crypto/asn1/x_x509.c | 14 ++++++++++++++ crypto/x509/x509.h | 4 ++++ 3 files changed, 22 insertions(+) diff --git a/CHANGES b/CHANGES index 8f1baae418..9ebc5a3f7c 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,10 @@ Changes between 1.0.1 and 1.0.2 [xx XXX xxxx] + *) New functions to retrieve certificate signature and signature + OID NID. + [Steve Henson] + *) Add new "valid_flags" field to CERT_PKEY structure which determines what the certificate can be used for (if anything). Set valid_flags field in new tls1_check_chain function. Simplify ssl_set_cert_masks which used diff --git a/crypto/asn1/x_x509.c b/crypto/asn1/x_x509.c index de3df9eb51..fd5e6c6428 100644 --- a/crypto/asn1/x_x509.c +++ b/crypto/asn1/x_x509.c @@ -192,3 +192,17 @@ int i2d_X509_AUX(X509 *a, unsigned char **pp) if(a) length += i2d_X509_CERT_AUX(a->aux, pp); return length; } + +void X509_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg, + const X509 *x) + { + if (psig) + *psig = x->signature; + if (palg) + *palg = x->sig_alg; + } + +int X509_get_signature_nid(const X509 *x) + { + return OBJ_obj2nid(x->sig_alg->algorithm); + } diff --git a/crypto/x509/x509.h b/crypto/x509/x509.h index 092dd7450d..ea310b4e80 100644 --- a/crypto/x509/x509.h +++ b/crypto/x509/x509.h @@ -848,6 +848,10 @@ void *X509_get_ex_data(X509 *r, int idx); int i2d_X509_AUX(X509 *a,unsigned char **pp); X509 * d2i_X509_AUX(X509 **a,const unsigned char **pp,long length); +void X509_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg, + const X509 *x); +int X509_get_signature_nid(const X509 *x); + int X509_alias_set1(X509 *x, unsigned char *name, int len); int X509_keyid_set1(X509 *x, unsigned char *id, int len); unsigned char * X509_alias_get0(X509 *x, int *len); -- 2.34.1