diff options
Diffstat (limited to 'tests/test_ocsp.py')
-rw-r--r-- | tests/test_ocsp.py | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/tests/test_ocsp.py b/tests/test_ocsp.py new file mode 100644 index 0000000..c3492c1 --- /dev/null +++ b/tests/test_ocsp.py @@ -0,0 +1,155 @@ +# coding: utf-8 +from __future__ import unicode_literals, division, absolute_import, print_function + +import unittest +import sys +import os +from datetime import datetime + +from asn1crypto import ocsp, util +from ._unittest_compat import patch + +patch() + +if sys.version_info < (3,): + byte_cls = str +else: + byte_cls = bytes + + +tests_root = os.path.dirname(__file__) +fixtures_dir = os.path.join(tests_root, 'fixtures') + + +class OCSPTests(unittest.TestCase): + + def test_parse_request(self): + with open(os.path.join(fixtures_dir, 'ocsp_request'), 'rb') as f: + request = ocsp.OCSPRequest.load(f.read()) + + tbs_request = request['tbs_request'] + request_list = tbs_request['request_list'] + single_request = request_list[0] + req_cert = single_request['req_cert'] + + self.assertEqual( + 'v1', + tbs_request['version'].native + ) + self.assertEqual( + None, + tbs_request['requestor_name'].native + ) + self.assertEqual( + 'sha1', + req_cert['hash_algorithm']['algorithm'].native + ) + self.assertEqual( + None, + req_cert['hash_algorithm']['parameters'].native + ) + self.assertEqual( + b'\xAA\x2B\x03\x14\xAF\x64\x2E\x13\x0E\xD6\x92\x25\xE3\xFF\x2A\xBA\xD7\x3D\x62\x30', + req_cert['issuer_name_hash'].native + ) + self.assertEqual( + b'\xDE\xCF\x5C\x50\xB7\xAE\x02\x1F\x15\x17\xAA\x16\xE8\x0D\xB5\x28\x9D\x6A\x5A\xF3', + req_cert['issuer_key_hash'].native + ) + self.assertEqual( + 130338219198307073574879940486642352162, + req_cert['serial_number'].native + ) + + def test_parse_response(self): + with open(os.path.join(fixtures_dir, 'ocsp_response'), 'rb') as f: + response = ocsp.OCSPResponse.load(f.read()) + + response_bytes = response['response_bytes'] + basic_ocsp_response = response_bytes['response'].parsed + tbs_response_data = basic_ocsp_response['tbs_response_data'] + responder_id = tbs_response_data['responder_id'] + single_response = tbs_response_data['responses'][0] + cert_id = single_response['cert_id'] + cert = basic_ocsp_response['certs'][0] + + self.assertEqual( + 'successful', + response['response_status'].native + ) + self.assertEqual( + 'basic_ocsp_response', + response_bytes['response_type'].native + ) + self.assertEqual( + 'sha1_rsa', + basic_ocsp_response['signature_algorithm']['algorithm'].native + ) + self.assertEqual( + None, + basic_ocsp_response['signature_algorithm']['parameters'].native + ) + self.assertEqual( + 'v1', + tbs_response_data['version'].native + ) + self.assertEqual( + b'\x4E\xC5\x63\xD6\xB2\x05\x05\xD7\x76\xF0\x07\xED\xAC\x7D\x5A\x56\x97\x7B\xBD\x3C', + responder_id.native + ) + self.assertEqual( + 'by_key', + responder_id.name + ) + self.assertEqual( + datetime(2015, 5, 22, 16, 24, 8, tzinfo=util.timezone.utc), + tbs_response_data['produced_at'].native + ) + self.assertEqual( + 'sha1', + cert_id['hash_algorithm']['algorithm'].native + ) + self.assertEqual( + None, + cert_id['hash_algorithm']['parameters'].native + ) + self.assertEqual( + b'\xAA\x2B\x03\x14\xAF\x64\x2E\x13\x0E\xD6\x92\x25\xE3\xFF\x2A\xBA\xD7\x3D\x62\x30', + cert_id['issuer_name_hash'].native + ) + self.assertEqual( + b'\xDE\xCF\x5C\x50\xB7\xAE\x02\x1F\x15\x17\xAA\x16\xE8\x0D\xB5\x28\x9D\x6A\x5A\xF3', + cert_id['issuer_key_hash'].native + ) + self.assertEqual( + 130338219198307073574879940486642352162, + cert_id['serial_number'].native + ) + self.assertEqual( + datetime(2015, 5, 22, 16, 24, 8, tzinfo=util.timezone.utc), + single_response['this_update'].native + ) + self.assertEqual( + datetime(2015, 5, 29, 16, 24, 8, tzinfo=util.timezone.utc), + single_response['next_update'].native + ) + self.assertEqual( + None, + single_response['single_extensions'].native + ) + self.assertEqual( + None, + tbs_response_data['response_extensions'].native + ) + self.assertIsInstance( + basic_ocsp_response['certs'].native, + list + ) + self.assertEqual( + 1, + len(basic_ocsp_response['certs']) + ) + self.assertEqual( + 'v3', + cert['tbs_certificate']['version'].native + ) |