summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2014-12-12 10:49:20 -0600
committerPaul Kehrer <paul.l.kehrer@gmail.com>2014-12-15 15:49:49 -0600
commitca941e612ada82ac4d1fb20e979200746eb0a7dc (patch)
tree8e6d5c7c4c5531589b902b4dd3ac2ee5255cc335
parentb2a2050ba84e9cc2499711e24deede7cb446c516 (diff)
downloadcryptography-ca941e612ada82ac4d1fb20e979200746eb0a7dc.tar.gz
try using ASN1_TIME_print to get ASN1_TIME data
-rw-r--r--src/cryptography/hazmat/backends/openssl/x509.py19
-rw-r--r--src/cryptography/hazmat/bindings/openssl/asn1.py1
2 files changed, 6 insertions, 14 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py
index 383322ad5..fa4d1a01e 100644
--- a/src/cryptography/hazmat/backends/openssl/x509.py
+++ b/src/cryptography/hazmat/backends/openssl/x509.py
@@ -76,17 +76,8 @@ class _X509Certificate(object):
return self._parse_asn1_time(asn1_time)
def _parse_asn1_time(self, asn1_time):
- assert asn1_time != self._backend._ffi.NULL
- generalized_time = self._backend._lib.ASN1_TIME_to_generalizedtime(
- asn1_time, self._backend._ffi.NULL
- )
- assert generalized_time != self._backend._ffi.NULL
- generalized_time = self._backend._ffi.gc(
- generalized_time, self._backend._lib.ASN1_GENERALIZEDTIME_free
- )
- time = self._backend._ffi.string(
- self._backend._lib.ASN1_STRING_data(
- self._backend._ffi.cast("ASN1_STRING *", generalized_time)
- )
- ).decode("ascii")
- return datetime.datetime.strptime(time, "%Y%m%d%H%M%SZ")
+ bio = self._backend._create_mem_bio()
+ res = self._backend._lib.ASN1_TIME_print(bio, asn1_time)
+ assert res == 1
+ time = self._backend._read_mem_bio(bio)
+ return datetime.datetime.strptime(time, "%b %d %H:%M:%S %Y GMT")
diff --git a/src/cryptography/hazmat/bindings/openssl/asn1.py b/src/cryptography/hazmat/bindings/openssl/asn1.py
index a73dc325f..37f95e7ed 100644
--- a/src/cryptography/hazmat/bindings/openssl/asn1.py
+++ b/src/cryptography/hazmat/bindings/openssl/asn1.py
@@ -97,6 +97,7 @@ ASN1_TIME *ASN1_TIME_new(void);
void ASN1_TIME_free(ASN1_TIME *);
ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *,
ASN1_GENERALIZEDTIME **);
+int ASN1_TIME_print(BIO *, const ASN1_TIME *);
/* ASN1 UTCTIME */
int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *, time_t);