aboutsummaryrefslogtreecommitdiff
path: root/pyasn1_modules
diff options
context:
space:
mode:
authorRuss Housley <housley@vigilsec.com>2019-10-08 16:28:53 -0400
committerIlya Etingof <etingof@gmail.com>2019-10-08 22:28:53 +0200
commite33d2ac356fa13ac1f5c5622d4c7bd00202161d2 (patch)
tree64b3b79e507895c70998e44ccb203ad4f89a330a /pyasn1_modules
parentd3a9ae35fb63cb2d8372a352da26e53a9009edfb (diff)
downloadpyasn1-modules-e33d2ac356fa13ac1f5c5622d4c7bd00202161d2.tar.gz
Add support for RFC 7914 (#77)
Diffstat (limited to 'pyasn1_modules')
-rw-r--r--pyasn1_modules/rfc7914.py49
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)