diff options
author | Alex Gaynor <alex.gaynor@gmail.com> | 2015-04-11 09:21:33 -0400 |
---|---|---|
committer | Alex Gaynor <alex.gaynor@gmail.com> | 2015-04-11 09:21:33 -0400 |
commit | 412a273d45c00dd7a58fe64390fddad74d12f453 (patch) | |
tree | 289d73a81087fcacc0b3665ee85f177d05288e55 /tests | |
parent | de2c10753787f3cc563cf2880454ddc5bd945b18 (diff) | |
parent | 6c7dd24f350435f6362021822dcd7e51902088ec (diff) | |
download | cryptography-412a273d45c00dd7a58fe64390fddad74d12f453.tar.gz cryptography-412a273d45c00dd7a58fe64390fddad74d12f453.tar.bz2 cryptography-412a273d45c00dd7a58fe64390fddad74d12f453.zip |
Merge pull request #1823 from reaperhulk/x509-ski
add subjectkeyidentifier support
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_x509_ext.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py index c1512d5f..194b18c8 100644 --- a/tests/test_x509_ext.py +++ b/tests/test_x509_ext.py @@ -4,10 +4,13 @@ from __future__ import absolute_import, division, print_function +import binascii import os import pytest +import six + from cryptography import x509 from cryptography.hazmat.backends.interfaces import RSABackend, X509Backend @@ -132,6 +135,52 @@ class TestKeyUsage(object): ku.decipher_only +class TestSubjectKeyIdentifier(object): + def test_properties(self): + value = binascii.unhexlify(b"092384932230498bc980aa8098456f6ff7ff3ac9") + ski = x509.SubjectKeyIdentifier(value) + assert ski.digest == value + + def test_repr(self): + ski = x509.SubjectKeyIdentifier( + binascii.unhexlify(b"092384932230498bc980aa8098456f6ff7ff3ac9") + ) + ext = x509.Extension(x509.OID_SUBJECT_KEY_IDENTIFIER, False, ski) + if six.PY3: + assert repr(ext) == ( + "<Extension(oid=<ObjectIdentifier(oid=2.5.29.14, name=subjectK" + "eyIdentifier)>, critical=False, value=<SubjectKeyIdentifier(d" + "igest=b\'\\t#\\x84\\x93\"0I\\x8b\\xc9\\x80\\xaa\\x80\\x98Eoo" + "\\xf7\\xff:\\xc9\')>)>" + ) + else: + assert repr(ext) == ( + "<Extension(oid=<ObjectIdentifier(oid=2.5.29.14, name=subjectK" + "eyIdentifier)>, critical=False, value=<SubjectKeyIdentifier(d" + "igest=\'\\t#\\x84\\x93\"0I\\x8b\\xc9\\x80\\xaa\\x80\\x98Eoo" + "\\xf7\\xff:\\xc9\')>)>" + ) + + def test_eq(self): + ski = x509.SubjectKeyIdentifier( + binascii.unhexlify(b"092384932230498bc980aa8098456f6ff7ff3ac9") + ) + ski2 = x509.SubjectKeyIdentifier( + binascii.unhexlify(b"092384932230498bc980aa8098456f6ff7ff3ac9") + ) + assert ski == ski2 + + def test_ne(self): + ski = x509.SubjectKeyIdentifier( + binascii.unhexlify(b"092384932230498bc980aa8098456f6ff7ff3ac9") + ) + ski2 = x509.SubjectKeyIdentifier( + binascii.unhexlify(b"aa8098456f6ff7ff3ac9092384932230498bc980") + ) + assert ski != ski2 + assert ski != object() + + class TestBasicConstraints(object): def test_ca_not_boolean(self): with pytest.raises(TypeError): @@ -345,3 +394,34 @@ class TestBasicConstraintsExtension(object): assert ext is not None assert ext.critical is False assert ext.value.ca is False + + +@pytest.mark.requires_backend_interface(interface=RSABackend) +@pytest.mark.requires_backend_interface(interface=X509Backend) +class TestSubjectKeyIdentifierExtension(object): + def test_subject_key_identifier(self, backend): + cert = _load_cert( + os.path.join("x509", "PKITS_data", "certs", "GoodCACert.crt"), + x509.load_der_x509_certificate, + backend + ) + ext = cert.extensions.get_extension_for_oid( + x509.OID_SUBJECT_KEY_IDENTIFIER + ) + ski = ext.value + assert ext is not None + assert ext.critical is False + assert ski.digest == binascii.unhexlify( + b"580184241bbc2b52944a3da510721451f5af3ac9" + ) + + def test_no_subject_key_identifier(self, backend): + cert = _load_cert( + os.path.join("x509", "custom", "bc_path_length_zero.pem"), + x509.load_pem_x509_certificate, + backend + ) + with pytest.raises(x509.ExtensionNotFound): + cert.extensions.get_extension_for_oid( + x509.OID_SUBJECT_KEY_IDENTIFIER + ) |