1# 2# This file is part of pyasn1-modules software. 3# 4# Created by Russ Housley. 5# 6# Copyright (c) 2019, Vigil Security, LLC 7# License: http://snmplabs.com/pyasn1/license.html 8# 9# Diffie-Hellman Proof-of-Possession Algorithms 10# 11# ASN.1 source from: 12# https://www.rfc-editor.org/rfc/rfc6955.txt 13# 14 15from pyasn1.type import namedtype 16from pyasn1.type import univ 17 18from pyasn1_modules import rfc3279 19from pyasn1_modules import rfc5280 20from pyasn1_modules import rfc5652 21 22 23# Imports from RFC 5652 24 25MessageDigest = rfc5652.MessageDigest 26 27IssuerAndSerialNumber = rfc5652.IssuerAndSerialNumber 28 29 30# Imports from RFC 5280 31 32id_pkix = rfc5280.id_pkix 33 34 35# Imports from RFC 3279 36 37Dss_Sig_Value = rfc3279.Dss_Sig_Value 38 39DomainParameters = rfc3279.DomainParameters 40 41 42# Static DH Proof-of-Possession 43 44class DhSigStatic(univ.Sequence): 45 componentType = namedtype.NamedTypes( 46 namedtype.OptionalNamedType('issuerAndSerial', IssuerAndSerialNumber()), 47 namedtype.NamedType('hashValue', MessageDigest()) 48 ) 49 50 51# Object Identifiers 52 53id_dh_sig_hmac_sha1 = id_pkix + (6, 3, ) 54 55id_dhPop_static_sha1_hmac_sha1 = univ.ObjectIdentifier(id_dh_sig_hmac_sha1) 56 57 58id_alg_dh_pop = id_pkix + (6, 4, ) 59 60id_alg_dhPop_sha1 = univ.ObjectIdentifier(id_alg_dh_pop) 61 62id_alg_dhPop_sha224 = id_pkix + (6, 5, ) 63 64id_alg_dhPop_sha256 = id_pkix + (6, 6, ) 65 66id_alg_dhPop_sha384 = id_pkix + (6, 7, ) 67 68id_alg_dhPop_sha512 = id_pkix + (6, 8, ) 69 70 71id_alg_dhPop_static_sha224_hmac_sha224 = id_pkix + (6, 15, ) 72 73id_alg_dhPop_static_sha256_hmac_sha256 = id_pkix + (6, 16, ) 74 75id_alg_dhPop_static_sha384_hmac_sha384 = id_pkix + (6, 17, ) 76 77id_alg_dhPop_static_sha512_hmac_sha512 = id_pkix + (6, 18, ) 78 79 80id_alg_ecdhPop_static_sha224_hmac_sha224 = id_pkix + (6, 25, ) 81 82id_alg_ecdhPop_static_sha256_hmac_sha256 = id_pkix + (6, 26, ) 83 84id_alg_ecdhPop_static_sha384_hmac_sha384 = id_pkix + (6, 27, ) 85 86id_alg_ecdhPop_static_sha512_hmac_sha512 = id_pkix + (6, 28, ) 87 88 89# Update the Algorithm Identifier map in rfc5280.py 90 91_algorithmIdentifierMapUpdate = { 92 id_alg_dh_pop: DomainParameters(), 93 id_alg_dhPop_sha224: DomainParameters(), 94 id_alg_dhPop_sha256: DomainParameters(), 95 id_alg_dhPop_sha384: DomainParameters(), 96 id_alg_dhPop_sha512: DomainParameters(), 97 id_dh_sig_hmac_sha1: univ.Null(""), 98 id_alg_dhPop_static_sha224_hmac_sha224: univ.Null(""), 99 id_alg_dhPop_static_sha256_hmac_sha256: univ.Null(""), 100 id_alg_dhPop_static_sha384_hmac_sha384: univ.Null(""), 101 id_alg_dhPop_static_sha512_hmac_sha512: univ.Null(""), 102 id_alg_ecdhPop_static_sha224_hmac_sha224: univ.Null(""), 103 id_alg_ecdhPop_static_sha256_hmac_sha256: univ.Null(""), 104 id_alg_ecdhPop_static_sha384_hmac_sha384: univ.Null(""), 105 id_alg_ecdhPop_static_sha512_hmac_sha512: univ.Null(""), 106} 107 108rfc5280.algorithmIdentifierMap.update(_algorithmIdentifierMapUpdate) 109