| # |
| # This file is part of pyasn1-modules software. |
| # |
| # Created by Russ Housley. |
| # |
| # Copyright (c) 2019, Vigil Security, LLC |
| # License: http://snmplabs.com/pyasn1/license.html |
| # |
| # PKCS #1: RSA Cryptography Specifications Version 2.2 |
| # |
| # ASN.1 source from: |
| # https://www.rfc-editor.org/rfc/rfc8017.txt |
| # |
| |
| from pyasn1.type import constraint |
| from pyasn1.type import namedtype |
| from pyasn1.type import namedval |
| from pyasn1.type import univ |
| |
| from pyasn1_modules import rfc2437 |
| from pyasn1_modules import rfc3447 |
| from pyasn1_modules import rfc4055 |
| from pyasn1_modules import rfc5280 |
| |
| MAX = float('inf') |
| |
| |
| # Import Algorithm Identifier from RFC 5280 |
| |
| AlgorithmIdentifier = rfc5280.AlgorithmIdentifier |
| |
| class DigestAlgorithm(AlgorithmIdentifier): |
| pass |
| |
| class HashAlgorithm(AlgorithmIdentifier): |
| pass |
| |
| class MaskGenAlgorithm(AlgorithmIdentifier): |
| pass |
| |
| class PSourceAlgorithm(AlgorithmIdentifier): |
| pass |
| |
| |
| # Object identifiers from NIST SHA2 |
| |
| hashAlgs = univ.ObjectIdentifier('2.16.840.1.101.3.4.2') |
| id_sha256 = rfc4055.id_sha256 |
| id_sha384 = rfc4055.id_sha384 |
| id_sha512 = rfc4055.id_sha512 |
| id_sha224 = rfc4055.id_sha224 |
| id_sha512_224 = hashAlgs + (5, ) |
| id_sha512_256 = hashAlgs + (6, ) |
| |
| |
| # Basic object identifiers |
| |
| pkcs_1 = univ.ObjectIdentifier('1.2.840.113549.1.1') |
| rsaEncryption = rfc2437.rsaEncryption |
| id_RSAES_OAEP = rfc2437.id_RSAES_OAEP |
| id_pSpecified = rfc2437.id_pSpecified |
| id_RSASSA_PSS = rfc4055.id_RSASSA_PSS |
| md2WithRSAEncryption = rfc2437.md2WithRSAEncryption |
| md5WithRSAEncryption = rfc2437.md5WithRSAEncryption |
| sha1WithRSAEncryption = rfc2437.sha1WithRSAEncryption |
| sha224WithRSAEncryption = rfc4055.sha224WithRSAEncryption |
| sha256WithRSAEncryption = rfc4055.sha256WithRSAEncryption |
| sha384WithRSAEncryption = rfc4055.sha384WithRSAEncryption |
| sha512WithRSAEncryption = rfc4055.sha512WithRSAEncryption |
| sha512_224WithRSAEncryption = pkcs_1 + (15, ) |
| sha512_256WithRSAEncryption = pkcs_1 + (16, ) |
| id_sha1 = rfc2437.id_sha1 |
| id_md2 = univ.ObjectIdentifier('1.2.840.113549.2.2') |
| id_md5 = univ.ObjectIdentifier('1.2.840.113549.2.5') |
| id_mgf1 = rfc2437.id_mgf1 |
| |
| |
| # Default parameter values |
| |
| sha1 = rfc4055.sha1Identifier |
| SHA1Parameters = univ.Null("") |
| |
| mgf1SHA1 = rfc4055.mgf1SHA1Identifier |
| |
| class EncodingParameters(univ.OctetString): |
| subtypeSpec = constraint.ValueSizeConstraint(0, MAX) |
| |
| pSpecifiedEmpty = rfc4055.pSpecifiedEmptyIdentifier |
| |
| emptyString = EncodingParameters(value='') |
| |
| |
| # Main structures |
| |
| class Version(univ.Integer): |
| namedValues = namedval.NamedValues( |
| ('two-prime', 0), |
| ('multi', 1) |
| ) |
| |
| class TrailerField(univ.Integer): |
| namedValues = namedval.NamedValues( |
| ('trailerFieldBC', 1) |
| ) |
| |
| RSAPublicKey = rfc2437.RSAPublicKey |
| |
| OtherPrimeInfo = rfc3447.OtherPrimeInfo |
| OtherPrimeInfos = rfc3447.OtherPrimeInfos |
| RSAPrivateKey = rfc3447.RSAPrivateKey |
| |
| RSAES_OAEP_params = rfc4055.RSAES_OAEP_params |
| rSAES_OAEP_Default_Identifier = rfc4055.rSAES_OAEP_Default_Identifier |
| |
| RSASSA_PSS_params = rfc4055.RSASSA_PSS_params |
| rSASSA_PSS_Default_Identifier = rfc4055.rSASSA_PSS_Default_Identifier |
| |
| |
| # Syntax for the EMSA-PKCS1-v1_5 hash identifier |
| |
| class DigestInfo(univ.Sequence): |
| componentType = namedtype.NamedTypes( |
| namedtype.NamedType('digestAlgorithm', DigestAlgorithm()), |
| namedtype.NamedType('digest', univ.OctetString()) |
| ) |
| |
| |
| # Update the Algorithm Identifier map |
| |
| _algorithmIdentifierMapUpdate = { |
| id_sha1: univ.Null(), |
| id_sha224: univ.Null(), |
| id_sha256: univ.Null(), |
| id_sha384: univ.Null(), |
| id_sha512: univ.Null(), |
| id_sha512_224: univ.Null(), |
| id_sha512_256: univ.Null(), |
| id_mgf1: AlgorithmIdentifier(), |
| id_pSpecified: univ.OctetString(), |
| id_RSAES_OAEP: RSAES_OAEP_params(), |
| id_RSASSA_PSS: RSASSA_PSS_params(), |
| md2WithRSAEncryption: univ.Null(), |
| md5WithRSAEncryption: univ.Null(), |
| sha1WithRSAEncryption: univ.Null(), |
| sha224WithRSAEncryption: univ.Null(), |
| sha256WithRSAEncryption: univ.Null(), |
| sha384WithRSAEncryption: univ.Null(), |
| sha512WithRSAEncryption: univ.Null(), |
| sha512_224WithRSAEncryption: univ.Null(), |
| sha512_256WithRSAEncryption: univ.Null(), |
| } |
| |
| rfc5280.algorithmIdentifierMap.update(_algorithmIdentifierMapUpdate) |