def testDerCodec(self): substrate = pem.readBase64fromText(self.pem_text_unordered) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert der_encoder.encode(asn1Object) == substrate contentType = asn1Object['contentType'] substrate = asn1Object['content'] contentInfoMap = { (1, 2, 840, 113549, 1, 7, 1): rfc2315.Data(), (1, 2, 840, 113549, 1, 7, 2): rfc2315.SignedData(), (1, 2, 840, 113549, 1, 7, 3): rfc2315.EnvelopedData(), (1, 2, 840, 113549, 1, 7, 4): rfc2315.SignedAndEnvelopedData(), (1, 2, 840, 113549, 1, 7, 5): rfc2315.DigestedData(), (1, 2, 840, 113549, 1, 7, 6): rfc2315.EncryptedData() } innerAsn1Object, rest = der_decoder.decode( substrate, asn1Spec=contentInfoMap[contentType] ) asn1Object['content'] = der_encoder.encode(innerAsn1Object) substrate = pem.readBase64fromText(self.pem_text_reordered) assert not rest assert asn1Object.prettyPrint() assert der_encoder.encode(asn1Object) == substrate
def testDerCodec(self): substrate = pem.readBase64fromText(self.pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert der_encoder.encode(asn1Object) == substrate for extn in asn1Object['tbsCertificate']['extensions']: if extn['extnID'] == rfc3779.id_pe_ipAddrBlocks: s = extn['extnValue'] addr_blocks, rest = der_decoder.decode(s, rfc3779.IPAddrBlocks()) assert not rest assert addr_blocks.prettyPrint() assert der_encoder.encode(addr_blocks) == s if extn['extnID'] == rfc3779.id_pe_autonomousSysIds: s = extn['extnValue'] as_ids, rest = der_decoder.decode(s, rfc3779.ASIdentifiers()) assert not rest assert as_ids.prettyPrint() assert der_encoder.encode(as_ids) == s
def testDerCodec(self): substrate = pem.readBase64fromText(self.kw_pad_alg_id_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert asn1Object[0] == rfc5649.id_aes256_wrap_pad assert der_encoder.encode(asn1Object) == substrate
def testDerCodec(self): substrate = pem.readBase64fromText(self.pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert der_encoder.encode(asn1Object) == substrate
def testDerCodec(self): substrate = pem.readBase64fromText(self.pss_sha512_pem_text) asn1Object, rest = der_decoder(substrate, asn1Spec=self.asn1Spec) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertTrue(rfc4055.id_RSASSA_PSS, asn1Object[0]) self.assertEqual(substrate, der_encoder(asn1Object))
def testDerCodec(self): substrate = pem.readBase64fromText(self.pss_sha512_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert asn1Object[0] == rfc4055.id_RSASSA_PSS assert der_encoder.encode(asn1Object) == substrate assert substrate == der_encoder.encode(asn1Object)
def testDerCodec(self): substrate = pem.readBase64fromText(self.rfc3211_ex1_pem_text) asn1Object, rest = der_decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert der_encode(asn1Object) == substrate alg_oid = asn1Object['pwri']['keyDerivationAlgorithm']['algorithm'] assert alg_oid == rfc8018.id_PBKDF2
def testDerCodec(self): substrate = pem.readBase64fromText(self.aes_alg_id_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert asn1Object[0] == rfc3565.id_aes256_CBC assert asn1Object[1].isValue assert der_encoder.encode(asn1Object) == substrate
def testDerCodec(self): substrate = pem.readBase64fromText(self.alg_id_3_pem_text) asn1Object, rest = der_decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert asn1Object['algorithm'] == rfc8419.id_sha512 assert not asn1Object['parameters'].isValue assert der_encode(asn1Object) == substrate
def testDerCodec(self): substrate = pem.readBase64fromText(self.key_agree_alg_id_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert asn1Object['algorithm'] == rfc8418.dhSinglePass_stdDH_hkdf_sha384_scheme assert asn1Object['parameters'].isValue assert der_encoder.encode(asn1Object) == substrate
def testDerCodec(self): substrate = pem.readBase64fromText(self.oaep_full_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert asn1Object[0] == rfc3560.id_RSAES_OAEP assert der_encoder.encode(asn1Object) == substrate assert substrate == der_encoder.encode(asn1Object)
def testDerCodec(self): substrate = pem.readBase64fromText(self.pem_text) asn1Object, rest = der_decoder(substrate, asn1Spec=self.asn1Spec) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertEqual(substrate, der_encoder(asn1Object))
def testDerCodec(self): substrate = pem.readBase64fromText(self.private_key_pem_text) asn1Object, rest = der_decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert der_encode(asn1Object) == substrate assert asn1Object['parameters']['namedCurve'] == rfc5480.secp384r1
def testDerCodec(self): substrate = pem.readBase64fromText(self.pem_text) asn1Object, rest = der_decoder(substrate, asn1Spec=self.asn1Spec) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertEqual(substrate, der_encoder(asn1Object)) self.assertEqual(1, asn1Object['acinfo']['version']) found_ac_policy_qualifier1 = False found_ac_policy_qualifier2 = False for extn in asn1Object['acinfo']['extensions']: self.assertIn(extn['extnID'], rfc5280.certificateExtensionsMap) if extn['extnID'] == rfc4476.id_pe_acPolicies: ev, rest = der_decoder( extn['extnValue'], asn1Spec=rfc5280.certificateExtensionsMap[extn['extnID']]) self.assertFalse(rest) self.assertTrue(ev.prettyPrint()) self.assertEqual(extn['extnValue'], der_encoder(ev)) oid = univ.ObjectIdentifier(( 1, 3, 6, 1, 4, 1, 22112, 48, 10, )) self.assertEqual(oid, ev[0]['policyIdentifier']) for pq in ev[0]['policyQualifiers']: self.assertIn(pq['policyQualifierId'], rfc5280.policyQualifierInfoMap) pqv, rest = der_decoder( pq['qualifier'], asn1Spec=rfc5280.policyQualifierInfoMap[ pq['policyQualifierId']]) self.assertFalse(rest) self.assertTrue(pqv.prettyPrint()) self.assertEqual(pq['qualifier'], der_encoder(pqv)) if pq['policyQualifierId'] == rfc4476.id_qt_acps: self.assertIn('example.com', pqv) found_ac_policy_qualifier1 = True if pq['policyQualifierId'] == rfc4476.id_qt_acunotice: self.assertIn(20, pqv[0]['noticeNumbers']) found_ac_policy_qualifier2 = True assert found_ac_policy_qualifier1 assert found_ac_policy_qualifier2
def testDerCodec(self): substrate = pem.readBase64fromText(self.private_key_pem_text) asn1Object, rest = der_decoder(substrate, asn1Spec=self.asn1Spec) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertEqual(substrate, der_encoder(asn1Object)) self.assertEqual(rfc5480.secp384r1, asn1Object['parameters']['namedCurve'])
def testDerCodec(self): substrate = pem.readBase64fromText(self.pem_text) asn1Object, rest = der_decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert der_encode(asn1Object) == substrate hex1 = univ.OctetString(hexValue='00000001') assert asn1Object['keyInfo']['counter'] == hex1
def testDerCodec(self): substrate = pem.readBase64fromText(self.alg_id_4_pem_text) asn1Object, rest = der_decoder(substrate, asn1Spec=self.asn1Spec) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertEqual(rfc8419.id_shake256, asn1Object['algorithm']) self.assertFalse(asn1Object['parameters'].isValue) self.assertEqual(substrate, der_encoder(asn1Object))
def testDerCodec(self): substrate = pem.readBase64fromText(self.kw_pad_alg_id_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertEqual(rfc5649.id_aes256_wrap_pad, asn1Object[0]) self.assertEqual(substrate, der_encoder.encode(asn1Object))
def testDerCodec(self): substrate = pem.readBase64fromText(self.no_pub_key_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert asn1Object['privateKeyAlgorithm']['algorithm'] == rfc8410.id_Ed25519 assert asn1Object['privateKey'].isValue assert asn1Object['privateKey'].prettyPrint()[0:10] == "0x0420d4ee" assert der_encoder.encode(asn1Object) == substrate
def testOpenTypes(self): substrate = pem.readBase64fromText(self.oaep_default_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True) assert not rest assert asn1Object.prettyPrint() assert der_encoder.encode(asn1Object) == substrate assert not asn1Object['parameters'].hasValue()
def testOpenTypes(self): substrate = pem.readBase64fromText(self.pss_default_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertEqual(substrate, der_encoder.encode(asn1Object)) self.assertFalse(asn1Object['parameters'].hasValue())
def testOpenTypes(self): substrate = pem.readBase64fromText(self.message1_pem_text) 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 v3 = rfc5652.CMSVersion().subtype(value='v3') assert asn1Object['content']['version'] == v3 for sa in asn1Object['content']['signerInfos'][0]['signedAttrs']: if sa['attrType'] == rfc7191.id_aa_KP_keyPkgIdAndReceiptReq: package_id_pem_text = "J7icVjsWIlGdF4cceb+siG3f+D0=" package_id = pem.readBase64fromText(package_id_pem_text) assert sa['attrValues'][0]['pkgID'] == package_id
def testDerCodec(self): substrate = pem.readBase64fromText(self.public_key_pem_text) asn1Object, rest = der_decoder(substrate, asn1Spec=self.asn1Spec) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertEqual(substrate, der_encoder(asn1Object)) self.assertEqual(asn1Object['algorithm']['algorithm'], rfc8708.id_alg_hss_lms_hashsig)
def testDerCodec(self): substrate = pem.readBase64fromText(self.oaep_sha256_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertTrue(rfc4055.id_RSAES_OAEP, asn1Object[0]) self.assertEqual(substrate, der_encoder.encode(asn1Object)) self.assertEqual(substrate, der_encoder.encode(asn1Object))
def testDerCodecDecodeOpenTypes(self): substrate = pem.readBase64fromText(self.pem_text_reordered) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True) assert not rest assert asn1Object.prettyPrint() assert der_encoder.encode(asn1Object) == substrate
def testOpenTypes(self): substrate = pem.readBase64fromText(self.pem_text) asn1Object, rest = der_decoder( substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True) eci = asn1Object['content']['encryptedContentInfo'] ai = eci['contentEncryptionAlgorithm'] self.assertEqual(rfc2040.rc5_CBC, ai['algorithm']) self.assertEqual(16, ai['parameters']['rounds'])
def testOpenTypes(self): substrate = pem.readBase64fromText(self.alg_id_5_pem_text) asn1Object, rest = der_decode(substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True) assert not rest assert asn1Object.prettyPrint() assert asn1Object['algorithm'] == rfc8419.id_shake256_len assert asn1Object['parameters'] == 512 assert der_encode(asn1Object) == substrate
def testOpenTypes(self): substrate = pem.readBase64fromText(self.alg_id_5_pem_text) asn1Object, rest = der_decoder( substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertEqual(rfc8419.id_shake256_len, asn1Object['algorithm']) self.assertEqual(512, asn1Object['parameters']) self.assertEqual(substrate, der_encoder(asn1Object))
def testDerCodec(self): substrate = pem.readBase64fromText(self.pem_text) asn1Object, rest = der_decoder(substrate, asn1Spec=self.asn1Spec) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertEqual(substrate, der_encoder(asn1Object)) hex1 = univ.OctetString(hexValue='00000001') self.assertEqual(hex1, asn1Object['keyInfo']['counter'])
def testOpenTypes(self): substrate = pem.readBase64fromText(self.cvrequest_pem_text) asn1Object, rest = der_decoder( substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertEqual(substrate, der_encoder(asn1Object)) wantback = asn1Object['content']['query']['wantBack'] self.assertIn(rfc5276.id_swb_ers_all, wantback)
def testOpenTypes(self): substrate = pem.readBase64fromText(self.pem_text) asn1Object, rest = der_decoder(substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertEqual(substrate, der_encoder(asn1Object)) self.assertIn(b'come here', asn1Object['content']['content'])
def testDerCodec(self): substrate = pem.readBase64fromText(self.key_agree_alg_id_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert asn1Object[ 'algorithm'] == rfc8418.dhSinglePass_stdDH_hkdf_sha384_scheme assert asn1Object['parameters'].isValue assert der_encoder.encode(asn1Object) == substrate
def testDerCodecDecodeOpenTypes(self): substrate = pem.readBase64fromText(self.pem_text_reordered) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True) assert not rest assert asn1Object.prettyPrint() assert der_encoder.encode(asn1Object, omitEmptyOptionals=False) == substrate
def testDerCodec(self): substrate = pem.readBase64fromText(self.alg_id_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert asn1Object[0] == rfc8103.id_alg_AEADChaCha20Poly1305 param, rest = der_decoder.decode(asn1Object[1], rfc8103.AEADChaCha20Poly1305Nonce()) assert not rest assert param.prettyPrint() assert param == rfc8103.AEADChaCha20Poly1305Nonce(value='\xca\xfe\xba\xbe\xfa\xce\xdb\xad\xde\xca\xf8\x88') assert der_encoder.encode(asn1Object) == substrate
def testOpenTypes(self): substrate = pem.readBase64fromText(self.digicert_ec_cert_pem_text) asn1Object, rest = der_decode(substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True) assert not rest assert asn1Object.prettyPrint() assert der_encode(asn1Object) == substrate spki_alg = asn1Object['tbsCertificate']['subjectPublicKeyInfo']['algorithm'] assert spki_alg['algorithm'] == rfc5480.id_ecPublicKey assert spki_alg['parameters']['namedCurve'] == rfc5480.secp384r1
def testDerCodec(self): substrate = pem.readBase64fromText(self.no_pub_key_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert asn1Object['privateKeyAlgorithm'][ 'algorithm'] == rfc8410.id_Ed25519 assert asn1Object['privateKey'].isValue assert asn1Object['privateKey'].prettyPrint()[0:10] == "0x0420d4ee" assert der_encoder.encode(asn1Object) == substrate
def testOpenTypes(self): substrate = pem.readBase64fromText(self.aes_alg_id_pem_text) asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True) assert not rest assert asn1Object.prettyPrint() assert asn1Object[0] == rfc3565.id_aes256_CBC aes_iv = univ.OctetString(hexValue='108996ba850e3f0339993bb5878a0e37') assert asn1Object[1] == aes_iv assert der_encoder.encode(asn1Object) == substrate
def testDerCodec(self): substrate = pem.readBase64fromText(self.pem_text) asn1Object, rest = der_decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert der_encode(asn1Object) == substrate assert asn1Object['attrType'] == rfc6019.id_aa_binarySigningTime bintime, rest = der_decode(asn1Object['attrValues'][0], asn1Spec=rfc6019.BinaryTime()) assert bintime == 0x5cbf8654
def testDerCodec(self): substrate = pem.readBase64fromText(self.pem_text) asn1Object, rest = der_decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert der_encode(asn1Object) == substrate assert asn1Object['contentType'] == rfc5652.id_signedData inner, rest = der_decode(asn1Object['content'], asn1Spec=rfc5652.SignedData()) assert inner['encapContentInfo']['eContentType'] == rfc4108.id_ct_firmwarePackage assert inner['encapContentInfo']['eContent'] found_target_hardware_identifier_attribute = False for attr in inner['signerInfos'][0]['signedAttrs']: if attr['attrType'] == rfc4108.id_aa_targetHardwareIDs: found_target_hardware_identifier_attribute = True assert found_target_hardware_identifier_attribute
def testDerCodec(self): substrate = pem.readBase64fromText(self.pem_text) layers = { rfc5652.id_ct_contentInfo: rfc5652.ContentInfo(), rfc5652.id_signedData: rfc5652.SignedData(), rfc6402.id_cct_PKIData: rfc6402.PKIData() } getNextLayer = { rfc5652.id_ct_contentInfo: lambda x: x['contentType'], rfc5652.id_signedData: lambda x: x['encapContentInfo']['eContentType'], rfc6402.id_cct_PKIData: lambda x: None } getNextSubstrate = { rfc5652.id_ct_contentInfo: lambda x: x['content'], rfc5652.id_signedData: lambda x: x['encapContentInfo']['eContent'], rfc6402.id_cct_PKIData: lambda x: None } next_layer = rfc5652.id_ct_contentInfo while next_layer: asn1Object, rest = der_decoder.decode( substrate, asn1Spec=layers[next_layer] ) assert not rest assert asn1Object.prettyPrint() assert der_encoder.encode(asn1Object) == substrate substrate = getNextSubstrate[next_layer](asn1Object) next_layer = getNextLayer[next_layer](asn1Object)