Index: third_party/google-endpoints/rsa/asn1.py |
diff --git a/third_party/google-endpoints/rsa/asn1.py b/third_party/google-endpoints/rsa/asn1.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b724b8f53d8e73e6140209f69c1b0130b038a4c6 |
--- /dev/null |
+++ b/third_party/google-endpoints/rsa/asn1.py |
@@ -0,0 +1,53 @@ |
+# -*- coding: utf-8 -*- |
+# |
+# Copyright 2011 Sybren A. Stüvel <sybren@stuvel.eu> |
+# |
+# Licensed under the Apache License, Version 2.0 (the "License"); |
+# you may not use this file except in compliance with the License. |
+# You may obtain a copy of the License at |
+# |
+# https://www.apache.org/licenses/LICENSE-2.0 |
+# |
+# Unless required by applicable law or agreed to in writing, software |
+# distributed under the License is distributed on an "AS IS" BASIS, |
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+# See the License for the specific language governing permissions and |
+# limitations under the License. |
+ |
+"""ASN.1 definitions. |
+ |
+Not all ASN.1-handling code use these definitions, but when it does, they should be here. |
+""" |
+ |
+from pyasn1.type import univ, namedtype, tag |
+ |
+ |
+class PubKeyHeader(univ.Sequence): |
+ componentType = namedtype.NamedTypes( |
+ namedtype.NamedType('oid', univ.ObjectIdentifier()), |
+ namedtype.NamedType('parameters', univ.Null()), |
+ ) |
+ |
+ |
+class OpenSSLPubKey(univ.Sequence): |
+ componentType = namedtype.NamedTypes( |
+ namedtype.NamedType('header', PubKeyHeader()), |
+ |
+ # This little hack (the implicit tag) allows us to get a Bit String as Octet String |
+ namedtype.NamedType('key', univ.OctetString().subtype( |
+ implicitTag=tag.Tag(tagClass=0, tagFormat=0, tagId=3))), |
+ ) |
+ |
+ |
+class AsnPubKey(univ.Sequence): |
+ """ASN.1 contents of DER encoded public key: |
+ |
+ RSAPublicKey ::= SEQUENCE { |
+ modulus INTEGER, -- n |
+ publicExponent INTEGER, -- e |
+ """ |
+ |
+ componentType = namedtype.NamedTypes( |
+ namedtype.NamedType('modulus', univ.Integer()), |
+ namedtype.NamedType('publicExponent', univ.Integer()), |
+ ) |