11# coding: utf-8
2+ import datetime
3+ import json
24
35
46def test_promote_observable_to_indicator_deprecated (api_client ):
@@ -11,3 +13,90 @@ def test_promote_observable_to_indicator_deprecated(api_client):
1113 )
1214 assert observable is not None , "Returned observable is NoneType"
1315 assert observable .get ("id" ) == obs1 .get ("id" )
16+
17+
18+ def test_certificate_creation_mapping (api_client ):
19+ with open ("tests/data/certificate.json" , "r" ) as content_file :
20+ content = content_file .read ()
21+
22+ imported_malware_bundle , _ = api_client .stix2 .import_bundle_from_json (
23+ json_data = content
24+ )
25+ assert imported_malware_bundle is not None
26+
27+ bundle = json .loads (content )
28+ stix_certificate = bundle ["objects" ][0 ]
29+ certificate = api_client .stix_cyber_observable .read (
30+ id = imported_malware_bundle [0 ]["id" ]
31+ )
32+
33+ assert certificate ["entity_type" ] == "X509-Certificate"
34+
35+ assert certificate ["is_self_signed" ] == stix_certificate ["is_self_signed" ]
36+ assert certificate ["serial_number" ] == stix_certificate ["serial_number" ]
37+ assert certificate ["signature_algorithm" ] == stix_certificate ["signature_algorithm" ]
38+ assert certificate ["issuer" ] == stix_certificate ["issuer" ]
39+ assert certificate ["subject" ] == stix_certificate ["subject" ]
40+ assert (
41+ certificate ["subject_public_key_algorithm" ]
42+ == stix_certificate ["subject_public_key_algorithm" ]
43+ )
44+ assert (
45+ certificate ["subject_public_key_modulus" ]
46+ == stix_certificate ["subject_public_key_modulus" ]
47+ )
48+ assert (
49+ certificate ["subject_public_key_exponent" ]
50+ == stix_certificate ["subject_public_key_exponent" ]
51+ )
52+ assert datetime .datetime .fromisoformat (
53+ certificate ["validity_not_before" ]
54+ ) == datetime .datetime .fromisoformat (stix_certificate ["validity_not_before" ])
55+ assert datetime .datetime .fromisoformat (
56+ certificate ["validity_not_after" ]
57+ ) == datetime .datetime .fromisoformat (stix_certificate ["validity_not_after" ])
58+ assert {
59+ item ["algorithm" ]: item ["hash" ] for item in certificate ["hashes" ]
60+ } == stix_certificate ["hashes" ]
61+ assert certificate ["basic_constraints" ] == stix_certificate ["basic_constraints" ]
62+ assert certificate ["name_constraints" ] == stix_certificate ["name_constraints" ]
63+ assert certificate ["policy_constraints" ] == stix_certificate ["policy_constraints" ]
64+ assert certificate ["key_usage" ] == stix_certificate ["key_usage" ]
65+ assert certificate ["extended_key_usage" ] == stix_certificate ["extended_key_usage" ]
66+ assert (
67+ certificate ["subject_key_identifier" ]
68+ == stix_certificate ["subject_key_identifier" ]
69+ )
70+ assert (
71+ certificate ["authority_key_identifier" ]
72+ == stix_certificate ["authority_key_identifier" ]
73+ )
74+ assert (
75+ certificate ["subject_alternative_name" ]
76+ == stix_certificate ["subject_alternative_name" ]
77+ )
78+ assert (
79+ certificate ["issuer_alternative_name" ]
80+ == stix_certificate ["issuer_alternative_name" ]
81+ )
82+ assert (
83+ certificate ["subject_directory_attributes" ]
84+ == stix_certificate ["subject_directory_attributes" ]
85+ )
86+ assert (
87+ certificate ["crl_distribution_points" ]
88+ == stix_certificate ["crl_distribution_points" ]
89+ )
90+ assert certificate ["inhibit_any_policy" ] == stix_certificate ["inhibit_any_policy" ]
91+ assert (
92+ certificate ["private_key_usage_period_not_before" ]
93+ == stix_certificate ["private_key_usage_period_not_before" ]
94+ )
95+ assert (
96+ certificate ["private_key_usage_period_not_after" ]
97+ == stix_certificate ["private_key_usage_period_not_after" ]
98+ )
99+ assert (
100+ certificate ["certificate_policies" ] == stix_certificate ["certificate_policies" ]
101+ )
102+ assert certificate ["policy_mappings" ] == stix_certificate ["policy_mappings" ]
0 commit comments