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.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'])
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 = 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(param1.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)) 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)
namedtype.OptionalNamedType( 'valueHint', univ.OctetString().subtype( implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))), namedtype.NamedType('encValue', univ.BitString())) class EncryptedKey(univ.Choice): pass EncryptedKey.componentType = namedtype.NamedTypes( namedtype.NamedType('encryptedValue', EncryptedValue()), namedtype.NamedType( 'envelopedData', rfc5652.EnvelopedData().subtype( implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))) class KeyGenParameters(univ.OctetString): pass class PKIArchiveOptions(univ.Choice): pass PKIArchiveOptions.componentType = namedtype.NamedTypes( namedtype.NamedType( 'encryptedPrivKey', EncryptedKey().subtype(implicitTag=tag.Tag( tag.tagClassContext, tag.tagFormatConstructed, 0))),