aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndre Caron <andre.l.caron@gmail.com>2015-05-31 16:58:22 -0400
committerIan Cordasco <graffatcolmingov@gmail.com>2015-06-24 13:35:48 -0500
commitb1103d25a72818d7fd055f17d8008d0ac99f8b95 (patch)
treee3866595d5ce9139e81b76d77cd9b96bf82106cc /src
parenta33ea283d74c85076a21e60e1f09e4998f5c7c48 (diff)
downloadcryptography-b1103d25a72818d7fd055f17d8008d0ac99f8b95.tar.gz
cryptography-b1103d25a72818d7fd055f17d8008d0ac99f8b95.tar.bz2
cryptography-b1103d25a72818d7fd055f17d8008d0ac99f8b95.zip
Cleans up some GC semantics.
Diffstat (limited to 'src')
-rw-r--r--src/cryptography/hazmat/backends/openssl/backend.py19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py
index b8b2ab6b..08e56d07 100644
--- a/src/cryptography/hazmat/backends/openssl/backend.py
+++ b/src/cryptography/hazmat/backends/openssl/backend.py
@@ -57,15 +57,24 @@ _OpenSSLError = collections.namedtuple("_OpenSSLError",
def _encode_asn1_int(backend, x):
+ """
+ Converts a python integer to a ASN1_INTEGER. The returned ASN1_INTEGER will
+ not be garbage collected (to support adding them to structs that take
+ ownership of the object). Be sure to register it for GC if it will be
+ discarded after use.
+
+ """
i = backend._lib.ASN1_INTEGER_new()
- # i = backend._ffi.gc(i, backend._lib.ASN1_INTEGER_free)
backend._lib.ASN1_INTEGER_set(i, x)
return i
def _encode_asn1_str(backend, x, n):
+ """
+ Create an ASN1_OCTET_STRING from a Python byte string.
+ """
s = backend._lib.ASN1_OCTET_STRING_new()
- # s = backend._ffi.gc(s, backend._lib.ASN1_OCTET_STRING_free)
+ s = backend._ffi.gc(s, backend._lib.ASN1_OCTET_STRING_free)
backend._lib.ASN1_OCTET_STRING_set(s, x, n)
return s
@@ -97,11 +106,15 @@ def _encode_name(backend, attributes):
def _txt2obj(backend, name):
+ """
+ Converts a Python string with an ASN.1 object ID in dotted form to a
+ ASN1_OBJECT.
+ """
if isinstance(name, six.text_type):
name = name.encode('ascii')
obj = backend._lib.OBJ_txt2obj(name, 1)
assert obj != backend._ffi.NULL
- # NOTE: not sure if we should GC...
+ obj = backend._ffi.gc(obj, backend._lib.ASN1_OBJECT_free)
return obj