aboutsummaryrefslogtreecommitdiffstats
path: root/src/_cffi_src/openssl
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2016-03-11 17:31:06 -0400
committerPaul Kehrer <paul.l.kehrer@gmail.com>2016-03-11 17:31:06 -0400
commit9fac155adcd593289f7a97577b3a2782da65d663 (patch)
treefa685695a7c308282204d39c9c277c13142f3d7a /src/_cffi_src/openssl
parente40a03f61e907d0de5fb07624cb6306323de543d (diff)
downloadcryptography-9fac155adcd593289f7a97577b3a2782da65d663.tar.gz
cryptography-9fac155adcd593289f7a97577b3a2782da65d663.tar.bz2
cryptography-9fac155adcd593289f7a97577b3a2782da65d663.zip
add 5 accessor functions that exist in 1.1.0 to help opaque x509 structs
X509_REVOKED_get0_serialNumber X509_REVOKED_get0_revocationDate X509_CRL_get0_signature i2d_re_X509_REQ_tbs i2d_re_X509_CRL_tbs X509_REQ_get0_signature
Diffstat (limited to 'src/_cffi_src/openssl')
-rw-r--r--src/_cffi_src/openssl/x509.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/_cffi_src/openssl/x509.py b/src/_cffi_src/openssl/x509.py
index 4cdc8274..72e63f7f 100644
--- a/src/_cffi_src/openssl/x509.py
+++ b/src/_cffi_src/openssl/x509.py
@@ -349,6 +349,15 @@ ASN1_OBJECT *sk_ASN1_OBJECT_value(Cryptography_STACK_OF_ASN1_OBJECT *, int);
void sk_ASN1_OBJECT_free(Cryptography_STACK_OF_ASN1_OBJECT *);
Cryptography_STACK_OF_ASN1_OBJECT *sk_ASN1_OBJECT_new_null(void);
int sk_ASN1_OBJECT_push(Cryptography_STACK_OF_ASN1_OBJECT *, ASN1_OBJECT *);
+
+/* these functions were added in 1.1.0 */
+ASN1_INTEGER *X509_REVOKED_get0_serialNumber(X509_REVOKED *);
+ASN1_TIME *X509_REVOKED_get0_revocationDate(X509_REVOKED *);
+void X509_CRL_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg,
+ X509_CRL *crl);
+int i2d_re_X509_REQ_tbs(X509_REQ *, unsigned char **);
+int i2d_re_X509_CRL_tbs(X509_CRL *, unsigned char **);
+void X509_REQ_get0_signature(ASN1_BIT_STRING **, X509_ALGOR **, X509_REQ *);
"""
CUSTOMIZATIONS = """
@@ -377,4 +386,51 @@ X509_REVOKED *Cryptography_X509_REVOKED_dup(X509_REVOKED *rev) {
return ASN1_item_dup(ASN1_ITEM_rptr(X509_REVOKED), rev);
}
+/* Added in 1.1.0 but we need it in all versions now due to the great
+ opaquing. */
+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+/* from x509/x509_req.c */
+void X509_REQ_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg,
+ X509_REQ *req)
+{
+ if (psig != NULL)
+ *psig = req->signature;
+ if (palg != NULL)
+ /* In 1.0.2 and below sig_alg is a pointer in the struct, so
+ we don't want to pass by reference. */
+ *palg = req->sig_alg;
+}
+int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp)
+{
+ req->req_info->enc.modified = 1;
+ return i2d_X509_REQ_INFO(req->req_info, pp);
+}
+int i2d_re_X509_CRL_tbs(X509_CRL *crl, unsigned char **pp) {
+ crl->crl->enc.modified = 1;
+ return i2d_X509_CRL_INFO(crl->crl, pp);
+}
+
+void X509_CRL_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg,
+ X509_CRL *crl)
+{
+ if (psig != NULL)
+ /* In 1.0.2 and below sigis a pointer in the struct, so
+ we don't want to pass by reference. */
+ *psig = crl->signature;
+ if (palg != NULL)
+ /* In 1.0.2 and below sig_alg is a pointer in the struct, so
+ we don't want to pass by reference. */
+ *palg = crl->sig_alg;
+}
+ASN1_TIME *X509_REVOKED_get0_revocationDate(X509_REVOKED *x)
+{
+ return x->revocationDate;
+}
+ASN1_INTEGER *X509_REVOKED_get0_serialNumber(X509_REVOKED *x)
+{
+ /* In 1.0.2 and below serialNumber is a pointer in the struct, so
+ we don't want to pass by reference. */
+ return x->serialNumber;
+}
+#endif
"""