aboutsummaryrefslogtreecommitdiff
path: root/tests/test_rfc4108.py
diff options
context:
space:
mode:
authorRuss Housley <housley@vigilsec.com>2019-07-20 06:58:55 -0400
committerIlya Etingof <etingof@gmail.com>2019-07-20 12:58:55 +0200
commit23608be1bc0ce8a4ac5fbaba92af905c88ea4ab6 (patch)
tree67be142d26a66e2a874502f60c3e97d0059bd769 /tests/test_rfc4108.py
parent06f5be85d5229cffeb24f9ae622df665d7ae506b (diff)
downloadpyasn1-modules-23608be1bc0ce8a4ac5fbaba92af905c88ea4ab6.tar.gz
Added maps for use with openType (#53)
Diffstat (limited to 'tests/test_rfc4108.py')
-rw-r--r--tests/test_rfc4108.py66
1 files changed, 50 insertions, 16 deletions
diff --git a/tests/test_rfc4108.py b/tests/test_rfc4108.py
index 49514b1..c611b0e 100644
--- a/tests/test_rfc4108.py
+++ b/tests/test_rfc4108.py
@@ -23,7 +23,7 @@ except ImportError:
class CMSFirmwareWrapperTestCase(unittest.TestCase):
pem_text = """\
-MIIEdwYJKoZIhvcNAQcCoIIEaDCCBGQCAQExDTALBglghkgBZQMEAgEwggIVBgsq
+MIIEvAYJKoZIhvcNAQcCoIIErTCCBKkCAQExDTALBglghkgBZQMEAgEwggIVBgsq
hkiG9w0BCRABEKCCAgQEggIA3ntqPr5kDpx+//pgWGfHCH/Ht4pbenGwXv80txyE
Y0I2mT9BUGz8ILkbhD7Xz89pBS5KhEJpthxH8WREJtvS+wL4BqYLt23wjWoZy5Gt
5dPzWgaNlV/aQ5AdfAY9ljmnNYnK8D8r8ur7bQM4cKUdxry+QA0nqXHMAOSpx4Um
@@ -35,18 +35,20 @@ RJNFP9vpDM8CxJIqcobC5Kuv8b0GqGfGl6ouuQKEVMfBcrupgjk3oc3KL1iVdSr1
/D9dmiFiErDB3Fzr4+8Qz0aKedNE/1uvM+dhu9qjuRdkDzZ4S7txTfk6y9pG9iyk
aEeTV2kElKXblgi+Cf0Ut4f5he8rt6jveHdMo9X36YiUQVvevj2cgN7lFivEnFYV
QY0xugpP7lvEFDfsi2+0ozgP8EKOLYaCUKpuvttlYJ+vdtUFEijizEZ4cx02RsXm
-EesxggI1MIICMQIBA4AUnutnybladNRNLxY5ZoDoAbXLpJwwCwYJYIZIAWUDBAIB
-oHgwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEQMCkGCyqGSIb3DQEJEAIkMRoG
-CysGAQQBjb9BAQEqBgsrBgEEAY2/QQEBMDAvBgkqhkiG9w0BCQQxIgQgAJfvuasB
-4P6WDLOkOyvj33YPgZW4olHbidzyh1EKP9YwCwYJKoZIhvcNAQELBIIBgDn0y+4B
-cCX7ICovWcyWf0IxNXx7+1VlYneAZ8pMBaKu+6q7jRFZ+QsQFFbQ1yPO/3Pr2wVb
-UJSJAL4QCJDurJ42LdPQIOGIV2aWq70vl6B9yt6svEdjxJ3XkopwcCBXLcB1Hp9b
-6wYZzSFCujOlsABJiz2gMD6wUT4lq7RJO31LEPxx/Va4Ftp1F4okmgL8VpMemihU
-atRXpIhedfli+TWEtMmoxcX3paLcU7MmJFUAwkHmb8rSRF5VBy5QWcNgzzskof0W
-mCR/8bZjqR/g3VlFPyz7zOCxG/wIdZVAb4O/QP8fC0GhyHNE+NX6d+GI8RPpRyMf
-5RfCCsHwbApCv8+tpFslYzwvUTIFx0y9zVrnkz/UrDjZtrKxLC0oRJlnlnKR1unm
-lbolB9c2p60/mZHwQhLM5CjeYcMX3mMVJo4jqag+8o48CibW50h8y21usKaeA9b0
-9EMxfG3KaaP5mMEOZMpeGdUKQSJYweDstxlrY5ajPbeOycdMv7tRNoLpyw==
+EesxggJ6MIICdgIBA4AUnutnybladNRNLxY5ZoDoAbXLpJwwCwYJYIZIAWUDBAIB
+oIG8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABEDArBgsqhkiG9w0BCRACJDEc
+MBoGCysGAQQBjb9BAQEqBgsrBgEEAY2/QQEBMDAvBgkqhkiG9w0BCQQxIgQgAJfv
+uasB4P6WDLOkOyvj33YPgZW4olHbidzyh1EKP9YwQAYLKoZIhvcNAQkQAikxMTAv
+MAsGCWCGSAFlAwQCAQQgAJfvuasB4P6WDLOkOyvj33YPgZW4olHbidzyh1EKP9Yw
+CwYJKoZIhvcNAQELBIIBgDivAlSLbMPPu+zV+pPcYpNp+A1mwVOytjMBzSo31kR/
+qEu+hVrDknAOk9IdCaDvcz612CcfNT85/KzrYvWWxOP2woU/vZj253SnndALpfNN
+n3/crJjF6hKgkjUwoXebI7kuj5WCh2q5lkd6xUa+jkCw+CINcN43thtS66UsVI4d
+mv02EvsS2cxPY/508uaQZ6AYAacm667bgX8xEjbzACMOeMCuvKQXWAuh3DkNk+gV
+xizHDw7xZxXgMGMAnJglAeBtd3Si5ztILw9U2gKUqFn/nOgy+eW63JuU/q31/Hgg
+ZATjyBznSzneTZrw8/ePoSCj7E9vBeCTUkeFbVB2tJK1iYDMblp6HUuwgYuGKXy/
+ZwKL3GvB11qg7ntdEyjdLq0xcVrht/K0d2dPo4iO4Ac7c1xbFMDAlWOt4FMPWh6O
+iTh55YvT7hAJjTbB5ebgMA9QJnAczQPFnaIePnlFrkETd3YyLK4yHwnoIGo1GiW/
+dsnhVtIdkPtfJIvcYteYJg==
"""
def setUp(self):
@@ -67,11 +69,43 @@ lbolB9c2p60/mZHwQhLM5CjeYcMX3mMVJo4jqag+8o48CibW50h8y21usKaeA9b0
assert inner['encapContentInfo']['eContentType'] == rfc4108.id_ct_firmwarePackage
assert inner['encapContentInfo']['eContent']
- found_target_hardware_identifier_attribute = False
+ attribute_list = [ ]
for attr in inner['signerInfos'][0]['signedAttrs']:
+ attribute_list.append(attr['attrType'])
if attr['attrType'] == rfc4108.id_aa_targetHardwareIDs:
- found_target_hardware_identifier_attribute = True
- assert found_target_hardware_identifier_attribute
+ av, rest = der_decode(attr['attrValues'][0],
+ asn1Spec=rfc4108.TargetHardwareIdentifiers())
+ assert len(av) == 2
+ for oid in av:
+ assert '1.3.6.1.4.1.221121.1.1.' in oid.prettyPrint()
+
+ assert rfc5652.id_contentType in attribute_list
+ assert rfc5652.id_messageDigest in attribute_list
+ assert rfc4108.id_aa_targetHardwareIDs in attribute_list
+ assert rfc4108.id_aa_fwPkgMessageDigest in attribute_list
+
+ def testOpenTypes(self):
+ substrate = pem.readBase64fromText(self.pem_text)
+
+ rfc5652.cmsContentTypesMap.update(rfc4108.cmsContentTypesMapUpdate)
+ rfc5652.cmsAttributesMap.update(rfc4108.cmsAttributesMapUpdate)
+ asn1Object, rest = der_decode(substrate,
+ asn1Spec=self.asn1Spec,
+ decodeOpenTypes=True)
+ assert not rest
+ assert asn1Object.prettyPrint()
+ assert der_encode(asn1Object) == substrate
+
+ assert asn1Object['contentType'] == rfc5652.id_signedData
+ sd_eci = asn1Object['content']['encapContentInfo']
+ assert sd_eci['eContentType'] == rfc4108.id_ct_firmwarePackage
+ assert sd_eci['eContent'].hasValue()
+
+ for attr in asn1Object['content']['signerInfos'][0]['signedAttrs']:
+ assert attr['attrType'] in rfc5652.cmsAttributesMap.keys()
+ if attr['attrType'] == rfc4108.id_aa_targetHardwareIDs:
+ for oid in attr['attrValues'][0]:
+ assert '1.3.6.1.4.1.221121.1.1.' in oid.prettyPrint()
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])