diff --git a/src/_cffi_src/openssl/x509.py b/src/_cffi_src/openssl/x509.py index 687148398131fbc126475fb7fa2642f2d7287104_c3JjL19jZmZpX3NyYy9vcGVuc3NsL3g1MDkucHk=..29c1502cc85d96985c8a51aca2a194cd596938c9_c3JjL19jZmZpX3NyYy9vcGVuc3NsL3g1MDkucHk= 100644 --- a/src/_cffi_src/openssl/x509.py +++ b/src/_cffi_src/openssl/x509.py @@ -92,6 +92,7 @@ int X509_REQ_get_attr_by_OBJ(const X509_REQ *, const ASN1_OBJECT *, int); void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *, int, int, void *); ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *, int); +int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *); int X509_REQ_add1_attr_by_txt(X509_REQ *, const char *, int, const unsigned char *, int); diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py index 687148398131fbc126475fb7fa2642f2d7287104_c3JjL2NyeXB0b2dyYXBoeS9oYXptYXQvYmFja2VuZHMvb3BlbnNzbC94NTA5LnB5..29c1502cc85d96985c8a51aca2a194cd596938c9_c3JjL2NyeXB0b2dyYXBoeS9oYXptYXQvYmFja2VuZHMvb3BlbnNzbC94NTA5LnB5 100644 --- a/src/cryptography/hazmat/backends/openssl/x509.py +++ b/src/cryptography/hazmat/backends/openssl/x509.py @@ -498,7 +498,11 @@ attr = self._backend._lib.X509_REQ_get_attr(self._x509_req, pos) self._backend.openssl_assert(attr != self._backend._ffi.NULL) - asn1_type = self._backend._lib.X509_ATTRIBUTE_get0_type(attr, pos) + # We don't support multiple valued attributes for now. + self._backend.openssl_assert( + self._backend._lib.X509_ATTRIBUTE_count(attr) == 1 + ) + asn1_type = self._backend._lib.X509_ATTRIBUTE_get0_type(attr, 0) self._backend.openssl_assert(asn1_type != self._backend._ffi.NULL) # We need this to ensure that our C type cast is safe. # Also this should always be a sane string type, but we'll see if @@ -513,7 +517,7 @@ )) data = self._backend._lib.X509_ATTRIBUTE_get0_data( - attr, pos, asn1_type.type, self._backend._ffi.NULL + attr, 0, asn1_type.type, self._backend._ffi.NULL ) self._backend.openssl_assert(data != self._backend._ffi.NULL) # This cast is safe iff we assert on the type above to ensure