diff options
author | Alex Gaynor <alex.gaynor@gmail.com> | 2015-12-26 16:47:20 -0500 |
---|---|---|
committer | Alex Gaynor <alex.gaynor@gmail.com> | 2015-12-26 16:47:20 -0500 |
commit | 15bd026fde49861dbbd241c4e1d3bc1ab65e00fd (patch) | |
tree | bbcae80f3609f29ca90bda78a7144c2c0ac43135 | |
parent | 6cbdb348230d802b100981fbef0793cf65306797 (diff) | |
parent | 8adb59643b7c1219cd286c53243a401b1da0f285 (diff) | |
download | cryptography-15bd026fde49861dbbd241c4e1d3bc1ab65e00fd.tar.gz cryptography-15bd026fde49861dbbd241c4e1d3bc1ab65e00fd.tar.bz2 cryptography-15bd026fde49861dbbd241c4e1d3bc1ab65e00fd.zip |
Merge pull request #2585 from reaperhulk/san-iterable
support indexing on GeneralNames and SubjectAlternativeName
-rw-r--r-- | src/cryptography/x509/extensions.py | 6 | ||||
-rw-r--r-- | tests/test_x509_ext.py | 26 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/cryptography/x509/extensions.py b/src/cryptography/x509/extensions.py index 4681629c..10b8da41 100644 --- a/src/cryptography/x509/extensions.py +++ b/src/cryptography/x509/extensions.py @@ -897,6 +897,9 @@ class GeneralNames(object): def __ne__(self, other): return not self == other + def __getitem__(self, idx): + return self._general_names[idx] + @utils.register_interface(ExtensionType) class SubjectAlternativeName(object): @@ -923,6 +926,9 @@ class SubjectAlternativeName(object): return self._general_names == other._general_names + def __getitem__(self, idx): + return self._general_names[idx] + def __ne__(self, other): return not self == other diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py index 8aaf8059..bfa94ec2 100644 --- a/tests/test_x509_ext.py +++ b/tests/test_x509_ext.py @@ -1497,6 +1497,19 @@ class TestGeneralNames(object): x509.DNSName(u"crypto.local"), ] + def test_indexing(self): + gn = x509.GeneralNames([ + x509.DNSName(u"cryptography.io"), + x509.DNSName(u"crypto.local"), + x509.DNSName(u"another.local"), + x509.RFC822Name(u"email@another.local"), + x509.UniformResourceIdentifier(u"http://another.local"), + ]) + assert gn[-1] == gn[4] + assert len(gn[1:3]) == 2 + assert gn[2:4][0] == gn[2] + assert gn[2:5:2][1] == gn[4] + def test_invalid_general_names(self): with pytest.raises(TypeError): x509.GeneralNames( @@ -1651,6 +1664,19 @@ class TestSubjectAlternativeName(object): x509.DNSName(u"crypto.local"), ] + def test_indexing(self): + san = x509.SubjectAlternativeName([ + x509.DNSName(u"cryptography.io"), + x509.DNSName(u"crypto.local"), + x509.DNSName(u"another.local"), + x509.RFC822Name(u"email@another.local"), + x509.UniformResourceIdentifier(u"http://another.local"), + ]) + assert san[-1] == san[4] + assert len(san[1:3]) == 2 + assert san[2:4][0] == san[2] + assert san[2:5:2][1] == san[4] + def test_invalid_general_names(self): with pytest.raises(TypeError): x509.SubjectAlternativeName( |