diff options
author | Russ Housley <housley@vigilsec.com> | 2019-10-08 16:28:53 -0400 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2019-10-08 22:28:53 +0200 |
commit | e33d2ac356fa13ac1f5c5622d4c7bd00202161d2 (patch) | |
tree | 64b3b79e507895c70998e44ccb203ad4f89a330a /pyasn1_modules | |
parent | d3a9ae35fb63cb2d8372a352da26e53a9009edfb (diff) | |
download | pyasn1-modules-e33d2ac356fa13ac1f5c5622d4c7bd00202161d2.tar.gz |
Add support for RFC 7914 (#77)
Diffstat (limited to 'pyasn1_modules')
-rw-r--r-- | pyasn1_modules/rfc7914.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/pyasn1_modules/rfc7914.py b/pyasn1_modules/rfc7914.py new file mode 100644 index 0000000..99e9551 --- /dev/null +++ b/pyasn1_modules/rfc7914.py @@ -0,0 +1,49 @@ +# +# This file is part of pyasn1-modules software. +# +# 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 +# +#The scrypt Password-Based Key Derivation Function +# +# ASN.1 source from: +# https://www.rfc-editor.org/rfc/rfc8520.txt +# https://www.rfc-editor.org/errata/eid5871 +# + +from pyasn1.type import constraint +from pyasn1.type import namedtype +from pyasn1.type import univ + +from pyasn1_modules import rfc5280 + +MAX = float('inf') + + +id_scrypt = univ.ObjectIdentifier('1.3.6.1.4.1.11591.4.11') + + +class Scrypt_params(univ.Sequence): + componentType = namedtype.NamedTypes( + namedtype.NamedType('salt', + univ.OctetString()), + namedtype.NamedType('costParameter', + univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, MAX))), + namedtype.NamedType('blockSize', + univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, MAX))), + namedtype.NamedType('parallelizationParameter', + univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, MAX))), + namedtype.OptionalNamedType('keyLength', + univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, MAX))) + ) + + +# Update the Algorithm Identifier map in rfc5280.py + +_algorithmIdentifierMapUpdate = { + id_scrypt: Scrypt_params(), +} + +rfc5280.algorithmIdentifierMap.update(_algorithmIdentifierMapUpdate) |