diff options
author | herbertxue <herbertxue@google.com> | 2018-06-12 10:44:13 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-06-12 10:44:13 -0700 |
commit | bb1c2dedecd5abed776627728e9f7a02d0665727 (patch) | |
tree | 75545e9a8e9a5fce6df78d519c65628720ec47b5 /rsa/asn1.py | |
parent | dbe61a7ce8c6b3a1ffbf632590ea05c61231b687 (diff) | |
parent | d8ac8301abc7ccb1a099ceb7e4d435ea55bf4a46 (diff) | |
download | rsa-bb1c2dedecd5abed776627728e9f7a02d0665727.tar.gz |
Merge commit 'fd70d79' into rsa_3.4.2 Inital commit of rsa 3.4.2 with historymaster-cuttlefish-testing-release
am: d8ac8301ab
Change-Id: Id2b3352d050725b82e9284bd126949cacfdd5a36
Diffstat (limited to 'rsa/asn1.py')
-rw-r--r-- | rsa/asn1.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/rsa/asn1.py b/rsa/asn1.py new file mode 100644 index 0000000..b724b8f --- /dev/null +++ b/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()), + ) |