diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-05-01 23:01:40 -0500 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-05-01 23:02:48 -0500 |
commit | cf2a5a504e8082477788aa627f2e8f132dbc4461 (patch) | |
tree | 7bff0cdcbf792f395034e7564ca7afa3e8807acf | |
parent | e06cab4de07897fecf6da40b29b460f7d4c258d3 (diff) | |
download | cryptography-cf2a5a504e8082477788aa627f2e8f132dbc4461.tar.gz cryptography-cf2a5a504e8082477788aa627f2e8f132dbc4461.tar.bz2 cryptography-cf2a5a504e8082477788aa627f2e8f132dbc4461.zip |
improve if/elif chain, add some comments
-rw-r--r-- | src/cryptography/hazmat/backends/openssl/x509.py | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py index a3cf4618..13684bcc 100644 --- a/src/cryptography/hazmat/backends/openssl/x509.py +++ b/src/cryptography/hazmat/backends/openssl/x509.py @@ -115,14 +115,19 @@ def _build_general_name(backend, gn): name, address = parseaddr(data) parts = address.split("@") if name or len(parts) > 2: + # parseaddr has found a name (e.g. Name <email>) or the split + # has found more than 2 parts (which means more than one @ sign) raise ValueError("Invalid rfc822name value") + elif len(parts) == 1: + # Single label email name. This is valid for local delivery. No + # IDNA decoding can be done since there is no domain component. + return x509.RFC822Name(address) else: - if len(parts) == 1: - return x509.RFC822Name(address) - else: - return x509.RFC822Name( - parts[0] + u"@" + idna.decode(parts[1]) - ) + # A normal email of the form user@domain.com. Let's attempt to + # decode the domain component and return the entire address. + return x509.RFC822Name( + parts[0] + u"@" + idna.decode(parts[1]) + ) else: # otherName, x400Address or ediPartyName raise x509.UnsupportedGeneralNameType( |