Index: third_party/gsutil/third_party/pyasn1-modules/pyasn1_modules/rfc5208.py |
diff --git a/third_party/gsutil/third_party/pyasn1-modules/pyasn1_modules/rfc5208.py b/third_party/gsutil/third_party/pyasn1-modules/pyasn1_modules/rfc5208.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d1d2c16911bcc2ab97b7d611f4d3c1967fceb0ee |
--- /dev/null |
+++ b/third_party/gsutil/third_party/pyasn1-modules/pyasn1_modules/rfc5208.py |
@@ -0,0 +1,39 @@ |
+# |
+# PKCS#8 syntax |
+# |
+# ASN.1 source from: |
+# http://tools.ietf.org/html/rfc5208 |
+# |
+# Sample captures could be obtained with "openssl pkcs8 -topk8" command |
+# |
+from pyasn1.type import tag, namedtype, namedval, univ, constraint |
+from pyasn1_modules.rfc2459 import * |
+from pyasn1_modules import rfc2251 |
+ |
+class KeyEncryptionAlgorithms(AlgorithmIdentifier): pass |
+ |
+class PrivateKeyAlgorithms(AlgorithmIdentifier): pass |
+ |
+class EncryptedData(univ.OctetString): pass |
+ |
+class EncryptedPrivateKeyInfo(univ.Sequence): |
+ componentType = namedtype.NamedTypes( |
+ namedtype.NamedType('encryptionAlgorithm', AlgorithmIdentifier()), |
+ namedtype.NamedType('encryptedData', EncryptedData()) |
+ ) |
+ |
+class PrivateKey(univ.OctetString): pass |
+ |
+class Attributes(univ.SetOf): |
+ componentType = rfc2251.Attribute() |
+ |
+class Version(univ.Integer): |
+ namedValues = namedval.NamedValues(('v1', 0), ('v2', 1)) |
+ |
+class PrivateKeyInfo(univ.Sequence): |
+ componentType = namedtype.NamedTypes( |
+ namedtype.NamedType('version', Version()), |
+ namedtype.NamedType('privateKeyAlgorithm', AlgorithmIdentifier()), |
+ namedtype.NamedType('privateKey', PrivateKey()), |
+ namedtype.OptionalNamedType('attributes', Attributes().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))) |
+ ) |