def testDerCodec(self): substrate = pem.readBase64fromText(self.env_data_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(rfc5652.id_envelopedData, asn1Object['contentType']) ed, rest = der_decoder(asn1Object['content'], asn1Spec=rfc5652.EnvelopedData()) self.assertFalse(rest) self.assertTrue(ed.prettyPrint()) self.assertEqual(asn1Object['content'], der_encoder(ed)) kwa = ed['recipientInfos'][0]['kekri']['keyEncryptionAlgorithm'] self.assertEqual(rfc3058.id_alg_CMSIDEAwrap, kwa['algorithm']) self.assertEqual(kwa['parameters'], der_encoder(univ.Null(""))) cea = ed['encryptedContentInfo']['contentEncryptionAlgorithm'] self.assertEqual(rfc3058.id_IDEA_CBC, cea['algorithm']) param, rest = der_decoder(cea['parameters'], asn1Spec=rfc3058.IDEA_CBCPar()) self.assertFalse(rest) self.assertTrue(param.prettyPrint()) self.assertEqual(cea['parameters'], der_encoder(param)) iv = univ.OctetString(hexValue='424f4755535f4956') self.assertEqual(iv, param['iv'])
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(rfc5652.id_envelopedData, asn1Object['contentType']) ed, rest = der_decoder( asn1Object['content'], asn1Spec=rfc5652.EnvelopedData()) self.assertFalse(rest) self.assertTrue(ed.prettyPrint()) self.assertEqual(asn1Object['content'], der_encoder(ed)) opk_ai_p = rfc5480.ECParameters() opk_ai_p['namedCurve'] = rfc5480.secp384r1 kwai = rfc5753.KeyWrapAlgorithm() kwai['algorithm'] = rfc3565.id_aes256_wrap ukm_found = False self.assertEqual(ed['version'], rfc5652.CMSVersion(value=2)) for ri in ed['recipientInfos']: self.assertEqual(ri['kari']['version'], rfc5652.CMSVersion(value=3)) opk_alg = ri['kari']['originator']['originatorKey']['algorithm'] self.assertEqual(opk_alg['algorithm'], rfc5753.id_ecPublicKey) self.assertEqual(opk_alg['parameters'], der_encoder(opk_ai_p)) kek_alg = ri['kari']['keyEncryptionAlgorithm'] self.assertEqual(kek_alg['algorithm'], rfc5753.dhSinglePass_stdDH_sha384kdf_scheme) self.assertEqual(kek_alg['parameters'], der_encoder(kwai)) ukm = ri['kari']['ukm'] self.assertEqual(ukm, rfc5652.UserKeyingMaterial(hexValue='52464335373533')) ukm_found = True self.assertTrue(ukm_found)
def testDerCodec(self): substrate = pem.readBase64fromText(self.keytrans_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(rfc5652.id_envelopedData, asn1Object['contentType']) ed, rest = der_decoder( asn1Object['content'], asn1Spec=rfc5652.EnvelopedData()) self.assertFalse(rest) self.assertTrue(ed.prettyPrint()) self.assertEqual(asn1Object['content'], der_encoder(ed)) ri = ed['recipientInfos'][0] alg1 = ri['ktri']['keyEncryptionAlgorithm'] self.assertEqual(rfc4357.id_GostR3410_2001, alg1['algorithm']) param1, rest = der_decoder( alg1['parameters'], asn1Spec=rfc4357.GostR3410_2001_PublicKeyParameters()) self.assertFalse(rest) self.assertTrue(param1.prettyPrint()) self.assertEqual(alg1['parameters'], der_encoder(param1)) self.assertEqual(rfc4357.id_GostR3410_2001_CryptoPro_XchA_ParamSet, param1['publicKeyParamSet']) self.assertEqual(rfc4357.id_GostR3411_94_CryptoProParamSet, param1['digestParamSet']) alg2 = ed['encryptedContentInfo']['contentEncryptionAlgorithm'] self.assertEqual(rfc4357.id_Gost28147_89, alg2['algorithm']) param2, rest = der_decoder( alg2['parameters'], asn1Spec=rfc4357.Gost28147_89_Parameters()) self.assertFalse(rest) self.assertTrue(param2.prettyPrint()) self.assertEqual(alg2['parameters'], der_encoder(param2)) self.assertEqual(8, len(param2['iv'])) self.assertEqual(rfc4357.id_Gost28147_89_CryptoPro_A_ParamSet, param2['encryptionParamSet'])
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(rfc5652.id_envelopedData, asn1Object['contentType']) ed, rest = der_decoder(asn1Object['content'], asn1Spec=rfc5652.EnvelopedData()) self.assertFalse(rest) self.assertTrue(ed.prettyPrint()) self.assertEqual(asn1Object['content'], der_encoder(ed)) kwa = ed['recipientInfos'][0]['kekri']['keyEncryptionAlgorithm'] self.assertEqual(rfc5794.id_aria256_kw, kwa['algorithm']) cea = ed['encryptedContentInfo']['contentEncryptionAlgorithm'] self.assertEqual(rfc5794.id_aria128_cbc, cea['algorithm']) param, rest = der_decoder(cea['parameters'], asn1Spec=rfc5794.AriaCbcParameters()) self.assertFalse(rest) self.assertTrue(param.prettyPrint()) self.assertEqual(cea['parameters'], der_encoder(param)) self.assertEqual(1, param['m']) spa = param['padAlgo']['specifiedPadAlgo'] self.assertEqual(rfc5794.id_pad_1, spa)
def testDerCodec(self): substrate = pem.readBase64fromText(self.env_data_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(rfc5652.id_envelopedData, asn1Object['contentType']) ed, rest = der_decoder(asn1Object['content'], asn1Spec=rfc5652.EnvelopedData()) self.assertFalse(rest) self.assertTrue(ed.prettyPrint()) self.assertEqual(asn1Object['content'], der_encoder(ed)) kwa = ed['recipientInfos'][0]['kekri']['keyEncryptionAlgorithm'] self.assertEqual(rfc3657.id_camellia128_wrap, kwa['algorithm']) cea = ed['encryptedContentInfo']['contentEncryptionAlgorithm'] self.assertEqual(rfc3657.id_camellia128_cbc, cea['algorithm']) param, rest = der_decoder(cea['parameters'], asn1Spec=rfc3657.Camellia_IV()) self.assertFalse(rest) self.assertTrue(param.prettyPrint()) self.assertEqual(cea['parameters'], der_encoder(param)) iv = rfc3657.Camellia_IV(hexValue='424f47555349565f424f475553495621') self.assertEqual(iv, param)
def testDerCodec(self): substrate = pem.readBase64fromText(self.env_data_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(rfc5652.id_envelopedData, asn1Object['contentType']) ed, rest = der_decoder(asn1Object['content'], asn1Spec=rfc5652.EnvelopedData()) self.assertFalse(rest) self.assertTrue(ed.prettyPrint()) self.assertEqual(asn1Object['content'], der_encoder(ed)) kari_kea = ed['recipientInfos'][0]['kari']['keyEncryptionAlgorithm'] self.assertEqual(rfc2876.id_kEAKeyEncryptionAlgorithm, kari_kea['algorithm']) kwa, rest = der_decoder(kari_kea['parameters'], asn1Spec=rfc5280.AlgorithmIdentifier()) self.assertFalse(rest) self.assertTrue(kwa.prettyPrint()) self.assertEqual(kari_kea['parameters'], der_encoder(kwa)) self.assertEqual(rfc2876.id_fortezzaWrap80, kwa['algorithm']) cea = ed['encryptedContentInfo']['contentEncryptionAlgorithm'] self.assertEqual(rfc2876.id_fortezzaConfidentialityAlgorithm, cea['algorithm']) param, rest = der_decoder(cea['parameters'], rfc2876.Skipjack_Parm()) self.assertFalse(rest) self.assertTrue(param.prettyPrint()) self.assertEqual(cea['parameters'], der_encoder(param)) iv = univ.OctetString(hexValue='424f4755535f4956') self.assertEqual(iv, param['initialization-vector'])
aa_content_decrypt_key_identifier = rfc5652.Attribute() aa_content_decrypt_key_identifier['attrType'] = id_aa_KP_contentDecryptKeyID aa_content_decrypt_key_identifier['attrValues'][0] = ContentDecryptKeyID() # Encrypted Key Package Content Type id_ct_KP_encryptedKeyPkg = univ.ObjectIdentifier('2.16.840.1.101.2.1.2.78.2') class EncryptedKeyPackage(univ.Choice): pass EncryptedKeyPackage.componentType = namedtype.NamedTypes( namedtype.NamedType('encrypted', rfc5652.EncryptedData()), namedtype.NamedType('enveloped', rfc5652.EnvelopedData().subtype( implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), namedtype.NamedType('authEnveloped', rfc5083.AuthEnvelopedData().subtype( implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))) ) # Update the CMS Attributes Map _cmsAttributesMapUpdate = { id_aa_KP_contentDecryptKeyID: ContentDecryptKeyID(), } cmsAttributesMap.update(_cmsAttributesMapUpdate) # Update the CMS Content Types Map
def testDerCodec(self): substrate = pem.readBase64fromText(self.keyagree_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(rfc5652.id_envelopedData, asn1Object['contentType']) ed, rest = der_decoder(asn1Object['content'], asn1Spec=rfc5652.EnvelopedData()) self.assertFalse(rest) self.assertTrue(ed.prettyPrint()) self.assertEqual(asn1Object['content'], der_encoder(ed)) ri = ed['recipientInfos'][0] alg1 = ri['kari']['originator']['originatorKey']['algorithm'] self.assertEqual(rfc4357.id_GostR3410_2001, alg1['algorithm']) param1, rest = der_decoder( alg1['parameters'], asn1Spec=rfc4357.GostR3410_2001_PublicKeyParameters()) self.assertFalse(rest) self.assertTrue(param1.prettyPrint()) self.assertEqual(alg1['parameters'], der_encoder(param1)) self.assertEqual(rfc4357.id_GostR3410_2001_CryptoPro_XchA_ParamSet, param1['publicKeyParamSet']) self.assertEqual(rfc4357.id_GostR3411_94_CryptoProParamSet, param1['digestParamSet']) self.assertEqual(8, len(ri['kari']['ukm'])) alg2 = ri['kari']['keyEncryptionAlgorithm'] self.assertEqual(rfc4490.id_GostR3410_2001_CryptoPro_ESDH, alg2['algorithm']) param2, rest = der_decoder(alg2['parameters'], asn1Spec=rfc4357.AlgorithmIdentifier()) self.assertFalse(rest) self.assertTrue(param2.prettyPrint()) self.assertEqual(alg2['parameters'], der_encoder(param2)) self.assertEqual(rfc4490.id_Gost28147_89_None_KeyWrap, param2['algorithm']) kwa_p, rest = der_decoder( param2['parameters'], asn1Spec=rfc4490.Gost28147_89_KeyWrapParameters()) self.assertFalse(rest) self.assertTrue(kwa_p.prettyPrint()) self.assertEqual(param2['parameters'], der_encoder(kwa_p)) self.assertEqual(rfc4357.id_Gost28147_89_CryptoPro_A_ParamSet, kwa_p['encryptionParamSet']) alg3 = ed['encryptedContentInfo']['contentEncryptionAlgorithm'] self.assertEqual(rfc4357.id_Gost28147_89, alg3['algorithm']) param3, rest = der_decoder(alg3['parameters'], asn1Spec=rfc4357.Gost28147_89_Parameters()) self.assertFalse(rest) self.assertTrue(param3.prettyPrint()) self.assertEqual(alg3['parameters'], der_encoder(param3)) self.assertEqual(8, len(param3['iv'])) self.assertEqual(rfc4357.id_Gost28147_89_CryptoPro_A_ParamSet, param3['encryptionParamSet'])