diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-04-30 10:23:33 -0500 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-04-30 18:34:14 -0500 |
commit | e06cab4de07897fecf6da40b29b460f7d4c258d3 (patch) | |
tree | 6700aad4a108f75d9d4dffbc1f6f0eca0eca7a82 /src | |
parent | b1501bce9116617ab564c85592d37926c8069b87 (diff) | |
download | cryptography-e06cab4de07897fecf6da40b29b460f7d4c258d3.tar.gz cryptography-e06cab4de07897fecf6da40b29b460f7d4c258d3.tar.bz2 cryptography-e06cab4de07897fecf6da40b29b460f7d4c258d3.zip |
add support for rfc822name general names
Diffstat (limited to 'src')
-rw-r--r-- | src/cryptography/hazmat/backends/openssl/x509.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py index 5558f140..a3cf4618 100644 --- a/src/cryptography/hazmat/backends/openssl/x509.py +++ b/src/cryptography/hazmat/backends/openssl/x509.py @@ -15,6 +15,7 @@ from __future__ import absolute_import, division, print_function import datetime import ipaddress +from email.utils import parseaddr import idna @@ -107,6 +108,21 @@ def _build_general_name(backend, gn): return x509.DirectoryName( _build_x509_name(backend, gn.d.directoryName) ) + elif gn.type == backend._lib.GEN_EMAIL: + data = backend._ffi.buffer( + gn.d.rfc822Name.data, gn.d.rfc822Name.length + )[:].decode("ascii") + name, address = parseaddr(data) + parts = address.split("@") + if name or len(parts) > 2: + raise ValueError("Invalid rfc822name value") + else: + if len(parts) == 1: + return x509.RFC822Name(address) + else: + return x509.RFC822Name( + parts[0] + u"@" + idna.decode(parts[1]) + ) else: # otherName, x400Address or ediPartyName raise x509.UnsupportedGeneralNameType( |