123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- #
- # This file is part of pyasn1-modules.
- #
- # Copyright (c) 2017, Danielle Madeley <danielle@madeley.id.au>
- # License: http://snmplabs.com/pyasn1/license.html
- #
- # Modified by Russ Housley to add maps for use with opentypes.
- #
- # Algorithms and Identifiers for Internet X.509 Certificates and CRLs
- #
- # Derived from RFC 3279:
- # https://www.rfc-editor.org/rfc/rfc3279.txt
- #
- from pyasn1.type import namedtype
- from pyasn1.type import namedval
- from pyasn1.type import univ
- from pyasn1_modules import rfc5280
- def _OID(*components):
- output = []
- for x in tuple(components):
- if isinstance(x, univ.ObjectIdentifier):
- output.extend(list(x))
- else:
- output.append(int(x))
- return univ.ObjectIdentifier(output)
- md2 = _OID(1, 2, 840, 113549, 2, 2)
- md5 = _OID(1, 2, 840, 113549, 2, 5)
- id_sha1 = _OID(1, 3, 14, 3, 2, 26)
- id_dsa = _OID(1, 2, 840, 10040, 4, 1)
- class DSAPublicKey(univ.Integer):
- pass
- class Dss_Parms(univ.Sequence):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('p', univ.Integer()),
- namedtype.NamedType('q', univ.Integer()),
- namedtype.NamedType('g', univ.Integer())
- )
- id_dsa_with_sha1 = _OID(1, 2, 840, 10040, 4, 3)
- class Dss_Sig_Value(univ.Sequence):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('r', univ.Integer()),
- namedtype.NamedType('s', univ.Integer())
- )
- pkcs_1 = _OID(1, 2, 840, 113549, 1, 1)
- rsaEncryption = _OID(pkcs_1, 1)
- md2WithRSAEncryption = _OID(pkcs_1, 2)
- md5WithRSAEncryption = _OID(pkcs_1, 4)
- sha1WithRSAEncryption = _OID(pkcs_1, 5)
- class RSAPublicKey(univ.Sequence):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('modulus', univ.Integer()),
- namedtype.NamedType('publicExponent', univ.Integer())
- )
- dhpublicnumber = _OID(1, 2, 840, 10046, 2, 1)
- class DHPublicKey(univ.Integer):
- pass
- class ValidationParms(univ.Sequence):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('seed', univ.BitString()),
- namedtype.NamedType('pgenCounter', univ.Integer())
- )
- class DomainParameters(univ.Sequence):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('p', univ.Integer()),
- namedtype.NamedType('g', univ.Integer()),
- namedtype.NamedType('q', univ.Integer()),
- namedtype.OptionalNamedType('j', univ.Integer()),
- namedtype.OptionalNamedType('validationParms', ValidationParms())
- )
- id_keyExchangeAlgorithm = _OID(2, 16, 840, 1, 101, 2, 1, 1, 22)
- class KEA_Parms_Id(univ.OctetString):
- pass
- ansi_X9_62 = _OID(1, 2, 840, 10045)
- class FieldID(univ.Sequence):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('fieldType', univ.ObjectIdentifier()),
- namedtype.NamedType('parameters', univ.Any())
- )
- id_ecSigType = _OID(ansi_X9_62, 4)
- ecdsa_with_SHA1 = _OID(id_ecSigType, 1)
- class ECDSA_Sig_Value(univ.Sequence):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('r', univ.Integer()),
- namedtype.NamedType('s', univ.Integer())
- )
- id_fieldType = _OID(ansi_X9_62, 1)
- prime_field = _OID(id_fieldType, 1)
- class Prime_p(univ.Integer):
- pass
- characteristic_two_field = _OID(id_fieldType, 2)
- class Characteristic_two(univ.Sequence):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('m', univ.Integer()),
- namedtype.NamedType('basis', univ.ObjectIdentifier()),
- namedtype.NamedType('parameters', univ.Any())
- )
- id_characteristic_two_basis = _OID(characteristic_two_field, 3)
- gnBasis = _OID(id_characteristic_two_basis, 1)
- tpBasis = _OID(id_characteristic_two_basis, 2)
- class Trinomial(univ.Integer):
- pass
- ppBasis = _OID(id_characteristic_two_basis, 3)
- class Pentanomial(univ.Sequence):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('k1', univ.Integer()),
- namedtype.NamedType('k2', univ.Integer()),
- namedtype.NamedType('k3', univ.Integer())
- )
- class FieldElement(univ.OctetString):
- pass
- class ECPoint(univ.OctetString):
- pass
- class Curve(univ.Sequence):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('a', FieldElement()),
- namedtype.NamedType('b', FieldElement()),
- namedtype.OptionalNamedType('seed', univ.BitString())
- )
- class ECPVer(univ.Integer):
- namedValues = namedval.NamedValues(
- ('ecpVer1', 1)
- )
- class ECParameters(univ.Sequence):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('version', ECPVer()),
- namedtype.NamedType('fieldID', FieldID()),
- namedtype.NamedType('curve', Curve()),
- namedtype.NamedType('base', ECPoint()),
- namedtype.NamedType('order', univ.Integer()),
- namedtype.OptionalNamedType('cofactor', univ.Integer())
- )
- class EcpkParameters(univ.Choice):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('ecParameters', ECParameters()),
- namedtype.NamedType('namedCurve', univ.ObjectIdentifier()),
- namedtype.NamedType('implicitlyCA', univ.Null())
- )
- id_publicKeyType = _OID(ansi_X9_62, 2)
- id_ecPublicKey = _OID(id_publicKeyType, 1)
- ellipticCurve = _OID(ansi_X9_62, 3)
- c_TwoCurve = _OID(ellipticCurve, 0)
- c2pnb163v1 = _OID(c_TwoCurve, 1)
- c2pnb163v2 = _OID(c_TwoCurve, 2)
- c2pnb163v3 = _OID(c_TwoCurve, 3)
- c2pnb176w1 = _OID(c_TwoCurve, 4)
- c2tnb191v1 = _OID(c_TwoCurve, 5)
- c2tnb191v2 = _OID(c_TwoCurve, 6)
- c2tnb191v3 = _OID(c_TwoCurve, 7)
- c2onb191v4 = _OID(c_TwoCurve, 8)
- c2onb191v5 = _OID(c_TwoCurve, 9)
- c2pnb208w1 = _OID(c_TwoCurve, 10)
- c2tnb239v1 = _OID(c_TwoCurve, 11)
- c2tnb239v2 = _OID(c_TwoCurve, 12)
- c2tnb239v3 = _OID(c_TwoCurve, 13)
- c2onb239v4 = _OID(c_TwoCurve, 14)
- c2onb239v5 = _OID(c_TwoCurve, 15)
- c2pnb272w1 = _OID(c_TwoCurve, 16)
- c2pnb304w1 = _OID(c_TwoCurve, 17)
- c2tnb359v1 = _OID(c_TwoCurve, 18)
- c2pnb368w1 = _OID(c_TwoCurve, 19)
- c2tnb431r1 = _OID(c_TwoCurve, 20)
- primeCurve = _OID(ellipticCurve, 1)
- prime192v1 = _OID(primeCurve, 1)
- prime192v2 = _OID(primeCurve, 2)
- prime192v3 = _OID(primeCurve, 3)
- prime239v1 = _OID(primeCurve, 4)
- prime239v2 = _OID(primeCurve, 5)
- prime239v3 = _OID(primeCurve, 6)
- prime256v1 = _OID(primeCurve, 7)
- # Map of Algorithm Identifier OIDs to Parameters added to the
- # ones in rfc5280.py. Do not add OIDs with absent paramaters.
- _algorithmIdentifierMapUpdate = {
- md2: univ.Null(""),
- md5: univ.Null(""),
- id_sha1: univ.Null(""),
- id_dsa: Dss_Parms(),
- rsaEncryption: univ.Null(""),
- md2WithRSAEncryption: univ.Null(""),
- md5WithRSAEncryption: univ.Null(""),
- sha1WithRSAEncryption: univ.Null(""),
- dhpublicnumber: DomainParameters(),
- id_keyExchangeAlgorithm: KEA_Parms_Id(),
- id_ecPublicKey: EcpkParameters(),
- }
- rfc5280.algorithmIdentifierMap.update(_algorithmIdentifierMapUpdate)
|