New functions to retrieve certificate signatures and signature OID NID.
authorDr. Stephen Henson <steve@openssl.org>
Wed, 26 Dec 2012 14:31:05 +0000 (14:31 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Wed, 26 Dec 2012 14:31:05 +0000 (14:31 +0000)
(backport from HEAD)

CHANGES
crypto/asn1/x_x509.c
crypto/x509/x509.h

diff --git a/CHANGES b/CHANGES
index 8f1baae41834a6710bb69bcbcceb27d35368158a..9ebc5a3f7c66575ea602f06b4f89be33616b3409 100644 (file)
--- 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
index de3df9eb51c18401592f169e741fb5b867795d90..fd5e6c6428f29837548d54ad603ec71ff5143dbd 100644 (file)
@@ -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);
+       }
index 092dd7450d3b0aefab4802daea0572ac85c48e52..ea310b4e80bdef6e85b05f5dd0104bf5df6ce413 100644 (file)
@@ -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);