def testDerCodec(self): substrate = pem.readBase64fromText(self.digicert_ec_cert_pem_text) asn1Object, rest = der_decode(substrate, asn1Spec=self.asn1Spec) assert not rest assert asn1Object.prettyPrint() assert der_encode(asn1Object) == substrate algid = asn1Object['tbsCertificate']['subjectPublicKeyInfo']['algorithm'] assert algid['algorithm'] == rfc5480.id_ecPublicKey param, rest = der_decode(algid['parameters'], asn1Spec=rfc5480.ECParameters()) assert param.prettyPrint() assert param['namedCurve'] == rfc5480.secp384r1
def testDerCodec(self): substrate = pem.readBase64fromText(self.digicert_ec_cert_pem_text) asn1Object, rest = der_decoder(substrate, asn1Spec=self.asn1Spec) self.assertFalse(rest) self.assertTrue(asn1Object.prettyPrint()) self.assertEqual(substrate, der_encoder(asn1Object)) algid = asn1Object['tbsCertificate']['subjectPublicKeyInfo']['algorithm'] self.assertEqual(rfc5480.id_ecPublicKey, algid['algorithm']) param, rest = der_decoder(algid['parameters'], asn1Spec=rfc5480.ECParameters()) self.assertTrue(param.prettyPrint()) self.assertEqual(rfc5480.secp384r1, param['namedCurve'])
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)
# Elliptic Curve Private Key # # ASN.1 source from: # https://www.rfc-editor.org/rfc/rfc5915.txt from pyasn1.type import namedtype from pyasn1.type import namedval from pyasn1.type import tag from pyasn1.type import univ from pyasn1_modules import rfc5480 class ECPrivateKey(univ.Sequence): pass ECPrivateKey.componentType = namedtype.NamedTypes( namedtype.NamedType( 'version', univ.Integer(namedValues=namedval.NamedValues(('ecPrivkeyVer1', 1)))), namedtype.NamedType('privateKey', univ.OctetString()), namedtype.OptionalNamedType( 'parameters', rfc5480.ECParameters().subtype( explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), namedtype.OptionalNamedType( 'publicKey', univ.BitString().subtype( explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))))
# Created by Russ Housley with assistance from asn1ate v.0.6.0. # # Copyright (c) 2019, Vigil Security, LLC # License: http://snmplabs.com/pyasn1/license.html # # Elliptic Curve Private Key # # ASN.1 source from: # https://www.rfc-editor.org/rfc/rfc5915.txt from pyasn1.type import namedtype from pyasn1.type import namedval from pyasn1.type import tag from pyasn1.type import univ from pyasn1_modules import rfc5480 class ECPrivateKey(univ.Sequence): pass ECPrivateKey.componentType = namedtype.NamedTypes( namedtype.NamedType('version', univ.Integer( namedValues=namedval.NamedValues(('ecPrivkeyVer1', 1)))), namedtype.NamedType('privateKey', univ.OctetString()), namedtype.OptionalNamedType('parameters', rfc5480.ECParameters().subtype( explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), namedtype.OptionalNamedType('publicKey', univ.BitString().subtype( explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))) )