mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 11:25:00 +00:00
bug 1413336 - (2/7) update pyasn1-modules to 0.1.5 r=ted
MozReview-Commit-ID: LxvkXFhlZUw --HG-- extra : rebase_source : 93d9c134eed6ff24a9809f192d1251bf326a197e
This commit is contained in:
parent
e577789849
commit
1dafe56608
45
third_party/python/pyasn1-modules/CHANGES
vendored
45
third_party/python/pyasn1-modules/CHANGES
vendored
@ -1,45 +0,0 @@
|
||||
Revision 0.0.5
|
||||
--------------
|
||||
|
||||
- License updated to vanilla BSD 2-Clause to ease package use
|
||||
(http://opensource.org/licenses/BSD-2-Clause).
|
||||
|
||||
Revision 0.0.4
|
||||
--------------
|
||||
|
||||
- CMP structures (RFC4210), cmpdump.py tool and test case added.
|
||||
- SNMPv2c Message syntax (RFC1901) properly defined.
|
||||
- Package version established in form of __init__.__version__
|
||||
which is in-sync with distutils.
|
||||
- Package meta information and classifiers updated.
|
||||
|
||||
Revision 0.0.3
|
||||
--------------
|
||||
|
||||
- Text cases implemented
|
||||
- X.509 CRMF structures (RFC2511) and crmfdump.py tool added
|
||||
- X.509 CRL structures and crldump.py tool added
|
||||
- PKCS#10 structures and pkcs10dump.py tool added
|
||||
- PKCS#8 structures and pkcs8dump.py tool added
|
||||
- PKCS#1 (rfc3447) structures added
|
||||
- OCSP request & response dumping tool added
|
||||
- SNMPv2c & SNMPv3/USM structures added
|
||||
- keydump.py moved into pkcs1dump.py
|
||||
- PEM files read function generalized to be used more universally.
|
||||
- complete PKIX1 '88 code implemented at rfc2459.py
|
||||
|
||||
|
||||
Revision 0.0.2
|
||||
--------------
|
||||
|
||||
- Require pyasn1 >= 0.1.1
|
||||
- Fixes towards Py3K compatibility
|
||||
+ use either of existing urllib module
|
||||
+ adopt to the new bytes type
|
||||
+ print operator is now a function
|
||||
+ new exception syntax
|
||||
|
||||
Revision 0.0.1a
|
||||
---------------
|
||||
|
||||
- Initial revision, most code carried from pyasn1 examples.
|
124
third_party/python/pyasn1-modules/CHANGES.txt
vendored
Normal file
124
third_party/python/pyasn1-modules/CHANGES.txt
vendored
Normal file
@ -0,0 +1,124 @@
|
||||
|
||||
Revision 0.1.5, released 10-10-2017
|
||||
-----------------------------------
|
||||
|
||||
- OCSP response blob fixed in test
|
||||
- Fixed wrong OCSP ResponderID components tagging
|
||||
|
||||
Revision 0.1.4, released 07-09-2017
|
||||
-----------------------------------
|
||||
|
||||
- Typo fixed in the dependency spec
|
||||
|
||||
Revision 0.1.3, released 07-09-2017
|
||||
-----------------------------------
|
||||
|
||||
- Apparently, pip>=1.5.6 is still widely used and it is not PEP440
|
||||
compliant. Had to replace the `~=` version dependency spec with a
|
||||
sequence of simple comparisons to remain compatible with the aging pip.
|
||||
|
||||
Revision 0.1.2, released 07-09-2017
|
||||
-----------------------------------
|
||||
|
||||
- Pinned to pyasn1 ~0.3.4
|
||||
|
||||
Revision 0.1.1, released 27-08-2017
|
||||
-----------------------------------
|
||||
|
||||
- Tests refactored into proper unit tests
|
||||
- pem.readBase64fromText() convenience function added
|
||||
- Pinned to pyasn1 0.3.3
|
||||
|
||||
Revision 0.0.11, released 04-08-2017
|
||||
------------------------------------
|
||||
|
||||
- Fixed typo in ASN.1 definitions at rfc2315.py
|
||||
|
||||
Revision 0.0.10, released 27-07-2017
|
||||
------------------------------------
|
||||
|
||||
* Fixed SequenceOf initializer to pass now-mandatory componentType
|
||||
keyword argument (since pyasn1 0.3.1)
|
||||
* Temporarily fixed recursive ASN.1 type definition to work with
|
||||
pyasn1 0.3.1+. This is going to be fixed properly shortly.
|
||||
|
||||
Revision 0.0.9, released 01-06-2017
|
||||
-----------------------------------
|
||||
|
||||
* More CRL data structures added (RFC3279)
|
||||
* Added X.509 certificate extensions map
|
||||
* Added X.509 attribute type map
|
||||
* Fix to __doc__ use in setup.py to make -O0 installation mode working
|
||||
* Copyright added to source files
|
||||
* More PEP-8'ing done on the code
|
||||
* Author's e-mail changed
|
||||
|
||||
Revision 0.0.8, released 28-09-2015
|
||||
-----------------------------------
|
||||
|
||||
- Wheel distribution format now supported
|
||||
- Fix to misspelled rfc2459.id_at_sutname variable
|
||||
- Fix to misspelled rfc2459.NameConstraints component tag ID
|
||||
- Fix to misspelled rfc2459.GeneralSubtree component default status
|
||||
|
||||
Revision 0.0.7, released 01-08-2015
|
||||
-----------------------------------
|
||||
|
||||
- Extensions added to text files, CVS attic flushed.
|
||||
- Fix to rfc2459.BasicConstraints syntax.
|
||||
|
||||
Revision 0.0.6, released 21-06-2015
|
||||
-----------------------------------
|
||||
|
||||
- Typo fix to id_kp_serverAuth object value
|
||||
- A test case for indefinite length encoding eliminated as it's
|
||||
forbidden in DER.
|
||||
|
||||
Revision 0.0.5
|
||||
--------------
|
||||
|
||||
- License updated to vanilla BSD 2-Clause to ease package use
|
||||
(http://opensource.org/licenses/BSD-2-Clause).
|
||||
- Missing components added to rfc4210.PKIBody.
|
||||
- Fix to rfc2459.CRLDistPointsSyntax typo.
|
||||
- Fix to rfc2511.CertReqMsg typo.
|
||||
|
||||
Revision 0.0.4
|
||||
--------------
|
||||
|
||||
- CMP structures (RFC4210), cmpdump.py tool and test case added.
|
||||
- SNMPv2c Message syntax (RFC1901) properly defined.
|
||||
- Package version established in form of __init__.__version__
|
||||
which is in-sync with distutils.
|
||||
- Package meta information and classifiers updated.
|
||||
|
||||
Revision 0.0.3
|
||||
--------------
|
||||
|
||||
- Text cases implemented
|
||||
- X.509 CRMF structures (RFC2511) and crmfdump.py tool added
|
||||
- X.509 CRL structures and crldump.py tool added
|
||||
- PKCS#10 structures and pkcs10dump.py tool added
|
||||
- PKCS#8 structures and pkcs8dump.py tool added
|
||||
- PKCS#1 (rfc3447) structures added
|
||||
- OCSP request & response dumping tool added
|
||||
- SNMPv2c & SNMPv3/USM structures added
|
||||
- keydump.py moved into pkcs1dump.py
|
||||
- PEM files read function generalized to be used more universally.
|
||||
- complete PKIX1 '88 code implemented at rfc2459.py
|
||||
|
||||
|
||||
Revision 0.0.2
|
||||
--------------
|
||||
|
||||
- Require pyasn1 >= 0.1.1
|
||||
- Fixes towards Py3K compatibility
|
||||
+ use either of existing urllib module
|
||||
+ adopt to the new bytes type
|
||||
+ print operator is now a function
|
||||
+ new exception syntax
|
||||
|
||||
Revision 0.0.1a
|
||||
---------------
|
||||
|
||||
- Initial revision, most code carried from pyasn1 examples.
|
@ -1,4 +1,4 @@
|
||||
Copyright (c) 2005-2013, Ilya Etingof <ilya@glas.net>
|
||||
Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
@ -1,3 +1,4 @@
|
||||
include CHANGES README LICENSE
|
||||
include *.txt *.md
|
||||
recursive-include tools *.py
|
||||
recursive-include test *.sh
|
||||
recursive-include tests *.py
|
||||
prune doc/build
|
||||
|
23
third_party/python/pyasn1-modules/PKG-INFO
vendored
23
third_party/python/pyasn1-modules/PKG-INFO
vendored
@ -1,10 +1,10 @@
|
||||
Metadata-Version: 1.0
|
||||
Metadata-Version: 1.1
|
||||
Name: pyasn1-modules
|
||||
Version: 0.0.5
|
||||
Version: 0.1.5
|
||||
Summary: A collection of ASN.1-based protocols modules.
|
||||
Home-page: http://sourceforge.net/projects/pyasn1/
|
||||
Author: Ilya Etingof <ilya@glas.net>
|
||||
Author-email: ilya@glas.net
|
||||
Home-page: https://github.com/etingof/pyasn1-modules
|
||||
Author: Ilya Etingof <etingof@gmail.com>
|
||||
Author-email: etingof@gmail.com
|
||||
License: BSD
|
||||
Description: A collection of ASN.1 modules expressed in form of pyasn1 classes. Includes protocols PDUs definition (SNMP, LDAP etc.) and various data structures (X.509, PKCS etc.).
|
||||
Platform: any
|
||||
@ -13,14 +13,23 @@ Classifier: Environment :: Console
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Intended Audience :: Education
|
||||
Classifier: Intended Audience :: Information Technology
|
||||
Classifier: Intended Audience :: Science/Research
|
||||
Classifier: Intended Audience :: System Administrators
|
||||
Classifier: Intended Audience :: Telecommunications Industry
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Natural Language :: English
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.4
|
||||
Classifier: Programming Language :: Python :: 2.5
|
||||
Classifier: Programming Language :: Python :: 2.6
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.2
|
||||
Classifier: Programming Language :: Python :: 3.3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Topic :: Communications
|
||||
Classifier: Topic :: Security :: Cryptography
|
||||
Classifier: Topic :: System :: Monitoring
|
||||
Classifier: Topic :: System :: Networking :: Monitoring
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
|
17
third_party/python/pyasn1-modules/README
vendored
17
third_party/python/pyasn1-modules/README
vendored
@ -1,17 +0,0 @@
|
||||
|
||||
ASN.1 modules for Python
|
||||
------------------------
|
||||
|
||||
This is a small but growing collection of ASN.1 data structures
|
||||
[1] expressed in Python terms using pyasn1 [2] data model.
|
||||
|
||||
It's thought to be useful to protocol developers and testers.
|
||||
|
||||
All modules are py2k/py3k-compliant.
|
||||
|
||||
If you happen to convert some ASN.1 module into pyasn1 that is not
|
||||
yet present in this collection and wish to contribute - please send
|
||||
it to me.
|
||||
|
||||
=-=-=
|
||||
mailto: ilya@glas.net
|
30
third_party/python/pyasn1-modules/README.md
vendored
Normal file
30
third_party/python/pyasn1-modules/README.md
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
ASN.1 modules for Python
|
||||
------------------------
|
||||
[![PyPI](https://img.shields.io/pypi/v/pyasn1-modules.svg?maxAge=2592000)](https://pypi.python.org/pypi/pyasn1-modules)
|
||||
[![Python Versions](https://img.shields.io/pypi/pyversions/pyasn1-modules.svg)](https://pypi.python.org/pypi/pyasn1-modules/)
|
||||
[![Build status](https://travis-ci.org/etingof/pyasn1-modules.svg?branch=master)](https://secure.travis-ci.org/etingof/pyasn1-modules)
|
||||
[![Coverage Status](https://img.shields.io/codecov/c/github/etingof/pyasn1-modules.svg)](https://codecov.io/github/etingof/pyasn1-modules/)
|
||||
[![GitHub license](https://img.shields.io/badge/license-BSD-blue.svg)](https://raw.githubusercontent.com/etingof/pyasn1-modules/master/LICENSE.txt)
|
||||
|
||||
This is a small but growing collection of
|
||||
[ASN.1](https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-X.208-198811-W!!PDF-E&type=items)
|
||||
data structures expressed in Python terms using [pyasn1](https://github.com/etingof/pyasn1) data model.
|
||||
|
||||
If ASN.1 module you need is not present in this collection, try using
|
||||
[Asn1ate](https://github.com/kimgr/asn1ate) tool that compiles ASN.1 documents
|
||||
into pyasn1 code.
|
||||
|
||||
Feedback
|
||||
--------
|
||||
|
||||
If something does not work as expected, try browsing pyasn1
|
||||
[mailing list archives](https://sourceforge.net/p/pyasn1/mailman/pyasn1-users/)
|
||||
or post your question
|
||||
[to Stack Overflow](http://stackoverflow.com/questions/ask).
|
||||
If you want to contribute ASN.1 modules you have converted into pyasn1,
|
||||
please send me a pull request.
|
||||
|
||||
Copyright (c) 2005-2017, [Ilya Etingof](mailto:etingof@gmail.com).
|
||||
All rights reserved.
|
||||
|
@ -1,10 +1,10 @@
|
||||
Metadata-Version: 1.0
|
||||
Metadata-Version: 1.1
|
||||
Name: pyasn1-modules
|
||||
Version: 0.0.5
|
||||
Version: 0.1.5
|
||||
Summary: A collection of ASN.1-based protocols modules.
|
||||
Home-page: http://sourceforge.net/projects/pyasn1/
|
||||
Author: Ilya Etingof <ilya@glas.net>
|
||||
Author-email: ilya@glas.net
|
||||
Home-page: https://github.com/etingof/pyasn1-modules
|
||||
Author: Ilya Etingof <etingof@gmail.com>
|
||||
Author-email: etingof@gmail.com
|
||||
License: BSD
|
||||
Description: A collection of ASN.1 modules expressed in form of pyasn1 classes. Includes protocols PDUs definition (SNMP, LDAP etc.) and various data structures (X.509, PKCS etc.).
|
||||
Platform: any
|
||||
@ -13,14 +13,23 @@ Classifier: Environment :: Console
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Intended Audience :: Education
|
||||
Classifier: Intended Audience :: Information Technology
|
||||
Classifier: Intended Audience :: Science/Research
|
||||
Classifier: Intended Audience :: System Administrators
|
||||
Classifier: Intended Audience :: Telecommunications Industry
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Natural Language :: English
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.4
|
||||
Classifier: Programming Language :: Python :: 2.5
|
||||
Classifier: Programming Language :: Python :: 2.6
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.2
|
||||
Classifier: Programming Language :: Python :: 3.3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Topic :: Communications
|
||||
Classifier: Topic :: Security :: Cryptography
|
||||
Classifier: Topic :: System :: Monitoring
|
||||
Classifier: Topic :: System :: Networking :: Monitoring
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
|
@ -1,11 +1,12 @@
|
||||
CHANGES
|
||||
LICENSE
|
||||
CHANGES.txt
|
||||
LICENSE.txt
|
||||
MANIFEST.in
|
||||
README
|
||||
README.md
|
||||
requirements.txt
|
||||
setup.cfg
|
||||
setup.py
|
||||
pyasn1_modules/__init__.py
|
||||
pyasn1_modules/pem.py
|
||||
pyasn1_modules/pkcs12.py
|
||||
pyasn1_modules/rfc1155.py
|
||||
pyasn1_modules/rfc1157.py
|
||||
pyasn1_modules/rfc1901.py
|
||||
@ -18,37 +19,48 @@ pyasn1_modules/rfc2437.py
|
||||
pyasn1_modules/rfc2459.py
|
||||
pyasn1_modules/rfc2511.py
|
||||
pyasn1_modules/rfc2560.py
|
||||
pyasn1_modules/rfc3279.py
|
||||
pyasn1_modules/rfc3280.py
|
||||
pyasn1_modules/rfc3281.py
|
||||
pyasn1_modules/rfc3412.py
|
||||
pyasn1_modules/rfc3414.py
|
||||
pyasn1_modules/rfc3447.py
|
||||
pyasn1_modules/rfc3852.py
|
||||
pyasn1_modules/rfc4210.py
|
||||
pyasn1_modules/rfc4211.py
|
||||
pyasn1_modules/rfc5208.py
|
||||
pyasn1_modules/rfc5280.py
|
||||
pyasn1_modules/rfc5652.py
|
||||
pyasn1_modules/rfc6402.py
|
||||
pyasn1_modules.egg-info/PKG-INFO
|
||||
pyasn1_modules.egg-info/SOURCES.txt
|
||||
pyasn1_modules.egg-info/dependency_links.txt
|
||||
pyasn1_modules.egg-info/requires.txt
|
||||
pyasn1_modules.egg-info/top_level.txt
|
||||
pyasn1_modules.egg-info/zip-safe
|
||||
test/cmp.sh
|
||||
test/crl.sh
|
||||
test/crmf.sh
|
||||
test/ocspreq.sh
|
||||
test/ocsprsp.sh
|
||||
test/pkcs1.sh
|
||||
test/pkcs10.sh
|
||||
test/pkcs7.sh
|
||||
test/pkcs8.sh
|
||||
test/x509dump.sh
|
||||
tests/__init__.py
|
||||
tests/__main__.py
|
||||
tests/test_rfc2314.py
|
||||
tests/test_rfc2315.py
|
||||
tests/test_rfc2437.py
|
||||
tests/test_rfc2459.py
|
||||
tests/test_rfc2511.py
|
||||
tests/test_rfc2560.py
|
||||
tests/test_rfc4210.py
|
||||
tests/test_rfc5208.py
|
||||
tests/test_rfc5280.py
|
||||
tests/test_rfc5652.py
|
||||
tools/cmcdump.py
|
||||
tools/cmpdump.py
|
||||
tools/crldump.py
|
||||
tools/crmfdump.py
|
||||
tools/ocspclient.py
|
||||
tools/ocspreqdump.py
|
||||
tools/ocsprspdump.py
|
||||
tools/ocspserver.py
|
||||
tools/pkcs10dump.py
|
||||
tools/pkcs1dump.py
|
||||
tools/pkcs7dump.py
|
||||
tools/pkcs8dump.py
|
||||
tools/snmpget.py
|
||||
tools/x509dump-rfc5280.py
|
||||
tools/x509dump.py
|
@ -1 +1 @@
|
||||
pyasn1>=0.1.4
|
||||
pyasn1>=0.3.4,<0.4.0
|
||||
|
@ -1,2 +1,2 @@
|
||||
# http://www.python.org/dev/peps/pep-0396/
|
||||
__version__ = '0.0.5'
|
||||
__version__ = '0.1.5'
|
||||
|
@ -1,17 +1,27 @@
|
||||
import base64, sys
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import base64
|
||||
import sys
|
||||
|
||||
stSpam, stHam, stDump = 0, 1, 2
|
||||
|
||||
|
||||
# The markers parameters is in form ('start1', 'stop1'), ('start2', 'stop2')...
|
||||
# Return is (marker-index, substrate)
|
||||
def readPemBlocksFromFile(fileObj, *markers):
|
||||
startMarkers = dict(map(lambda x: (x[1],x[0]),
|
||||
enumerate(map(lambda x: x[0], markers))))
|
||||
stopMarkers = dict(map(lambda x: (x[1],x[0]),
|
||||
enumerate(map(lambda x: x[1], markers))))
|
||||
idx = -1; substrate = ''
|
||||
startMarkers = dict(map(lambda x: (x[1], x[0]),
|
||||
enumerate(map(lambda y: y[0], markers))))
|
||||
stopMarkers = dict(map(lambda x: (x[1], x[0]),
|
||||
enumerate(map(lambda y: y[1], markers))))
|
||||
idx = -1
|
||||
substrate = ''
|
||||
certLines = []
|
||||
state = stSpam
|
||||
while 1:
|
||||
while True:
|
||||
certLine = fileObj.readline()
|
||||
if not certLine:
|
||||
break
|
||||
@ -29,23 +39,27 @@ def readPemBlocksFromFile(fileObj, *markers):
|
||||
certLines.append(certLine)
|
||||
if state == stDump:
|
||||
if sys.version_info[0] <= 2:
|
||||
substrate = ''.join([ base64.b64decode(x) for x in certLines ])
|
||||
substrate = ''.join([base64.b64decode(x) for x in certLines])
|
||||
else:
|
||||
substrate = ''.encode().join([ base64.b64decode(x.encode()) for x in certLines ])
|
||||
substrate = ''.encode().join([base64.b64decode(x.encode()) for x in certLines])
|
||||
break
|
||||
return idx, substrate
|
||||
|
||||
|
||||
# Backward compatibility routine
|
||||
def readPemFromFile(fileObj,
|
||||
def readPemFromFile(fileObj,
|
||||
startMarker='-----BEGIN CERTIFICATE-----',
|
||||
endMarker='-----END CERTIFICATE-----'):
|
||||
idx, substrate = readPemBlocksFromFile(fileObj, (startMarker, endMarker))
|
||||
return substrate
|
||||
|
||||
def readBase64FromFile(fileObj):
|
||||
|
||||
def readBase64fromText(text):
|
||||
if sys.version_info[0] <= 2:
|
||||
return ''.join([ base64.b64decode(x) for x in fileObj.readlines() ])
|
||||
return base64.b64decode(text)
|
||||
else:
|
||||
return ''.encode().join(
|
||||
[ base64.b64decode(x.encode()) for x in fileObj.readlines() ]
|
||||
)
|
||||
return base64.b64decode(text.encode())
|
||||
|
||||
|
||||
def readBase64FromFile(fileObj):
|
||||
return readBase64fromText(fileObj.read())
|
||||
|
@ -1,34 +0,0 @@
|
||||
#
|
||||
# PKCS#12 syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-12/pkcs-12.asn
|
||||
#
|
||||
# Sample captures could be obtained with "openssl pkcs12" command
|
||||
#
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, constraint
|
||||
from pyasn1_modules.rfc2459 import *
|
||||
from pyasn1_modules import rfc2251
|
||||
|
||||
class Attributes(univ.SetOf):
|
||||
componentType = rfc2251.Attribute()
|
||||
|
||||
class Version(univ.Integer): pass
|
||||
|
||||
class CertificationRequestInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', Version()),
|
||||
namedtype.NamedType('subject', Name()),
|
||||
namedtype.NamedType('subjectPublicKeyInfo', SubjectPublicKeyInfo()),
|
||||
namedtype.NamedType('attributes', Attributes().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
class Signature(univ.BitString): pass
|
||||
class SignatureAlgorithmIdentifier(AlgorithmIdentifier): pass
|
||||
|
||||
class CertificationRequest(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certificationRequestInfo', CertificationRequestInfo()),
|
||||
namedtype.NamedType('signatureAlgorithm', SignatureAlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', Signature())
|
||||
)
|
@ -1,4 +1,9 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# SNMPv1 message syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
@ -7,9 +12,12 @@
|
||||
# Sample captures from:
|
||||
# http://wiki.wireshark.org/SampleCaptures/
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, namedval, tag, constraint
|
||||
from pyasn1.type import univ, namedtype, tag, constraint
|
||||
|
||||
|
||||
class ObjectName(univ.ObjectIdentifier):
|
||||
pass
|
||||
|
||||
class ObjectName(univ.ObjectIdentifier): pass
|
||||
|
||||
class SimpleSyntax(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
@ -17,46 +25,57 @@ class SimpleSyntax(univ.Choice):
|
||||
namedtype.NamedType('string', univ.OctetString()),
|
||||
namedtype.NamedType('object', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('empty', univ.Null())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class IpAddress(univ.OctetString):
|
||||
tagSet = univ.OctetString.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 0)
|
||||
)
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueSizeConstraint(
|
||||
4, 4
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class NetworkAddress(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('internet', IpAddress())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class Counter(univ.Integer):
|
||||
tagSet = univ.Integer.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 1)
|
||||
)
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
|
||||
0, 4294967295
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class Gauge(univ.Integer):
|
||||
tagSet = univ.Integer.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 2)
|
||||
)
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
|
||||
0, 4294967295
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class TimeTicks(univ.Integer):
|
||||
tagSet = univ.Integer.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 3)
|
||||
)
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
|
||||
0, 4294967295
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class Opaque(univ.OctetString):
|
||||
tagSet = univ.OctetString.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 4)
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class ApplicationSyntax(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('address', NetworkAddress()),
|
||||
@ -64,10 +83,11 @@ class ApplicationSyntax(univ.Choice):
|
||||
namedtype.NamedType('gauge', Gauge()),
|
||||
namedtype.NamedType('ticks', TimeTicks()),
|
||||
namedtype.NamedType('arbitrary', Opaque())
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class ObjectSyntax(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('simple', SimpleSyntax()),
|
||||
namedtype.NamedType('application-wide', ApplicationSyntax())
|
||||
)
|
||||
)
|
||||
|
@ -1,4 +1,9 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# SNMPv1 message syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
@ -7,18 +12,25 @@
|
||||
# Sample captures from:
|
||||
# http://wiki.wireshark.org/SampleCaptures/
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, namedval, tag, constraint
|
||||
from pyasn1.type import univ, namedtype, namedval, tag
|
||||
from pyasn1_modules import rfc1155
|
||||
|
||||
|
||||
class Version(univ.Integer):
|
||||
namedValues = namedval.NamedValues(
|
||||
('version-1', 0)
|
||||
)
|
||||
)
|
||||
defaultValue = 0
|
||||
|
||||
class Community(univ.OctetString): pass
|
||||
|
||||
class RequestID(univ.Integer): pass
|
||||
class Community(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class RequestID(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
class ErrorStatus(univ.Integer):
|
||||
namedValues = namedval.NamedValues(
|
||||
('noError', 0),
|
||||
@ -27,52 +39,71 @@ class ErrorStatus(univ.Integer):
|
||||
('badValue', 3),
|
||||
('readOnly', 4),
|
||||
('genErr', 5)
|
||||
)
|
||||
class ErrorIndex(univ.Integer): pass
|
||||
)
|
||||
|
||||
|
||||
class ErrorIndex(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
class VarBind(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('name', rfc1155.ObjectName()),
|
||||
namedtype.NamedType('value', rfc1155.ObjectSyntax())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class VarBindList(univ.SequenceOf):
|
||||
componentType = VarBind()
|
||||
|
||||
|
||||
class _RequestBase(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('request-id', RequestID()),
|
||||
namedtype.NamedType('error-status', ErrorStatus()),
|
||||
namedtype.NamedType('error-index', ErrorIndex()),
|
||||
namedtype.NamedType('variable-bindings', VarBindList())
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class GetRequestPDU(_RequestBase):
|
||||
tagSet = _RequestBase.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class GetNextRequestPDU(_RequestBase):
|
||||
tagSet = _RequestBase.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class GetResponsePDU(_RequestBase):
|
||||
tagSet = _RequestBase.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class SetRequestPDU(_RequestBase):
|
||||
tagSet = _RequestBase.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class TrapPDU(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('enterprise', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('agent-addr', rfc1155.NetworkAddress()),
|
||||
namedtype.NamedType('generic-trap', univ.Integer().clone(namedValues=namedval.NamedValues(('coldStart', 0), ('warmStart', 1), ('linkDown', 2), ('linkUp', 3), ('authenticationFailure', 4), ('egpNeighborLoss', 5), ('enterpriseSpecific', 6)))),
|
||||
namedtype.NamedType('generic-trap', univ.Integer().clone(
|
||||
namedValues=namedval.NamedValues(('coldStart', 0), ('warmStart', 1), ('linkDown', 2), ('linkUp', 3),
|
||||
('authenticationFailure', 4), ('egpNeighborLoss', 5),
|
||||
('enterpriseSpecific', 6)))),
|
||||
namedtype.NamedType('specific-trap', univ.Integer()),
|
||||
namedtype.NamedType('time-stamp', rfc1155.TimeTicks()),
|
||||
namedtype.NamedType('variable-bindings', VarBindList())
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class Pdus(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('get-request', GetRequestPDU()),
|
||||
@ -80,11 +111,12 @@ class Pdus(univ.Choice):
|
||||
namedtype.NamedType('get-response', GetResponsePDU()),
|
||||
namedtype.NamedType('set-request', SetRequestPDU()),
|
||||
namedtype.NamedType('trap', TrapPDU())
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class Message(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', Version()),
|
||||
namedtype.NamedType('community', Community()),
|
||||
namedtype.NamedType('data', Pdus())
|
||||
)
|
||||
)
|
||||
|
@ -1,4 +1,9 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# SNMPv2c message syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
@ -6,10 +11,10 @@
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, namedval
|
||||
|
||||
|
||||
class Message(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', univ.Integer(namedValues = namedval.NamedValues(('version-2c', 1)))),
|
||||
namedtype.NamedType('version', univ.Integer(namedValues=namedval.NamedValues(('version-2c', 1)))),
|
||||
namedtype.NamedType('community', univ.OctetString()),
|
||||
namedtype.NamedType('data', univ.Any())
|
||||
)
|
||||
|
||||
)
|
||||
|
@ -1,89 +1,110 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# SNMPv2c message syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc1902.txt
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, namedval, tag, constraint
|
||||
from pyasn1.type import univ, namedtype, tag, constraint
|
||||
|
||||
|
||||
class Integer(univ.Integer):
|
||||
subtypeSpec = univ.Integer.subtypeSpec+constraint.ValueRangeConstraint(
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
|
||||
-2147483648, 2147483647
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class Integer32(univ.Integer):
|
||||
subtypeSpec = univ.Integer.subtypeSpec+constraint.ValueRangeConstraint(
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
|
||||
-2147483648, 2147483647
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class OctetString(univ.OctetString):
|
||||
subtypeSpec = univ.Integer.subtypeSpec+constraint.ValueSizeConstraint(
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueSizeConstraint(
|
||||
0, 65535
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class IpAddress(univ.OctetString):
|
||||
tagSet = univ.OctetString.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 0x00)
|
||||
)
|
||||
subtypeSpec = univ.OctetString.subtypeSpec+constraint.ValueSizeConstraint(
|
||||
)
|
||||
subtypeSpec = univ.OctetString.subtypeSpec + constraint.ValueSizeConstraint(
|
||||
4, 4
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class Counter32(univ.Integer):
|
||||
tagSet = univ.Integer.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 0x01)
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec+constraint.ValueRangeConstraint(
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
|
||||
0, 4294967295
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class Gauge32(univ.Integer):
|
||||
tagSet = univ.Integer.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 0x02)
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec+constraint.ValueRangeConstraint(
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
|
||||
0, 4294967295
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class Unsigned32(univ.Integer):
|
||||
tagSet = univ.Integer.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 0x02)
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec+constraint.ValueRangeConstraint(
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
|
||||
0, 4294967295
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class TimeTicks(univ.Integer):
|
||||
tagSet = univ.Integer.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 0x03)
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec+constraint.ValueRangeConstraint(
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
|
||||
0, 4294967295
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class Opaque(univ.OctetString):
|
||||
tagSet = univ.OctetString.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 0x04)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class Counter64(univ.Integer):
|
||||
tagSet = univ.Integer.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 0x06)
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec+constraint.ValueRangeConstraint(
|
||||
)
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
|
||||
0, 18446744073709551615
|
||||
)
|
||||
)
|
||||
|
||||
class Bits(univ.OctetString): pass
|
||||
|
||||
class ObjectName(univ.ObjectIdentifier): pass
|
||||
class Bits(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class ObjectName(univ.ObjectIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class SimpleSyntax(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('integer-value', Integer()),
|
||||
namedtype.NamedType('string-value', OctetString()),
|
||||
namedtype.NamedType('objectID-value', univ.ObjectIdentifier())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class ApplicationSyntax(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
@ -92,14 +113,14 @@ class ApplicationSyntax(univ.Choice):
|
||||
namedtype.NamedType('timeticks-value', TimeTicks()),
|
||||
namedtype.NamedType('arbitrary-value', Opaque()),
|
||||
namedtype.NamedType('big-counter-value', Counter64()),
|
||||
# This conflicts with Counter32
|
||||
# namedtype.NamedType('unsigned-integer-value', Unsigned32()),
|
||||
# This conflicts with Counter32
|
||||
# namedtype.NamedType('unsigned-integer-value', Unsigned32()),
|
||||
namedtype.NamedType('gauge32-value', Gauge32())
|
||||
) # BITS misplaced?
|
||||
) # BITS misplaced?
|
||||
|
||||
|
||||
class ObjectSyntax(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('simple', SimpleSyntax()),
|
||||
namedtype.NamedType('application-wide', ApplicationSyntax())
|
||||
)
|
||||
|
||||
)
|
||||
|
@ -1,4 +1,9 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# SNMPv2c PDU syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
@ -9,82 +14,108 @@ from pyasn1_modules import rfc1902
|
||||
|
||||
max_bindings = rfc1902.Integer(2147483647)
|
||||
|
||||
|
||||
class _BindValue(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('value', rfc1902.ObjectSyntax()),
|
||||
namedtype.NamedType('unSpecified', univ.Null()),
|
||||
namedtype.NamedType('noSuchObject', univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('noSuchInstance', univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('endOfMibView', univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
|
||||
namedtype.NamedType('noSuchObject',
|
||||
univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('noSuchInstance',
|
||||
univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('endOfMibView',
|
||||
univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
|
||||
|
||||
class VarBind(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('name', rfc1902.ObjectName()),
|
||||
namedtype.NamedType('', _BindValue())
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class VarBindList(univ.SequenceOf):
|
||||
componentType = VarBind()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(
|
||||
0, max_bindings
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class PDU(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('request-id', rfc1902.Integer32()),
|
||||
namedtype.NamedType('error-status', univ.Integer(namedValues=namedval.NamedValues(('noError', 0), ('tooBig', 1), ('noSuchName', 2), ('badValue', 3), ('readOnly', 4), ('genErr', 5), ('noAccess', 6), ('wrongType', 7), ('wrongLength', 8), ('wrongEncoding', 9), ('wrongValue', 10), ('noCreation', 11), ('inconsistentValue', 12), ('resourceUnavailable', 13), ('commitFailed', 14), ('undoFailed', 15), ('authorizationError', 16), ('notWritable', 17), ('inconsistentName', 18)))),
|
||||
namedtype.NamedType('error-index', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, max_bindings))),
|
||||
namedtype.NamedType('error-status', univ.Integer(
|
||||
namedValues=namedval.NamedValues(('noError', 0), ('tooBig', 1), ('noSuchName', 2), ('badValue', 3),
|
||||
('readOnly', 4), ('genErr', 5), ('noAccess', 6), ('wrongType', 7),
|
||||
('wrongLength', 8), ('wrongEncoding', 9), ('wrongValue', 10),
|
||||
('noCreation', 11), ('inconsistentValue', 12), ('resourceUnavailable', 13),
|
||||
('commitFailed', 14), ('undoFailed', 15), ('authorizationError', 16),
|
||||
('notWritable', 17), ('inconsistentName', 18)))),
|
||||
namedtype.NamedType('error-index',
|
||||
univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, max_bindings))),
|
||||
namedtype.NamedType('variable-bindings', VarBindList())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class BulkPDU(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('request-id', rfc1902.Integer32()),
|
||||
namedtype.NamedType('non-repeaters', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, max_bindings))),
|
||||
namedtype.NamedType('max-repetitions', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, max_bindings))),
|
||||
namedtype.NamedType('non-repeaters',
|
||||
univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, max_bindings))),
|
||||
namedtype.NamedType('max-repetitions',
|
||||
univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, max_bindings))),
|
||||
namedtype.NamedType('variable-bindings', VarBindList())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class GetRequestPDU(PDU):
|
||||
tagSet = PDU.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class GetNextRequestPDU(PDU):
|
||||
tagSet = PDU.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class ResponsePDU(PDU):
|
||||
tagSet = PDU.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class SetRequestPDU(PDU):
|
||||
tagSet = PDU.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class GetBulkRequestPDU(BulkPDU):
|
||||
tagSet = PDU.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class InformRequestPDU(PDU):
|
||||
tagSet = PDU.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class SNMPv2TrapPDU(PDU):
|
||||
tagSet = PDU.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 7)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class ReportPDU(PDU):
|
||||
tagSet = PDU.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class PDUs(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
@ -96,5 +127,4 @@ class PDUs(univ.Choice):
|
||||
namedtype.NamedType('inform-request', InformRequestPDU()),
|
||||
namedtype.NamedType('snmpV2-trap', SNMPv2TrapPDU()),
|
||||
namedtype.NamedType('report', ReportPDU())
|
||||
)
|
||||
|
||||
)
|
||||
|
@ -1,4 +1,9 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# LDAP message syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
@ -7,313 +12,548 @@
|
||||
# Sample captures from:
|
||||
# http://wiki.wireshark.org/SampleCaptures/
|
||||
#
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, constraint,char,useful
|
||||
from pyasn1.codec.der import decoder, encoder
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, constraint
|
||||
|
||||
maxInt = univ.Integer(2147483647)
|
||||
|
||||
class LDAPString(univ.OctetString): pass
|
||||
class LDAPOID(univ.OctetString): pass
|
||||
|
||||
class LDAPDN(LDAPString): pass
|
||||
class RelativeLDAPDN(LDAPString): pass
|
||||
class AttributeType(LDAPString): pass
|
||||
class AttributeDescription(LDAPString): pass
|
||||
class LDAPString(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class LDAPOID(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class LDAPDN(LDAPString):
|
||||
pass
|
||||
|
||||
|
||||
class RelativeLDAPDN(LDAPString):
|
||||
pass
|
||||
|
||||
|
||||
class AttributeType(LDAPString):
|
||||
pass
|
||||
|
||||
|
||||
class AttributeDescription(LDAPString):
|
||||
pass
|
||||
|
||||
|
||||
class AttributeDescriptionList(univ.SequenceOf):
|
||||
componentType = AttributeDescription()
|
||||
|
||||
class AttributeValue(univ.OctetString): pass
|
||||
|
||||
class AssertionValue(univ.OctetString): pass
|
||||
class AttributeValue(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class AssertionValue(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class AttributeValueAssertion(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('attributeDesc', AttributeDescription()),
|
||||
namedtype.NamedType('assertionValue', AssertionValue())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class Attribute(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeDescription()),
|
||||
namedtype.NamedType('vals', univ.SetOf(componentType=AttributeValue()))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class MatchingRuleId(LDAPString):
|
||||
pass
|
||||
|
||||
class MatchingRuleId(LDAPString): pass
|
||||
|
||||
class Control(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('controlType', LDAPOID()),
|
||||
namedtype.DefaultedNamedType('criticality', univ.Boolean('False')),
|
||||
namedtype.OptionalNamedType('controlValue', univ.OctetString())
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class Controls(univ.SequenceOf):
|
||||
componentType = Control()
|
||||
|
||||
class LDAPURL(LDAPString): pass
|
||||
|
||||
class LDAPURL(LDAPString):
|
||||
pass
|
||||
|
||||
|
||||
class Referral(univ.SequenceOf):
|
||||
componentType = LDAPURL()
|
||||
|
||||
|
||||
class SaslCredentials(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('mechanism', LDAPString()),
|
||||
namedtype.OptionalNamedType('credentials', univ.OctetString())
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class AuthenticationChoice(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('simple', univ.OctetString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('reserved-1', univ.OctetString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('reserved-2', univ.OctetString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.NamedType('sasl', SaslCredentials().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
|
||||
)
|
||||
|
||||
namedtype.NamedType('simple', univ.OctetString().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('reserved-1', univ.OctetString().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('reserved-2', univ.OctetString().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.NamedType('sasl',
|
||||
SaslCredentials().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
|
||||
)
|
||||
|
||||
|
||||
class BindRequest(univ.Sequence):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 0)
|
||||
)
|
||||
)
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, 127))),
|
||||
namedtype.NamedType('name', LDAPDN()),
|
||||
namedtype.NamedType('authentication', AuthenticationChoice())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class PartialAttributeList(univ.SequenceOf):
|
||||
componentType = univ.Sequence(componentType=namedtype.NamedTypes(namedtype.NamedType('type', AttributeDescription()), namedtype.NamedType('vals', univ.SetOf(componentType=AttributeValue()))))
|
||||
|
||||
componentType = univ.Sequence(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeDescription()),
|
||||
namedtype.NamedType('vals', univ.SetOf(componentType=AttributeValue()))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class SearchResultEntry(univ.Sequence):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 4)
|
||||
)
|
||||
)
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('objectName', LDAPDN()),
|
||||
namedtype.NamedType('attributes', PartialAttributeList())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class MatchingRuleAssertion(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('matchingRule', MatchingRuleId().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.OptionalNamedType('type', AttributeDescription().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.NamedType('matchValue', AssertionValue().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
|
||||
namedtype.DefaultedNamedType('dnAttributes', univ.Boolean('False').subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4)))
|
||||
)
|
||||
|
||||
namedtype.OptionalNamedType('matchingRule', MatchingRuleId().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.OptionalNamedType('type', AttributeDescription().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.NamedType('matchValue',
|
||||
AssertionValue().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
|
||||
namedtype.DefaultedNamedType('dnAttributes', univ.Boolean('False').subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4)))
|
||||
)
|
||||
|
||||
|
||||
class SubstringFilter(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeDescription()),
|
||||
namedtype.NamedType('substrings', univ.SequenceOf(componentType=univ.Choice(componentType=namedtype.NamedTypes(namedtype.NamedType('initial', LDAPString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), namedtype.NamedType('any', LDAPString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))), namedtype.NamedType('final', LDAPString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))))))
|
||||
namedtype.NamedType('substrings',
|
||||
univ.SequenceOf(
|
||||
componentType=univ.Choice(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType(
|
||||
'initial', LDAPString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))
|
||||
),
|
||||
namedtype.NamedType(
|
||||
'any', LDAPString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))
|
||||
),
|
||||
namedtype.NamedType(
|
||||
'final', LDAPString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
# Ugly hack to handle recursive Filter reference (up to 3-levels deep).
|
||||
|
||||
class Filter3(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('equalityMatch', AttributeValueAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.NamedType('substrings', SubstringFilter().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
|
||||
namedtype.NamedType('greaterOrEqual', AttributeValueAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
|
||||
namedtype.NamedType('lessOrEqual', AttributeValueAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))),
|
||||
namedtype.NamedType('present', AttributeDescription().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
|
||||
namedtype.NamedType('approxMatch', AttributeValueAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8))),
|
||||
namedtype.NamedType('extensibleMatch', MatchingRuleAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)))
|
||||
)
|
||||
namedtype.NamedType('equalityMatch', AttributeValueAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.NamedType('substrings', SubstringFilter().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
|
||||
namedtype.NamedType('greaterOrEqual', AttributeValueAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
|
||||
namedtype.NamedType('lessOrEqual', AttributeValueAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))),
|
||||
namedtype.NamedType('present', AttributeDescription().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
|
||||
namedtype.NamedType('approxMatch', AttributeValueAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8))),
|
||||
namedtype.NamedType('extensibleMatch', MatchingRuleAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)))
|
||||
)
|
||||
|
||||
|
||||
class Filter2(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('and', univ.SetOf(componentType=Filter3()).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('or', univ.SetOf(componentType=Filter3()).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('not', Filter3().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.NamedType('equalityMatch', AttributeValueAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.NamedType('substrings', SubstringFilter().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
|
||||
namedtype.NamedType('greaterOrEqual', AttributeValueAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
|
||||
namedtype.NamedType('lessOrEqual', AttributeValueAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))),
|
||||
namedtype.NamedType('present', AttributeDescription().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
|
||||
namedtype.NamedType('approxMatch', AttributeValueAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8))),
|
||||
namedtype.NamedType('extensibleMatch', MatchingRuleAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)))
|
||||
)
|
||||
namedtype.NamedType('and', univ.SetOf(componentType=Filter3()).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('or', univ.SetOf(componentType=Filter3()).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('not',
|
||||
Filter3().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.NamedType('equalityMatch', AttributeValueAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.NamedType('substrings', SubstringFilter().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
|
||||
namedtype.NamedType('greaterOrEqual', AttributeValueAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
|
||||
namedtype.NamedType('lessOrEqual', AttributeValueAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))),
|
||||
namedtype.NamedType('present', AttributeDescription().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
|
||||
namedtype.NamedType('approxMatch', AttributeValueAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8))),
|
||||
namedtype.NamedType('extensibleMatch', MatchingRuleAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)))
|
||||
)
|
||||
|
||||
|
||||
class Filter(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('and', univ.SetOf(componentType=Filter2()).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('or', univ.SetOf(componentType=Filter2()).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('not', Filter2().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.NamedType('equalityMatch', AttributeValueAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.NamedType('substrings', SubstringFilter().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
|
||||
namedtype.NamedType('greaterOrEqual', AttributeValueAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
|
||||
namedtype.NamedType('lessOrEqual', AttributeValueAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))),
|
||||
namedtype.NamedType('present', AttributeDescription().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
|
||||
namedtype.NamedType('approxMatch', AttributeValueAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8))),
|
||||
namedtype.NamedType('extensibleMatch', MatchingRuleAssertion().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)))
|
||||
)
|
||||
namedtype.NamedType('and', univ.SetOf(componentType=Filter2()).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('or', univ.SetOf(componentType=Filter2()).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('not',
|
||||
Filter2().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.NamedType('equalityMatch', AttributeValueAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.NamedType('substrings', SubstringFilter().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
|
||||
namedtype.NamedType('greaterOrEqual', AttributeValueAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
|
||||
namedtype.NamedType('lessOrEqual', AttributeValueAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))),
|
||||
namedtype.NamedType('present', AttributeDescription().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
|
||||
namedtype.NamedType('approxMatch', AttributeValueAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8))),
|
||||
namedtype.NamedType('extensibleMatch', MatchingRuleAssertion().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)))
|
||||
)
|
||||
|
||||
|
||||
# End of Filter hack
|
||||
|
||||
class SearchRequest(univ.Sequence):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 3)
|
||||
)
|
||||
)
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('baseObject', LDAPDN()),
|
||||
namedtype.NamedType('scope', univ.Enumerated(namedValues=namedval.NamedValues(('baseObject', 0), ('singleLevel', 1), ('wholeSubtree', 2)))),
|
||||
namedtype.NamedType('derefAliases', univ.Enumerated(namedValues=namedval.NamedValues(('neverDerefAliases', 0), ('derefInSearching', 1), ('derefFindingBaseObj', 2), ('derefAlways', 3)))),
|
||||
namedtype.NamedType('sizeLimit', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, maxInt))),
|
||||
namedtype.NamedType('timeLimit', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, maxInt))),
|
||||
namedtype.NamedType('scope', univ.Enumerated(
|
||||
namedValues=namedval.NamedValues(('baseObject', 0), ('singleLevel', 1), ('wholeSubtree', 2)))),
|
||||
namedtype.NamedType('derefAliases', univ.Enumerated(
|
||||
namedValues=namedval.NamedValues(('neverDerefAliases', 0), ('derefInSearching', 1),
|
||||
('derefFindingBaseObj', 2), ('derefAlways', 3)))),
|
||||
namedtype.NamedType('sizeLimit',
|
||||
univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, maxInt))),
|
||||
namedtype.NamedType('timeLimit',
|
||||
univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, maxInt))),
|
||||
namedtype.NamedType('typesOnly', univ.Boolean()),
|
||||
namedtype.NamedType('filter', Filter()),
|
||||
namedtype.NamedType('attributes', AttributeDescriptionList())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class UnbindRequest(univ.Null):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 2)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class BindResponse(univ.Sequence):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 1)
|
||||
)
|
||||
)
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('resultCode', univ.Enumerated(namedValues=namedval.NamedValues(('success', 0), ('operationsError', 1), ('protocolError', 2), ('timeLimitExceeded', 3), ('sizeLimitExceeded', 4), ('compareFalse', 5), ('compareTrue', 6), ('authMethodNotSupported', 7), ('strongAuthRequired', 8), ('reserved-9', 9), ('referral', 10), ('adminLimitExceeded', 11), ('unavailableCriticalExtension', 12), ('confidentialityRequired', 13), ('saslBindInProgress', 14), ('noSuchAttribute', 16), ('undefinedAttributeType', 17), ('inappropriateMatching', 18), ('constraintViolation', 19), ('attributeOrValueExists', 20), ('invalidAttributeSyntax', 21), ('noSuchObject', 32), ('aliasProblem', 33), ('invalidDNSyntax', 34), ('reserved-35', 35), ('aliasDereferencingProblem', 36), ('inappropriateAuthentication', 48), ('invalidCredentials', 49), ('insufficientAccessRights', 50), ('busy', 51), ('unavailable', 52), ('unwillingToPerform', 53), ('loopDetect', 54), ('namingViolation', 64), ('objectClassViolation', 65), ('notAllowedOnNonLeaf', 66), ('notAllowedOnRDN', 67), ('entryAlreadyExists', 68), ('objectClassModsProhibited', 69), ('reserved-70', 70), ('affectsMultipleDSAs', 71), ('other', 80), ('reserved-81', 81), ('reserved-82', 82), ('reserved-83', 83), ('reserved-84', 84), ('reserved-85', 85), ('reserved-86', 86), ('reserved-87', 87), ('reserved-88', 88), ('reserved-89', 89), ('reserved-90', 90)))),
|
||||
namedtype.NamedType('resultCode', univ.Enumerated(
|
||||
namedValues=namedval.NamedValues(('success', 0), ('operationsError', 1), ('protocolError', 2),
|
||||
('timeLimitExceeded', 3), ('sizeLimitExceeded', 4), ('compareFalse', 5),
|
||||
('compareTrue', 6), ('authMethodNotSupported', 7),
|
||||
('strongAuthRequired', 8), ('reserved-9', 9), ('referral', 10),
|
||||
('adminLimitExceeded', 11), ('unavailableCriticalExtension', 12),
|
||||
('confidentialityRequired', 13), ('saslBindInProgress', 14),
|
||||
('noSuchAttribute', 16), ('undefinedAttributeType', 17),
|
||||
('inappropriateMatching', 18), ('constraintViolation', 19),
|
||||
('attributeOrValueExists', 20), ('invalidAttributeSyntax', 21),
|
||||
('noSuchObject', 32), ('aliasProblem', 33), ('invalidDNSyntax', 34),
|
||||
('reserved-35', 35), ('aliasDereferencingProblem', 36),
|
||||
('inappropriateAuthentication', 48), ('invalidCredentials', 49),
|
||||
('insufficientAccessRights', 50), ('busy', 51), ('unavailable', 52),
|
||||
('unwillingToPerform', 53), ('loopDetect', 54), ('namingViolation', 64),
|
||||
('objectClassViolation', 65), ('notAllowedOnNonLeaf', 66),
|
||||
('notAllowedOnRDN', 67), ('entryAlreadyExists', 68),
|
||||
('objectClassModsProhibited', 69), ('reserved-70', 70),
|
||||
('affectsMultipleDSAs', 71), ('other', 80), ('reserved-81', 81),
|
||||
('reserved-82', 82), ('reserved-83', 83), ('reserved-84', 84),
|
||||
('reserved-85', 85), ('reserved-86', 86), ('reserved-87', 87),
|
||||
('reserved-88', 88), ('reserved-89', 89), ('reserved-90', 90)))),
|
||||
namedtype.NamedType('matchedDN', LDAPDN()),
|
||||
namedtype.NamedType('errorMessage', LDAPString()),
|
||||
namedtype.OptionalNamedType('referral', Referral().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.OptionalNamedType('serverSaslCreds', univ.OctetString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 7)))
|
||||
)
|
||||
namedtype.OptionalNamedType('referral', Referral().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.OptionalNamedType('serverSaslCreds', univ.OctetString().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 7)))
|
||||
)
|
||||
|
||||
|
||||
class LDAPResult(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('resultCode', univ.Enumerated(namedValues=namedval.NamedValues(('success', 0), ('operationsError', 1), ('protocolError', 2), ('timeLimitExceeded', 3), ('sizeLimitExceeded', 4), ('compareFalse', 5), ('compareTrue', 6), ('authMethodNotSupported', 7), ('strongAuthRequired', 8), ('reserved-9', 9), ('referral', 10), ('adminLimitExceeded', 11), ('unavailableCriticalExtension', 12), ('confidentialityRequired', 13), ('saslBindInProgress', 14), ('noSuchAttribute', 16), ('undefinedAttributeType', 17), ('inappropriateMatching', 18), ('constraintViolation', 19), ('attributeOrValueExists', 20), ('invalidAttributeSyntax', 21), ('noSuchObject', 32), ('aliasProblem', 33), ('invalidDNSyntax', 34), ('reserved-35', 35), ('aliasDereferencingProblem', 36), ('inappropriateAuthentication', 48), ('invalidCredentials', 49), ('insufficientAccessRights', 50), ('busy', 51), ('unavailable', 52), ('unwillingToPerform', 53), ('loopDetect', 54), ('namingViolation', 64), ('objectClassViolation', 65), ('notAllowedOnNonLeaf', 66), ('notAllowedOnRDN', 67), ('entryAlreadyExists', 68), ('objectClassModsProhibited', 69), ('reserved-70', 70), ('affectsMultipleDSAs', 71), ('other', 80), ('reserved-81', 81), ('reserved-82', 82), ('reserved-83', 83), ('reserved-84', 84), ('reserved-85', 85), ('reserved-86', 86), ('reserved-87', 87), ('reserved-88', 88), ('reserved-89', 89), ('reserved-90', 90)))),
|
||||
namedtype.NamedType('resultCode', univ.Enumerated(
|
||||
namedValues=namedval.NamedValues(('success', 0), ('operationsError', 1), ('protocolError', 2),
|
||||
('timeLimitExceeded', 3), ('sizeLimitExceeded', 4), ('compareFalse', 5),
|
||||
('compareTrue', 6), ('authMethodNotSupported', 7),
|
||||
('strongAuthRequired', 8), ('reserved-9', 9), ('referral', 10),
|
||||
('adminLimitExceeded', 11), ('unavailableCriticalExtension', 12),
|
||||
('confidentialityRequired', 13), ('saslBindInProgress', 14),
|
||||
('noSuchAttribute', 16), ('undefinedAttributeType', 17),
|
||||
('inappropriateMatching', 18), ('constraintViolation', 19),
|
||||
('attributeOrValueExists', 20), ('invalidAttributeSyntax', 21),
|
||||
('noSuchObject', 32), ('aliasProblem', 33), ('invalidDNSyntax', 34),
|
||||
('reserved-35', 35), ('aliasDereferencingProblem', 36),
|
||||
('inappropriateAuthentication', 48), ('invalidCredentials', 49),
|
||||
('insufficientAccessRights', 50), ('busy', 51), ('unavailable', 52),
|
||||
('unwillingToPerform', 53), ('loopDetect', 54), ('namingViolation', 64),
|
||||
('objectClassViolation', 65), ('notAllowedOnNonLeaf', 66),
|
||||
('notAllowedOnRDN', 67), ('entryAlreadyExists', 68),
|
||||
('objectClassModsProhibited', 69), ('reserved-70', 70),
|
||||
('affectsMultipleDSAs', 71), ('other', 80), ('reserved-81', 81),
|
||||
('reserved-82', 82), ('reserved-83', 83), ('reserved-84', 84),
|
||||
('reserved-85', 85), ('reserved-86', 86), ('reserved-87', 87),
|
||||
('reserved-88', 88), ('reserved-89', 89), ('reserved-90', 90)))),
|
||||
namedtype.NamedType('matchedDN', LDAPDN()),
|
||||
namedtype.NamedType('errorMessage', LDAPString()),
|
||||
namedtype.OptionalNamedType('referral', Referral().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))
|
||||
)
|
||||
namedtype.OptionalNamedType('referral', Referral().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))
|
||||
)
|
||||
|
||||
|
||||
class SearchResultReference(univ.SequenceOf):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 19)
|
||||
)
|
||||
)
|
||||
componentType = LDAPURL()
|
||||
|
||||
|
||||
class SearchResultDone(LDAPResult):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 5)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AttributeTypeAndValues(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeDescription()),
|
||||
namedtype.NamedType('vals', univ.SetOf(componentType=AttributeValue()))
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class ModifyRequest(univ.Sequence):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 6)
|
||||
)
|
||||
)
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('object', LDAPDN()),
|
||||
namedtype.NamedType('modification', univ.SequenceOf(componentType=univ.Sequence(componentType=namedtype.NamedTypes(namedtype.NamedType('operation', univ.Enumerated(namedValues=namedval.NamedValues(('add', 0), ('delete', 1), ('replace', 2)))), namedtype.NamedType('modification', AttributeTypeAndValues())))))
|
||||
namedtype.NamedType('modification',
|
||||
univ.SequenceOf(
|
||||
componentType=univ.Sequence(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType(
|
||||
'operation', univ.Enumerated(namedValues=namedval.NamedValues(('add', 0), ('delete', 1), ('replace', 2)))
|
||||
),
|
||||
namedtype.NamedType('modification', AttributeTypeAndValues())))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class ModifyResponse(LDAPResult):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 7)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AttributeList(univ.SequenceOf):
|
||||
componentType = univ.Sequence(componentType=namedtype.NamedTypes(namedtype.NamedType('type', AttributeDescription()), namedtype.NamedType('vals', univ.SetOf(componentType=AttributeValue()))))
|
||||
|
||||
componentType = univ.Sequence(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeDescription()),
|
||||
namedtype.NamedType('vals', univ.SetOf(componentType=AttributeValue()))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AddRequest(univ.Sequence):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 8)
|
||||
)
|
||||
)
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('entry', LDAPDN()),
|
||||
namedtype.NamedType('attributes', AttributeList())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AddResponse(LDAPResult):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 9)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class DelRequest(LDAPResult):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 10)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class DelResponse(LDAPResult):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 11)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class ModifyDNRequest(univ.Sequence):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 12)
|
||||
)
|
||||
)
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('entry', LDAPDN()),
|
||||
namedtype.NamedType('newrdn', RelativeLDAPDN()),
|
||||
namedtype.NamedType('deleteoldrdn', univ.Boolean()),
|
||||
namedtype.OptionalNamedType('newSuperior', LDAPDN().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
|
||||
)
|
||||
namedtype.OptionalNamedType('newSuperior',
|
||||
LDAPDN().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
|
||||
)
|
||||
|
||||
|
||||
class ModifyDNResponse(LDAPResult):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 13)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class CompareRequest(univ.Sequence):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 14)
|
||||
)
|
||||
)
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('entry', LDAPDN()),
|
||||
namedtype.NamedType('ava', AttributeValueAssertion())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class CompareResponse(LDAPResult):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 15)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AbandonRequest(LDAPResult):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 16)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class ExtendedRequest(univ.Sequence):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 23)
|
||||
)
|
||||
)
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('requestName', LDAPOID().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('requestValue', univ.OctetString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
namedtype.NamedType('requestName',
|
||||
LDAPOID().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('requestValue', univ.OctetString().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
|
||||
class ExtendedResponse(univ.Sequence):
|
||||
tagSet = univ.Sequence.tagSet.tagImplicitly(
|
||||
tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 24)
|
||||
)
|
||||
)
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('resultCode', univ.Enumerated(namedValues=namedval.NamedValues(('success', 0), ('operationsError', 1), ('protocolError', 2), ('timeLimitExceeded', 3), ('sizeLimitExceeded', 4), ('compareFalse', 5), ('compareTrue', 6), ('authMethodNotSupported', 7), ('strongAuthRequired', 8), ('reserved-9', 9), ('referral', 10), ('adminLimitExceeded', 11), ('unavailableCriticalExtension', 12), ('confidentialityRequired', 13), ('saslBindInProgress', 14), ('noSuchAttribute', 16), ('undefinedAttributeType', 17), ('inappropriateMatching', 18), ('constraintViolation', 19), ('attributeOrValueExists', 20), ('invalidAttributeSyntax', 21), ('noSuchObject', 32), ('aliasProblem', 33), ('invalidDNSyntax', 34), ('reserved-35', 35), ('aliasDereferencingProblem', 36), ('inappropriateAuthentication', 48), ('invalidCredentials', 49), ('insufficientAccessRights', 50), ('busy', 51), ('unavailable', 52), ('unwillingToPerform', 53), ('loopDetect', 54), ('namingViolation', 64), ('objectClassViolation', 65), ('notAllowedOnNonLeaf', 66), ('notAllowedOnRDN', 67), ('entryAlreadyExists', 68), ('objectClassModsProhibited', 69), ('reserved-70', 70), ('affectsMultipleDSAs', 71), ('other', 80), ('reserved-81', 81), ('reserved-82', 82), ('reserved-83', 83), ('reserved-84', 84), ('reserved-85', 85), ('reserved-86', 86), ('reserved-87', 87), ('reserved-88', 88), ('reserved-89', 89), ('reserved-90', 90)))),
|
||||
namedtype.NamedType('resultCode', univ.Enumerated(
|
||||
namedValues=namedval.NamedValues(('success', 0), ('operationsError', 1), ('protocolError', 2),
|
||||
('timeLimitExceeded', 3), ('sizeLimitExceeded', 4), ('compareFalse', 5),
|
||||
('compareTrue', 6), ('authMethodNotSupported', 7),
|
||||
('strongAuthRequired', 8), ('reserved-9', 9), ('referral', 10),
|
||||
('adminLimitExceeded', 11), ('unavailableCriticalExtension', 12),
|
||||
('confidentialityRequired', 13), ('saslBindInProgress', 14),
|
||||
('noSuchAttribute', 16), ('undefinedAttributeType', 17),
|
||||
('inappropriateMatching', 18), ('constraintViolation', 19),
|
||||
('attributeOrValueExists', 20), ('invalidAttributeSyntax', 21),
|
||||
('noSuchObject', 32), ('aliasProblem', 33), ('invalidDNSyntax', 34),
|
||||
('reserved-35', 35), ('aliasDereferencingProblem', 36),
|
||||
('inappropriateAuthentication', 48), ('invalidCredentials', 49),
|
||||
('insufficientAccessRights', 50), ('busy', 51), ('unavailable', 52),
|
||||
('unwillingToPerform', 53), ('loopDetect', 54), ('namingViolation', 64),
|
||||
('objectClassViolation', 65), ('notAllowedOnNonLeaf', 66),
|
||||
('notAllowedOnRDN', 67), ('entryAlreadyExists', 68),
|
||||
('objectClassModsProhibited', 69), ('reserved-70', 70),
|
||||
('affectsMultipleDSAs', 71), ('other', 80), ('reserved-81', 81),
|
||||
('reserved-82', 82), ('reserved-83', 83), ('reserved-84', 84),
|
||||
('reserved-85', 85), ('reserved-86', 86), ('reserved-87', 87),
|
||||
('reserved-88', 88), ('reserved-89', 89), ('reserved-90', 90)))),
|
||||
namedtype.NamedType('matchedDN', LDAPDN()),
|
||||
namedtype.NamedType('errorMessage', LDAPString()),
|
||||
namedtype.OptionalNamedType('referral', Referral().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.OptionalNamedType('referral', Referral().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
|
||||
namedtype.OptionalNamedType('responseName', LDAPOID().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 10))),
|
||||
namedtype.OptionalNamedType('response', univ.OctetString().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 11)))
|
||||
)
|
||||
|
||||
namedtype.OptionalNamedType('responseName', LDAPOID().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 10))),
|
||||
namedtype.OptionalNamedType('response', univ.OctetString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 11)))
|
||||
)
|
||||
|
||||
class MessageID(univ.Integer):
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
|
||||
0, maxInt
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class LDAPMessage(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('messageID', MessageID()),
|
||||
namedtype.NamedType('protocolOp', univ.Choice(componentType=namedtype.NamedTypes(namedtype.NamedType('bindRequest', BindRequest()), namedtype.NamedType('bindResponse', BindResponse()), namedtype.NamedType('unbindRequest', UnbindRequest()), namedtype.NamedType('searchRequest', SearchRequest()), namedtype.NamedType('searchResEntry', SearchResultEntry()), namedtype.NamedType('searchResDone', SearchResultDone()), namedtype.NamedType('searchResRef', SearchResultReference()), namedtype.NamedType('modifyRequest', ModifyRequest()), namedtype.NamedType('modifyResponse', ModifyResponse()), namedtype.NamedType('addRequest', AddRequest()), namedtype.NamedType('addResponse', AddResponse()), namedtype.NamedType('delRequest', DelRequest()), namedtype.NamedType('delResponse', DelResponse()), namedtype.NamedType('modDNRequest', ModifyDNRequest()), namedtype.NamedType('modDNResponse', ModifyDNResponse()), namedtype.NamedType('compareRequest', CompareRequest()), namedtype.NamedType('compareResponse', CompareResponse()), namedtype.NamedType('abandonRequest', AbandonRequest()), namedtype.NamedType('extendedReq', ExtendedRequest()), namedtype.NamedType('extendedResp', ExtendedResponse())))),
|
||||
namedtype.OptionalNamedType('controls', Controls().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
namedtype.NamedType(
|
||||
'protocolOp', univ.Choice(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('bindRequest', BindRequest()),
|
||||
namedtype.NamedType('bindResponse', BindResponse()),
|
||||
namedtype.NamedType('unbindRequest', UnbindRequest()),
|
||||
namedtype.NamedType('searchRequest', SearchRequest()),
|
||||
namedtype.NamedType('searchResEntry', SearchResultEntry()),
|
||||
namedtype.NamedType('searchResDone', SearchResultDone()),
|
||||
namedtype.NamedType('searchResRef', SearchResultReference()),
|
||||
namedtype.NamedType('modifyRequest', ModifyRequest()),
|
||||
namedtype.NamedType('modifyResponse', ModifyResponse()),
|
||||
namedtype.NamedType('addRequest', AddRequest()),
|
||||
namedtype.NamedType('addResponse', AddResponse()),
|
||||
namedtype.NamedType('delRequest', DelRequest()),
|
||||
namedtype.NamedType('delResponse', DelResponse()),
|
||||
namedtype.NamedType('modDNRequest', ModifyDNRequest()),
|
||||
namedtype.NamedType('modDNResponse', ModifyDNResponse()),
|
||||
namedtype.NamedType('compareRequest', CompareRequest()),
|
||||
namedtype.NamedType('compareResponse', CompareResponse()),
|
||||
namedtype.NamedType('abandonRequest', AbandonRequest()),
|
||||
namedtype.NamedType('extendedReq', ExtendedRequest()),
|
||||
namedtype.NamedType('extendedResp', ExtendedResponse())
|
||||
)
|
||||
)
|
||||
),
|
||||
namedtype.OptionalNamedType('controls', Controls().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
@ -1,4 +1,9 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# PKCS#10 syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
@ -6,24 +11,34 @@
|
||||
#
|
||||
# Sample captures could be obtained with "openssl req" command
|
||||
#
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, constraint
|
||||
from pyasn1_modules.rfc2459 import *
|
||||
|
||||
|
||||
class Attributes(univ.SetOf):
|
||||
componentType = Attribute()
|
||||
|
||||
class Version(univ.Integer): pass
|
||||
|
||||
class Version(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
class CertificationRequestInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', Version()),
|
||||
namedtype.NamedType('subject', Name()),
|
||||
namedtype.NamedType('subjectPublicKeyInfo', SubjectPublicKeyInfo()),
|
||||
namedtype.NamedType('attributes', Attributes().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
namedtype.NamedType('attributes',
|
||||
Attributes().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
class Signature(univ.BitString): pass
|
||||
class SignatureAlgorithmIdentifier(AlgorithmIdentifier): pass
|
||||
|
||||
class Signature(univ.BitString):
|
||||
pass
|
||||
|
||||
|
||||
class SignatureAlgorithmIdentifier(AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class CertificationRequest(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
|
@ -1,26 +1,33 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# PKCS#7 message syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.trl.ibm.com/projects/xml/xss4j/data/asn1/grammars/pkcs7.asn
|
||||
# https://opensource.apple.com/source/Security/Security-55179.1/libsecurity_asn1/asn1/pkcs7.asn.auto.html
|
||||
#
|
||||
# Sample captures from:
|
||||
# openssl crl2pkcs7 -nocrl -certfile cert1.cer -out outfile.p7b
|
||||
#
|
||||
from pyasn1.type import tag,namedtype,namedval,univ,constraint,char,useful
|
||||
from pyasn1_modules.rfc2459 import *
|
||||
|
||||
|
||||
class Attribute(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeType()),
|
||||
namedtype.NamedType('values', univ.SetOf(componentType=AttributeValue()))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AttributeValueAssertion(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('attributeType', AttributeType()),
|
||||
namedtype.NamedType('attributeValue', AttributeValue())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
pkcs_7 = univ.ObjectIdentifier('1.2.840.113549.1.7')
|
||||
data = univ.ObjectIdentifier('1.2.840.113549.1.7.1')
|
||||
@ -30,57 +37,82 @@ signedAndEnvelopedData = univ.ObjectIdentifier('1.2.840.113549.1.7.4')
|
||||
digestedData = univ.ObjectIdentifier('1.2.840.113549.1.7.5')
|
||||
encryptedData = univ.ObjectIdentifier('1.2.840.113549.1.7.6')
|
||||
|
||||
class ContentType(univ.ObjectIdentifier): pass
|
||||
|
||||
class ContentEncryptionAlgorithmIdentifier(AlgorithmIdentifier): pass
|
||||
class ContentType(univ.ObjectIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class ContentEncryptionAlgorithmIdentifier(AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class EncryptedContent(univ.OctetString):
|
||||
pass
|
||||
|
||||
class EncryptedContent(univ.OctetString): pass
|
||||
|
||||
class EncryptedContentInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('contentType', ContentType()),
|
||||
namedtype.NamedType('contentEncryptionAlgorithm', ContentEncryptionAlgorithmIdentifier()),
|
||||
namedtype.OptionalNamedType('encryptedContent', EncryptedContent().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
namedtype.OptionalNamedType('encryptedContent', EncryptedContent().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
|
||||
class Version(univ.Integer): # overrides x509.Version
|
||||
pass
|
||||
|
||||
class Version(univ.Integer): pass # overrides x509.Version
|
||||
|
||||
class EncryptedData(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', Version()),
|
||||
namedtype.NamedType('encryptedContentInfo', EncryptedContentInfo())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class DigestAlgorithmIdentifier(AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
class DigestAlgorithmIdentifier(AlgorithmIdentifier): pass
|
||||
|
||||
class DigestAlgorithmIdentifiers(univ.SetOf):
|
||||
componentType = DigestAlgorithmIdentifier()
|
||||
|
||||
class Digest(univ.OctetString): pass
|
||||
|
||||
class Digest(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class ContentInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('contentType', ContentType()),
|
||||
namedtype.OptionalNamedType('content', univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
namedtype.OptionalNamedType('content', univ.Any().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
|
||||
class DigestedData(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', Version()),
|
||||
namedtype.NamedType('digestAlgorithm', DigestAlgorithmIdentifier()),
|
||||
namedtype.NamedType('contentInfo', ContentInfo()),
|
||||
namedtype.NamedType('digest', Digest)
|
||||
)
|
||||
namedtype.NamedType('digest', Digest())
|
||||
)
|
||||
|
||||
|
||||
class IssuerAndSerialNumber(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuer', Name()),
|
||||
namedtype.NamedType('serialNumber', CertificateSerialNumber())
|
||||
)
|
||||
)
|
||||
|
||||
class KeyEncryptionAlgorithmIdentifier(AlgorithmIdentifier): pass
|
||||
|
||||
class EncryptedKey(univ.OctetString): pass
|
||||
class KeyEncryptionAlgorithmIdentifier(AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class EncryptedKey(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class RecipientInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
@ -88,48 +120,63 @@ class RecipientInfo(univ.Sequence):
|
||||
namedtype.NamedType('issuerAndSerialNumber', IssuerAndSerialNumber()),
|
||||
namedtype.NamedType('keyEncryptionAlgorithm', KeyEncryptionAlgorithmIdentifier()),
|
||||
namedtype.NamedType('encryptedKey', EncryptedKey())
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class RecipientInfos(univ.SetOf):
|
||||
componentType = RecipientInfo()
|
||||
|
||||
|
||||
class Attributes(univ.SetOf):
|
||||
componentType = Attribute()
|
||||
|
||||
|
||||
class ExtendedCertificateInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', Version()),
|
||||
namedtype.NamedType('certificate', Certificate()),
|
||||
namedtype.NamedType('attributes', Attributes())
|
||||
)
|
||||
)
|
||||
|
||||
class SignatureAlgorithmIdentifier(AlgorithmIdentifier): pass
|
||||
|
||||
class Signature(univ.BitString): pass
|
||||
class SignatureAlgorithmIdentifier(AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class Signature(univ.BitString):
|
||||
pass
|
||||
|
||||
|
||||
class ExtendedCertificate(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('extendedCertificateInfo', ExtendedCertificateInfo()),
|
||||
namedtype.NamedType('signatureAlgorithm', SignatureAlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', Signature())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class ExtendedCertificateOrCertificate(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certificate', Certificate()),
|
||||
namedtype.NamedType('extendedCertificate', ExtendedCertificate().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
namedtype.NamedType('extendedCertificate', ExtendedCertificate().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
|
||||
class ExtendedCertificatesAndCertificates(univ.SetOf):
|
||||
componentType = ExtendedCertificateOrCertificate()
|
||||
|
||||
class SerialNumber(univ.Integer): pass
|
||||
|
||||
class SerialNumber(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
class CRLEntry(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('userCertificate', SerialNumber()),
|
||||
namedtype.NamedType('revocationDate', useful.UTCTime())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class TBSCertificateRevocationList(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
@ -138,68 +185,88 @@ class TBSCertificateRevocationList(univ.Sequence):
|
||||
namedtype.NamedType('lastUpdate', useful.UTCTime()),
|
||||
namedtype.NamedType('nextUpdate', useful.UTCTime()),
|
||||
namedtype.OptionalNamedType('revokedCertificates', univ.SequenceOf(componentType=CRLEntry()))
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class CertificateRevocationList(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('tbsCertificateRevocationList', TBSCertificateRevocationList()),
|
||||
namedtype.NamedType('signatureAlgorithm', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', univ.BitString())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class CertificateRevocationLists(univ.SetOf):
|
||||
componentType = CertificateRevocationList()
|
||||
|
||||
class DigestEncryptionAlgorithmIdentifier(AlgorithmIdentifier): pass
|
||||
|
||||
class EncryptedDigest(univ.OctetString): pass
|
||||
class DigestEncryptionAlgorithmIdentifier(AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class EncryptedDigest(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class SignerInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', Version()),
|
||||
namedtype.NamedType('issuerAndSerialNumber', IssuerAndSerialNumber()),
|
||||
namedtype.NamedType('digestAlgorithm', DigestAlgorithmIdentifier()),
|
||||
namedtype.OptionalNamedType('authenticatedAttributes', Attributes().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('authenticatedAttributes', Attributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('digestEncryptionAlgorithm', DigestEncryptionAlgorithmIdentifier()),
|
||||
namedtype.NamedType('encryptedDigest', EncryptedDigest()),
|
||||
namedtype.OptionalNamedType('unauthenticatedAttributes', Attributes().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
namedtype.OptionalNamedType('unauthenticatedAttributes', Attributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class SignerInfos(univ.SetOf):
|
||||
componentType = SignerInfo()
|
||||
|
||||
|
||||
class SignedAndEnvelopedData(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', Version()),
|
||||
namedtype.NamedType('recipientInfos', RecipientInfos()),
|
||||
namedtype.NamedType('digestAlgorithms', DigestAlgorithmIdentifiers()),
|
||||
namedtype.NamedType('encryptedContentInfo', EncryptedContentInfo()),
|
||||
namedtype.OptionalNamedType('certificates', ExtendedCertificatesAndCertificates().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('crls', CertificateRevocationLists().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.OptionalNamedType('certificates', ExtendedCertificatesAndCertificates().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('crls', CertificateRevocationLists().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('signerInfos', SignerInfos())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class EnvelopedData(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', Version()),
|
||||
namedtype.NamedType('recipientInfos', RecipientInfos()),
|
||||
namedtype.NamedType('encryptedContentInfo', EncryptedContentInfo())
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class DigestInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('digestAlgorithm', DigestAlgorithmIdentifier()),
|
||||
namedtype.NamedType('digest', Digest())
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class SignedData(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', Version()),
|
||||
namedtype.NamedType('digestAlgorithms', DigestAlgorithmIdentifiers()),
|
||||
namedtype.NamedType('contentInfo', ContentInfo()),
|
||||
namedtype.OptionalNamedType('certificates', ExtendedCertificatesAndCertificates().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('crls', CertificateRevocationLists().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.OptionalNamedType('certificates', ExtendedCertificatesAndCertificates().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('crls', CertificateRevocationLists().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('signerInfos', SignerInfos())
|
||||
)
|
||||
|
||||
class Data(univ.OctetString): pass
|
||||
)
|
||||
|
||||
|
||||
class Data(univ.OctetString):
|
||||
pass
|
||||
|
@ -1,4 +1,9 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# PKCS#1 syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
@ -6,7 +11,7 @@
|
||||
#
|
||||
# Sample captures could be obtained with "openssl genrsa" command
|
||||
#
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, constraint
|
||||
from pyasn1.type import tag, namedtype, univ
|
||||
from pyasn1_modules.rfc2459 import AlgorithmIdentifier
|
||||
|
||||
pkcs_1 = univ.ObjectIdentifier('1.2.840.113549.1.1')
|
||||
@ -21,9 +26,12 @@ id_mgf1 = univ.ObjectIdentifier('1.2.840.113549.1.1.8')
|
||||
id_pSpecified = univ.ObjectIdentifier('1.2.840.113549.1.1.9')
|
||||
id_sha1 = univ.ObjectIdentifier('1.3.14.3.2.26')
|
||||
|
||||
MAX = 16
|
||||
MAX = float('inf')
|
||||
|
||||
|
||||
class Version(univ.Integer):
|
||||
pass
|
||||
|
||||
class Version(univ.Integer): pass
|
||||
|
||||
class RSAPrivateKey(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
@ -38,16 +46,21 @@ class RSAPrivateKey(univ.Sequence):
|
||||
namedtype.NamedType('coefficient', univ.Integer())
|
||||
)
|
||||
|
||||
|
||||
class RSAPublicKey(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('modulus', univ.Integer()),
|
||||
namedtype.NamedType('publicExponent', univ.Integer())
|
||||
)
|
||||
|
||||
|
||||
# XXX defaults not set
|
||||
class RSAES_OAEP_params(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('hashFunc', AlgorithmIdentifier().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('maskGenFunc', AlgorithmIdentifier().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('pSourceFunc', AlgorithmIdentifier().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2)))
|
||||
namedtype.NamedType('hashFunc', AlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('maskGenFunc', AlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('pSourceFunc', AlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2)))
|
||||
)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,9 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# X.509 certificate Request Message Format (CRMF) syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
@ -6,11 +11,10 @@
|
||||
#
|
||||
# Sample captures could be obtained with OpenSSL
|
||||
#
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, constraint, char,useful
|
||||
from pyasn1_modules.rfc2459 import *
|
||||
from pyasn1_modules import rfc2315
|
||||
|
||||
MAX=16
|
||||
MAX = float('inf')
|
||||
|
||||
id_pkix = univ.ObjectIdentifier('1.3.6.1.5.5.7')
|
||||
id_pkip = univ.ObjectIdentifier('1.3.6.1.5.5.7.5')
|
||||
@ -25,15 +29,22 @@ id_regInfo = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.2')
|
||||
id_regInfo_utf8Pairs = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.2.1')
|
||||
id_regInfo_certReq = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.2.2')
|
||||
|
||||
|
||||
# This should be in PKIX Certificate Extensions module
|
||||
|
||||
class GeneralName(univ.OctetString): pass
|
||||
class GeneralName(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
# end of PKIX Certificate Extensions module
|
||||
|
||||
class UTF8Pairs(char.UTF8String): pass
|
||||
class UTF8Pairs(char.UTF8String):
|
||||
pass
|
||||
|
||||
|
||||
class ProtocolEncrKey(SubjectPublicKeyInfo):
|
||||
pass
|
||||
|
||||
class ProtocolEncrKey(SubjectPublicKeyInfo): pass
|
||||
|
||||
class CertId(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
@ -41,47 +52,74 @@ class CertId(univ.Sequence):
|
||||
namedtype.NamedType('serialNumber', univ.Integer())
|
||||
)
|
||||
|
||||
class OldCertId(CertId): pass
|
||||
|
||||
class KeyGenParameters(univ.OctetString): pass
|
||||
class OldCertId(CertId):
|
||||
pass
|
||||
|
||||
|
||||
class KeyGenParameters(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class EncryptedValue(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('intendedAlg', AlgorithmIdentifier().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('symmAlg', AlgorithmIdentifier().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.OptionalNamedType('encSymmKey', univ.BitString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.OptionalNamedType('keyAlg', AlgorithmIdentifier().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.OptionalNamedType('valueHint', univ.OctetString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
|
||||
namedtype.OptionalNamedType('intendedAlg', AlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('symmAlg', AlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.OptionalNamedType('encSymmKey', univ.BitString().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.OptionalNamedType('keyAlg', AlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.OptionalNamedType('valueHint', univ.OctetString().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
|
||||
namedtype.NamedType('encValue', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class EncryptedKey(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('encryptedValue', EncryptedValue()),
|
||||
namedtype.NamedType('envelopedData', rfc2315.EnvelopedData().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
namedtype.NamedType('envelopedData', rfc2315.EnvelopedData().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
|
||||
class PKIArchiveOptions(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('encryptedPrivKey', EncryptedKey().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('keyGenParameters', KeyGenParameters().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('archiveRemGenPrivKey', univ.Boolean().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
namedtype.NamedType('encryptedPrivKey', EncryptedKey().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('keyGenParameters', KeyGenParameters().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('archiveRemGenPrivKey',
|
||||
univ.Boolean().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
|
||||
|
||||
class SinglePubInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('pubMethod', univ.Integer(namedValues=namedval.NamedValues(('dontCare', 0), ('x500', 1), ('web', 2), ('ldap', 3)))),
|
||||
namedtype.NamedType('pubMethod', univ.Integer(
|
||||
namedValues=namedval.NamedValues(('dontCare', 0), ('x500', 1), ('web', 2), ('ldap', 3)))),
|
||||
namedtype.OptionalNamedType('pubLocation', GeneralName())
|
||||
)
|
||||
|
||||
|
||||
class PKIPublicationInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('action', univ.Integer(namedValues=namedval.NamedValues(('dontPublish', 0), ('pleasePublish', 1)))),
|
||||
namedtype.OptionalNamedType('pubInfos', univ.SequenceOf(componentType=SinglePubInfo()).subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX)))
|
||||
namedtype.NamedType('action',
|
||||
univ.Integer(namedValues=namedval.NamedValues(('dontPublish', 0), ('pleasePublish', 1)))),
|
||||
namedtype.OptionalNamedType('pubInfos', univ.SequenceOf(componentType=SinglePubInfo()).subtype(
|
||||
subtypeSpec=constraint.ValueSizeConstraint(1, MAX)))
|
||||
)
|
||||
|
||||
class Authenticator(char.UTF8String): pass
|
||||
class RegToken(char.UTF8String): pass
|
||||
|
||||
class Authenticator(char.UTF8String):
|
||||
pass
|
||||
|
||||
|
||||
class RegToken(char.UTF8String):
|
||||
pass
|
||||
|
||||
|
||||
class SubsequentMessage(univ.Integer):
|
||||
namedValues = namedval.NamedValues(
|
||||
@ -89,13 +127,18 @@ class SubsequentMessage(univ.Integer):
|
||||
('challengeResp', 1)
|
||||
)
|
||||
|
||||
|
||||
class POPOPrivKey(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('thisMessage', univ.BitString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('subsequentMessage', SubsequentMessage().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('dhMAC', univ.BitString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
namedtype.NamedType('thisMessage',
|
||||
univ.BitString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('subsequentMessage', SubsequentMessage().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('dhMAC',
|
||||
univ.BitString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
|
||||
|
||||
class PBMParameter(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('salt', univ.OctetString()),
|
||||
@ -104,73 +147,112 @@ class PBMParameter(univ.Sequence):
|
||||
namedtype.NamedType('mac', AlgorithmIdentifier())
|
||||
)
|
||||
|
||||
|
||||
class PKMACValue(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('algId', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('value', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class POPOSigningKeyInput(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('authInfo', univ.Choice(componentType=namedtype.NamedTypes(namedtype.NamedType('sender', GeneralName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), namedtype.NamedType('publicKeyMAC', PKMACValue())))),
|
||||
namedtype.NamedType(
|
||||
'authInfo', univ.Choice(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType(
|
||||
'sender', GeneralName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))
|
||||
),
|
||||
namedtype.NamedType('publicKeyMAC', PKMACValue())
|
||||
)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('publicKey', SubjectPublicKeyInfo())
|
||||
)
|
||||
|
||||
|
||||
class POPOSigningKey(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('poposkInput', POPOSigningKeyInput().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('poposkInput', POPOSigningKeyInput().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('algorithmIdentifier', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class ProofOfPossession(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('raVerified', univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('signature', POPOSigningKey().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('keyEncipherment', POPOPrivKey().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.NamedType('keyAgreement', POPOPrivKey().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))
|
||||
namedtype.NamedType('raVerified',
|
||||
univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('signature', POPOSigningKey().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('keyEncipherment', POPOPrivKey().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.NamedType('keyAgreement', POPOPrivKey().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))
|
||||
)
|
||||
|
||||
|
||||
class Controls(univ.SequenceOf):
|
||||
componentType = AttributeTypeAndValue()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class OptionalValidity(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('notBefore', Time().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('notAfter', Time().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
namedtype.OptionalNamedType('notBefore',
|
||||
Time().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('notAfter',
|
||||
Time().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
|
||||
class CertTemplate(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('version', Version().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('serialNumber', univ.Integer().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.OptionalNamedType('signingAlg', AlgorithmIdentifier().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.OptionalNamedType('issuer', Name().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.OptionalNamedType('validity', OptionalValidity().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
|
||||
namedtype.OptionalNamedType('subject', Name().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
|
||||
namedtype.OptionalNamedType('publicKey', SubjectPublicKeyInfo().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))),
|
||||
namedtype.OptionalNamedType('issuerUID', UniqueIdentifier().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
|
||||
namedtype.OptionalNamedType('subjectUID', UniqueIdentifier().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8))),
|
||||
namedtype.OptionalNamedType('extensions', Extensions().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)))
|
||||
)
|
||||
|
||||
namedtype.OptionalNamedType('version', Version().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('serialNumber', univ.Integer().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.OptionalNamedType('signingAlg', AlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.OptionalNamedType('issuer', Name().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.OptionalNamedType('validity', OptionalValidity().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
|
||||
namedtype.OptionalNamedType('subject', Name().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
|
||||
namedtype.OptionalNamedType('publicKey', SubjectPublicKeyInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))),
|
||||
namedtype.OptionalNamedType('issuerUID', UniqueIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
|
||||
namedtype.OptionalNamedType('subjectUID', UniqueIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8))),
|
||||
namedtype.OptionalNamedType('extensions', Extensions().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)))
|
||||
)
|
||||
|
||||
|
||||
class CertRequest(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certReqId', univ.Integer()),
|
||||
namedtype.NamedType('certTemplate', CertTemplate()),
|
||||
namedtype.OptionalNamedType('controls', Controls())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class CertReq(CertRequest):
|
||||
pass
|
||||
|
||||
class CertReq(CertRequest): pass
|
||||
|
||||
class CertReqMsg(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certReq', CertRequest()),
|
||||
namedtype.OptionalNamedType('pop', ProofOfPossession()),
|
||||
namedtype.OptionalNamedType('regInfo', univ.SequenceOf(componentType=AttributeTypeAndValue).subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX)))
|
||||
)
|
||||
|
||||
namedtype.OptionalNamedType('regInfo', univ.SequenceOf(componentType=AttributeTypeAndValue()).subtype(
|
||||
subtypeSpec=constraint.ValueSizeConstraint(1, MAX)))
|
||||
)
|
||||
|
||||
|
||||
class CertReqMessages(univ.SequenceOf):
|
||||
componentType = CertReqMsg()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
@ -1,4 +1,9 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# OCSP request/response syntax
|
||||
#
|
||||
# Derived from a minimal OCSP library (RFC2560) code written by
|
||||
@ -16,9 +21,10 @@
|
||||
# * dates are left as strings in GeneralizedTime format -- datetime.datetime
|
||||
# would be nicer
|
||||
#
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, constraint, useful
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, useful
|
||||
from pyasn1_modules import rfc2459
|
||||
|
||||
|
||||
# Start of OCSP module definitions
|
||||
|
||||
# This should be in directory Authentication Framework (X.509) module
|
||||
@ -35,13 +41,16 @@ class CRLReason(univ.Enumerated):
|
||||
('removeFromCRL', 8),
|
||||
('privilegeWithdrawn', 9),
|
||||
('aACompromise', 10)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
# end of directory Authentication Framework (X.509) module
|
||||
|
||||
# This should be in PKIX Certificate Extensions module
|
||||
|
||||
class GeneralName(univ.OctetString): pass
|
||||
class GeneralName(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
# end of PKIX Certificate Extensions module
|
||||
|
||||
@ -55,18 +64,26 @@ id_pkix_ocsp_nocheck = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 48, 1, 5))
|
||||
id_pkix_ocsp_archive_cutoff = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 48, 1, 6))
|
||||
id_pkix_ocsp_service_locator = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 48, 1, 7))
|
||||
|
||||
|
||||
class AcceptableResponses(univ.SequenceOf):
|
||||
componentType = univ.ObjectIdentifier()
|
||||
|
||||
class ArchiveCutoff(useful.GeneralizedTime): pass
|
||||
|
||||
class UnknownInfo(univ.Null): pass
|
||||
class ArchiveCutoff(useful.GeneralizedTime):
|
||||
pass
|
||||
|
||||
|
||||
class UnknownInfo(univ.Null):
|
||||
pass
|
||||
|
||||
|
||||
class RevokedInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('revocationTime', useful.GeneralizedTime()),
|
||||
namedtype.OptionalNamedType('revocationReason', CRLReason().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
namedtype.OptionalNamedType('revocationReason', CRLReason().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class CertID(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
@ -74,57 +91,77 @@ class CertID(univ.Sequence):
|
||||
namedtype.NamedType('issuerNameHash', univ.OctetString()),
|
||||
namedtype.NamedType('issuerKeyHash', univ.OctetString()),
|
||||
namedtype.NamedType('serialNumber', rfc2459.CertificateSerialNumber())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class CertStatus(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('good', univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('revoked', RevokedInfo().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('unknown', UnknownInfo().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
namedtype.NamedType('good',
|
||||
univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('revoked',
|
||||
RevokedInfo().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('unknown',
|
||||
UnknownInfo().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
|
||||
|
||||
class SingleResponse(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certID', CertID()),
|
||||
namedtype.NamedType('certStatus', CertStatus()),
|
||||
namedtype.NamedType('thisUpdate', useful.GeneralizedTime()),
|
||||
namedtype.OptionalNamedType('nextUpdate', useful.GeneralizedTime().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('singleExtensions', rfc2459.Extensions().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
namedtype.OptionalNamedType('nextUpdate', useful.GeneralizedTime().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('singleExtensions', rfc2459.Extensions().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
|
||||
class KeyHash(univ.OctetString):
|
||||
pass
|
||||
|
||||
class KeyHash(univ.OctetString): pass
|
||||
|
||||
class ResponderID(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('byName', rfc2459.Name().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('byKey', KeyHash().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
namedtype.NamedType('byName',
|
||||
rfc2459.Name().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('byKey',
|
||||
KeyHash().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
|
||||
|
||||
class Version(univ.Integer):
|
||||
namedValues = namedval.NamedValues(('v1', 0))
|
||||
|
||||
|
||||
class ResponseData(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.DefaultedNamedType('version', Version('v1').subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.DefaultedNamedType('version', Version('v1').subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('responderID', ResponderID()),
|
||||
namedtype.NamedType('producedAt', useful.GeneralizedTime()),
|
||||
namedtype.NamedType('responses', univ.SequenceOf(SingleResponse())),
|
||||
namedtype.OptionalNamedType('responseExtensions', rfc2459.Extensions().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
namedtype.NamedType('responses', univ.SequenceOf(componentType=SingleResponse())),
|
||||
namedtype.OptionalNamedType('responseExtensions', rfc2459.Extensions().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
|
||||
class BasicOCSPResponse(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('tbsResponseData', ResponseData()),
|
||||
namedtype.NamedType('signatureAlgorithm', rfc2459.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', univ.BitString()),
|
||||
namedtype.OptionalNamedType('certs', univ.SequenceOf(rfc2459.Certificate()).subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
namedtype.OptionalNamedType('certs', univ.SequenceOf(componentType=rfc2459.Certificate()).subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class ResponseBytes(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('responseType', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('response', univ.OctetString())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class OCSPResponseStatus(univ.Enumerated):
|
||||
namedValues = namedval.NamedValues(
|
||||
@ -135,37 +172,49 @@ class OCSPResponseStatus(univ.Enumerated):
|
||||
('undefinedStatus', 4), # should never occur
|
||||
('sigRequired', 5),
|
||||
('unauthorized', 6)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class OCSPResponse(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('responseStatus', OCSPResponseStatus()),
|
||||
namedtype.OptionalNamedType('responseBytes', ResponseBytes().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
namedtype.NamedType('responseStatus', OCSPResponseStatus()),
|
||||
namedtype.OptionalNamedType('responseBytes', ResponseBytes().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class Request(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('reqCert', CertID()),
|
||||
namedtype.OptionalNamedType('singleRequestExtensions', rfc2459.Extensions().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
namedtype.OptionalNamedType('singleRequestExtensions', rfc2459.Extensions().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class Signature(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('signatureAlgorithm', rfc2459.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', univ.BitString()),
|
||||
namedtype.OptionalNamedType('certs', univ.SequenceOf(rfc2459.Certificate()).subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
namedtype.OptionalNamedType('certs', univ.SequenceOf(componentType=rfc2459.Certificate()).subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class TBSRequest(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.DefaultedNamedType('version', Version('v1').subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('requestorName', GeneralName().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('requestList', univ.SequenceOf(Request())),
|
||||
namedtype.OptionalNamedType('requestExtensions', rfc2459.Extensions().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
namedtype.DefaultedNamedType('version', Version('v1').subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('requestorName', GeneralName().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('requestList', univ.SequenceOf(componentType=Request())),
|
||||
namedtype.OptionalNamedType('requestExtensions', rfc2459.Extensions().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
|
||||
|
||||
class OCSPRequest(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('tbsRequest', TBSRequest()),
|
||||
namedtype.OptionalNamedType('optionalSignature', Signature().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
namedtype.NamedType('tbsRequest', TBSRequest()),
|
||||
namedtype.OptionalNamedType('optionalSignature', Signature().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
231
third_party/python/pyasn1-modules/pyasn1_modules/rfc3279.py
vendored
Normal file
231
third_party/python/pyasn1-modules/pyasn1_modules/rfc3279.py
vendored
Normal file
@ -0,0 +1,231 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules.
|
||||
#
|
||||
# Copyright (c) 2017, Danielle Madeley <danielle@madeley.id.au>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Derived from RFC 3279
|
||||
#
|
||||
from pyasn1.type import univ, char, namedtype, namedval, tag, constraint, useful
|
||||
|
||||
|
||||
def _OID(*components):
|
||||
output = []
|
||||
for x in tuple(components):
|
||||
if isinstance(x, univ.ObjectIdentifier):
|
||||
output.extend(list(x))
|
||||
else:
|
||||
output.append(int(x))
|
||||
|
||||
return univ.ObjectIdentifier(output)
|
||||
|
||||
|
||||
md2 = _OID(1, 2, 840, 113549, 2, 2)
|
||||
md5 = _OID(1, 2, 840, 113549, 2, 5)
|
||||
id_sha1 = _OID(1, 3, 14, 3, 2, 26)
|
||||
id_dsa = _OID(1, 2, 840, 10040, 4, 1)
|
||||
|
||||
|
||||
class DSAPublicKey(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
class Dss_Parms(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('p', univ.Integer()),
|
||||
namedtype.NamedType('q', univ.Integer()),
|
||||
namedtype.NamedType('g', univ.Integer())
|
||||
)
|
||||
|
||||
|
||||
id_dsa_with_sha1 = _OID(1, 2, 840, 10040, 4, 3)
|
||||
|
||||
|
||||
class Dss_Sig_Value(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('r', univ.Integer()),
|
||||
namedtype.NamedType('s', univ.Integer())
|
||||
)
|
||||
|
||||
|
||||
pkcs_1 = _OID(1, 2, 840, 113549, 1, 1)
|
||||
rsaEncryption = _OID(pkcs_1, 1)
|
||||
md2WithRSAEncryption = _OID(pkcs_1, 2)
|
||||
md5WithRSAEncryption = _OID(pkcs_1, 4)
|
||||
sha1WithRSAEncryption = _OID(pkcs_1, 5)
|
||||
|
||||
|
||||
class RSAPublicKey(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('modulus', univ.Integer()),
|
||||
namedtype.NamedType('publicExponent', univ.Integer())
|
||||
)
|
||||
|
||||
|
||||
dhpublicnumber = _OID(1, 2, 840, 10046, 2, 1)
|
||||
|
||||
|
||||
class DHPublicKey(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
class ValidationParms(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('seed', univ.BitString()),
|
||||
namedtype.NamedType('pgenCounter', univ.Integer())
|
||||
)
|
||||
|
||||
|
||||
class DomainParameters(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('p', univ.Integer()),
|
||||
namedtype.NamedType('g', univ.Integer()),
|
||||
namedtype.NamedType('q', univ.Integer()),
|
||||
namedtype.OptionalNamedType('j', univ.Integer()),
|
||||
namedtype.OptionalNamedType('validationParms', ValidationParms())
|
||||
)
|
||||
|
||||
|
||||
id_keyExchangeAlgorithm = _OID(2, 16, 840, 1, 101, 2, 1, 1, 22)
|
||||
|
||||
|
||||
class KEA_Parms_Id(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
ansi_X9_62 = _OID(1, 2, 840, 10045)
|
||||
|
||||
|
||||
class FieldID(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('fieldType', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('parameters', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
id_ecSigType = _OID(ansi_X9_62, 4)
|
||||
ecdsa_with_SHA1 = _OID(id_ecSigType, 1)
|
||||
|
||||
|
||||
class ECDSA_Sig_Value(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('r', univ.Integer()),
|
||||
namedtype.NamedType('s', univ.Integer())
|
||||
)
|
||||
|
||||
|
||||
id_fieldType = _OID(ansi_X9_62, 1)
|
||||
prime_field = _OID(id_fieldType, 1)
|
||||
|
||||
|
||||
class Prime_p(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
characteristic_two_field = _OID(id_fieldType, 2)
|
||||
|
||||
|
||||
class Characteristic_two(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('m', univ.Integer()),
|
||||
namedtype.NamedType('basis', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('parameters', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
id_characteristic_two_basis = _OID(characteristic_two_field, 3)
|
||||
gnBasis = _OID(id_characteristic_two_basis, 1)
|
||||
tpBasis = _OID(id_characteristic_two_basis, 2)
|
||||
|
||||
|
||||
class Trinomial(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
ppBasis = _OID(id_characteristic_two_basis, 3)
|
||||
|
||||
|
||||
class Pentanomial(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('k1', univ.Integer()),
|
||||
namedtype.NamedType('k2', univ.Integer()),
|
||||
namedtype.NamedType('k3', univ.Integer())
|
||||
)
|
||||
|
||||
|
||||
class FieldElement(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class ECPoint(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class Curve(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('a', FieldElement()),
|
||||
namedtype.NamedType('b', FieldElement()),
|
||||
namedtype.OptionalNamedType('seed', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class ECPVer(univ.Integer):
|
||||
namedValues = namedval.NamedValues(
|
||||
('ecpVer1', 1)
|
||||
)
|
||||
|
||||
|
||||
class ECParameters(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', ECPVer()),
|
||||
namedtype.NamedType('fieldID', FieldID()),
|
||||
namedtype.NamedType('curve', Curve()),
|
||||
namedtype.NamedType('base', ECPoint()),
|
||||
namedtype.NamedType('order', univ.Integer()),
|
||||
namedtype.OptionalNamedType('cofactor', univ.Integer())
|
||||
)
|
||||
|
||||
|
||||
class EcpkParameters(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('ecParameters', ECParameters()),
|
||||
namedtype.NamedType('namedCurve', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('implicitlyCA', univ.Null())
|
||||
)
|
||||
|
||||
|
||||
id_publicKeyType = _OID(ansi_X9_62, 2)
|
||||
id_ecPublicKey = _OID(id_publicKeyType, 1)
|
||||
|
||||
ellipticCurve = _OID(ansi_X9_62, 3)
|
||||
|
||||
c_TwoCurve = _OID(ellipticCurve, 0)
|
||||
c2pnb163v1 = _OID(c_TwoCurve, 1)
|
||||
c2pnb163v2 = _OID(c_TwoCurve, 2)
|
||||
c2pnb163v3 = _OID(c_TwoCurve, 3)
|
||||
c2pnb176w1 = _OID(c_TwoCurve, 4)
|
||||
c2tnb191v1 = _OID(c_TwoCurve, 5)
|
||||
c2tnb191v2 = _OID(c_TwoCurve, 6)
|
||||
c2tnb191v3 = _OID(c_TwoCurve, 7)
|
||||
c2onb191v4 = _OID(c_TwoCurve, 8)
|
||||
c2onb191v5 = _OID(c_TwoCurve, 9)
|
||||
c2pnb208w1 = _OID(c_TwoCurve, 10)
|
||||
c2tnb239v1 = _OID(c_TwoCurve, 11)
|
||||
c2tnb239v2 = _OID(c_TwoCurve, 12)
|
||||
c2tnb239v3 = _OID(c_TwoCurve, 13)
|
||||
c2onb239v4 = _OID(c_TwoCurve, 14)
|
||||
c2onb239v5 = _OID(c_TwoCurve, 15)
|
||||
c2pnb272w1 = _OID(c_TwoCurve, 16)
|
||||
c2pnb304w1 = _OID(c_TwoCurve, 17)
|
||||
c2tnb359v1 = _OID(c_TwoCurve, 18)
|
||||
c2pnb368w1 = _OID(c_TwoCurve, 19)
|
||||
c2tnb431r1 = _OID(c_TwoCurve, 20)
|
||||
|
||||
primeCurve = _OID(ellipticCurve, 1)
|
||||
prime192v1 = _OID(primeCurve, 1)
|
||||
prime192v2 = _OID(primeCurve, 2)
|
||||
prime192v3 = _OID(primeCurve, 3)
|
||||
prime239v1 = _OID(primeCurve, 4)
|
||||
prime239v2 = _OID(primeCurve, 5)
|
||||
prime239v3 = _OID(primeCurve, 6)
|
||||
prime256v1 = _OID(primeCurve, 7)
|
1537
third_party/python/pyasn1-modules/pyasn1_modules/rfc3280.py
vendored
Normal file
1537
third_party/python/pyasn1-modules/pyasn1_modules/rfc3280.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
331
third_party/python/pyasn1-modules/pyasn1_modules/rfc3281.py
vendored
Normal file
331
third_party/python/pyasn1-modules/pyasn1_modules/rfc3281.py
vendored
Normal file
@ -0,0 +1,331 @@
|
||||
# coding: utf-8
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# An Internet Attribute Certificate Profile for Authorization
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc3281.txt
|
||||
#
|
||||
from pyasn1.type import univ
|
||||
from pyasn1.type import char
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import useful
|
||||
|
||||
from pyasn1_modules import rfc3280
|
||||
|
||||
MAX = float('inf')
|
||||
|
||||
|
||||
def _buildOid(*components):
|
||||
output = []
|
||||
for x in tuple(components):
|
||||
if isinstance(x, univ.ObjectIdentifier):
|
||||
output.extend(list(x))
|
||||
else:
|
||||
output.append(int(x))
|
||||
|
||||
return univ.ObjectIdentifier(output)
|
||||
|
||||
|
||||
class ObjectDigestInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
ObjectDigestInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('digestedObjectType', univ.Enumerated(
|
||||
namedValues=namedval.NamedValues(('publicKey', 0), ('publicKeyCert', 1), ('otherObjectTypes', 2)))),
|
||||
namedtype.OptionalNamedType('otherObjectTypeID', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('digestAlgorithm', rfc3280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('objectDigest', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class IssuerSerial(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
IssuerSerial.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuer', rfc3280.GeneralNames()),
|
||||
namedtype.NamedType('serial', rfc3280.CertificateSerialNumber()),
|
||||
namedtype.OptionalNamedType('issuerUID', rfc3280.UniqueIdentifier())
|
||||
)
|
||||
|
||||
|
||||
class TargetCert(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
TargetCert.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('targetCertificate', IssuerSerial()),
|
||||
namedtype.OptionalNamedType('targetName', rfc3280.GeneralName()),
|
||||
namedtype.OptionalNamedType('certDigestInfo', ObjectDigestInfo())
|
||||
)
|
||||
|
||||
|
||||
class Target(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
Target.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('targetName', rfc3280.GeneralName().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('targetGroup', rfc3280.GeneralName().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('targetCert',
|
||||
TargetCert().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2)))
|
||||
)
|
||||
|
||||
|
||||
class Targets(univ.SequenceOf):
|
||||
pass
|
||||
|
||||
|
||||
Targets.componentType = Target()
|
||||
|
||||
|
||||
class ProxyInfo(univ.SequenceOf):
|
||||
pass
|
||||
|
||||
|
||||
ProxyInfo.componentType = Targets()
|
||||
|
||||
id_at_role = _buildOid(rfc3280.id_at, 72)
|
||||
|
||||
id_pe_aaControls = _buildOid(rfc3280.id_pe, 6)
|
||||
|
||||
id_ce_targetInformation = _buildOid(rfc3280.id_ce, 55)
|
||||
|
||||
id_pe_ac_auditIdentity = _buildOid(rfc3280.id_pe, 4)
|
||||
|
||||
|
||||
class ClassList(univ.BitString):
|
||||
pass
|
||||
|
||||
|
||||
ClassList.namedValues = namedval.NamedValues(
|
||||
('unmarked', 0),
|
||||
('unclassified', 1),
|
||||
('restricted', 2),
|
||||
('confidential', 3),
|
||||
('secret', 4),
|
||||
('topSecret', 5)
|
||||
)
|
||||
|
||||
|
||||
class SecurityCategory(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
SecurityCategory.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', univ.ObjectIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('value', univ.Any().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
|
||||
class Clearance(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
Clearance.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('policyId', univ.ObjectIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.DefaultedNamedType('classList',
|
||||
ClassList().subtype(implicitTag=tag.Tag(tag.tagClassContext,
|
||||
tag.tagFormatSimple, 1)).subtype(
|
||||
value="unclassified")),
|
||||
namedtype.OptionalNamedType('securityCategories', univ.SetOf(componentType=SecurityCategory()).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
|
||||
|
||||
class AttCertVersion(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
AttCertVersion.namedValues = namedval.NamedValues(
|
||||
('v2', 1)
|
||||
)
|
||||
|
||||
id_aca = _buildOid(rfc3280.id_pkix, 10)
|
||||
|
||||
id_at_clearance = _buildOid(2, 5, 1, 5, 55)
|
||||
|
||||
|
||||
class AttrSpec(univ.SequenceOf):
|
||||
pass
|
||||
|
||||
|
||||
AttrSpec.componentType = univ.ObjectIdentifier()
|
||||
|
||||
|
||||
class AAControls(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AAControls.componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('pathLenConstraint',
|
||||
univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, MAX))),
|
||||
namedtype.OptionalNamedType('permittedAttrs',
|
||||
AttrSpec().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('excludedAttrs',
|
||||
AttrSpec().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.DefaultedNamedType('permitUnSpecified', univ.Boolean().subtype(value=1))
|
||||
)
|
||||
|
||||
|
||||
class AttCertValidityPeriod(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AttCertValidityPeriod.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('notBeforeTime', useful.GeneralizedTime()),
|
||||
namedtype.NamedType('notAfterTime', useful.GeneralizedTime())
|
||||
)
|
||||
|
||||
|
||||
id_aca_authenticationInfo = _buildOid(id_aca, 1)
|
||||
|
||||
|
||||
class V2Form(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
V2Form.componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('issuerName', rfc3280.GeneralNames()),
|
||||
namedtype.OptionalNamedType('baseCertificateID', IssuerSerial().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('objectDigestInfo', ObjectDigestInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class AttCertIssuer(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
AttCertIssuer.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('v1Form', rfc3280.GeneralNames()),
|
||||
namedtype.NamedType('v2Form',
|
||||
V2Form().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
|
||||
class Holder(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
Holder.componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('baseCertificateID', IssuerSerial().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('entityName', rfc3280.GeneralNames().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.OptionalNamedType('objectDigestInfo', ObjectDigestInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2)))
|
||||
)
|
||||
|
||||
|
||||
class AttributeCertificateInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AttributeCertificateInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', AttCertVersion()),
|
||||
namedtype.NamedType('holder', Holder()),
|
||||
namedtype.NamedType('issuer', AttCertIssuer()),
|
||||
namedtype.NamedType('signature', rfc3280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('serialNumber', rfc3280.CertificateSerialNumber()),
|
||||
namedtype.NamedType('attrCertValidityPeriod', AttCertValidityPeriod()),
|
||||
namedtype.NamedType('attributes', univ.SequenceOf(componentType=rfc3280.Attribute())),
|
||||
namedtype.OptionalNamedType('issuerUniqueID', rfc3280.UniqueIdentifier()),
|
||||
namedtype.OptionalNamedType('extensions', rfc3280.Extensions())
|
||||
)
|
||||
|
||||
|
||||
class AttributeCertificate(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AttributeCertificate.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('acinfo', AttributeCertificateInfo()),
|
||||
namedtype.NamedType('signatureAlgorithm', rfc3280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signatureValue', univ.BitString())
|
||||
)
|
||||
|
||||
id_mod = _buildOid(rfc3280.id_pkix, 0)
|
||||
|
||||
id_mod_attribute_cert = _buildOid(id_mod, 12)
|
||||
|
||||
id_aca_accessIdentity = _buildOid(id_aca, 2)
|
||||
|
||||
|
||||
class RoleSyntax(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
RoleSyntax.componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('roleAuthority', rfc3280.GeneralNames().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('roleName',
|
||||
rfc3280.GeneralName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
id_aca_chargingIdentity = _buildOid(id_aca, 3)
|
||||
|
||||
|
||||
class ACClearAttrs(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
ACClearAttrs.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('acIssuer', rfc3280.GeneralName()),
|
||||
namedtype.NamedType('acSerial', univ.Integer()),
|
||||
namedtype.NamedType('attrs', univ.SequenceOf(componentType=rfc3280.Attribute()))
|
||||
)
|
||||
|
||||
id_aca_group = _buildOid(id_aca, 4)
|
||||
|
||||
id_pe_ac_proxying = _buildOid(rfc3280.id_pe, 10)
|
||||
|
||||
|
||||
class SvceAuthInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
SvceAuthInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('service', rfc3280.GeneralName()),
|
||||
namedtype.NamedType('ident', rfc3280.GeneralName()),
|
||||
namedtype.OptionalNamedType('authInfo', univ.OctetString())
|
||||
)
|
||||
|
||||
|
||||
class IetfAttrSyntax(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
IetfAttrSyntax.componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType(
|
||||
'policyAuthority', rfc3280.GeneralNames().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))
|
||||
),
|
||||
namedtype.NamedType(
|
||||
'values', univ.SequenceOf(
|
||||
componentType=univ.Choice(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('octets', univ.OctetString()),
|
||||
namedtype.NamedType('oid', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('string', char.UTF8String())
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
id_aca_encAttrs = _buildOid(id_aca, 6)
|
@ -1,38 +1,50 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# SNMPv3 message syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc3412.txt
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, namedval, tag, constraint
|
||||
from pyasn1.type import univ, namedtype, constraint
|
||||
from pyasn1_modules import rfc1905
|
||||
|
||||
|
||||
class ScopedPDU(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('contextEngineId', univ.OctetString()),
|
||||
namedtype.NamedType('contextName', univ.OctetString()),
|
||||
namedtype.NamedType('data', rfc1905.PDUs())
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class ScopedPduData(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('plaintext', ScopedPDU()),
|
||||
namedtype.NamedType('encryptedPDU', univ.OctetString()),
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
class HeaderData(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('msgID', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, 2147483647))),
|
||||
namedtype.NamedType('msgMaxSize', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(484, 2147483647))),
|
||||
namedtype.NamedType('msgID',
|
||||
univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, 2147483647))),
|
||||
namedtype.NamedType('msgMaxSize',
|
||||
univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(484, 2147483647))),
|
||||
namedtype.NamedType('msgFlags', univ.OctetString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, 1))),
|
||||
namedtype.NamedType('msgSecurityModel', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, 2147483647)))
|
||||
)
|
||||
namedtype.NamedType('msgSecurityModel',
|
||||
univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, 2147483647)))
|
||||
)
|
||||
|
||||
|
||||
class SNMPv3Message(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('msgVersion', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, 2147483647))),
|
||||
namedtype.NamedType('msgGlobalData', HeaderData()),
|
||||
namedtype.NamedType('msgSecurityParameters', univ.OctetString()),
|
||||
namedtype.NamedType('msgData', ScopedPduData())
|
||||
)
|
||||
|
||||
namedtype.NamedType('msgVersion',
|
||||
univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, 2147483647))),
|
||||
namedtype.NamedType('msgGlobalData', HeaderData()),
|
||||
namedtype.NamedType('msgSecurityParameters', univ.OctetString()),
|
||||
namedtype.NamedType('msgData', ScopedPduData())
|
||||
)
|
||||
|
@ -1,17 +1,26 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# SNMPv3 message syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc3414.txt
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, namedval, tag, constraint
|
||||
from pyasn1.type import univ, namedtype, constraint
|
||||
|
||||
|
||||
class UsmSecurityParameters(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('msgAuthoritativeEngineID', univ.OctetString()),
|
||||
namedtype.NamedType('msgAuthoritativeEngineBoots', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, 2147483647))),
|
||||
namedtype.NamedType('msgAuthoritativeEngineTime', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, 2147483647))),
|
||||
namedtype.NamedType('msgUserName', univ.OctetString().subtype(subtypeSpec=constraint.ValueSizeConstraint(0, 32))),
|
||||
namedtype.NamedType('msgAuthoritativeEngineBoots',
|
||||
univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, 2147483647))),
|
||||
namedtype.NamedType('msgAuthoritativeEngineTime',
|
||||
univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, 2147483647))),
|
||||
namedtype.NamedType('msgUserName',
|
||||
univ.OctetString().subtype(subtypeSpec=constraint.ValueSizeConstraint(0, 32))),
|
||||
namedtype.NamedType('msgAuthenticationParameters', univ.OctetString()),
|
||||
namedtype.NamedType('msgPrivacyParameters', univ.OctetString())
|
||||
)
|
||||
)
|
||||
|
@ -1,4 +1,9 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# PKCS#1 syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
@ -6,19 +11,22 @@
|
||||
#
|
||||
# Sample captures could be obtained with "openssl genrsa" command
|
||||
#
|
||||
from pyasn1.type import constraint, namedval
|
||||
from pyasn1_modules.rfc2437 import *
|
||||
|
||||
|
||||
class OtherPrimeInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('prime', univ.Integer()),
|
||||
namedtype.NamedType('exponent', univ.Integer()),
|
||||
namedtype.NamedType('coefficient', univ.Integer())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class OtherPrimeInfos(univ.SequenceOf):
|
||||
componentType = OtherPrimeInfo()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + \
|
||||
constraint.ValueSizeConstraint(1, MAX)
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class RSAPrivateKey(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
|
701
third_party/python/pyasn1-modules/pyasn1_modules/rfc3852.py
vendored
Normal file
701
third_party/python/pyasn1-modules/pyasn1_modules/rfc3852.py
vendored
Normal file
@ -0,0 +1,701 @@
|
||||
# coding: utf-8
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Cryptographic Message Syntax (CMS)
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc3852.txt
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, namedval, tag, constraint, useful
|
||||
|
||||
from pyasn1_modules import rfc3280
|
||||
from pyasn1_modules import rfc3281
|
||||
|
||||
MAX = float('inf')
|
||||
|
||||
|
||||
def _buildOid(*components):
|
||||
output = []
|
||||
for x in tuple(components):
|
||||
if isinstance(x, univ.ObjectIdentifier):
|
||||
output.extend(list(x))
|
||||
else:
|
||||
output.append(int(x))
|
||||
|
||||
return univ.ObjectIdentifier(output)
|
||||
|
||||
|
||||
class AttributeValue(univ.Any):
|
||||
pass
|
||||
|
||||
|
||||
class Attribute(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
Attribute.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('attrType', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('attrValues', univ.SetOf(componentType=AttributeValue()))
|
||||
)
|
||||
|
||||
|
||||
class SignedAttributes(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
SignedAttributes.componentType = Attribute()
|
||||
SignedAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class OtherRevocationInfoFormat(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OtherRevocationInfoFormat.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('otherRevInfoFormat', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('otherRevInfo', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
class RevocationInfoChoice(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
RevocationInfoChoice.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('crl', rfc3280.CertificateList()),
|
||||
namedtype.NamedType('other', OtherRevocationInfoFormat().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class RevocationInfoChoices(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
RevocationInfoChoices.componentType = RevocationInfoChoice()
|
||||
|
||||
|
||||
class OtherKeyAttribute(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OtherKeyAttribute.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('keyAttrId', univ.ObjectIdentifier()),
|
||||
namedtype.OptionalNamedType('keyAttr', univ.Any())
|
||||
)
|
||||
|
||||
id_signedData = _buildOid(1, 2, 840, 113549, 1, 7, 2)
|
||||
|
||||
|
||||
class KeyEncryptionAlgorithmIdentifier(rfc3280.AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class EncryptedKey(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class CMSVersion(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
CMSVersion.namedValues = namedval.NamedValues(
|
||||
('v0', 0),
|
||||
('v1', 1),
|
||||
('v2', 2),
|
||||
('v3', 3),
|
||||
('v4', 4),
|
||||
('v5', 5)
|
||||
)
|
||||
|
||||
|
||||
class KEKIdentifier(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
KEKIdentifier.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('keyIdentifier', univ.OctetString()),
|
||||
namedtype.OptionalNamedType('date', useful.GeneralizedTime()),
|
||||
namedtype.OptionalNamedType('other', OtherKeyAttribute())
|
||||
)
|
||||
|
||||
|
||||
class KEKRecipientInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
KEKRecipientInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('kekid', KEKIdentifier()),
|
||||
namedtype.NamedType('keyEncryptionAlgorithm', KeyEncryptionAlgorithmIdentifier()),
|
||||
namedtype.NamedType('encryptedKey', EncryptedKey())
|
||||
)
|
||||
|
||||
|
||||
class KeyDerivationAlgorithmIdentifier(rfc3280.AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class PasswordRecipientInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
PasswordRecipientInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.OptionalNamedType('keyDerivationAlgorithm', KeyDerivationAlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('keyEncryptionAlgorithm', KeyEncryptionAlgorithmIdentifier()),
|
||||
namedtype.NamedType('encryptedKey', EncryptedKey())
|
||||
)
|
||||
|
||||
|
||||
class OtherRecipientInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OtherRecipientInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('oriType', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('oriValue', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
class IssuerAndSerialNumber(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
IssuerAndSerialNumber.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuer', rfc3280.Name()),
|
||||
namedtype.NamedType('serialNumber', rfc3280.CertificateSerialNumber())
|
||||
)
|
||||
|
||||
|
||||
class SubjectKeyIdentifier(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class RecipientKeyIdentifier(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
RecipientKeyIdentifier.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('subjectKeyIdentifier', SubjectKeyIdentifier()),
|
||||
namedtype.OptionalNamedType('date', useful.GeneralizedTime()),
|
||||
namedtype.OptionalNamedType('other', OtherKeyAttribute())
|
||||
)
|
||||
|
||||
|
||||
class KeyAgreeRecipientIdentifier(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
KeyAgreeRecipientIdentifier.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuerAndSerialNumber', IssuerAndSerialNumber()),
|
||||
namedtype.NamedType('rKeyId', RecipientKeyIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
|
||||
class RecipientEncryptedKey(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
RecipientEncryptedKey.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('rid', KeyAgreeRecipientIdentifier()),
|
||||
namedtype.NamedType('encryptedKey', EncryptedKey())
|
||||
)
|
||||
|
||||
|
||||
class RecipientEncryptedKeys(univ.SequenceOf):
|
||||
pass
|
||||
|
||||
|
||||
RecipientEncryptedKeys.componentType = RecipientEncryptedKey()
|
||||
|
||||
|
||||
class UserKeyingMaterial(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class OriginatorPublicKey(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OriginatorPublicKey.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('algorithm', rfc3280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('publicKey', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class OriginatorIdentifierOrKey(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
OriginatorIdentifierOrKey.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuerAndSerialNumber', IssuerAndSerialNumber()),
|
||||
namedtype.NamedType('subjectKeyIdentifier', SubjectKeyIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('originatorKey', OriginatorPublicKey().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class KeyAgreeRecipientInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
KeyAgreeRecipientInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('originator', OriginatorIdentifierOrKey().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('ukm', UserKeyingMaterial().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('keyEncryptionAlgorithm', KeyEncryptionAlgorithmIdentifier()),
|
||||
namedtype.NamedType('recipientEncryptedKeys', RecipientEncryptedKeys())
|
||||
)
|
||||
|
||||
|
||||
class RecipientIdentifier(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
RecipientIdentifier.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuerAndSerialNumber', IssuerAndSerialNumber()),
|
||||
namedtype.NamedType('subjectKeyIdentifier', SubjectKeyIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class KeyTransRecipientInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
KeyTransRecipientInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('rid', RecipientIdentifier()),
|
||||
namedtype.NamedType('keyEncryptionAlgorithm', KeyEncryptionAlgorithmIdentifier()),
|
||||
namedtype.NamedType('encryptedKey', EncryptedKey())
|
||||
)
|
||||
|
||||
|
||||
class RecipientInfo(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
RecipientInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('ktri', KeyTransRecipientInfo()),
|
||||
namedtype.NamedType('kari', KeyAgreeRecipientInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('kekri', KEKRecipientInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.NamedType('pwri', PasswordRecipientInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.NamedType('ori', OtherRecipientInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4)))
|
||||
)
|
||||
|
||||
|
||||
class RecipientInfos(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
RecipientInfos.componentType = RecipientInfo()
|
||||
RecipientInfos.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class DigestAlgorithmIdentifier(rfc3280.AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class Signature(univ.BitString):
|
||||
pass
|
||||
|
||||
|
||||
class SignerIdentifier(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
SignerIdentifier.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuerAndSerialNumber', IssuerAndSerialNumber()),
|
||||
namedtype.NamedType('subjectKeyIdentifier', SubjectKeyIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class UnprotectedAttributes(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
UnprotectedAttributes.componentType = Attribute()
|
||||
UnprotectedAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class ContentType(univ.ObjectIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class EncryptedContent(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class ContentEncryptionAlgorithmIdentifier(rfc3280.AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class EncryptedContentInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
EncryptedContentInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('contentType', ContentType()),
|
||||
namedtype.NamedType('contentEncryptionAlgorithm', ContentEncryptionAlgorithmIdentifier()),
|
||||
namedtype.OptionalNamedType('encryptedContent', EncryptedContent().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class EncryptedData(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
EncryptedData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('encryptedContentInfo', EncryptedContentInfo()),
|
||||
namedtype.OptionalNamedType('unprotectedAttrs', UnprotectedAttributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
id_contentType = _buildOid(1, 2, 840, 113549, 1, 9, 3)
|
||||
|
||||
id_data = _buildOid(1, 2, 840, 113549, 1, 7, 1)
|
||||
|
||||
id_messageDigest = _buildOid(1, 2, 840, 113549, 1, 9, 4)
|
||||
|
||||
|
||||
class DigestAlgorithmIdentifiers(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
DigestAlgorithmIdentifiers.componentType = DigestAlgorithmIdentifier()
|
||||
|
||||
|
||||
class EncapsulatedContentInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
EncapsulatedContentInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('eContentType', ContentType()),
|
||||
namedtype.OptionalNamedType('eContent', univ.OctetString().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class Digest(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class DigestedData(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
DigestedData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('digestAlgorithm', DigestAlgorithmIdentifier()),
|
||||
namedtype.NamedType('encapContentInfo', EncapsulatedContentInfo()),
|
||||
namedtype.NamedType('digest', Digest())
|
||||
)
|
||||
|
||||
|
||||
class ContentInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
ContentInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('contentType', ContentType()),
|
||||
namedtype.NamedType('content', univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class UnauthAttributes(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
UnauthAttributes.componentType = Attribute()
|
||||
UnauthAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class ExtendedCertificateInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
ExtendedCertificateInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('certificate', rfc3280.Certificate()),
|
||||
namedtype.NamedType('attributes', UnauthAttributes())
|
||||
)
|
||||
|
||||
|
||||
class SignatureAlgorithmIdentifier(rfc3280.AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class ExtendedCertificate(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
ExtendedCertificate.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('extendedCertificateInfo', ExtendedCertificateInfo()),
|
||||
namedtype.NamedType('signatureAlgorithm', SignatureAlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', Signature())
|
||||
)
|
||||
|
||||
|
||||
class OtherCertificateFormat(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OtherCertificateFormat.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('otherCertFormat', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('otherCert', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
class AttributeCertificateV2(rfc3281.AttributeCertificate):
|
||||
pass
|
||||
|
||||
|
||||
class AttCertVersionV1(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
AttCertVersionV1.namedValues = namedval.NamedValues(
|
||||
('v1', 0)
|
||||
)
|
||||
|
||||
|
||||
class AttributeCertificateInfoV1(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AttributeCertificateInfoV1.componentType = namedtype.NamedTypes(
|
||||
namedtype.DefaultedNamedType('version', AttCertVersionV1().subtype(value="v1")),
|
||||
namedtype.NamedType(
|
||||
'subject', univ.Choice(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('baseCertificateID', rfc3281.IssuerSerial().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('subjectName', rfc3280.GeneralNames().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('issuer', rfc3280.GeneralNames()),
|
||||
namedtype.NamedType('signature', rfc3280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('serialNumber', rfc3280.CertificateSerialNumber()),
|
||||
namedtype.NamedType('attCertValidityPeriod', rfc3281.AttCertValidityPeriod()),
|
||||
namedtype.NamedType('attributes', univ.SequenceOf(componentType=rfc3280.Attribute())),
|
||||
namedtype.OptionalNamedType('issuerUniqueID', rfc3280.UniqueIdentifier()),
|
||||
namedtype.OptionalNamedType('extensions', rfc3280.Extensions())
|
||||
)
|
||||
|
||||
|
||||
class AttributeCertificateV1(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AttributeCertificateV1.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('acInfo', AttributeCertificateInfoV1()),
|
||||
namedtype.NamedType('signatureAlgorithm', rfc3280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class CertificateChoices(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
CertificateChoices.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certificate', rfc3280.Certificate()),
|
||||
namedtype.NamedType('extendedCertificate', ExtendedCertificate().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('v1AttrCert', AttributeCertificateV1().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('v2AttrCert', AttributeCertificateV2().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.NamedType('other', OtherCertificateFormat().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))
|
||||
)
|
||||
|
||||
|
||||
class CertificateSet(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
CertificateSet.componentType = CertificateChoices()
|
||||
|
||||
|
||||
class MessageAuthenticationCode(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class UnsignedAttributes(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
UnsignedAttributes.componentType = Attribute()
|
||||
UnsignedAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class SignatureValue(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class SignerInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
SignerInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('sid', SignerIdentifier()),
|
||||
namedtype.NamedType('digestAlgorithm', DigestAlgorithmIdentifier()),
|
||||
namedtype.OptionalNamedType('signedAttrs', SignedAttributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('signatureAlgorithm', SignatureAlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', SignatureValue()),
|
||||
namedtype.OptionalNamedType('unsignedAttrs', UnsignedAttributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
|
||||
class SignerInfos(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
SignerInfos.componentType = SignerInfo()
|
||||
|
||||
|
||||
class SignedData(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
SignedData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('digestAlgorithms', DigestAlgorithmIdentifiers()),
|
||||
namedtype.NamedType('encapContentInfo', EncapsulatedContentInfo()),
|
||||
namedtype.OptionalNamedType('certificates', CertificateSet().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('crls', RevocationInfoChoices().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('signerInfos', SignerInfos())
|
||||
)
|
||||
|
||||
|
||||
class MessageAuthenticationCodeAlgorithm(rfc3280.AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class MessageDigest(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class Time(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
Time.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('utcTime', useful.UTCTime()),
|
||||
namedtype.NamedType('generalTime', useful.GeneralizedTime())
|
||||
)
|
||||
|
||||
|
||||
class OriginatorInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OriginatorInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('certs', CertificateSet().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('crls', RevocationInfoChoices().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
|
||||
class AuthAttributes(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
AuthAttributes.componentType = Attribute()
|
||||
AuthAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class AuthenticatedData(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AuthenticatedData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.OptionalNamedType('originatorInfo', OriginatorInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('recipientInfos', RecipientInfos()),
|
||||
namedtype.NamedType('macAlgorithm', MessageAuthenticationCodeAlgorithm()),
|
||||
namedtype.OptionalNamedType('digestAlgorithm', DigestAlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('encapContentInfo', EncapsulatedContentInfo()),
|
||||
namedtype.OptionalNamedType('authAttrs', AuthAttributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.NamedType('mac', MessageAuthenticationCode()),
|
||||
namedtype.OptionalNamedType('unauthAttrs', UnauthAttributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
|
||||
)
|
||||
|
||||
id_ct_contentInfo = _buildOid(1, 2, 840, 113549, 1, 9, 16, 1, 6)
|
||||
|
||||
id_envelopedData = _buildOid(1, 2, 840, 113549, 1, 7, 3)
|
||||
|
||||
|
||||
class EnvelopedData(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
EnvelopedData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.OptionalNamedType('originatorInfo', OriginatorInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('recipientInfos', RecipientInfos()),
|
||||
namedtype.NamedType('encryptedContentInfo', EncryptedContentInfo()),
|
||||
namedtype.OptionalNamedType('unprotectedAttrs', UnprotectedAttributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
|
||||
class Countersignature(SignerInfo):
|
||||
pass
|
||||
|
||||
|
||||
id_digestedData = _buildOid(1, 2, 840, 113549, 1, 7, 5)
|
||||
|
||||
id_signingTime = _buildOid(1, 2, 840, 113549, 1, 9, 5)
|
||||
|
||||
|
||||
class ExtendedCertificateOrCertificate(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
ExtendedCertificateOrCertificate.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certificate', rfc3280.Certificate()),
|
||||
namedtype.NamedType('extendedCertificate', ExtendedCertificate().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
id_encryptedData = _buildOid(1, 2, 840, 113549, 1, 7, 6)
|
||||
|
||||
id_ct_authData = _buildOid(1, 2, 840, 113549, 1, 9, 16, 1, 2)
|
||||
|
||||
|
||||
class SigningTime(Time):
|
||||
pass
|
||||
|
||||
|
||||
id_countersignature = _buildOid(1, 2, 840, 113549, 1, 9, 6)
|
@ -1,20 +1,34 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Certificate Management Protocol structures as per RFC4210
|
||||
#
|
||||
# Based on Alex Railean's work
|
||||
#
|
||||
from pyasn1.type import tag,namedtype,namedval,univ,constraint,char,useful
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, constraint, char, useful
|
||||
from pyasn1_modules import rfc2459, rfc2511, rfc2314
|
||||
|
||||
MAX = 64
|
||||
MAX = float('inf')
|
||||
|
||||
class KeyIdentifier(univ.OctetString): pass
|
||||
|
||||
class CMPCertificate(rfc2459.Certificate): pass
|
||||
class KeyIdentifier(univ.OctetString):
|
||||
pass
|
||||
|
||||
class OOBCert(CMPCertificate): pass
|
||||
|
||||
class CertAnnContent(CMPCertificate): pass
|
||||
class CMPCertificate(rfc2459.Certificate):
|
||||
pass
|
||||
|
||||
|
||||
class OOBCert(CMPCertificate):
|
||||
pass
|
||||
|
||||
|
||||
class CertAnnContent(CMPCertificate):
|
||||
pass
|
||||
|
||||
|
||||
class PKIFreeText(univ.SequenceOf):
|
||||
"""
|
||||
@ -23,6 +37,7 @@ class PKIFreeText(univ.SequenceOf):
|
||||
componentType = char.UTF8String()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class PollRepContent(univ.SequenceOf):
|
||||
"""
|
||||
PollRepContent ::= SEQUENCE OF SEQUENCE {
|
||||
@ -31,14 +46,17 @@ class PollRepContent(univ.SequenceOf):
|
||||
reason PKIFreeText OPTIONAL
|
||||
}
|
||||
"""
|
||||
|
||||
class CertReq(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certReqId', univ.Integer()),
|
||||
namedtype.NamedType('checkAfter', univ.Integer()),
|
||||
namedtype.OptionalNamedType('reason', PKIFreeText())
|
||||
)
|
||||
|
||||
componentType = CertReq()
|
||||
|
||||
|
||||
class PollReqContent(univ.SequenceOf):
|
||||
"""
|
||||
PollReqContent ::= SEQUENCE OF SEQUENCE {
|
||||
@ -46,12 +64,15 @@ class PollReqContent(univ.SequenceOf):
|
||||
}
|
||||
|
||||
"""
|
||||
|
||||
class CertReq(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certReqId', univ.Integer())
|
||||
)
|
||||
|
||||
componentType = CertReq()
|
||||
|
||||
|
||||
class InfoTypeAndValue(univ.Sequence):
|
||||
"""
|
||||
InfoTypeAndValue ::= SEQUENCE {
|
||||
@ -63,17 +84,23 @@ class InfoTypeAndValue(univ.Sequence):
|
||||
namedtype.OptionalNamedType('infoValue', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
class GenRepContent(univ.SequenceOf):
|
||||
componentType = InfoTypeAndValue()
|
||||
|
||||
|
||||
class GenMsgContent(univ.SequenceOf):
|
||||
componentType = InfoTypeAndValue()
|
||||
|
||||
class PKIConfirmContent(univ.Null): pass
|
||||
|
||||
class PKIConfirmContent(univ.Null):
|
||||
pass
|
||||
|
||||
|
||||
class CRLAnnContent(univ.SequenceOf):
|
||||
componentType = rfc2459.CertificateList()
|
||||
|
||||
|
||||
class CAKeyUpdAnnContent(univ.Sequence):
|
||||
"""
|
||||
CAKeyUpdAnnContent ::= SEQUENCE {
|
||||
@ -88,6 +115,7 @@ class CAKeyUpdAnnContent(univ.Sequence):
|
||||
namedtype.NamedType('newWithNew', CMPCertificate())
|
||||
)
|
||||
|
||||
|
||||
class RevDetails(univ.Sequence):
|
||||
"""
|
||||
RevDetails ::= SEQUENCE {
|
||||
@ -99,10 +127,12 @@ class RevDetails(univ.Sequence):
|
||||
namedtype.NamedType('certDetails', rfc2511.CertTemplate()),
|
||||
namedtype.OptionalNamedType('crlEntryDetails', rfc2459.Extensions())
|
||||
)
|
||||
|
||||
|
||||
|
||||
class RevReqContent(univ.SequenceOf):
|
||||
componentType = RevDetails()
|
||||
|
||||
|
||||
class CertOrEncCert(univ.Choice):
|
||||
"""
|
||||
CertOrEncCert ::= CHOICE {
|
||||
@ -111,16 +141,11 @@ class CertOrEncCert(univ.Choice):
|
||||
}
|
||||
"""
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certificate', CMPCertificate().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('encryptedCert', rfc2511.EncryptedValue().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)
|
||||
)
|
||||
)
|
||||
namedtype.NamedType('certificate', CMPCertificate().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('encryptedCert', rfc2511.EncryptedValue().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class CertifiedKeyPair(univ.Sequence):
|
||||
"""
|
||||
CertifiedKeyPair ::= SEQUENCE {
|
||||
@ -131,20 +156,15 @@ class CertifiedKeyPair(univ.Sequence):
|
||||
"""
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certOrEncCert', CertOrEncCert()),
|
||||
namedtype.OptionalNamedType('privateKey', rfc2511.EncryptedValue().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)
|
||||
)
|
||||
),
|
||||
namedtype.OptionalNamedType('publicationInfo', rfc2511.PKIPublicationInfo().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)
|
||||
)
|
||||
)
|
||||
namedtype.OptionalNamedType('privateKey', rfc2511.EncryptedValue().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('publicationInfo', rfc2511.PKIPublicationInfo().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
|
||||
class POPODecKeyRespContent(univ.SequenceOf):
|
||||
componentType = univ.Integer()
|
||||
|
||||
|
||||
class Challenge(univ.Sequence):
|
||||
"""
|
||||
Challenge ::= SEQUENCE {
|
||||
@ -159,6 +179,7 @@ class Challenge(univ.Sequence):
|
||||
namedtype.NamedType('challenge', univ.OctetString())
|
||||
)
|
||||
|
||||
|
||||
class PKIStatus(univ.Integer):
|
||||
"""
|
||||
PKIStatus ::= INTEGER {
|
||||
@ -180,7 +201,8 @@ class PKIStatus(univ.Integer):
|
||||
('revocationNotification', 5),
|
||||
('keyUpdateWarning', 6)
|
||||
)
|
||||
|
||||
|
||||
|
||||
class PKIFailureInfo(univ.BitString):
|
||||
"""
|
||||
PKIFailureInfo ::= BIT STRING {
|
||||
@ -242,6 +264,7 @@ class PKIFailureInfo(univ.BitString):
|
||||
('duplicateCertReq', 26)
|
||||
)
|
||||
|
||||
|
||||
class PKIStatusInfo(univ.Sequence):
|
||||
"""
|
||||
PKIStatusInfo ::= SEQUENCE {
|
||||
@ -254,7 +277,8 @@ class PKIStatusInfo(univ.Sequence):
|
||||
namedtype.NamedType('status', PKIStatus()),
|
||||
namedtype.OptionalNamedType('statusString', PKIFreeText()),
|
||||
namedtype.OptionalNamedType('failInfo', PKIFailureInfo())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class ErrorMsgContent(univ.Sequence):
|
||||
"""
|
||||
@ -272,6 +296,7 @@ class ErrorMsgContent(univ.Sequence):
|
||||
namedtype.OptionalNamedType('errorDetails', PKIFreeText())
|
||||
)
|
||||
|
||||
|
||||
class CertStatus(univ.Sequence):
|
||||
"""
|
||||
CertStatus ::= SEQUENCE {
|
||||
@ -286,9 +311,11 @@ class CertStatus(univ.Sequence):
|
||||
namedtype.OptionalNamedType('statusInfo', PKIStatusInfo())
|
||||
)
|
||||
|
||||
|
||||
class CertConfirmContent(univ.SequenceOf):
|
||||
componentType = CertStatus()
|
||||
|
||||
|
||||
class RevAnnContent(univ.Sequence):
|
||||
"""
|
||||
RevAnnContent ::= SEQUENCE {
|
||||
@ -307,6 +334,7 @@ class RevAnnContent(univ.Sequence):
|
||||
namedtype.OptionalNamedType('crlDetails', rfc2459.Extensions())
|
||||
)
|
||||
|
||||
|
||||
class RevRepContent(univ.Sequence):
|
||||
"""
|
||||
RevRepContent ::= SEQUENCE {
|
||||
@ -318,22 +346,21 @@ class RevRepContent(univ.Sequence):
|
||||
"""
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('status', PKIStatusInfo()),
|
||||
namedtype.OptionalNamedType('revCerts', univ.SequenceOf(
|
||||
componentType=rfc2511.CertId()
|
||||
).subtype(
|
||||
namedtype.OptionalNamedType(
|
||||
'revCerts', univ.SequenceOf(componentType=rfc2511.CertId()).subtype(
|
||||
subtypeSpec=constraint.ValueSizeConstraint(1, MAX),
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)
|
||||
)
|
||||
),
|
||||
namedtype.OptionalNamedType('crls', univ.SequenceOf(
|
||||
componentType=rfc2459.CertificateList()
|
||||
).subtype(
|
||||
namedtype.OptionalNamedType(
|
||||
'crls', univ.SequenceOf(componentType=rfc2459.CertificateList()).subtype(
|
||||
subtypeSpec=constraint.ValueSizeConstraint(1, MAX),
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class KeyRecRepContent(univ.Sequence):
|
||||
"""
|
||||
KeyRecRepContent ::= SEQUENCE {
|
||||
@ -347,26 +374,24 @@ class KeyRecRepContent(univ.Sequence):
|
||||
"""
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('status', PKIStatusInfo()),
|
||||
namedtype.OptionalNamedType('newSigCert', CMPCertificate().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)
|
||||
namedtype.OptionalNamedType(
|
||||
'newSigCert', CMPCertificate().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)
|
||||
)
|
||||
),
|
||||
namedtype.OptionalNamedType('caCerts', univ.SequenceOf(
|
||||
componentType=CMPCertificate()
|
||||
).subtype(
|
||||
namedtype.OptionalNamedType(
|
||||
'caCerts', univ.SequenceOf(componentType=CMPCertificate()).subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1),
|
||||
subtypeSpec=constraint.ValueSizeConstraint(1, MAX)
|
||||
)
|
||||
),
|
||||
namedtype.OptionalNamedType('keyPairHist', univ.SequenceOf(
|
||||
componentType=CertifiedKeyPair()
|
||||
).subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2),
|
||||
subtypeSpec=constraint.ValueSizeConstraint(1, MAX)
|
||||
)
|
||||
namedtype.OptionalNamedType('keyPairHist', univ.SequenceOf(componentType=CertifiedKeyPair()).subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2),
|
||||
subtypeSpec=constraint.ValueSizeConstraint(1, MAX))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
class CertResponse(univ.Sequence):
|
||||
"""
|
||||
CertResponse ::= SEQUENCE {
|
||||
@ -383,6 +408,7 @@ class CertResponse(univ.Sequence):
|
||||
namedtype.OptionalNamedType('rspInfo', univ.OctetString())
|
||||
)
|
||||
|
||||
|
||||
class CertRepMessage(univ.Sequence):
|
||||
"""
|
||||
CertRepMessage ::= SEQUENCE {
|
||||
@ -392,21 +418,19 @@ class CertRepMessage(univ.Sequence):
|
||||
}
|
||||
"""
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('caPubs', univ.SequenceOf(
|
||||
namedtype.OptionalNamedType(
|
||||
'caPubs', univ.SequenceOf(
|
||||
componentType=CMPCertificate()
|
||||
).subtype(
|
||||
subtypeSpec=constraint.ValueSizeConstraint(1, MAX),
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,1)
|
||||
)
|
||||
).subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX), explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))
|
||||
),
|
||||
namedtype.NamedType('response', univ.SequenceOf(
|
||||
componentType=CertResponse())
|
||||
)
|
||||
namedtype.NamedType('response', univ.SequenceOf(componentType=CertResponse()))
|
||||
)
|
||||
|
||||
|
||||
class POPODecKeyChallContent(univ.SequenceOf):
|
||||
componentType = Challenge()
|
||||
|
||||
|
||||
class OOBCertHash(univ.Sequence):
|
||||
"""
|
||||
OOBCertHash ::= SEQUENCE {
|
||||
@ -416,18 +440,16 @@ class OOBCertHash(univ.Sequence):
|
||||
}
|
||||
"""
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('hashAlg',
|
||||
rfc2459.AlgorithmIdentifier().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,0)
|
||||
)
|
||||
namedtype.OptionalNamedType(
|
||||
'hashAlg', rfc2459.AlgorithmIdentifier().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))
|
||||
),
|
||||
namedtype.OptionalNamedType('certId', rfc2511.CertId().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,1)
|
||||
)
|
||||
namedtype.OptionalNamedType(
|
||||
'certId', rfc2511.CertId().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))
|
||||
),
|
||||
namedtype.NamedType('hashVal', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
# pyasn1 does not naturally handle recursive definitions, thus this hack:
|
||||
# NestedMessageContent ::= PKIMessages
|
||||
class NestedMessageContent(univ.SequenceOf):
|
||||
@ -436,6 +458,7 @@ class NestedMessageContent(univ.SequenceOf):
|
||||
"""
|
||||
componentType = univ.Any()
|
||||
|
||||
|
||||
class DHBMParameter(univ.Sequence):
|
||||
"""
|
||||
DHBMParameter ::= SEQUENCE {
|
||||
@ -450,8 +473,10 @@ class DHBMParameter(univ.Sequence):
|
||||
namedtype.NamedType('mac', rfc2459.AlgorithmIdentifier())
|
||||
)
|
||||
|
||||
|
||||
id_DHBasedMac = univ.ObjectIdentifier('1.2.840.113533.7.66.30')
|
||||
|
||||
|
||||
class PBMParameter(univ.Sequence):
|
||||
"""
|
||||
PBMParameter ::= SEQUENCE {
|
||||
@ -462,23 +487,28 @@ class PBMParameter(univ.Sequence):
|
||||
}
|
||||
"""
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('salt', univ.OctetString().subtype(
|
||||
subtypeSpec=constraint.ValueSizeConstraint(0, 128)
|
||||
)
|
||||
namedtype.NamedType(
|
||||
'salt', univ.OctetString().subtype(subtypeSpec=constraint.ValueSizeConstraint(0, 128))
|
||||
),
|
||||
namedtype.NamedType('owf', rfc2459.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('iterationCount', univ.Integer()),
|
||||
namedtype.NamedType('mac', rfc2459.AlgorithmIdentifier())
|
||||
)
|
||||
|
||||
|
||||
id_PasswordBasedMac = univ.ObjectIdentifier('1.2.840.113533.7.66.13')
|
||||
|
||||
class PKIProtection(univ.BitString): pass
|
||||
|
||||
class PKIProtection(univ.BitString):
|
||||
pass
|
||||
|
||||
|
||||
# pyasn1 does not naturally handle recursive definitions, thus this hack:
|
||||
# NestedMessageContent ::= PKIMessages
|
||||
nestedMessageContent = NestedMessageContent().subtype(explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,20))
|
||||
|
||||
nestedMessageContent = NestedMessageContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 20))
|
||||
|
||||
|
||||
class PKIBody(univ.Choice):
|
||||
"""
|
||||
PKIBody ::= CHOICE { -- message-specific body elements
|
||||
@ -504,96 +534,149 @@ class PKIBody(univ.Choice):
|
||||
pkiconf [19] PKIConfirmContent, --Confirmation
|
||||
nested [20] NestedMessageContent, --Nested Message
|
||||
genm [21] GenMsgContent, --General Message
|
||||
genp [22] GenRepContent, --General Response
|
||||
error [23] ErrorMsgContent, --Error Message
|
||||
certConf [24] CertConfirmContent, --Certificate confirm
|
||||
pollReq [25] PollReqContent, --Polling request
|
||||
pollRep [26] PollRepContent --Polling response
|
||||
|
||||
"""
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('ir', rfc2511.CertReqMessages().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,0)
|
||||
namedtype.NamedType(
|
||||
'ir', rfc2511.CertReqMessages().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('ip', CertRepMessage().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,1)
|
||||
namedtype.NamedType(
|
||||
'ip', CertRepMessage().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('cr', rfc2511.CertReqMessages().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,2)
|
||||
namedtype.NamedType(
|
||||
'cr', rfc2511.CertReqMessages().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('cp', CertRepMessage().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,3)
|
||||
namedtype.NamedType(
|
||||
'cp', CertRepMessage().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('p10cr', rfc2314.CertificationRequest().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,4)
|
||||
namedtype.NamedType(
|
||||
'p10cr', rfc2314.CertificationRequest().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('popdecc', POPODecKeyChallContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,5)
|
||||
namedtype.NamedType(
|
||||
'popdecc', POPODecKeyChallContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('popdecr', POPODecKeyRespContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,6)
|
||||
namedtype.NamedType(
|
||||
'popdecr', POPODecKeyRespContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('kur', rfc2511.CertReqMessages().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,7)
|
||||
namedtype.NamedType(
|
||||
'kur', rfc2511.CertReqMessages().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 7)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('kup', CertRepMessage().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,8)
|
||||
namedtype.NamedType(
|
||||
'kup', CertRepMessage().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('krr', rfc2511.CertReqMessages().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,9)
|
||||
namedtype.NamedType(
|
||||
'krr', rfc2511.CertReqMessages().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('krp', KeyRecRepContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,10)
|
||||
namedtype.NamedType(
|
||||
'krp', KeyRecRepContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 10)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('rr', RevReqContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,11)
|
||||
namedtype.NamedType(
|
||||
'rr', RevReqContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 11)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('rp', RevRepContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,12)
|
||||
namedtype.NamedType(
|
||||
'rp', RevRepContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 12)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('ccr', rfc2511.CertReqMessages().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,13)
|
||||
namedtype.NamedType(
|
||||
'ccr', rfc2511.CertReqMessages().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 13)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('ccp', CertRepMessage().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,14)
|
||||
namedtype.NamedType(
|
||||
'ccp', CertRepMessage().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 14)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('ckuann', CAKeyUpdAnnContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,15)
|
||||
namedtype.NamedType(
|
||||
'ckuann', CAKeyUpdAnnContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 15)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('cann', CertAnnContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,16)
|
||||
namedtype.NamedType(
|
||||
'cann', CertAnnContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 16)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('rann', RevAnnContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,17)
|
||||
namedtype.NamedType(
|
||||
'rann', RevAnnContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 17)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('crlann', CRLAnnContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,18)
|
||||
namedtype.NamedType(
|
||||
'crlann', CRLAnnContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 18)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('pkiconf', PKIConfirmContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,19)
|
||||
namedtype.NamedType(
|
||||
'pkiconf', PKIConfirmContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 19)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('nested', nestedMessageContent),
|
||||
# namedtype.NamedType('nested', NestedMessageContent().subtype(
|
||||
# explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,20)
|
||||
# )
|
||||
# ),
|
||||
namedtype.NamedType('genm', GenMsgContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,21)
|
||||
namedtype.NamedType(
|
||||
'nested', nestedMessageContent
|
||||
),
|
||||
# namedtype.NamedType('nested', NestedMessageContent().subtype(
|
||||
# explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,20)
|
||||
# )
|
||||
# ),
|
||||
namedtype.NamedType(
|
||||
'genm', GenMsgContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 21)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType(
|
||||
'gen', GenRepContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 22)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType(
|
||||
'error', ErrorMsgContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 23)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType(
|
||||
'certConf', CertConfirmContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 24)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType(
|
||||
'pollReq', PollReqContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 25)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType(
|
||||
'pollRep', PollRepContent().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 26)
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -619,33 +702,39 @@ class PKIHeader(univ.Sequence):
|
||||
|
||||
"""
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('pvno', univ.Integer(
|
||||
namedValues=namedval.NamedValues(
|
||||
('cmp1999', 1),
|
||||
('cmp2000', 2)
|
||||
)
|
||||
namedtype.NamedType(
|
||||
'pvno', univ.Integer(
|
||||
namedValues=namedval.NamedValues(('cmp1999', 1), ('cmp2000', 2))
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('sender', rfc2459.GeneralName()),
|
||||
namedtype.NamedType('recipient', rfc2459.GeneralName()),
|
||||
namedtype.OptionalNamedType('messageTime', useful.GeneralizedTime().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('messageTime', useful.GeneralizedTime().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('protectionAlg', rfc2459.AlgorithmIdentifier().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.OptionalNamedType('senderKID', rfc2459.KeyIdentifier().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.OptionalNamedType('recipKID', rfc2459.KeyIdentifier().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
|
||||
namedtype.OptionalNamedType('transactionID', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),
|
||||
namedtype.OptionalNamedType('senderNonce', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5))),
|
||||
namedtype.OptionalNamedType('recipNonce', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6))),
|
||||
namedtype.OptionalNamedType('freeText', PKIFreeText().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 7))),
|
||||
namedtype.OptionalNamedType('senderKID', rfc2459.KeyIdentifier().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.OptionalNamedType('recipKID', rfc2459.KeyIdentifier().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
|
||||
namedtype.OptionalNamedType('transactionID', univ.OctetString().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),
|
||||
namedtype.OptionalNamedType('senderNonce', univ.OctetString().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5))),
|
||||
namedtype.OptionalNamedType('recipNonce', univ.OctetString().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6))),
|
||||
namedtype.OptionalNamedType('freeText', PKIFreeText().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 7))),
|
||||
namedtype.OptionalNamedType('generalInfo',
|
||||
univ.SequenceOf(
|
||||
componentType=InfoTypeAndValue().subtype(
|
||||
subtypeSpec=constraint.ValueSizeConstraint(1, MAX),
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
univ.SequenceOf(
|
||||
componentType=InfoTypeAndValue().subtype(
|
||||
subtypeSpec=constraint.ValueSizeConstraint(1, MAX),
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class ProtectedPart(univ.Sequence):
|
||||
"""
|
||||
@ -657,7 +746,8 @@ class ProtectedPart(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('header', PKIHeader()),
|
||||
namedtype.NamedType('infoValue', PKIBody())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class PKIMessage(univ.Sequence):
|
||||
"""
|
||||
@ -671,17 +761,19 @@ class PKIMessage(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('header', PKIHeader()),
|
||||
namedtype.NamedType('body', PKIBody()),
|
||||
namedtype.OptionalNamedType('protection', PKIProtection().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType( 'extraCerts',
|
||||
univ.SequenceOf(
|
||||
componentType=CMPCertificate()
|
||||
).subtype(
|
||||
subtypeSpec=constraint.ValueSizeConstraint(1, MAX),
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)
|
||||
)
|
||||
)
|
||||
namedtype.OptionalNamedType('protection', PKIProtection().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('extraCerts',
|
||||
univ.SequenceOf(
|
||||
componentType=CMPCertificate()
|
||||
).subtype(
|
||||
subtypeSpec=constraint.ValueSizeConstraint(1, MAX),
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class PKIMessages(univ.SequenceOf):
|
||||
"""
|
||||
PKIMessages ::= SEQUENCE SIZE (1..MAX) OF PKIMessage
|
||||
@ -689,7 +781,8 @@ class PKIMessages(univ.SequenceOf):
|
||||
componentType = PKIMessage()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
# pyasn1 does not naturally handle recursive definitions, thus this hack:
|
||||
# NestedMessageContent ::= PKIMessages
|
||||
NestedMessageContent.componentType = PKIMessages()
|
||||
nestedMessageContent.componentType = PKIMessages()
|
||||
NestedMessageContent._componentType = PKIMessages()
|
||||
nestedMessageContent._componentType = PKIMessages()
|
||||
|
391
third_party/python/pyasn1-modules/pyasn1_modules/rfc4211.py
vendored
Normal file
391
third_party/python/pyasn1-modules/pyasn1_modules/rfc4211.py
vendored
Normal file
@ -0,0 +1,391 @@
|
||||
# coding: utf-8
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Internet X.509 Public Key Infrastructure Certificate Request
|
||||
# Message Format (CRMF)
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc4211.txt
|
||||
#
|
||||
from pyasn1.type import univ, char, namedtype, namedval, tag, constraint
|
||||
|
||||
from pyasn1_modules import rfc3280
|
||||
from pyasn1_modules import rfc3852
|
||||
|
||||
MAX = float('inf')
|
||||
|
||||
|
||||
def _buildOid(*components):
|
||||
output = []
|
||||
for x in tuple(components):
|
||||
if isinstance(x, univ.ObjectIdentifier):
|
||||
output.extend(list(x))
|
||||
else:
|
||||
output.append(int(x))
|
||||
|
||||
return univ.ObjectIdentifier(output)
|
||||
|
||||
|
||||
id_pkix = _buildOid(1, 3, 6, 1, 5, 5, 7)
|
||||
|
||||
id_pkip = _buildOid(id_pkix, 5)
|
||||
|
||||
id_regCtrl = _buildOid(id_pkip, 1)
|
||||
|
||||
|
||||
class SinglePubInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
SinglePubInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('pubMethod', univ.Integer(
|
||||
namedValues=namedval.NamedValues(('dontCare', 0), ('x500', 1), ('web', 2), ('ldap', 3)))),
|
||||
namedtype.OptionalNamedType('pubLocation', rfc3280.GeneralName())
|
||||
)
|
||||
|
||||
|
||||
class UTF8Pairs(char.UTF8String):
|
||||
pass
|
||||
|
||||
|
||||
class PKMACValue(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
PKMACValue.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('algId', rfc3280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('value', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class POPOSigningKeyInput(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
POPOSigningKeyInput.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType(
|
||||
'authInfo', univ.Choice(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType(
|
||||
'sender', rfc3280.GeneralName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))
|
||||
),
|
||||
namedtype.NamedType(
|
||||
'publicKeyMAC', PKMACValue()
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('publicKey', rfc3280.SubjectPublicKeyInfo())
|
||||
)
|
||||
|
||||
|
||||
class POPOSigningKey(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
POPOSigningKey.componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('poposkInput', POPOSigningKeyInput().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('algorithmIdentifier', rfc3280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class Attributes(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
Attributes.componentType = rfc3280.Attribute()
|
||||
|
||||
|
||||
class PrivateKeyInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
PrivateKeyInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', univ.Integer()),
|
||||
namedtype.NamedType('privateKeyAlgorithm', rfc3280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('privateKey', univ.OctetString()),
|
||||
namedtype.OptionalNamedType('attributes',
|
||||
Attributes().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class EncryptedValue(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
EncryptedValue.componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('intendedAlg', rfc3280.AlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('symmAlg', rfc3280.AlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.OptionalNamedType('encSymmKey', univ.BitString().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.OptionalNamedType('keyAlg', rfc3280.AlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
|
||||
namedtype.OptionalNamedType('valueHint', univ.OctetString().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),
|
||||
namedtype.NamedType('encValue', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class EncryptedKey(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
EncryptedKey.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('encryptedValue', EncryptedValue()),
|
||||
namedtype.NamedType('envelopedData', rfc3852.EnvelopedData().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class KeyGenParameters(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class PKIArchiveOptions(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
PKIArchiveOptions.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('encryptedPrivKey',
|
||||
EncryptedKey().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('keyGenParameters',
|
||||
KeyGenParameters().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('archiveRemGenPrivKey',
|
||||
univ.Boolean().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
|
||||
id_regCtrl_authenticator = _buildOid(id_regCtrl, 2)
|
||||
|
||||
id_regInfo = _buildOid(id_pkip, 2)
|
||||
|
||||
id_regInfo_certReq = _buildOid(id_regInfo, 2)
|
||||
|
||||
|
||||
class ProtocolEncrKey(rfc3280.SubjectPublicKeyInfo):
|
||||
pass
|
||||
|
||||
|
||||
class Authenticator(char.UTF8String):
|
||||
pass
|
||||
|
||||
|
||||
class SubsequentMessage(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
SubsequentMessage.namedValues = namedval.NamedValues(
|
||||
('encrCert', 0),
|
||||
('challengeResp', 1)
|
||||
)
|
||||
|
||||
|
||||
class AttributeTypeAndValue(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AttributeTypeAndValue.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('value', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
class POPOPrivKey(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
POPOPrivKey.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('thisMessage',
|
||||
univ.BitString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('subsequentMessage',
|
||||
SubsequentMessage().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('dhMAC',
|
||||
univ.BitString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.NamedType('agreeMAC',
|
||||
PKMACValue().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.NamedType('encryptedKey', rfc3852.EnvelopedData().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4)))
|
||||
)
|
||||
|
||||
|
||||
class ProofOfPossession(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
ProofOfPossession.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('raVerified',
|
||||
univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('signature', POPOSigningKey().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('keyEncipherment',
|
||||
POPOPrivKey().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.NamedType('keyAgreement',
|
||||
POPOPrivKey().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))
|
||||
)
|
||||
|
||||
|
||||
class OptionalValidity(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OptionalValidity.componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('notBefore', rfc3280.Time().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('notAfter', rfc3280.Time().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class CertTemplate(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
CertTemplate.componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('version', rfc3280.Version().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('serialNumber', univ.Integer().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.OptionalNamedType('signingAlg', rfc3280.AlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.OptionalNamedType('issuer', rfc3280.Name().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.OptionalNamedType('validity', OptionalValidity().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
|
||||
namedtype.OptionalNamedType('subject', rfc3280.Name().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
|
||||
namedtype.OptionalNamedType('publicKey', rfc3280.SubjectPublicKeyInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6))),
|
||||
namedtype.OptionalNamedType('issuerUID', rfc3280.UniqueIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
|
||||
namedtype.OptionalNamedType('subjectUID', rfc3280.UniqueIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8))),
|
||||
namedtype.OptionalNamedType('extensions', rfc3280.Extensions().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 9)))
|
||||
)
|
||||
|
||||
|
||||
class Controls(univ.SequenceOf):
|
||||
pass
|
||||
|
||||
|
||||
Controls.componentType = AttributeTypeAndValue()
|
||||
Controls.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class CertRequest(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
CertRequest.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certReqId', univ.Integer()),
|
||||
namedtype.NamedType('certTemplate', CertTemplate()),
|
||||
namedtype.OptionalNamedType('controls', Controls())
|
||||
)
|
||||
|
||||
|
||||
class CertReqMsg(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
CertReqMsg.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certReq', CertRequest()),
|
||||
namedtype.OptionalNamedType('popo', ProofOfPossession()),
|
||||
namedtype.OptionalNamedType('regInfo', univ.SequenceOf(componentType=AttributeTypeAndValue()))
|
||||
)
|
||||
|
||||
|
||||
class CertReqMessages(univ.SequenceOf):
|
||||
pass
|
||||
|
||||
|
||||
CertReqMessages.componentType = CertReqMsg()
|
||||
CertReqMessages.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class CertReq(CertRequest):
|
||||
pass
|
||||
|
||||
|
||||
id_regCtrl_pkiPublicationInfo = _buildOid(id_regCtrl, 3)
|
||||
|
||||
|
||||
class CertId(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
CertId.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuer', rfc3280.GeneralName()),
|
||||
namedtype.NamedType('serialNumber', univ.Integer())
|
||||
)
|
||||
|
||||
|
||||
class OldCertId(CertId):
|
||||
pass
|
||||
|
||||
|
||||
class PKIPublicationInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
PKIPublicationInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('action',
|
||||
univ.Integer(namedValues=namedval.NamedValues(('dontPublish', 0), ('pleasePublish', 1)))),
|
||||
namedtype.OptionalNamedType('pubInfos', univ.SequenceOf(componentType=SinglePubInfo()))
|
||||
)
|
||||
|
||||
|
||||
class EncKeyWithID(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
EncKeyWithID.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('privateKey', PrivateKeyInfo()),
|
||||
namedtype.OptionalNamedType(
|
||||
'identifier', univ.Choice(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('string', char.UTF8String()),
|
||||
namedtype.NamedType('generalName', rfc3280.GeneralName())
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
id_regCtrl_protocolEncrKey = _buildOid(id_regCtrl, 6)
|
||||
|
||||
id_regCtrl_oldCertID = _buildOid(id_regCtrl, 5)
|
||||
|
||||
id_smime = _buildOid(1, 2, 840, 113549, 1, 9, 16)
|
||||
|
||||
|
||||
class PBMParameter(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
PBMParameter.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('salt', univ.OctetString()),
|
||||
namedtype.NamedType('owf', rfc3280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('iterationCount', univ.Integer()),
|
||||
namedtype.NamedType('mac', rfc3280.AlgorithmIdentifier())
|
||||
)
|
||||
|
||||
id_regCtrl_regToken = _buildOid(id_regCtrl, 1)
|
||||
|
||||
id_regCtrl_pkiArchiveOptions = _buildOid(id_regCtrl, 4)
|
||||
|
||||
id_regInfo_utf8Pairs = _buildOid(id_regInfo, 1)
|
||||
|
||||
id_ct = _buildOid(id_smime, 1)
|
||||
|
||||
id_ct_encKeyWithID = _buildOid(id_ct, 21)
|
||||
|
||||
|
||||
class RegToken(char.UTF8String):
|
||||
pass
|
@ -1,4 +1,9 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# PKCS#8 syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
@ -6,15 +11,21 @@
|
||||
#
|
||||
# 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 KeyEncryptionAlgorithms(AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class PrivateKeyAlgorithms(AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class EncryptedData(univ.OctetString):
|
||||
pass
|
||||
|
||||
class EncryptedData(univ.OctetString): pass
|
||||
|
||||
class EncryptedPrivateKeyInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
@ -22,18 +33,24 @@ class EncryptedPrivateKeyInfo(univ.Sequence):
|
||||
namedtype.NamedType('encryptedData', EncryptedData())
|
||||
)
|
||||
|
||||
class PrivateKey(univ.OctetString): pass
|
||||
|
||||
class PrivateKey(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class Attributes(univ.SetOf):
|
||||
componentType = rfc2251.Attribute()
|
||||
|
||||
|
||||
class Version(univ.Integer):
|
||||
namedValues = namedval.NamedValues(('v1', 0), ('v2', 1))
|
||||
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)))
|
||||
namedtype.OptionalNamedType('attributes', Attributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
1597
third_party/python/pyasn1-modules/pyasn1_modules/rfc5280.py
vendored
Normal file
1597
third_party/python/pyasn1-modules/pyasn1_modules/rfc5280.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
706
third_party/python/pyasn1-modules/pyasn1_modules/rfc5652.py
vendored
Normal file
706
third_party/python/pyasn1-modules/pyasn1_modules/rfc5652.py
vendored
Normal file
@ -0,0 +1,706 @@
|
||||
# coding: utf-8
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Cryptographic Message Syntax (CMS)
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc5652.txt
|
||||
#
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
from pyasn1.type import useful
|
||||
|
||||
from pyasn1_modules import rfc3281
|
||||
from pyasn1_modules import rfc5280
|
||||
|
||||
MAX = float('inf')
|
||||
|
||||
|
||||
def _buildOid(*components):
|
||||
output = []
|
||||
for x in tuple(components):
|
||||
if isinstance(x, univ.ObjectIdentifier):
|
||||
output.extend(list(x))
|
||||
else:
|
||||
output.append(int(x))
|
||||
|
||||
return univ.ObjectIdentifier(output)
|
||||
|
||||
|
||||
class AttCertVersionV1(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
AttCertVersionV1.namedValues = namedval.NamedValues(
|
||||
('v1', 0)
|
||||
)
|
||||
|
||||
|
||||
class AttributeCertificateInfoV1(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AttributeCertificateInfoV1.componentType = namedtype.NamedTypes(
|
||||
namedtype.DefaultedNamedType('version', AttCertVersionV1().subtype(value="v1")),
|
||||
namedtype.NamedType(
|
||||
'subject', univ.Choice(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('baseCertificateID', rfc3281.IssuerSerial().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('subjectName', rfc5280.GeneralNames().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('issuer', rfc5280.GeneralNames()),
|
||||
namedtype.NamedType('signature', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('serialNumber', rfc5280.CertificateSerialNumber()),
|
||||
namedtype.NamedType('attCertValidityPeriod', rfc3281.AttCertValidityPeriod()),
|
||||
namedtype.NamedType('attributes', univ.SequenceOf(componentType=rfc5280.Attribute())),
|
||||
namedtype.OptionalNamedType('issuerUniqueID', rfc5280.UniqueIdentifier()),
|
||||
namedtype.OptionalNamedType('extensions', rfc5280.Extensions())
|
||||
)
|
||||
|
||||
|
||||
class AttributeCertificateV1(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AttributeCertificateV1.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('acInfo', AttributeCertificateInfoV1()),
|
||||
namedtype.NamedType('signatureAlgorithm', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class AttributeValue(univ.Any):
|
||||
pass
|
||||
|
||||
|
||||
class Attribute(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
Attribute.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('attrType', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('attrValues', univ.SetOf(componentType=AttributeValue()))
|
||||
)
|
||||
|
||||
|
||||
class SignedAttributes(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
SignedAttributes.componentType = Attribute()
|
||||
SignedAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class AttributeCertificateV2(rfc3281.AttributeCertificate):
|
||||
pass
|
||||
|
||||
|
||||
class OtherKeyAttribute(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OtherKeyAttribute.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('keyAttrId', univ.ObjectIdentifier()),
|
||||
namedtype.OptionalNamedType('keyAttr', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
class UnauthAttributes(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
UnauthAttributes.componentType = Attribute()
|
||||
UnauthAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
id_encryptedData = _buildOid(1, 2, 840, 113549, 1, 7, 6)
|
||||
|
||||
|
||||
class SignatureValue(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class IssuerAndSerialNumber(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
IssuerAndSerialNumber.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuer', rfc5280.Name()),
|
||||
namedtype.NamedType('serialNumber', rfc5280.CertificateSerialNumber())
|
||||
)
|
||||
|
||||
|
||||
class SubjectKeyIdentifier(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class RecipientKeyIdentifier(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
RecipientKeyIdentifier.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('subjectKeyIdentifier', SubjectKeyIdentifier()),
|
||||
namedtype.OptionalNamedType('date', useful.GeneralizedTime()),
|
||||
namedtype.OptionalNamedType('other', OtherKeyAttribute())
|
||||
)
|
||||
|
||||
|
||||
class KeyAgreeRecipientIdentifier(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
KeyAgreeRecipientIdentifier.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuerAndSerialNumber', IssuerAndSerialNumber()),
|
||||
namedtype.NamedType('rKeyId', RecipientKeyIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
|
||||
class EncryptedKey(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class RecipientEncryptedKey(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
RecipientEncryptedKey.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('rid', KeyAgreeRecipientIdentifier()),
|
||||
namedtype.NamedType('encryptedKey', EncryptedKey())
|
||||
)
|
||||
|
||||
|
||||
class RecipientEncryptedKeys(univ.SequenceOf):
|
||||
pass
|
||||
|
||||
|
||||
RecipientEncryptedKeys.componentType = RecipientEncryptedKey()
|
||||
|
||||
|
||||
class MessageAuthenticationCode(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class CMSVersion(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
CMSVersion.namedValues = namedval.NamedValues(
|
||||
('v0', 0),
|
||||
('v1', 1),
|
||||
('v2', 2),
|
||||
('v3', 3),
|
||||
('v4', 4),
|
||||
('v5', 5)
|
||||
)
|
||||
|
||||
|
||||
class OtherCertificateFormat(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OtherCertificateFormat.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('otherCertFormat', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('otherCert', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
class ExtendedCertificateInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
ExtendedCertificateInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('certificate', rfc5280.Certificate()),
|
||||
namedtype.NamedType('attributes', UnauthAttributes())
|
||||
)
|
||||
|
||||
|
||||
class Signature(univ.BitString):
|
||||
pass
|
||||
|
||||
|
||||
class SignatureAlgorithmIdentifier(rfc5280.AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class ExtendedCertificate(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
ExtendedCertificate.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('extendedCertificateInfo', ExtendedCertificateInfo()),
|
||||
namedtype.NamedType('signatureAlgorithm', SignatureAlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', Signature())
|
||||
)
|
||||
|
||||
|
||||
class CertificateChoices(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
CertificateChoices.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certificate', rfc5280.Certificate()),
|
||||
namedtype.NamedType('extendedCertificate', ExtendedCertificate().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('v1AttrCert', AttributeCertificateV1().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('v2AttrCert', AttributeCertificateV2().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.NamedType('other', OtherCertificateFormat().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))
|
||||
)
|
||||
|
||||
|
||||
class CertificateSet(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
CertificateSet.componentType = CertificateChoices()
|
||||
|
||||
|
||||
class OtherRevocationInfoFormat(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OtherRevocationInfoFormat.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('otherRevInfoFormat', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('otherRevInfo', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
class RevocationInfoChoice(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
RevocationInfoChoice.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('crl', rfc5280.CertificateList()),
|
||||
namedtype.NamedType('other', OtherRevocationInfoFormat().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class RevocationInfoChoices(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
RevocationInfoChoices.componentType = RevocationInfoChoice()
|
||||
|
||||
|
||||
class OriginatorInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OriginatorInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('certs', CertificateSet().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('crls', RevocationInfoChoices().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
|
||||
class ContentType(univ.ObjectIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class EncryptedContent(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class ContentEncryptionAlgorithmIdentifier(rfc5280.AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class EncryptedContentInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
EncryptedContentInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('contentType', ContentType()),
|
||||
namedtype.NamedType('contentEncryptionAlgorithm', ContentEncryptionAlgorithmIdentifier()),
|
||||
namedtype.OptionalNamedType('encryptedContent', EncryptedContent().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class UnprotectedAttributes(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
UnprotectedAttributes.componentType = Attribute()
|
||||
UnprotectedAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class KeyEncryptionAlgorithmIdentifier(rfc5280.AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class KEKIdentifier(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
KEKIdentifier.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('keyIdentifier', univ.OctetString()),
|
||||
namedtype.OptionalNamedType('date', useful.GeneralizedTime()),
|
||||
namedtype.OptionalNamedType('other', OtherKeyAttribute())
|
||||
)
|
||||
|
||||
|
||||
class KEKRecipientInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
KEKRecipientInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('kekid', KEKIdentifier()),
|
||||
namedtype.NamedType('keyEncryptionAlgorithm', KeyEncryptionAlgorithmIdentifier()),
|
||||
namedtype.NamedType('encryptedKey', EncryptedKey())
|
||||
)
|
||||
|
||||
|
||||
class KeyDerivationAlgorithmIdentifier(rfc5280.AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class PasswordRecipientInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
PasswordRecipientInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.OptionalNamedType('keyDerivationAlgorithm', KeyDerivationAlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('keyEncryptionAlgorithm', KeyEncryptionAlgorithmIdentifier()),
|
||||
namedtype.NamedType('encryptedKey', EncryptedKey())
|
||||
)
|
||||
|
||||
|
||||
class RecipientIdentifier(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
RecipientIdentifier.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuerAndSerialNumber', IssuerAndSerialNumber()),
|
||||
namedtype.NamedType('subjectKeyIdentifier', SubjectKeyIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class KeyTransRecipientInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
KeyTransRecipientInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('rid', RecipientIdentifier()),
|
||||
namedtype.NamedType('keyEncryptionAlgorithm', KeyEncryptionAlgorithmIdentifier()),
|
||||
namedtype.NamedType('encryptedKey', EncryptedKey())
|
||||
)
|
||||
|
||||
|
||||
class UserKeyingMaterial(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class OriginatorPublicKey(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OriginatorPublicKey.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('algorithm', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('publicKey', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class OriginatorIdentifierOrKey(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
OriginatorIdentifierOrKey.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuerAndSerialNumber', IssuerAndSerialNumber()),
|
||||
namedtype.NamedType('subjectKeyIdentifier', SubjectKeyIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('originatorKey', OriginatorPublicKey().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class KeyAgreeRecipientInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
KeyAgreeRecipientInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('originator', OriginatorIdentifierOrKey().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('ukm', UserKeyingMaterial().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('keyEncryptionAlgorithm', KeyEncryptionAlgorithmIdentifier()),
|
||||
namedtype.NamedType('recipientEncryptedKeys', RecipientEncryptedKeys())
|
||||
)
|
||||
|
||||
|
||||
class OtherRecipientInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OtherRecipientInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('oriType', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('oriValue', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
class RecipientInfo(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
RecipientInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('ktri', KeyTransRecipientInfo()),
|
||||
namedtype.NamedType('kari', KeyAgreeRecipientInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
||||
namedtype.NamedType('kekri', KEKRecipientInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
||||
namedtype.NamedType('pwri', PasswordRecipientInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
||||
namedtype.NamedType('ori', OtherRecipientInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4)))
|
||||
)
|
||||
|
||||
|
||||
class RecipientInfos(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
RecipientInfos.componentType = RecipientInfo()
|
||||
RecipientInfos.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class EnvelopedData(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
EnvelopedData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.OptionalNamedType('originatorInfo', OriginatorInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('recipientInfos', RecipientInfos()),
|
||||
namedtype.NamedType('encryptedContentInfo', EncryptedContentInfo()),
|
||||
namedtype.OptionalNamedType('unprotectedAttrs', UnprotectedAttributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
|
||||
class DigestAlgorithmIdentifier(rfc5280.AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
id_ct_contentInfo = _buildOid(1, 2, 840, 113549, 1, 9, 16, 1, 6)
|
||||
|
||||
id_digestedData = _buildOid(1, 2, 840, 113549, 1, 7, 5)
|
||||
|
||||
|
||||
class EncryptedData(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
EncryptedData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('encryptedContentInfo', EncryptedContentInfo()),
|
||||
namedtype.OptionalNamedType('unprotectedAttrs', UnprotectedAttributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
id_messageDigest = _buildOid(1, 2, 840, 113549, 1, 9, 4)
|
||||
|
||||
id_signedData = _buildOid(1, 2, 840, 113549, 1, 7, 2)
|
||||
|
||||
|
||||
class MessageAuthenticationCodeAlgorithm(rfc5280.AlgorithmIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class UnsignedAttributes(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
UnsignedAttributes.componentType = Attribute()
|
||||
UnsignedAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class SignerIdentifier(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
SignerIdentifier.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuerAndSerialNumber', IssuerAndSerialNumber()),
|
||||
namedtype.NamedType('subjectKeyIdentifier', SubjectKeyIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class SignerInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
SignerInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('sid', SignerIdentifier()),
|
||||
namedtype.NamedType('digestAlgorithm', DigestAlgorithmIdentifier()),
|
||||
namedtype.OptionalNamedType('signedAttrs', SignedAttributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('signatureAlgorithm', SignatureAlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', SignatureValue()),
|
||||
namedtype.OptionalNamedType('unsignedAttrs', UnsignedAttributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
|
||||
)
|
||||
|
||||
|
||||
class SignerInfos(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
SignerInfos.componentType = SignerInfo()
|
||||
|
||||
|
||||
class Countersignature(SignerInfo):
|
||||
pass
|
||||
|
||||
|
||||
class ContentInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
ContentInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('contentType', ContentType()),
|
||||
namedtype.NamedType('content', univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
|
||||
class EncapsulatedContentInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
EncapsulatedContentInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('eContentType', ContentType()),
|
||||
namedtype.OptionalNamedType('eContent', univ.OctetString().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
|
||||
id_countersignature = _buildOid(1, 2, 840, 113549, 1, 9, 6)
|
||||
|
||||
id_data = _buildOid(1, 2, 840, 113549, 1, 7, 1)
|
||||
|
||||
|
||||
class MessageDigest(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class AuthAttributes(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
AuthAttributes.componentType = Attribute()
|
||||
AuthAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class Time(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
Time.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('utcTime', useful.UTCTime()),
|
||||
namedtype.NamedType('generalTime', useful.GeneralizedTime())
|
||||
)
|
||||
|
||||
|
||||
class AuthenticatedData(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AuthenticatedData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.OptionalNamedType('originatorInfo', OriginatorInfo().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('recipientInfos', RecipientInfos()),
|
||||
namedtype.NamedType('macAlgorithm', MessageAuthenticationCodeAlgorithm()),
|
||||
namedtype.OptionalNamedType('digestAlgorithm', DigestAlgorithmIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('encapContentInfo', EncapsulatedContentInfo()),
|
||||
namedtype.OptionalNamedType('authAttrs', AuthAttributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.NamedType('mac', MessageAuthenticationCode()),
|
||||
namedtype.OptionalNamedType('unauthAttrs', UnauthAttributes().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
|
||||
)
|
||||
|
||||
id_contentType = _buildOid(1, 2, 840, 113549, 1, 9, 3)
|
||||
|
||||
|
||||
class ExtendedCertificateOrCertificate(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
ExtendedCertificateOrCertificate.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certificate', rfc5280.Certificate()),
|
||||
namedtype.NamedType('extendedCertificate', ExtendedCertificate().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
|
||||
class Digest(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
class DigestedData(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
DigestedData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('digestAlgorithm', DigestAlgorithmIdentifier()),
|
||||
namedtype.NamedType('encapContentInfo', EncapsulatedContentInfo()),
|
||||
namedtype.NamedType('digest', Digest())
|
||||
)
|
||||
|
||||
id_envelopedData = _buildOid(1, 2, 840, 113549, 1, 7, 3)
|
||||
|
||||
|
||||
class DigestAlgorithmIdentifiers(univ.SetOf):
|
||||
pass
|
||||
|
||||
|
||||
DigestAlgorithmIdentifiers.componentType = DigestAlgorithmIdentifier()
|
||||
|
||||
|
||||
class SignedData(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
SignedData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', CMSVersion()),
|
||||
namedtype.NamedType('digestAlgorithms', DigestAlgorithmIdentifiers()),
|
||||
namedtype.NamedType('encapContentInfo', EncapsulatedContentInfo()),
|
||||
namedtype.OptionalNamedType('certificates', CertificateSet().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.OptionalNamedType('crls', RevocationInfoChoices().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('signerInfos', SignerInfos())
|
||||
)
|
||||
|
||||
id_signingTime = _buildOid(1, 2, 840, 113549, 1, 9, 5)
|
||||
|
||||
|
||||
class SigningTime(Time):
|
||||
pass
|
||||
|
||||
|
||||
id_ct_authData = _buildOid(1, 2, 840, 113549, 1, 9, 16, 1, 2)
|
561
third_party/python/pyasn1-modules/pyasn1_modules/rfc6402.py
vendored
Normal file
561
third_party/python/pyasn1-modules/pyasn1_modules/rfc6402.py
vendored
Normal file
@ -0,0 +1,561 @@
|
||||
# coding: utf-8
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Certificate Management over CMS (CMC) Updates
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc6402.txt
|
||||
#
|
||||
from pyasn1.type import univ, char, namedtype, namedval, tag, constraint, useful
|
||||
|
||||
from pyasn1_modules import rfc4211
|
||||
from pyasn1_modules import rfc5280
|
||||
from pyasn1_modules import rfc5652
|
||||
|
||||
MAX = float('inf')
|
||||
|
||||
|
||||
def _buildOid(*components):
|
||||
output = []
|
||||
for x in tuple(components):
|
||||
if isinstance(x, univ.ObjectIdentifier):
|
||||
output.extend(list(x))
|
||||
else:
|
||||
output.append(int(x))
|
||||
|
||||
return univ.ObjectIdentifier(output)
|
||||
|
||||
|
||||
class ChangeSubjectName(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
ChangeSubjectName.componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('subject', rfc5280.Name()),
|
||||
namedtype.OptionalNamedType('subjectAlt', rfc5280.GeneralNames())
|
||||
)
|
||||
|
||||
|
||||
class AttributeValue(univ.Any):
|
||||
pass
|
||||
|
||||
|
||||
class CMCStatus(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
CMCStatus.namedValues = namedval.NamedValues(
|
||||
('success', 0),
|
||||
('failed', 2),
|
||||
('pending', 3),
|
||||
('noSupport', 4),
|
||||
('confirmRequired', 5),
|
||||
('popRequired', 6),
|
||||
('partial', 7)
|
||||
)
|
||||
|
||||
|
||||
class PendInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
PendInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('pendToken', univ.OctetString()),
|
||||
namedtype.NamedType('pendTime', useful.GeneralizedTime())
|
||||
)
|
||||
|
||||
bodyIdMax = univ.Integer(4294967295)
|
||||
|
||||
|
||||
class BodyPartID(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
BodyPartID.subtypeSpec = constraint.ValueRangeConstraint(0, bodyIdMax)
|
||||
|
||||
|
||||
class BodyPartPath(univ.SequenceOf):
|
||||
pass
|
||||
|
||||
|
||||
BodyPartPath.componentType = BodyPartID()
|
||||
BodyPartPath.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class BodyPartReference(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
BodyPartReference.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('bodyPartID', BodyPartID()),
|
||||
namedtype.NamedType('bodyPartPath', BodyPartPath())
|
||||
)
|
||||
|
||||
|
||||
class CMCFailInfo(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
CMCFailInfo.namedValues = namedval.NamedValues(
|
||||
('badAlg', 0),
|
||||
('badMessageCheck', 1),
|
||||
('badRequest', 2),
|
||||
('badTime', 3),
|
||||
('badCertId', 4),
|
||||
('unsupportedExt', 5),
|
||||
('mustArchiveKeys', 6),
|
||||
('badIdentity', 7),
|
||||
('popRequired', 8),
|
||||
('popFailed', 9),
|
||||
('noKeyReuse', 10),
|
||||
('internalCAError', 11),
|
||||
('tryLater', 12),
|
||||
('authDataFail', 13)
|
||||
)
|
||||
|
||||
|
||||
class CMCStatusInfoV2(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
CMCStatusInfoV2.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('cMCStatus', CMCStatus()),
|
||||
namedtype.NamedType('bodyList', univ.SequenceOf(componentType=BodyPartReference())),
|
||||
namedtype.OptionalNamedType('statusString', char.UTF8String()),
|
||||
namedtype.OptionalNamedType(
|
||||
'otherInfo', univ.Choice(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('failInfo', CMCFailInfo()),
|
||||
namedtype.NamedType('pendInfo', PendInfo()),
|
||||
namedtype.NamedType(
|
||||
'extendedFailInfo', univ.Sequence(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('failInfoOID', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('failInfoValue', AttributeValue()))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class GetCRL(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
GetCRL.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuerName', rfc5280.Name()),
|
||||
namedtype.OptionalNamedType('cRLName', rfc5280.GeneralName()),
|
||||
namedtype.OptionalNamedType('time', useful.GeneralizedTime()),
|
||||
namedtype.OptionalNamedType('reasons', rfc5280.ReasonFlags())
|
||||
)
|
||||
|
||||
id_pkix = _buildOid(1, 3, 6, 1, 5, 5, 7)
|
||||
|
||||
id_cmc = _buildOid(id_pkix, 7)
|
||||
|
||||
id_cmc_batchResponses = _buildOid(id_cmc, 29)
|
||||
|
||||
id_cmc_popLinkWitness = _buildOid(id_cmc, 23)
|
||||
|
||||
|
||||
class PopLinkWitnessV2(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
PopLinkWitnessV2.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('keyGenAlgorithm', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('macAlgorithm', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('witness', univ.OctetString())
|
||||
)
|
||||
|
||||
id_cmc_popLinkWitnessV2 = _buildOid(id_cmc, 33)
|
||||
|
||||
id_cmc_identityProofV2 = _buildOid(id_cmc, 34)
|
||||
|
||||
id_cmc_revokeRequest = _buildOid(id_cmc, 17)
|
||||
|
||||
id_cmc_recipientNonce = _buildOid(id_cmc, 7)
|
||||
|
||||
|
||||
class ControlsProcessed(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
ControlsProcessed.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('bodyList', univ.SequenceOf(componentType=BodyPartReference()))
|
||||
)
|
||||
|
||||
|
||||
class CertificationRequest(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
CertificationRequest.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType(
|
||||
'certificationRequestInfo', univ.Sequence(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('version', univ.Integer()),
|
||||
namedtype.NamedType('subject', rfc5280.Name()),
|
||||
namedtype.NamedType(
|
||||
'subjectPublicKeyInfo', univ.Sequence(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('algorithm', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('subjectPublicKey', univ.BitString())
|
||||
)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType(
|
||||
'attributes', univ.SetOf(
|
||||
componentType=rfc5652.Attribute()).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
namedtype.NamedType('signatureAlgorithm', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class TaggedCertificationRequest(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
TaggedCertificationRequest.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('bodyPartID', BodyPartID()),
|
||||
namedtype.NamedType('certificationRequest', CertificationRequest())
|
||||
)
|
||||
|
||||
|
||||
class TaggedRequest(univ.Choice):
|
||||
pass
|
||||
|
||||
|
||||
TaggedRequest.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('tcr', TaggedCertificationRequest().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('crm',
|
||||
rfc4211.CertReqMsg().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('orm', univ.Sequence(componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('bodyPartID', BodyPartID()),
|
||||
namedtype.NamedType('requestMessageType', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('requestMessageValue', univ.Any())
|
||||
))
|
||||
.subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2)))
|
||||
)
|
||||
|
||||
id_cmc_popLinkRandom = _buildOid(id_cmc, 22)
|
||||
|
||||
id_cmc_statusInfo = _buildOid(id_cmc, 1)
|
||||
|
||||
id_cmc_trustedAnchors = _buildOid(id_cmc, 26)
|
||||
|
||||
id_cmc_transactionId = _buildOid(id_cmc, 5)
|
||||
|
||||
id_cmc_encryptedPOP = _buildOid(id_cmc, 9)
|
||||
|
||||
|
||||
class PublishTrustAnchors(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
PublishTrustAnchors.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('seqNumber', univ.Integer()),
|
||||
namedtype.NamedType('hashAlgorithm', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('anchorHashes', univ.SequenceOf(componentType=univ.OctetString()))
|
||||
)
|
||||
|
||||
|
||||
class RevokeRequest(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
RevokeRequest.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuerName', rfc5280.Name()),
|
||||
namedtype.NamedType('serialNumber', univ.Integer()),
|
||||
namedtype.NamedType('reason', rfc5280.CRLReason()),
|
||||
namedtype.OptionalNamedType('invalidityDate', useful.GeneralizedTime()),
|
||||
namedtype.OptionalNamedType('passphrase', univ.OctetString()),
|
||||
namedtype.OptionalNamedType('comment', char.UTF8String())
|
||||
)
|
||||
|
||||
id_cmc_senderNonce = _buildOid(id_cmc, 6)
|
||||
|
||||
id_cmc_authData = _buildOid(id_cmc, 27)
|
||||
|
||||
|
||||
class TaggedContentInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
TaggedContentInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('bodyPartID', BodyPartID()),
|
||||
namedtype.NamedType('contentInfo', rfc5652.ContentInfo())
|
||||
)
|
||||
|
||||
|
||||
class IdentifyProofV2(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
IdentifyProofV2.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('proofAlgID', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('macAlgId', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('witness', univ.OctetString())
|
||||
)
|
||||
|
||||
|
||||
class CMCPublicationInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
CMCPublicationInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('hashAlg', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('certHashes', univ.SequenceOf(componentType=univ.OctetString())),
|
||||
namedtype.NamedType('pubInfo', rfc4211.PKIPublicationInfo())
|
||||
)
|
||||
|
||||
id_kp_cmcCA = _buildOid(rfc5280.id_kp, 27)
|
||||
|
||||
id_cmc_confirmCertAcceptance = _buildOid(id_cmc, 24)
|
||||
|
||||
id_cmc_raIdentityWitness = _buildOid(id_cmc, 35)
|
||||
|
||||
id_ExtensionReq = _buildOid(1, 2, 840, 113549, 1, 9, 14)
|
||||
|
||||
id_cct = _buildOid(id_pkix, 12)
|
||||
|
||||
id_cct_PKIData = _buildOid(id_cct, 2)
|
||||
|
||||
id_kp_cmcRA = _buildOid(rfc5280.id_kp, 28)
|
||||
|
||||
|
||||
class CMCStatusInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
CMCStatusInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('cMCStatus', CMCStatus()),
|
||||
namedtype.NamedType('bodyList', univ.SequenceOf(componentType=BodyPartID())),
|
||||
namedtype.OptionalNamedType('statusString', char.UTF8String()),
|
||||
namedtype.OptionalNamedType(
|
||||
'otherInfo', univ.Choice(
|
||||
componentType=namedtype.NamedTypes(
|
||||
namedtype.NamedType('failInfo', CMCFailInfo()),
|
||||
namedtype.NamedType('pendInfo', PendInfo())
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class DecryptedPOP(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
DecryptedPOP.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('bodyPartID', BodyPartID()),
|
||||
namedtype.NamedType('thePOPAlgID', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('thePOP', univ.OctetString())
|
||||
)
|
||||
|
||||
id_cmc_addExtensions = _buildOid(id_cmc, 8)
|
||||
|
||||
id_cmc_modCertTemplate = _buildOid(id_cmc, 31)
|
||||
|
||||
|
||||
class TaggedAttribute(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
TaggedAttribute.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('bodyPartID', BodyPartID()),
|
||||
namedtype.NamedType('attrType', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('attrValues', univ.SetOf(componentType=AttributeValue()))
|
||||
)
|
||||
|
||||
|
||||
class OtherMsg(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
OtherMsg.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('bodyPartID', BodyPartID()),
|
||||
namedtype.NamedType('otherMsgType', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('otherMsgValue', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
class PKIData(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
PKIData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('controlSequence', univ.SequenceOf(componentType=TaggedAttribute())),
|
||||
namedtype.NamedType('reqSequence', univ.SequenceOf(componentType=TaggedRequest())),
|
||||
namedtype.NamedType('cmsSequence', univ.SequenceOf(componentType=TaggedContentInfo())),
|
||||
namedtype.NamedType('otherMsgSequence', univ.SequenceOf(componentType=OtherMsg()))
|
||||
)
|
||||
|
||||
|
||||
class BodyPartList(univ.SequenceOf):
|
||||
pass
|
||||
|
||||
|
||||
BodyPartList.componentType = BodyPartID()
|
||||
BodyPartList.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
id_cmc_responseBody = _buildOid(id_cmc, 37)
|
||||
|
||||
|
||||
class AuthPublish(BodyPartID):
|
||||
pass
|
||||
|
||||
|
||||
class CMCUnsignedData(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
CMCUnsignedData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('bodyPartPath', BodyPartPath()),
|
||||
namedtype.NamedType('identifier', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('content', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
class CMCCertId(rfc5652.IssuerAndSerialNumber):
|
||||
pass
|
||||
|
||||
|
||||
class PKIResponse(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
PKIResponse.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('controlSequence', univ.SequenceOf(componentType=TaggedAttribute())),
|
||||
namedtype.NamedType('cmsSequence', univ.SequenceOf(componentType=TaggedContentInfo())),
|
||||
namedtype.NamedType('otherMsgSequence', univ.SequenceOf(componentType=OtherMsg()))
|
||||
)
|
||||
|
||||
|
||||
class ResponseBody(PKIResponse):
|
||||
pass
|
||||
|
||||
|
||||
id_cmc_statusInfoV2 = _buildOid(id_cmc, 25)
|
||||
|
||||
id_cmc_lraPOPWitness = _buildOid(id_cmc, 11)
|
||||
|
||||
|
||||
class ModCertTemplate(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
ModCertTemplate.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('pkiDataReference', BodyPartPath()),
|
||||
namedtype.NamedType('certReferences', BodyPartList()),
|
||||
namedtype.DefaultedNamedType('replace', univ.Boolean().subtype(value=1)),
|
||||
namedtype.NamedType('certTemplate', rfc4211.CertTemplate())
|
||||
)
|
||||
|
||||
id_cmc_regInfo = _buildOid(id_cmc, 18)
|
||||
|
||||
id_cmc_identityProof = _buildOid(id_cmc, 3)
|
||||
|
||||
|
||||
class ExtensionReq(univ.SequenceOf):
|
||||
pass
|
||||
|
||||
|
||||
ExtensionReq.componentType = rfc5280.Extension()
|
||||
ExtensionReq.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
id_kp_cmcArchive = _buildOid(rfc5280.id_kp, 28)
|
||||
|
||||
id_cmc_publishCert = _buildOid(id_cmc, 30)
|
||||
|
||||
id_cmc_dataReturn = _buildOid(id_cmc, 4)
|
||||
|
||||
|
||||
class LraPopWitness(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
LraPopWitness.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('pkiDataBodyid', BodyPartID()),
|
||||
namedtype.NamedType('bodyIds', univ.SequenceOf(componentType=BodyPartID()))
|
||||
)
|
||||
|
||||
id_aa = _buildOid(1, 2, 840, 113549, 1, 9, 16, 2)
|
||||
|
||||
id_aa_cmc_unsignedData = _buildOid(id_aa, 34)
|
||||
|
||||
id_cmc_getCert = _buildOid(id_cmc, 15)
|
||||
|
||||
id_cmc_batchRequests = _buildOid(id_cmc, 28)
|
||||
|
||||
id_cmc_decryptedPOP = _buildOid(id_cmc, 10)
|
||||
|
||||
id_cmc_responseInfo = _buildOid(id_cmc, 19)
|
||||
|
||||
id_cmc_changeSubjectName = _buildOid(id_cmc, 36)
|
||||
|
||||
|
||||
class GetCert(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
GetCert.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('issuerName', rfc5280.GeneralName()),
|
||||
namedtype.NamedType('serialNumber', univ.Integer())
|
||||
)
|
||||
|
||||
id_cmc_identification = _buildOid(id_cmc, 2)
|
||||
|
||||
id_cmc_queryPending = _buildOid(id_cmc, 21)
|
||||
|
||||
|
||||
class AddExtensions(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AddExtensions.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('pkiDataReference', BodyPartID()),
|
||||
namedtype.NamedType('certReferences', univ.SequenceOf(componentType=BodyPartID())),
|
||||
namedtype.NamedType('extensions', univ.SequenceOf(componentType=rfc5280.Extension()))
|
||||
)
|
||||
|
||||
|
||||
class EncryptedPOP(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
EncryptedPOP.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('request', TaggedRequest()),
|
||||
namedtype.NamedType('cms', rfc5652.ContentInfo()),
|
||||
namedtype.NamedType('thePOPAlgID', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('witnessAlgID', rfc5280.AlgorithmIdentifier()),
|
||||
namedtype.NamedType('witness', univ.OctetString())
|
||||
)
|
||||
|
||||
id_cmc_getCRL = _buildOid(id_cmc, 16)
|
||||
|
||||
id_cct_PKIResponse = _buildOid(id_cct, 3)
|
||||
|
||||
id_cmc_controlProcessed = _buildOid(id_cmc, 32)
|
||||
|
||||
|
||||
class NoSignatureValue(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
id_ad_cmc = _buildOid(rfc5280.id_ad, 12)
|
||||
|
||||
id_alg_noSignature = _buildOid(id_pkix, 6, 2)
|
1
third_party/python/pyasn1-modules/requirements.txt
vendored
Normal file
1
third_party/python/pyasn1-modules/requirements.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
pyasn1>=0.3.4,<0.4.0
|
3
third_party/python/pyasn1-modules/setup.cfg
vendored
3
third_party/python/pyasn1-modules/setup.cfg
vendored
@ -1,3 +1,6 @@
|
||||
[bdist_wheel]
|
||||
universal = 1
|
||||
|
||||
[egg_info]
|
||||
tag_build =
|
||||
tag_date = 0
|
||||
|
132
third_party/python/pyasn1-modules/setup.py
vendored
132
third_party/python/pyasn1-modules/setup.py
vendored
@ -1,41 +1,50 @@
|
||||
#!/usr/bin/env python
|
||||
"""A collection of ASN.1-based protocols modules.
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import sys
|
||||
|
||||
doclines = """A collection of ASN.1-based protocols modules.
|
||||
|
||||
A collection of ASN.1 modules expressed in form of pyasn1 classes.
|
||||
Includes protocols PDUs definition (SNMP, LDAP etc.) and various
|
||||
data structures (X.509, PKCS etc.).
|
||||
"""
|
||||
|
||||
doclines = [x.strip() for x in doclines.split('\n') if x]
|
||||
|
||||
|
||||
classifiers = """\
|
||||
Development Status :: 5 - Production/Stable
|
||||
Environment :: Console
|
||||
Intended Audience :: Developers
|
||||
Intended Audience :: Education
|
||||
Intended Audience :: Information Technology
|
||||
Intended Audience :: Science/Research
|
||||
Intended Audience :: System Administrators
|
||||
Intended Audience :: Telecommunications Industry
|
||||
License :: OSI Approved :: BSD License
|
||||
Natural Language :: English
|
||||
Operating System :: OS Independent
|
||||
Programming Language :: Python :: 2
|
||||
Programming Language :: Python :: 2.4
|
||||
Programming Language :: Python :: 2.5
|
||||
Programming Language :: Python :: 2.6
|
||||
Programming Language :: Python :: 2.7
|
||||
Programming Language :: Python :: 3
|
||||
Programming Language :: Python :: 3.2
|
||||
Programming Language :: Python :: 3.3
|
||||
Programming Language :: Python :: 3.4
|
||||
Programming Language :: Python :: 3.5
|
||||
Programming Language :: Python :: 3.6
|
||||
Topic :: Communications
|
||||
Topic :: Security :: Cryptography
|
||||
Topic :: System :: Monitoring
|
||||
Topic :: System :: Networking :: Monitoring
|
||||
Topic :: Software Development :: Libraries :: Python Modules
|
||||
"""
|
||||
|
||||
def howto_install_distribute():
|
||||
print("""
|
||||
Error: You need the distribute Python package!
|
||||
|
||||
It's very easy to install it, just type (as root on Linux):
|
||||
|
||||
wget http://python-distribute.org/distribute_setup.py
|
||||
python distribute_setup.py
|
||||
|
||||
Then you could make eggs from this package.
|
||||
""")
|
||||
|
||||
def howto_install_setuptools():
|
||||
print("""
|
||||
@ -43,47 +52,84 @@ def howto_install_setuptools():
|
||||
|
||||
It's very easy to install it, just type (as root on Linux):
|
||||
|
||||
wget http://peak.telecommunity.com/dist/ez_setup.py
|
||||
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
|
||||
python ez_setup.py
|
||||
|
||||
Then you could make eggs from this package.
|
||||
""")
|
||||
|
||||
|
||||
if sys.version_info[:2] < (2, 4):
|
||||
print("ERROR: this package requires Python 2.4 or later!")
|
||||
sys.exit(1)
|
||||
|
||||
try:
|
||||
from setuptools import setup
|
||||
from setuptools import setup, Command
|
||||
|
||||
params = {
|
||||
'install_requires': [ 'pyasn1>=0.1.4' ],
|
||||
'zip_safe': True
|
||||
}
|
||||
'zip_safe': True,
|
||||
'install_requires': ['pyasn1>=0.3.4,<0.4.0']
|
||||
}
|
||||
|
||||
except ImportError:
|
||||
import sys
|
||||
for arg in sys.argv:
|
||||
if arg.find('egg') != -1:
|
||||
if sys.version_info[0] > 2:
|
||||
howto_install_distribute()
|
||||
else:
|
||||
howto_install_setuptools()
|
||||
if 'egg' in arg:
|
||||
howto_install_setuptools()
|
||||
sys.exit(1)
|
||||
from distutils.core import setup
|
||||
params = {}
|
||||
|
||||
from distutils.core import setup, Command
|
||||
|
||||
if sys.version_info[:2] > (2, 4):
|
||||
params['requires'] = [ 'pyasn1(>=0.1.4)' ]
|
||||
params = {
|
||||
'requires': ['pyasn1(>=0.3.4,<0.4.0)']
|
||||
}
|
||||
else:
|
||||
params = {
|
||||
'requires': ['pyasn1']
|
||||
}
|
||||
|
||||
doclines = [ x.strip() for x in __doc__.split('\n') if x ]
|
||||
params.update(
|
||||
{'name': 'pyasn1-modules',
|
||||
'version': open('pyasn1_modules/__init__.py').read().split('\'')[1],
|
||||
'description': doclines[0],
|
||||
'long_description': ' '.join(doclines[1:]),
|
||||
'maintainer': 'Ilya Etingof <etingof@gmail.com>',
|
||||
'author': 'Ilya Etingof',
|
||||
'author_email': 'etingof@gmail.com',
|
||||
'url': 'https://github.com/etingof/pyasn1-modules',
|
||||
'platforms': ['any'],
|
||||
'classifiers': [x for x in classifiers.split('\n') if x],
|
||||
'license': 'BSD',
|
||||
'packages': ['pyasn1_modules']}
|
||||
)
|
||||
|
||||
params.update( {
|
||||
'name': 'pyasn1-modules',
|
||||
'version': open('pyasn1_modules/__init__.py').read().split('\'')[1],
|
||||
'description': doclines[0],
|
||||
'long_description': ' '.join(doclines[1:]),
|
||||
'maintainer': 'Ilya Etingof <ilya@glas.net>',
|
||||
'author': 'Ilya Etingof',
|
||||
'author_email': 'ilya@glas.net',
|
||||
'url': 'http://sourceforge.net/projects/pyasn1/',
|
||||
'platforms': ['any'],
|
||||
'classifiers': [ x for x in classifiers.split('\n') if x ],
|
||||
'license': 'BSD',
|
||||
'packages': [ 'pyasn1_modules' ]
|
||||
} )
|
||||
|
||||
# handle unittest discovery feature
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
|
||||
class PyTest(Command):
|
||||
user_options = []
|
||||
|
||||
def initialize_options(self):
|
||||
pass
|
||||
|
||||
def finalize_options(self):
|
||||
pass
|
||||
|
||||
def run(self):
|
||||
suite = unittest.TestLoader().loadTestsFromNames(
|
||||
['tests.__main__.suite']
|
||||
)
|
||||
|
||||
unittest.TextTestRunner(verbosity=2).run(suite)
|
||||
|
||||
params['cmdclass'] = {
|
||||
'test': PyTest,
|
||||
'tests': PyTest
|
||||
}
|
||||
|
||||
setup(**params)
|
||||
|
14
third_party/python/pyasn1-modules/test/crl.sh
vendored
14
third_party/python/pyasn1-modules/test/crl.sh
vendored
@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
crldump.py <<EOT
|
||||
-----BEGIN X509 CRL-----
|
||||
MIIBVjCBwAIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJBVTETMBEGA1UE
|
||||
CBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRk
|
||||
MRUwEwYDVQQDEwxzbm1wbGFicy5jb20xIDAeBgkqhkiG9w0BCQEWEWluZm9Ac25t
|
||||
cGxhYnMuY29tFw0xMjA0MTExMzQwNTlaFw0xMjA1MTExMzQwNTlaoA4wDDAKBgNV
|
||||
HRQEAwIBATANBgkqhkiG9w0BAQUFAAOBgQC1D/wwnrcY/uFBHGc6SyoYss2kn+nY
|
||||
RTwzXmmldbNTCQ03x5vkWGGIaRJdN8QeCzbEi7gpgxgpxAx6Y5WkxkMQ1UPjNM5n
|
||||
DGVDOtR0dskFrrbHuNpWqWrDaBN0/ryZiWKjr9JRbrpkHgVY29I1gLooQ6IHuKHY
|
||||
vjnIhxTFoCb5vA==
|
||||
-----END X509 CRL-----
|
||||
EOT
|
14
third_party/python/pyasn1-modules/test/crmf.sh
vendored
14
third_party/python/pyasn1-modules/test/crmf.sh
vendored
@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
crmfdump.py <<EOT
|
||||
MIIBozCCAZ8wggEFAgUAwTnj2jCByoABAqURMA8xDTALBgNVBAMTBHVzZXKmgZ8w
|
||||
DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ6ZQ2cYbn/lFsmBOlRltbRbFQUvvE0Q
|
||||
nbopOu1kC7Bmaaz7QTx8nxeiHi4m7uxCbGGxHNoGCt7EmdG8eZUBNAcHyGlXrJdm
|
||||
0z3/uNEGiBHq+xB8FnFJCA5EIJ3RWFnlbu9otSITLxWK7c5+/NHmWM+yaeHD/f/h
|
||||
rp01c/8qXZfZAgMBAAGpEDAOBgNVHQ8BAf8EBAMCBeAwLzASBgkrBgEFBQcFAQEM
|
||||
BTExMTExMBkGCSsGAQUFBwUBAgwMc2VydmVyX21hZ2ljoYGTMA0GCSqGSIb3DQEB
|
||||
BQUAA4GBAEI3KNEvTq/n1kNVhNhPkovk1AZxyJrN1u1+7Gkc4PLjWwjLOjcEVWt4
|
||||
AajUk/gkIJ6bbeO+fZlMjHfPSDKcD6AV2hN+n72QZwfzcw3icNvBG1el9EU4XfIm
|
||||
xfu5YVWi81/fw8QQ6X6YGHFQkomLd7jxakVyjxSng9BhO6GpjJNF
|
||||
EOT
|
||||
|
@ -1,7 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
ocspreqdump.py <<EOT
|
||||
MGowaDBBMD8wPTAJBgUrDgMCGgUABBS3ZrMV9C5Dko03aH13cEZeppg3wgQUkqR1LKSevoFE63n8
|
||||
isWVpesQdXMCBDXe9M+iIzAhMB8GCSsGAQUFBzABAgQSBBBjdJOiIW9EKJGELNNf/rdA
|
||||
EOT
|
||||
|
26
third_party/python/pyasn1-modules/test/pkcs1.sh
vendored
26
third_party/python/pyasn1-modules/test/pkcs1.sh
vendored
@ -1,26 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
pkcs1dump.py <<EOT
|
||||
-----BEGIN DSA PRIVATE KEY-----
|
||||
MIIBugIBAAKBgQCN91+Cma8UPw09gjwP9WOJCdpv3mv3/qFqzgiODGZx0Q002iTl
|
||||
1dq36m5TsWYFEcMCEyC3tFuoQ0mGq5zUUOmJvHCIPufs0g8Av0fhY77uFqneHHUi
|
||||
VQMCPCHX9vTCWskmDE21LJppU27bR4H2q+ysE30d6u3+84qrItsn4bjpcQIVAPR5
|
||||
QrmooOXDn7fHJzshmxImGC4VAoGAXxKyEnlvzq93d4V6KLWX3H5Jk2JP771Ss1bT
|
||||
6D/mSbLlvjjo7qsj6diul1axu6Wny31oPertzA2FeGEzkqvjSNmSxyYYMDB3kEcx
|
||||
ahntt37I1FgSlgdZHuhdtl1h1DBKXqCCneOZuNj+kW5ib14u5HDfFIbec2HJbvVs
|
||||
lJ/k83kCgYB4TD8vgHetXHxqsiZDoy5wOnQ3mmFAfl8ZdQsIfov6kEgArwPYUOVB
|
||||
JsX84f+MFjIOKXUV8dHZ8VRrGCLAbXcxKqLNWKlKHUnEsvt63pkaTy/RKHyQS+pn
|
||||
wontdTt9EtbF+CqIWnm2wpn3O+SbdtawzPOL1CcGB0jYABwbeQ81RwIUFKdyRYaa
|
||||
INow2I3/ks+0MxDabTY=
|
||||
-----END DSA PRIVATE KEY-----
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIBPAIBAAJBAMfAjvBNDDYBCl1w3yNcagZkPhqd0q5KqeOTgKSLuJWfe5+VSeR5
|
||||
Y1PcF3DyH8dvS3t8PIQjxJLoKS7HVRlsfhECAwEAAQJBAIr93/gxhIenXbD7MykF
|
||||
yvi7k8MtgkWoymICZwcX+c6RudFyuPPfQJ/sf6RmFZlRA9X9CQm5NwVG7+x1Yi6t
|
||||
KoECIQDmJUCWkPCiQYow6YxetpXFa0K6hTzOPmax7MNHVWNgmQIhAN4xOZ4JFT34
|
||||
xVhK+8EudBCYRomJUHmOJfoQAxiIXVw5AiEAyB7ecc5on/5zhqKef4Eu7LKfHIdc
|
||||
304diFuDVpTmTAkCIC2ZmKOQZaWkSowGR4isCfHl7oQHhFaOD8k0RA5i3hYxAiEA
|
||||
n8lDw3JT6NjvMnD6aM8KBsLyhazWSVVkaUSqmJzgCF0=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
EOT
|
||||
|
63
third_party/python/pyasn1-modules/test/pkcs7.sh
vendored
63
third_party/python/pyasn1-modules/test/pkcs7.sh
vendored
@ -1,63 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
pkcs7dump.py <<EOT
|
||||
-----BEGIN PKCS7-----
|
||||
MIIKdQYJKoZIhvcNAQcCoIIKZjCCCmICAQExADALBgkqhkiG9w0BBwGgggpIMIIC
|
||||
XjCCAcegAwIBAgIBADANBgkqhkiG9w0BAQQFADB1MQswCQYDVQQGEwJSVTEPMA0G
|
||||
A1UEBxMGTW9zY293MRcwFQYDVQQKEw5Tb3ZhbSBUZWxlcG9ydDEMMAoGA1UECxMD
|
||||
TklTMQ8wDQYDVQQDEwZBQlMgQ0ExHTAbBgkqhkiG9w0BCQEWDmNlcnRAb25saW5l
|
||||
LnJ1MB4XDTk5MDgxNTE5MDI1OFoXDTAwMDExMjE5MDI1OFowdTELMAkGA1UEBhMC
|
||||
UlUxDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMOU292YW0gVGVsZXBvcnQxDDAK
|
||||
BgNVBAsTA05JUzEPMA0GA1UEAxMGQUJTIENBMR0wGwYJKoZIhvcNAQkBFg5jZXJ0
|
||||
QG9ubGluZS5ydTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAw0g1P0yQAZIi
|
||||
ml2XOCOxnCcuhHmAgj4Ei9M2ebrrGwUMONPzr1a8W7JcpnR3FeOjxEIxrzkHr6UA
|
||||
oj4l/oC7Rv28uIig+Okf+82ekhH6VgAQNr5LAzfN8J6dZLx2OXAmmLleAqHuisT7
|
||||
I40vEFRoRmC5hiMlILE2rIlIKJn6cUkCAwEAATANBgkqhkiG9w0BAQQFAAOBgQBZ
|
||||
7ELDfGUNb+fbpHl5W3d9JMXsdOgd96+HG+X1SPgeiRAMjkla8WFCSaQPIR4vCy0m
|
||||
tm5a2bWSji6+vP5FGbjOz5iMlHMrCtu0He7Eim2zpaGI06ZIY75Cn1h2r3+KS0/R
|
||||
h01TJUbmsfV1tZm6Wk3bayJ+/K8A4mBHv8P6rhYacDCCAowwggH1oAMCAQICAQAw
|
||||
DQYJKoZIhvcNAQEEBQAwgYsxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cx
|
||||
FzAVBgNVBAoTDkdvbGRlbiBUZWxlY29tMQwwCgYDVQQLEwNST0wxHjAcBgNVBAMT
|
||||
FUdvbGRlbiBUZWxlY29tIEFCUyBDQTEkMCIGCSqGSIb3DQEJARYVY2VydEBnb2xk
|
||||
ZW50ZWxlY29tLnJ1MB4XDTAwMDEwNTE1MDY1MVoXDTEwMDExNTE1MDY1MVowgYsx
|
||||
CzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkdvbGRlbiBU
|
||||
ZWxlY29tMQwwCgYDVQQLEwNST0wxHjAcBgNVBAMTFUdvbGRlbiBUZWxlY29tIEFC
|
||||
UyBDQTEkMCIGCSqGSIb3DQEJARYVY2VydEBnb2xkZW50ZWxlY29tLnJ1MIGfMA0G
|
||||
CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPFel/Svli6ogoUEb6eLtEvNSjyalETSMP
|
||||
MIZXdmWIkWijvEUhDnNJVAE3knAt6dVYqxWq0vc6CbAGFZNqEyioGU48IECLzV0G
|
||||
toiYejF/c9PuyIKDejeV9/YZnNFaZAUOXhOjREdZURLISKhX4tAbQyvK0Qka9AAR
|
||||
MEy9DoqV8QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAHQzgqFkoSMQr077UCr5C0l1
|
||||
rxLA17TrocCmUC1/PLmN0LmUHD0d7TjjTQKJaJBHxcKIg6+FOY6LSSY4nAN79eXi
|
||||
nBz+jEUG7+NTU/jcEArI35yP7fi4Mwb96EYDmUkUGtcLNq3JBe/d1Zhmy9HnNBL1
|
||||
Dn9thM2Q8RPYAJIU3JnGMIICqTCCAhICAQAwDQYJKoZIhvcNAQEEBQAwgZwxCzAJ
|
||||
BgNVBAYTAlJVMQ8wDQYDVQQIEwZNb3Njb3cxDzANBgNVBAcTBk1vc2NvdzEXMBUG
|
||||
A1UEChMOR29sZGVuIFRlbGVjb20xDDAKBgNVBAsTA1JPTDEeMBwGA1UEAxMVR29s
|
||||
ZGVuIFRlbGVjb20gQUJTIENBMSQwIgYJKoZIhvcNAQkBFhVjZXJ0QGdvbGRlbnRl
|
||||
bGVjb20ucnUwHhcNMTAwMTE1MTU0MDI2WhcNMjAwMjIyMTU0MDI2WjCBnDELMAkG
|
||||
A1UEBhMCUlUxDzANBgNVBAgTBk1vc2NvdzEPMA0GA1UEBxMGTW9zY293MRcwFQYD
|
||||
VQQKEw5Hb2xkZW4gVGVsZWNvbTEMMAoGA1UECxMDUk9MMR4wHAYDVQQDExVHb2xk
|
||||
ZW4gVGVsZWNvbSBBQlMgQ0ExJDAiBgkqhkiG9w0BCQEWFWNlcnRAZ29sZGVudGVs
|
||||
ZWNvbS5ydTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzxXpf0r5YuqIKFBG
|
||||
+ni7RLzUo8mpRE0jDzCGV3ZliJFoo7xFIQ5zSVQBN5JwLenVWKsVqtL3OgmwBhWT
|
||||
ahMoqBlOPCBAi81dBraImHoxf3PT7siCg3o3lff2GZzRWmQFDl4To0RHWVESyEio
|
||||
V+LQG0MrytEJGvQAETBMvQ6KlfECAwEAATANBgkqhkiG9w0BAQQFAAOBgQCMrS4T
|
||||
LIzxcpu8nwOq/xMcxW4Ctz/wjIoePWkmSLe+Tkb4zo7aTsvzn+ETaWb7qztUpyl0
|
||||
QvlXn4vC2iCJloPpofPqSzF1UV3g5Zb93ReZu7E6kEyW0ag8R5XZKv0xuR3b3Le+
|
||||
ZqolT8wQELd5Mmw5JPofZ+O2cGNvet8tYwOKFjCCAqUwggIOoAMCAQICAgboMA0G
|
||||
CSqGSIb3DQEBBAUAMIGcMQswCQYDVQQGEwJSVTEPMA0GA1UECBMGTW9zY293MQ8w
|
||||
DQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkdvbGRlbiBUZWxlY29tMQwwCgYDVQQL
|
||||
EwNST0wxHjAcBgNVBAMTFUdvbGRlbiBUZWxlY29tIEFCUyBDQTEkMCIGCSqGSIb3
|
||||
DQEJARYVY2VydEBnb2xkZW50ZWxlY29tLnJ1MB4XDTExMDEyODEyMTcwOVoXDTEy
|
||||
MDIwMTAwMDAwMFowdjELMAkGA1UEBhMCUlUxDDAKBgNVBAgTA04vQTEXMBUGA1UE
|
||||
ChMOR29sZGVuIFRlbGVjb20xDDAKBgNVBAsTA0lTUDEWMBQGA1UEAxMNY3JheS5n
|
||||
bGFzLm5ldDEaMBgGCSqGSIb3DQEJARYLZWxpZUByb2wucnUwgZ8wDQYJKoZIhvcN
|
||||
AQEBBQADgY0AMIGJAoGBAPJAm8KG3ZCoJSvoGmLMPlGaMIpadu/EGSEYu+M/ybLp
|
||||
Cs8XmwB3876JVKKCbtGI6eqxOqvjedYXb+nKcyhz4Ztmm8RgAD7Z1WUItIpatejT
|
||||
79EYOUWrDN713SLZsImMyP4B4EySl4LZfHFRU2iOwLB6WozGCYuULLqYS9MDPrnT
|
||||
AgMBAAGjGzAZMBcGCWCGSAGG+EIBDQQKFghDPS07Uz0tOzANBgkqhkiG9w0BAQQF
|
||||
AAOBgQDEttS70qYCA+MGBA3hOR88XiBcTmuBarJDwn/rj31vRjYZUgp9bbFwscRI
|
||||
Ic4lDnlyvunwNitl+341bDg7u6Ebu9hCMbciyu4EtrsDh77DlLzbmNcXbnhlvbFL
|
||||
K9GiPz3dNyvQMfmaA0twd62zJDOVJ1SmO04lLmu/pAx8GhBZkqEAMQA=
|
||||
-----END PKCS7-----
|
||||
EOT
|
||||
|
26
third_party/python/pyasn1-modules/test/pkcs8.sh
vendored
26
third_party/python/pyasn1-modules/test/pkcs8.sh
vendored
@ -1,26 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
pkcs8dump.py <<EOT
|
||||
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
||||
MIIBgTAbBgkqhkiG9w0BBQMwDgQIdtFgDWnipT8CAggABIIBYN0hkm2xqkTCt8dJ
|
||||
iZS8+HNiyHxy8g+rmWSXv/i+bTHFUReZA2GINtTRUkWpXqWcSHxNslgf7QdfgbVJ
|
||||
xQiUM+lLhwOFh85iAHR3xmPU1wfN9NvY9DiLSpM0DMhF3OvAMZD75zIhA0GSKu7w
|
||||
dUu7ey7H4fv7bez6RhEyLdKw9/Lf2KNStNOs4ow9CAtCoxeoMSniTt6CNhbvCkve
|
||||
9vNHKiGavX1tS/YTog4wiiGzh2YxuW1RiQpTdhWiKyECgD8qQVg2tY5t3QRcXrzi
|
||||
OkStpkiAPAbiwS/gyHpsqiLo0al63SCxRefugbn1ucZyc5Ya59e3xNFQXCNhYl+Z
|
||||
Hl3hIl3cssdWZkJ455Z/bBE29ks1HtsL+bTfFi+kw/4yuMzoaB8C7rXScpGNI/8E
|
||||
pvTU2+wtuoOFcttJregtR94ZHu5wgdYqRydmFNG8PnvZT1mRMmQgUe/vp88FMmsZ
|
||||
dLsZjNQ=
|
||||
-----END ENCRYPTED PRIVATE KEY-----
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAx8CO8E0MNgEKXXDf
|
||||
I1xqBmQ+Gp3Srkqp45OApIu4lZ97n5VJ5HljU9wXcPIfx29Le3w8hCPEkugpLsdV
|
||||
GWx+EQIDAQABAkEAiv3f+DGEh6ddsPszKQXK+LuTwy2CRajKYgJnBxf5zpG50XK4
|
||||
899An+x/pGYVmVED1f0JCbk3BUbv7HViLq0qgQIhAOYlQJaQ8KJBijDpjF62lcVr
|
||||
QrqFPM4+ZrHsw0dVY2CZAiEA3jE5ngkVPfjFWEr7wS50EJhGiYlQeY4l+hADGIhd
|
||||
XDkCIQDIHt5xzmif/nOGop5/gS7ssp8ch1zfTh2IW4NWlOZMCQIgLZmYo5BlpaRK
|
||||
jAZHiKwJ8eXuhAeEVo4PyTREDmLeFjECIQCfyUPDclPo2O8ycPpozwoGwvKFrNZJ
|
||||
VWRpRKqYnOAIXQ==
|
||||
-----END PRIVATE KEY-----
|
||||
EOT
|
||||
|
@ -1,23 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
x509dump.py <<EOT
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
|
||||
IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
|
||||
BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
|
||||
aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
|
||||
9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy
|
||||
NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
|
||||
azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
||||
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
|
||||
Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
|
||||
cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD
|
||||
cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs
|
||||
2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY
|
||||
JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE
|
||||
Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ
|
||||
n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A
|
||||
PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu
|
||||
-----END CERTIFICATE-----
|
||||
EOT
|
||||
|
1
third_party/python/pyasn1-modules/tests/__init__.py
vendored
Normal file
1
third_party/python/pyasn1-modules/tests/__init__.py
vendored
Normal file
@ -0,0 +1 @@
|
||||
# This file is necessary to make this directory a package.
|
28
third_party/python/pyasn1-modules/tests/__main__.py
vendored
Normal file
28
third_party/python/pyasn1-modules/tests/__main__.py
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromNames(
|
||||
['tests.test_rfc2314.suite',
|
||||
'tests.test_rfc2315.suite',
|
||||
'tests.test_rfc2437.suite',
|
||||
'tests.test_rfc2459.suite',
|
||||
'tests.test_rfc2511.suite',
|
||||
'tests.test_rfc2560.suite',
|
||||
'tests.test_rfc4210.suite',
|
||||
'tests.test_rfc5208.suite',
|
||||
'tests.test_rfc5280.suite',
|
||||
'tests.test_rfc5652.suite',]
|
||||
)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.TextTestRunner(verbosity=2).run(suite)
|
@ -1,7 +1,23 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import sys
|
||||
from pyasn1.codec.der import decoder as der_decoder
|
||||
from pyasn1.codec.der import encoder as der_encoder
|
||||
|
||||
pkcs10dump.py <<EOT
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
from pyasn1_modules import rfc2314, pem
|
||||
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
|
||||
class CertificationRequestTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIIDATCCAekCAQAwgZkxCzAJBgNVBAYTAlJVMRYwFAYDVQQIEw1Nb3Njb3cgUmVn
|
||||
aW9uMQ8wDQYDVQQHEwZNb3Njb3cxGjAYBgNVBAoTEVNOTVAgTGFib3JhdG9yaWVz
|
||||
MQwwCgYDVQQLFANSJkQxFTATBgNVBAMTDHNubXBsYWJzLmNvbTEgMB4GCSqGSIb3
|
||||
@ -19,6 +35,23 @@ Nv8sBmp9I1GdhGg52DIaWwL4t9O5WUHgfHSJpPxZ/zMP2qIsdPJ+8o19BbXRlufc
|
||||
WdApGGm0BePdLqboW1Yv70WRRFFD8sxeT7Yw4qrJojdnq0xMHPGfKpf6dJsqWkHk
|
||||
b5DRbjil1Zt9pJuF680S9wtBzSi0hsMHXR9TzS7HpMjykL2nmCVY6A78MZapsCzn
|
||||
GGbx7DI=
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
EOT
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc2314.CertificationRequest()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.TextTestRunner(verbosity=2).run(suite)
|
179
third_party/python/pyasn1-modules/tests/test_rfc2315.py
vendored
Normal file
179
third_party/python/pyasn1-modules/tests/test_rfc2315.py
vendored
Normal file
@ -0,0 +1,179 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import sys
|
||||
from pyasn1.codec.der import decoder as der_decoder
|
||||
from pyasn1.codec.der import encoder as der_encoder
|
||||
|
||||
from pyasn1_modules import rfc2315, pem
|
||||
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
|
||||
class Pkcs7TestCase(unittest.TestCase):
|
||||
pem_text_unordered = """\
|
||||
MIIKdQYJKoZIhvcNAQcCoIIKZjCCCmICAQExADALBgkqhkiG9w0BBwGgggpIMIIC
|
||||
XjCCAcegAwIBAgIBADANBgkqhkiG9w0BAQQFADB1MQswCQYDVQQGEwJSVTEPMA0G
|
||||
A1UEBxMGTW9zY293MRcwFQYDVQQKEw5Tb3ZhbSBUZWxlcG9ydDEMMAoGA1UECxMD
|
||||
TklTMQ8wDQYDVQQDEwZBQlMgQ0ExHTAbBgkqhkiG9w0BCQEWDmNlcnRAb25saW5l
|
||||
LnJ1MB4XDTk5MDgxNTE5MDI1OFoXDTAwMDExMjE5MDI1OFowdTELMAkGA1UEBhMC
|
||||
UlUxDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMOU292YW0gVGVsZXBvcnQxDDAK
|
||||
BgNVBAsTA05JUzEPMA0GA1UEAxMGQUJTIENBMR0wGwYJKoZIhvcNAQkBFg5jZXJ0
|
||||
QG9ubGluZS5ydTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAw0g1P0yQAZIi
|
||||
ml2XOCOxnCcuhHmAgj4Ei9M2ebrrGwUMONPzr1a8W7JcpnR3FeOjxEIxrzkHr6UA
|
||||
oj4l/oC7Rv28uIig+Okf+82ekhH6VgAQNr5LAzfN8J6dZLx2OXAmmLleAqHuisT7
|
||||
I40vEFRoRmC5hiMlILE2rIlIKJn6cUkCAwEAATANBgkqhkiG9w0BAQQFAAOBgQBZ
|
||||
7ELDfGUNb+fbpHl5W3d9JMXsdOgd96+HG+X1SPgeiRAMjkla8WFCSaQPIR4vCy0m
|
||||
tm5a2bWSji6+vP5FGbjOz5iMlHMrCtu0He7Eim2zpaGI06ZIY75Cn1h2r3+KS0/R
|
||||
h01TJUbmsfV1tZm6Wk3bayJ+/K8A4mBHv8P6rhYacDCCAowwggH1oAMCAQICAQAw
|
||||
DQYJKoZIhvcNAQEEBQAwgYsxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cx
|
||||
FzAVBgNVBAoTDkdvbGRlbiBUZWxlY29tMQwwCgYDVQQLEwNST0wxHjAcBgNVBAMT
|
||||
FUdvbGRlbiBUZWxlY29tIEFCUyBDQTEkMCIGCSqGSIb3DQEJARYVY2VydEBnb2xk
|
||||
ZW50ZWxlY29tLnJ1MB4XDTAwMDEwNTE1MDY1MVoXDTEwMDExNTE1MDY1MVowgYsx
|
||||
CzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkdvbGRlbiBU
|
||||
ZWxlY29tMQwwCgYDVQQLEwNST0wxHjAcBgNVBAMTFUdvbGRlbiBUZWxlY29tIEFC
|
||||
UyBDQTEkMCIGCSqGSIb3DQEJARYVY2VydEBnb2xkZW50ZWxlY29tLnJ1MIGfMA0G
|
||||
CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPFel/Svli6ogoUEb6eLtEvNSjyalETSMP
|
||||
MIZXdmWIkWijvEUhDnNJVAE3knAt6dVYqxWq0vc6CbAGFZNqEyioGU48IECLzV0G
|
||||
toiYejF/c9PuyIKDejeV9/YZnNFaZAUOXhOjREdZURLISKhX4tAbQyvK0Qka9AAR
|
||||
MEy9DoqV8QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAHQzgqFkoSMQr077UCr5C0l1
|
||||
rxLA17TrocCmUC1/PLmN0LmUHD0d7TjjTQKJaJBHxcKIg6+FOY6LSSY4nAN79eXi
|
||||
nBz+jEUG7+NTU/jcEArI35yP7fi4Mwb96EYDmUkUGtcLNq3JBe/d1Zhmy9HnNBL1
|
||||
Dn9thM2Q8RPYAJIU3JnGMIICqTCCAhICAQAwDQYJKoZIhvcNAQEEBQAwgZwxCzAJ
|
||||
BgNVBAYTAlJVMQ8wDQYDVQQIEwZNb3Njb3cxDzANBgNVBAcTBk1vc2NvdzEXMBUG
|
||||
A1UEChMOR29sZGVuIFRlbGVjb20xDDAKBgNVBAsTA1JPTDEeMBwGA1UEAxMVR29s
|
||||
ZGVuIFRlbGVjb20gQUJTIENBMSQwIgYJKoZIhvcNAQkBFhVjZXJ0QGdvbGRlbnRl
|
||||
bGVjb20ucnUwHhcNMTAwMTE1MTU0MDI2WhcNMjAwMjIyMTU0MDI2WjCBnDELMAkG
|
||||
A1UEBhMCUlUxDzANBgNVBAgTBk1vc2NvdzEPMA0GA1UEBxMGTW9zY293MRcwFQYD
|
||||
VQQKEw5Hb2xkZW4gVGVsZWNvbTEMMAoGA1UECxMDUk9MMR4wHAYDVQQDExVHb2xk
|
||||
ZW4gVGVsZWNvbSBBQlMgQ0ExJDAiBgkqhkiG9w0BCQEWFWNlcnRAZ29sZGVudGVs
|
||||
ZWNvbS5ydTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzxXpf0r5YuqIKFBG
|
||||
+ni7RLzUo8mpRE0jDzCGV3ZliJFoo7xFIQ5zSVQBN5JwLenVWKsVqtL3OgmwBhWT
|
||||
ahMoqBlOPCBAi81dBraImHoxf3PT7siCg3o3lff2GZzRWmQFDl4To0RHWVESyEio
|
||||
V+LQG0MrytEJGvQAETBMvQ6KlfECAwEAATANBgkqhkiG9w0BAQQFAAOBgQCMrS4T
|
||||
LIzxcpu8nwOq/xMcxW4Ctz/wjIoePWkmSLe+Tkb4zo7aTsvzn+ETaWb7qztUpyl0
|
||||
QvlXn4vC2iCJloPpofPqSzF1UV3g5Zb93ReZu7E6kEyW0ag8R5XZKv0xuR3b3Le+
|
||||
ZqolT8wQELd5Mmw5JPofZ+O2cGNvet8tYwOKFjCCAqUwggIOoAMCAQICAgboMA0G
|
||||
CSqGSIb3DQEBBAUAMIGcMQswCQYDVQQGEwJSVTEPMA0GA1UECBMGTW9zY293MQ8w
|
||||
DQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkdvbGRlbiBUZWxlY29tMQwwCgYDVQQL
|
||||
EwNST0wxHjAcBgNVBAMTFUdvbGRlbiBUZWxlY29tIEFCUyBDQTEkMCIGCSqGSIb3
|
||||
DQEJARYVY2VydEBnb2xkZW50ZWxlY29tLnJ1MB4XDTExMDEyODEyMTcwOVoXDTEy
|
||||
MDIwMTAwMDAwMFowdjELMAkGA1UEBhMCUlUxDDAKBgNVBAgTA04vQTEXMBUGA1UE
|
||||
ChMOR29sZGVuIFRlbGVjb20xDDAKBgNVBAsTA0lTUDEWMBQGA1UEAxMNY3JheS5n
|
||||
bGFzLm5ldDEaMBgGCSqGSIb3DQEJARYLZWxpZUByb2wucnUwgZ8wDQYJKoZIhvcN
|
||||
AQEBBQADgY0AMIGJAoGBAPJAm8KG3ZCoJSvoGmLMPlGaMIpadu/EGSEYu+M/ybLp
|
||||
Cs8XmwB3876JVKKCbtGI6eqxOqvjedYXb+nKcyhz4Ztmm8RgAD7Z1WUItIpatejT
|
||||
79EYOUWrDN713SLZsImMyP4B4EySl4LZfHFRU2iOwLB6WozGCYuULLqYS9MDPrnT
|
||||
AgMBAAGjGzAZMBcGCWCGSAGG+EIBDQQKFghDPS07Uz0tOzANBgkqhkiG9w0BAQQF
|
||||
AAOBgQDEttS70qYCA+MGBA3hOR88XiBcTmuBarJDwn/rj31vRjYZUgp9bbFwscRI
|
||||
Ic4lDnlyvunwNitl+341bDg7u6Ebu9hCMbciyu4EtrsDh77DlLzbmNcXbnhlvbFL
|
||||
K9GiPz3dNyvQMfmaA0twd62zJDOVJ1SmO04lLmu/pAx8GhBZkqEAMQA=
|
||||
"""
|
||||
|
||||
pem_text_reordered = """\
|
||||
MIIKcwYJKoZIhvcNAQcCoIIKZDCCCmACAQExADALBgkqhkiG9w0BBwGgggpIMIIC
|
||||
XjCCAcegAwIBAgIBADANBgkqhkiG9w0BAQQFADB1MQswCQYDVQQGEwJSVTEPMA0G
|
||||
A1UEBxMGTW9zY293MRcwFQYDVQQKEw5Tb3ZhbSBUZWxlcG9ydDEMMAoGA1UECxMD
|
||||
TklTMQ8wDQYDVQQDEwZBQlMgQ0ExHTAbBgkqhkiG9w0BCQEWDmNlcnRAb25saW5l
|
||||
LnJ1MB4XDTk5MDgxNTE5MDI1OFoXDTAwMDExMjE5MDI1OFowdTELMAkGA1UEBhMC
|
||||
UlUxDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMOU292YW0gVGVsZXBvcnQxDDAK
|
||||
BgNVBAsTA05JUzEPMA0GA1UEAxMGQUJTIENBMR0wGwYJKoZIhvcNAQkBFg5jZXJ0
|
||||
QG9ubGluZS5ydTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAw0g1P0yQAZIi
|
||||
ml2XOCOxnCcuhHmAgj4Ei9M2ebrrGwUMONPzr1a8W7JcpnR3FeOjxEIxrzkHr6UA
|
||||
oj4l/oC7Rv28uIig+Okf+82ekhH6VgAQNr5LAzfN8J6dZLx2OXAmmLleAqHuisT7
|
||||
I40vEFRoRmC5hiMlILE2rIlIKJn6cUkCAwEAATANBgkqhkiG9w0BAQQFAAOBgQBZ
|
||||
7ELDfGUNb+fbpHl5W3d9JMXsdOgd96+HG+X1SPgeiRAMjkla8WFCSaQPIR4vCy0m
|
||||
tm5a2bWSji6+vP5FGbjOz5iMlHMrCtu0He7Eim2zpaGI06ZIY75Cn1h2r3+KS0/R
|
||||
h01TJUbmsfV1tZm6Wk3bayJ+/K8A4mBHv8P6rhYacDCCAowwggH1oAMCAQICAQAw
|
||||
DQYJKoZIhvcNAQEEBQAwgYsxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cx
|
||||
FzAVBgNVBAoTDkdvbGRlbiBUZWxlY29tMQwwCgYDVQQLEwNST0wxHjAcBgNVBAMT
|
||||
FUdvbGRlbiBUZWxlY29tIEFCUyBDQTEkMCIGCSqGSIb3DQEJARYVY2VydEBnb2xk
|
||||
ZW50ZWxlY29tLnJ1MB4XDTAwMDEwNTE1MDY1MVoXDTEwMDExNTE1MDY1MVowgYsx
|
||||
CzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkdvbGRlbiBU
|
||||
ZWxlY29tMQwwCgYDVQQLEwNST0wxHjAcBgNVBAMTFUdvbGRlbiBUZWxlY29tIEFC
|
||||
UyBDQTEkMCIGCSqGSIb3DQEJARYVY2VydEBnb2xkZW50ZWxlY29tLnJ1MIGfMA0G
|
||||
CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPFel/Svli6ogoUEb6eLtEvNSjyalETSMP
|
||||
MIZXdmWIkWijvEUhDnNJVAE3knAt6dVYqxWq0vc6CbAGFZNqEyioGU48IECLzV0G
|
||||
toiYejF/c9PuyIKDejeV9/YZnNFaZAUOXhOjREdZURLISKhX4tAbQyvK0Qka9AAR
|
||||
MEy9DoqV8QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAHQzgqFkoSMQr077UCr5C0l1
|
||||
rxLA17TrocCmUC1/PLmN0LmUHD0d7TjjTQKJaJBHxcKIg6+FOY6LSSY4nAN79eXi
|
||||
nBz+jEUG7+NTU/jcEArI35yP7fi4Mwb96EYDmUkUGtcLNq3JBe/d1Zhmy9HnNBL1
|
||||
Dn9thM2Q8RPYAJIU3JnGMIICpTCCAg6gAwIBAgICBugwDQYJKoZIhvcNAQEEBQAw
|
||||
gZwxCzAJBgNVBAYTAlJVMQ8wDQYDVQQIEwZNb3Njb3cxDzANBgNVBAcTBk1vc2Nv
|
||||
dzEXMBUGA1UEChMOR29sZGVuIFRlbGVjb20xDDAKBgNVBAsTA1JPTDEeMBwGA1UE
|
||||
AxMVR29sZGVuIFRlbGVjb20gQUJTIENBMSQwIgYJKoZIhvcNAQkBFhVjZXJ0QGdv
|
||||
bGRlbnRlbGVjb20ucnUwHhcNMTEwMTI4MTIxNzA5WhcNMTIwMjAxMDAwMDAwWjB2
|
||||
MQswCQYDVQQGEwJSVTEMMAoGA1UECBMDTi9BMRcwFQYDVQQKEw5Hb2xkZW4gVGVs
|
||||
ZWNvbTEMMAoGA1UECxMDSVNQMRYwFAYDVQQDEw1jcmF5LmdsYXMubmV0MRowGAYJ
|
||||
KoZIhvcNAQkBFgtlbGllQHJvbC5ydTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
|
||||
gYEA8kCbwobdkKglK+gaYsw+UZowilp278QZIRi74z/JsukKzxebAHfzvolUooJu
|
||||
0Yjp6rE6q+N51hdv6cpzKHPhm2abxGAAPtnVZQi0ilq16NPv0Rg5RasM3vXdItmw
|
||||
iYzI/gHgTJKXgtl8cVFTaI7AsHpajMYJi5QsuphL0wM+udMCAwEAAaMbMBkwFwYJ
|
||||
YIZIAYb4QgENBAoWCEM9LTtTPS07MA0GCSqGSIb3DQEBBAUAA4GBAMS21LvSpgID
|
||||
4wYEDeE5HzxeIFxOa4FqskPCf+uPfW9GNhlSCn1tsXCxxEghziUOeXK+6fA2K2X7
|
||||
fjVsODu7oRu72EIxtyLK7gS2uwOHvsOUvNuY1xdueGW9sUsr0aI/Pd03K9Ax+ZoD
|
||||
S3B3rbMkM5UnVKY7TiUua7+kDHwaEFmSMIICqTCCAhICAQAwDQYJKoZIhvcNAQEE
|
||||
BQAwgZwxCzAJBgNVBAYTAlJVMQ8wDQYDVQQIEwZNb3Njb3cxDzANBgNVBAcTBk1v
|
||||
c2NvdzEXMBUGA1UEChMOR29sZGVuIFRlbGVjb20xDDAKBgNVBAsTA1JPTDEeMBwG
|
||||
A1UEAxMVR29sZGVuIFRlbGVjb20gQUJTIENBMSQwIgYJKoZIhvcNAQkBFhVjZXJ0
|
||||
QGdvbGRlbnRlbGVjb20ucnUwHhcNMTAwMTE1MTU0MDI2WhcNMjAwMjIyMTU0MDI2
|
||||
WjCBnDELMAkGA1UEBhMCUlUxDzANBgNVBAgTBk1vc2NvdzEPMA0GA1UEBxMGTW9z
|
||||
Y293MRcwFQYDVQQKEw5Hb2xkZW4gVGVsZWNvbTEMMAoGA1UECxMDUk9MMR4wHAYD
|
||||
VQQDExVHb2xkZW4gVGVsZWNvbSBBQlMgQ0ExJDAiBgkqhkiG9w0BCQEWFWNlcnRA
|
||||
Z29sZGVudGVsZWNvbS5ydTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzxXp
|
||||
f0r5YuqIKFBG+ni7RLzUo8mpRE0jDzCGV3ZliJFoo7xFIQ5zSVQBN5JwLenVWKsV
|
||||
qtL3OgmwBhWTahMoqBlOPCBAi81dBraImHoxf3PT7siCg3o3lff2GZzRWmQFDl4T
|
||||
o0RHWVESyEioV+LQG0MrytEJGvQAETBMvQ6KlfECAwEAATANBgkqhkiG9w0BAQQF
|
||||
AAOBgQCMrS4TLIzxcpu8nwOq/xMcxW4Ctz/wjIoePWkmSLe+Tkb4zo7aTsvzn+ET
|
||||
aWb7qztUpyl0QvlXn4vC2iCJloPpofPqSzF1UV3g5Zb93ReZu7E6kEyW0ag8R5XZ
|
||||
Kv0xuR3b3Le+ZqolT8wQELd5Mmw5JPofZ+O2cGNvet8tYwOKFjEA
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc2315.ContentInfo()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text_unordered)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
contentType = asn1Object['contentType']
|
||||
substrate = asn1Object['content']
|
||||
|
||||
contentInfoMap = {
|
||||
(1, 2, 840, 113549, 1, 7, 1): rfc2315.Data(),
|
||||
(1, 2, 840, 113549, 1, 7, 2): rfc2315.SignedData(),
|
||||
(1, 2, 840, 113549, 1, 7, 3): rfc2315.EnvelopedData(),
|
||||
(1, 2, 840, 113549, 1, 7, 4): rfc2315.SignedAndEnvelopedData(),
|
||||
(1, 2, 840, 113549, 1, 7, 5): rfc2315.DigestedData(),
|
||||
(1, 2, 840, 113549, 1, 7, 6): rfc2315.EncryptedData()
|
||||
}
|
||||
|
||||
innerAsn1Object, rest = der_decoder.decode(
|
||||
substrate, asn1Spec=contentInfoMap[contentType]
|
||||
)
|
||||
|
||||
asn1Object['content'] = der_encoder.encode(innerAsn1Object)
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text_reordered)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.TextTestRunner(verbosity=2).run(suite)
|
47
third_party/python/pyasn1-modules/tests/test_rfc2437.py
vendored
Normal file
47
third_party/python/pyasn1-modules/tests/test_rfc2437.py
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import sys
|
||||
from pyasn1.codec.der import decoder as der_decoder
|
||||
from pyasn1.codec.der import encoder as der_encoder
|
||||
|
||||
from pyasn1_modules import rfc2437, pem
|
||||
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
|
||||
class RSAPrivateKeyTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIIBPAIBAAJBAMfAjvBNDDYBCl1w3yNcagZkPhqd0q5KqeOTgKSLuJWfe5+VSeR5
|
||||
Y1PcF3DyH8dvS3t8PIQjxJLoKS7HVRlsfhECAwEAAQJBAIr93/gxhIenXbD7MykF
|
||||
yvi7k8MtgkWoymICZwcX+c6RudFyuPPfQJ/sf6RmFZlRA9X9CQm5NwVG7+x1Yi6t
|
||||
KoECIQDmJUCWkPCiQYow6YxetpXFa0K6hTzOPmax7MNHVWNgmQIhAN4xOZ4JFT34
|
||||
xVhK+8EudBCYRomJUHmOJfoQAxiIXVw5AiEAyB7ecc5on/5zhqKef4Eu7LKfHIdc
|
||||
304diFuDVpTmTAkCIC2ZmKOQZaWkSowGR4isCfHl7oQHhFaOD8k0RA5i3hYxAiEA
|
||||
n8lDw3JT6NjvMnD6aM8KBsLyhazWSVVkaUSqmJzgCF0=
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc2437.RSAPrivateKey()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.TextTestRunner(verbosity=2).run(suite)
|
111
third_party/python/pyasn1-modules/tests/test_rfc2459.py
vendored
Normal file
111
third_party/python/pyasn1-modules/tests/test_rfc2459.py
vendored
Normal file
@ -0,0 +1,111 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import sys
|
||||
from pyasn1.codec.der import decoder as der_decoder
|
||||
from pyasn1.codec.der import encoder as der_encoder
|
||||
|
||||
from pyasn1_modules import rfc2459, pem
|
||||
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
|
||||
class CertificateTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
|
||||
IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
|
||||
BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
|
||||
aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
|
||||
9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy
|
||||
NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
|
||||
azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
||||
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
|
||||
Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
|
||||
cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD
|
||||
cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs
|
||||
2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY
|
||||
JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE
|
||||
Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ
|
||||
n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A
|
||||
PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc2459.Certificate()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
class CertificateListTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIIBVjCBwAIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJBVTETMBEGA1UE
|
||||
CBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRk
|
||||
MRUwEwYDVQQDEwxzbm1wbGFicy5jb20xIDAeBgkqhkiG9w0BCQEWEWluZm9Ac25t
|
||||
cGxhYnMuY29tFw0xMjA0MTExMzQwNTlaFw0xMjA1MTExMzQwNTlaoA4wDDAKBgNV
|
||||
HRQEAwIBATANBgkqhkiG9w0BAQUFAAOBgQC1D/wwnrcY/uFBHGc6SyoYss2kn+nY
|
||||
RTwzXmmldbNTCQ03x5vkWGGIaRJdN8QeCzbEi7gpgxgpxAx6Y5WkxkMQ1UPjNM5n
|
||||
DGVDOtR0dskFrrbHuNpWqWrDaBN0/ryZiWKjr9JRbrpkHgVY29I1gLooQ6IHuKHY
|
||||
vjnIhxTFoCb5vA==
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc2459.CertificateList()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
class DSAPrivateKeyTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIIBugIBAAKBgQCN91+Cma8UPw09gjwP9WOJCdpv3mv3/qFqzgiODGZx0Q002iTl
|
||||
1dq36m5TsWYFEcMCEyC3tFuoQ0mGq5zUUOmJvHCIPufs0g8Av0fhY77uFqneHHUi
|
||||
VQMCPCHX9vTCWskmDE21LJppU27bR4H2q+ysE30d6u3+84qrItsn4bjpcQIVAPR5
|
||||
QrmooOXDn7fHJzshmxImGC4VAoGAXxKyEnlvzq93d4V6KLWX3H5Jk2JP771Ss1bT
|
||||
6D/mSbLlvjjo7qsj6diul1axu6Wny31oPertzA2FeGEzkqvjSNmSxyYYMDB3kEcx
|
||||
ahntt37I1FgSlgdZHuhdtl1h1DBKXqCCneOZuNj+kW5ib14u5HDfFIbec2HJbvVs
|
||||
lJ/k83kCgYB4TD8vgHetXHxqsiZDoy5wOnQ3mmFAfl8ZdQsIfov6kEgArwPYUOVB
|
||||
JsX84f+MFjIOKXUV8dHZ8VRrGCLAbXcxKqLNWKlKHUnEsvt63pkaTy/RKHyQS+pn
|
||||
wontdTt9EtbF+CqIWnm2wpn3O+SbdtawzPOL1CcGB0jYABwbeQ81RwIUFKdyRYaa
|
||||
INow2I3/ks+0MxDabTY=
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc2459.DSAPrivateKey()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.TextTestRunner(verbosity=2).run(suite)
|
49
third_party/python/pyasn1-modules/tests/test_rfc2511.py
vendored
Normal file
49
third_party/python/pyasn1-modules/tests/test_rfc2511.py
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import sys
|
||||
from pyasn1.codec.der import decoder as der_decoder
|
||||
from pyasn1.codec.der import encoder as der_encoder
|
||||
|
||||
from pyasn1_modules import rfc2511, pem
|
||||
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
|
||||
class CertificateReqTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIIBozCCAZ8wggEFAgUAwTnj2jCByoABAqURMA8xDTALBgNVBAMTBHVzZXKmgZ8w
|
||||
DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ6ZQ2cYbn/lFsmBOlRltbRbFQUvvE0Q
|
||||
nbopOu1kC7Bmaaz7QTx8nxeiHi4m7uxCbGGxHNoGCt7EmdG8eZUBNAcHyGlXrJdm
|
||||
0z3/uNEGiBHq+xB8FnFJCA5EIJ3RWFnlbu9otSITLxWK7c5+/NHmWM+yaeHD/f/h
|
||||
rp01c/8qXZfZAgMBAAGpEDAOBgNVHQ8BAf8EBAMCBeAwLzASBgkrBgEFBQcFAQEM
|
||||
BTExMTExMBkGCSsGAQUFBwUBAgwMc2VydmVyX21hZ2ljoYGTMA0GCSqGSIb3DQEB
|
||||
BQUAA4GBAEI3KNEvTq/n1kNVhNhPkovk1AZxyJrN1u1+7Gkc4PLjWwjLOjcEVWt4
|
||||
AajUk/gkIJ6bbeO+fZlMjHfPSDKcD6AV2hN+n72QZwfzcw3icNvBG1el9EU4XfIm
|
||||
xfu5YVWi81/fw8QQ6X6YGHFQkomLd7jxakVyjxSng9BhO6GpjJNF
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc2511.CertReqMessages()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.TextTestRunner(verbosity=2).run(suite)
|
@ -1,6 +1,43 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import sys
|
||||
from pyasn1.codec.der import decoder as der_decoder
|
||||
from pyasn1.codec.der import encoder as der_encoder
|
||||
|
||||
ocsprspdump.py <<EOT
|
||||
from pyasn1_modules import rfc2560, pem
|
||||
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
|
||||
class OCSPRequestTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MGowaDBBMD8wPTAJBgUrDgMCGgUABBS3ZrMV9C5Dko03aH13cEZeppg3wgQUkqR1LKSevoFE63n8
|
||||
isWVpesQdXMCBDXe9M+iIzAhMB8GCSsGAQUFBzABAgQSBBBjdJOiIW9EKJGELNNf/rdA
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc2560.OCSPRequest()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
class OCSPResponseTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIIEvQoBAKCCBLYwggSyBgkrBgEFBQcwAQEEggSjMIIEnzCCAQ+hgYAwfjELMAkGA1UEBhMCQVUx
|
||||
EzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEV
|
||||
MBMGA1UEAxMMc25tcGxhYnMuY29tMSAwHgYJKoZIhvcNAQkBFhFpbmZvQHNubXBsYWJzLmNvbRgP
|
||||
@ -23,4 +60,22 @@ yY57D4BNmlqnEcYwHwYDVR0jBBgwFoAU8Ys2dpJFLMHlyY57D4BNmlqnEcYwDQYJKoZIhvcNAQEF
|
||||
BQADgYEAWR0uFJVlQId6hVpUbgXFTpywtNitNXFiYYkRRv77McSJqLCa/c1wnuLmqcFcuRUK0oN6
|
||||
8ZJDP2HDDKe8MCZ8+sx+CF54eM8VCgN9uQ9XyE7x9XrXDd3Uw9RJVaWSIezkNKNeBE0lDM2jUjC4
|
||||
HAESdf7nebz1wtqAOXE1jWF/y8g=
|
||||
EOT
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc2560.OCSPResponse()
|
||||
|
||||
def testDerCodec(self):
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.TextTestRunner(verbosity=2).run(suite)
|
@ -1,6 +1,23 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import sys
|
||||
from pyasn1.codec.der import decoder as der_decoder
|
||||
from pyasn1.codec.der import encoder as der_encoder
|
||||
|
||||
cmpdump.py <<EOT
|
||||
from pyasn1_modules import rfc4210, pem
|
||||
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
|
||||
class PKIMessageTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIITuTCCARECAQKkWTBXMQswCQYDVQQGEwJUUjEQMA4GA1UEChMHRS1HdXZlbjEUMBIGA1UECxML
|
||||
VHJ1c3RDZW50ZXIxIDAeBgNVBAMTF1JTQSBTZWN1cml0eSBDTVAgU2VydmVypC0wKzELMAkGA1UE
|
||||
BhMCVFIxHDAaBgNVBAMME1ZhbGltby1WZXR0b3ItMTdEZWOgERgPMjAxMjA1MDMxMTE2MTdaoQ8w
|
||||
@ -90,4 +107,23 @@ vnCx2LfBn1wf1u7q30p/GgMVX+mR3QHs7feGewEjlkxuEyLVVD+uBwWCT6zcad17oaAyXV5RV28L
|
||||
vH0WNg6pFUpwOP0l+nIOqqCBhAOBgQBAtTB5Qd18sTxEKhSzRiN2OycFPrqoqlZZTHBohe8bE2D4
|
||||
Xc1ejkFWUEvQivkqJxCD6C7I37xgDaq8DZnaczIBxbPkY0QMdeL4MiEqlw/tlrJGrWoC5Twb0t/m
|
||||
JA5RSwQoMDYTj2WrwtM/nsP12T39or4JRZhlLSM43IaTwEBtQw==
|
||||
EOT
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc4210.PKIMessage()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.TextTestRunner(verbosity=2).run(suite)
|
74
third_party/python/pyasn1-modules/tests/test_rfc5208.py
vendored
Normal file
74
third_party/python/pyasn1-modules/tests/test_rfc5208.py
vendored
Normal file
@ -0,0 +1,74 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import sys
|
||||
from pyasn1.codec.der import decoder as der_decoder
|
||||
from pyasn1.codec.der import encoder as der_encoder
|
||||
|
||||
from pyasn1_modules import rfc5208, pem
|
||||
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
|
||||
class PrivateKeyInfoTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAx8CO8E0MNgEKXXDf
|
||||
I1xqBmQ+Gp3Srkqp45OApIu4lZ97n5VJ5HljU9wXcPIfx29Le3w8hCPEkugpLsdV
|
||||
GWx+EQIDAQABAkEAiv3f+DGEh6ddsPszKQXK+LuTwy2CRajKYgJnBxf5zpG50XK4
|
||||
899An+x/pGYVmVED1f0JCbk3BUbv7HViLq0qgQIhAOYlQJaQ8KJBijDpjF62lcVr
|
||||
QrqFPM4+ZrHsw0dVY2CZAiEA3jE5ngkVPfjFWEr7wS50EJhGiYlQeY4l+hADGIhd
|
||||
XDkCIQDIHt5xzmif/nOGop5/gS7ssp8ch1zfTh2IW4NWlOZMCQIgLZmYo5BlpaRK
|
||||
jAZHiKwJ8eXuhAeEVo4PyTREDmLeFjECIQCfyUPDclPo2O8ycPpozwoGwvKFrNZJ
|
||||
VWRpRKqYnOAIXQ==
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc5208.PrivateKeyInfo()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
class EncryptedPrivateKeyInfoInfoTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIIBgTAbBgkqhkiG9w0BBQMwDgQIdtFgDWnipT8CAggABIIBYN0hkm2xqkTCt8dJ
|
||||
iZS8+HNiyHxy8g+rmWSXv/i+bTHFUReZA2GINtTRUkWpXqWcSHxNslgf7QdfgbVJ
|
||||
xQiUM+lLhwOFh85iAHR3xmPU1wfN9NvY9DiLSpM0DMhF3OvAMZD75zIhA0GSKu7w
|
||||
dUu7ey7H4fv7bez6RhEyLdKw9/Lf2KNStNOs4ow9CAtCoxeoMSniTt6CNhbvCkve
|
||||
9vNHKiGavX1tS/YTog4wiiGzh2YxuW1RiQpTdhWiKyECgD8qQVg2tY5t3QRcXrzi
|
||||
OkStpkiAPAbiwS/gyHpsqiLo0al63SCxRefugbn1ucZyc5Ya59e3xNFQXCNhYl+Z
|
||||
Hl3hIl3cssdWZkJ455Z/bBE29ks1HtsL+bTfFi+kw/4yuMzoaB8C7rXScpGNI/8E
|
||||
pvTU2+wtuoOFcttJregtR94ZHu5wgdYqRydmFNG8PnvZT1mRMmQgUe/vp88FMmsZ
|
||||
dLsZjNQ=
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc5208.EncryptedPrivateKeyInfo()
|
||||
|
||||
def testDerCodec(self):
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.TextTestRunner(verbosity=2).run(suite)
|
82
third_party/python/pyasn1-modules/tests/test_rfc5280.py
vendored
Normal file
82
third_party/python/pyasn1-modules/tests/test_rfc5280.py
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import sys
|
||||
from pyasn1.codec.der import decoder as der_decoder
|
||||
from pyasn1.codec.der import encoder as der_encoder
|
||||
|
||||
from pyasn1_modules import rfc5280, pem
|
||||
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
|
||||
class CertificateTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
|
||||
IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
|
||||
BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
|
||||
aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
|
||||
9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy
|
||||
NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
|
||||
azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
||||
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
|
||||
Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
|
||||
cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD
|
||||
cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs
|
||||
2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY
|
||||
JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE
|
||||
Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ
|
||||
n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A
|
||||
PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc5280.Certificate()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
class CertificateListTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIIBVjCBwAIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJBVTETMBEGA1UE
|
||||
CBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRk
|
||||
MRUwEwYDVQQDEwxzbm1wbGFicy5jb20xIDAeBgkqhkiG9w0BCQEWEWluZm9Ac25t
|
||||
cGxhYnMuY29tFw0xMjA0MTExMzQwNTlaFw0xMjA1MTExMzQwNTlaoA4wDDAKBgNV
|
||||
HRQEAwIBATANBgkqhkiG9w0BAQUFAAOBgQC1D/wwnrcY/uFBHGc6SyoYss2kn+nY
|
||||
RTwzXmmldbNTCQ03x5vkWGGIaRJdN8QeCzbEi7gpgxgpxAx6Y5WkxkMQ1UPjNM5n
|
||||
DGVDOtR0dskFrrbHuNpWqWrDaBN0/ryZiWKjr9JRbrpkHgVY29I1gLooQ6IHuKHY
|
||||
vjnIhxTFoCb5vA==
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc5280.CertificateList()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.TextTestRunner(verbosity=2).run(suite)
|
87
third_party/python/pyasn1-modules/tests/test_rfc5652.py
vendored
Normal file
87
third_party/python/pyasn1-modules/tests/test_rfc5652.py
vendored
Normal file
@ -0,0 +1,87 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import sys
|
||||
from pyasn1.codec.der import decoder as der_decoder
|
||||
from pyasn1.codec.der import encoder as der_encoder
|
||||
|
||||
from pyasn1_modules import rfc5652, rfc6402, pem
|
||||
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
|
||||
class ContentInfoTestCase(unittest.TestCase):
|
||||
pem_text = """\
|
||||
MIIEJQYJKoZIhvcNAQcCoIIEFjCCBBICAQMxCzAJBgUrDgMCGgUAMIIDAgYIKwYBBQUHDAKgggL0
|
||||
BIIC8DCCAuwweDB2AgECBgorBgEEAYI3CgoBMWUwYwIBADADAgEBMVkwVwYJKwYBBAGCNxUUMUow
|
||||
SAIBBQwZcGl0dWNoYTEuZW1lYS5ocHFjb3JwLm5ldAwMRU1FQVxwaXR1Y2hhDBpDTUNSZXFHZW5l
|
||||
cmF0b3IudnNob3N0LmV4ZTCCAmqgggJmAgEBMIICXzCCAcgCAQAwADCBnzANBgkqhkiG9w0BAQEF
|
||||
AAOBjQAwgYkCgYEA0jm7SSSm2wyEAzuNKtFZFJKo91SrJq9wQwEhEKHDavZwMQOm1rZ2PF8NWCEb
|
||||
PqrhToQ7rtiGLSZa4dF4bzgmBqQ9aoSfEX4jISt31Vy+skHidXjHHpbsjT24NPhrZgANivL7CxD6
|
||||
Ft+s7qS1gL4HRm2twQkqSwOLrE/q2QeXl2UCAwEAAaCCAR0wGgYKKwYBBAGCNw0CAzEMFgo2LjIu
|
||||
OTIwMC4yMD4GCSqGSIb3DQEJDjExMC8wHQYDVR0OBBYEFMW2skn88gxhONWZQA4sWGBDb68yMA4G
|
||||
A1UdDwEB/wQEAwIHgDBXBgkrBgEEAYI3FRQxSjBIAgEFDBlwaXR1Y2hhMS5lbWVhLmhwcWNvcnAu
|
||||
bmV0DAxFTUVBXHBpdHVjaGEMGkNNQ1JlcUdlbmVyYXRvci52c2hvc3QuZXhlMGYGCisGAQQBgjcN
|
||||
AgIxWDBWAgECHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABv
|
||||
AGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIDAQAwDQYJKoZIhvcNAQEFBQADgYEAJZlu
|
||||
mxjtCxSOQi27jsVdd3y8NSIlzNv0b3LqmzvAly6L+CstXcnuG2MPQqPH9R7tbJonGUniBQO9sQ7C
|
||||
KhYWj2gfhiEkSID82lV5chINVUFKoUlSiEhWr0tPGgvOaqdsKQcrHfzrsBbFkhDqrFSVy7Yivbnh
|
||||
qYszKrOjJKiiCPMwADAAMYH5MIH2AgEDgBTFtrJJ/PIMYTjVmUAOLFhgQ2+vMjAJBgUrDgMCGgUA
|
||||
oD4wFwYJKoZIhvcNAQkDMQoGCCsGAQUFBwwCMCMGCSqGSIb3DQEJBDEWBBTFTkK/OifaFjwqHiJu
|
||||
xM7qXcg/VzANBgkqhkiG9w0BAQEFAASBgKfC6jOi1Wgy4xxDCQVK9+e5tktL8wE/j2cb9JSqq+aU
|
||||
5UxEgXEw7q7BoYZCAzcxMRriGzakXr8aXHcgkRJ7XcFvLPUjpmGg9SOZ2sGW4zQdWAwImN/i8loc
|
||||
xicQmJP+VoMHo/ZpjFY9fYCjNZUArgKsEwK/s+p9yrVVeB1Nf8Mn
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.asn1Spec = rfc5652.ContentInfo()
|
||||
|
||||
def testDerCodec(self):
|
||||
|
||||
substrate = pem.readBase64fromText(self.pem_text)
|
||||
|
||||
layers = {
|
||||
rfc5652.id_ct_contentInfo: rfc5652.ContentInfo(),
|
||||
rfc5652.id_signedData: rfc5652.SignedData(),
|
||||
rfc6402.id_cct_PKIData: rfc6402.PKIData()
|
||||
}
|
||||
|
||||
getNextLayer = {
|
||||
rfc5652.id_ct_contentInfo: lambda x: x['contentType'],
|
||||
rfc5652.id_signedData: lambda x: x['encapContentInfo']['eContentType'],
|
||||
rfc6402.id_cct_PKIData: lambda x: None
|
||||
}
|
||||
|
||||
getNextSubstrate = {
|
||||
rfc5652.id_ct_contentInfo: lambda x: x['content'],
|
||||
rfc5652.id_signedData: lambda x: x['encapContentInfo']['eContent'],
|
||||
rfc6402.id_cct_PKIData: lambda x: None
|
||||
}
|
||||
|
||||
|
||||
next_layer = rfc5652.id_ct_contentInfo
|
||||
|
||||
while next_layer:
|
||||
|
||||
asn1Object, rest = der_decoder.decode(
|
||||
substrate, asn1Spec=layers[next_layer]
|
||||
)
|
||||
|
||||
assert not rest
|
||||
assert asn1Object.prettyPrint()
|
||||
assert der_encoder.encode(asn1Object) == substrate
|
||||
|
||||
substrate = getNextSubstrate[next_layer](asn1Object)
|
||||
next_layer = getNextLayer[next_layer](asn1Object)
|
||||
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.TextTestRunner(verbosity=2).run(suite)
|
56
third_party/python/pyasn1-modules/tools/cmcdump.py
vendored
Executable file
56
third_party/python/pyasn1-modules/tools/cmcdump.py
vendored
Executable file
@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Read CMC certificate request with wrappers on stdin, parse each into
|
||||
# plain text, then build substrate from it
|
||||
#
|
||||
from pyasn1.codec.der import decoder, encoder
|
||||
from pyasn1_modules import rfc5652, rfc6402, pem
|
||||
import sys
|
||||
|
||||
if len(sys.argv) != 1:
|
||||
print("""Usage:
|
||||
$ cat cmc_request.pem | %s""" % (sys.argv[0],))
|
||||
sys.exit(-1)
|
||||
|
||||
reqCnt = 0
|
||||
|
||||
substrate = pem.readBase64FromFile(sys.stdin)
|
||||
|
||||
_, rest = decoder.decode(substrate, asn1Spec=rfc5652.ContentInfo())
|
||||
assert not rest
|
||||
|
||||
next_layer = rfc5652.id_ct_contentInfo
|
||||
data = substrate
|
||||
while next_layer:
|
||||
if next_layer == rfc5652.id_ct_contentInfo:
|
||||
layer, rest = decoder.decode(data, asn1Spec=rfc5652.ContentInfo())
|
||||
assert encoder.encode(layer) == data, 'wrapper recode fails'
|
||||
assert not rest
|
||||
|
||||
print(" * New layer (wrapper):")
|
||||
print(layer.prettyPrint())
|
||||
|
||||
next_layer = layer['contentType']
|
||||
data = layer['content']
|
||||
|
||||
elif next_layer == rfc5652.id_signedData:
|
||||
layer, rest = decoder.decode(data, asn1Spec=rfc5652.SignedData())
|
||||
assert encoder.encode(layer) == data, 'wrapper recode fails'
|
||||
assert not rest
|
||||
|
||||
print(" * New layer (wrapper):")
|
||||
print(layer.prettyPrint())
|
||||
|
||||
next_layer = layer['encapContentInfo']['eContentType']
|
||||
data = layer['encapContentInfo']['eContent']
|
||||
|
||||
elif next_layer == rfc6402.id_cct_PKIData:
|
||||
layer, rest = decoder.decode(data, asn1Spec=rfc6402.PKIData())
|
||||
assert encoder.encode(layer) == data, 'pkidata recode fails'
|
||||
assert not rest
|
||||
|
||||
print(" * New layer (pkidata):")
|
||||
print(layer.prettyPrint())
|
||||
|
||||
next_layer = None
|
||||
data = None
|
@ -1,6 +1,13 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Read ASN.1/PEM CMP message on stdin, parse into
|
||||
# plain text, then build substrate from it
|
||||
#
|
||||
from pyasn1.codec.der import decoder, encoder
|
||||
from pyasn1_modules import rfc4210, pem
|
||||
from pyasn1 import debug
|
||||
@ -23,6 +30,4 @@ pkiMsg, rest = decoder.decode(substrate, asn1Spec=pkiMessage)
|
||||
|
||||
print(pkiMsg.prettyPrint())
|
||||
|
||||
assert encoder.encode(pkiMsg, defMode=False) == substrate or \
|
||||
encoder.encode(pkiMsg, defMode=True) == substrate, \
|
||||
'CMP message recode fails'
|
||||
assert encoder.encode(pkiMsg) == substrate, 'CMP message recode fails'
|
||||
|
@ -1,4 +1,9 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Read X.509 CRL on stdin, print them pretty and encode back into
|
||||
# original wire format.
|
||||
@ -12,27 +17,25 @@ if len(sys.argv) != 1:
|
||||
print("""Usage:
|
||||
$ cat crl.pem | %s""" % sys.argv[0])
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
asn1Spec = rfc2459.CertificateList()
|
||||
|
||||
cnt = 0
|
||||
|
||||
while 1:
|
||||
while True:
|
||||
idx, substrate = pem.readPemBlocksFromFile(sys.stdin, ('-----BEGIN X509 CRL-----', '-----END X509 CRL-----'))
|
||||
if not substrate:
|
||||
break
|
||||
|
||||
|
||||
key, rest = decoder.decode(substrate, asn1Spec=asn1Spec)
|
||||
|
||||
if rest: substrate = substrate[:-len(rest)]
|
||||
|
||||
if rest:
|
||||
substrate = substrate[:-len(rest)]
|
||||
|
||||
print(key.prettyPrint())
|
||||
|
||||
assert encoder.encode(key, defMode=False) == substrate or \
|
||||
encoder.encode(key, defMode=True) == substrate, \
|
||||
'pkcs8 recode fails'
|
||||
|
||||
cnt = cnt + 1
|
||||
|
||||
assert encoder.encode(key) == substrate, 'pkcs8 recode fails'
|
||||
|
||||
cnt += 1
|
||||
|
||||
print('*** %s CRL(s) re/serialized' % cnt)
|
||||
|
@ -1,6 +1,13 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Read ASN.1/PEM X.509 CRMF request on stdin, parse into
|
||||
# plain text, then build substrate from it
|
||||
#
|
||||
from pyasn1.codec.der import decoder, encoder
|
||||
from pyasn1_modules import rfc2511, pem
|
||||
import sys
|
||||
@ -20,6 +27,4 @@ cr, rest = decoder.decode(substrate, asn1Spec=certReq)
|
||||
|
||||
print(cr.prettyPrint())
|
||||
|
||||
assert encoder.encode(cr, defMode=False) == substrate or \
|
||||
encoder.encode(cr, defMode=True) == substrate, \
|
||||
'crmf recode fails'
|
||||
assert encoder.encode(cr) == substrate, 'crmf recode fails'
|
||||
|
@ -1,20 +1,35 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
from pyasn1.codec.der import decoder, encoder
|
||||
from pyasn1_modules import rfc2560, rfc2459, pem
|
||||
from pyasn1.type import univ
|
||||
import sys, hashlib
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
import hashlib
|
||||
import sys
|
||||
|
||||
try:
|
||||
import urllib2
|
||||
import urllib2
|
||||
except ImportError:
|
||||
import urllib.request as urllib2
|
||||
import urllib.request as urllib2
|
||||
|
||||
from pyasn1.codec.der import decoder, encoder
|
||||
from pyasn1.type import univ
|
||||
|
||||
from pyasn1_modules import rfc2560, rfc2459, pem
|
||||
|
||||
sha1oid = univ.ObjectIdentifier((1, 3, 14, 3, 2, 26))
|
||||
|
||||
|
||||
# noinspection PyClassHasNoInit
|
||||
class ValueOnlyBitStringEncoder(encoder.encoder.BitStringEncoder):
|
||||
# These methods just do not encode tag and length fields of TLV
|
||||
def encodeTag(self, *args): return ''
|
||||
def encodeLength(self, *args): return ''
|
||||
def encodeTag(self, *args):
|
||||
return ''
|
||||
|
||||
def encodeLength(self, *args):
|
||||
return ''
|
||||
|
||||
def encodeValue(*args):
|
||||
substrate, isConstructed = encoder.encoder.BitStringEncoder.encodeValue(*args)
|
||||
# OCSP-specific hack follows: cut off the "unused bit count"
|
||||
@ -22,79 +37,85 @@ class ValueOnlyBitStringEncoder(encoder.encoder.BitStringEncoder):
|
||||
return substrate[1:], isConstructed
|
||||
|
||||
def __call__(self, bitStringValue):
|
||||
return self.encode(None, bitStringValue, defMode=1, maxChunkSize=0)
|
||||
return self.encode(None, bitStringValue, defMode=True, maxChunkSize=0)
|
||||
|
||||
|
||||
valueOnlyBitStringEncoder = ValueOnlyBitStringEncoder()
|
||||
|
||||
|
||||
# noinspection PyShadowingNames
|
||||
def mkOcspRequest(issuerCert, userCert):
|
||||
issuerTbsCertificate = issuerCert.getComponentByName('tbsCertificate')
|
||||
issuerSubject = issuerTbsCertificate.getComponentByName('subject')
|
||||
|
||||
|
||||
userTbsCertificate = userCert.getComponentByName('tbsCertificate')
|
||||
userIssuer = userTbsCertificate.getComponentByName('issuer')
|
||||
|
||||
assert issuerSubject == userIssuer, '%s\n%s' % (
|
||||
issuerSubject.prettyPrint(), userIssuer.prettyPrint()
|
||||
)
|
||||
)
|
||||
|
||||
userIssuerHash = hashlib.sha1(
|
||||
encoder.encode(userIssuer)
|
||||
).digest()
|
||||
|
||||
issuerSubjectPublicKey = issuerTbsCertificate.getComponentByName('subjectPublicKeyInfo').getComponentByName('subjectPublicKey')
|
||||
|
||||
issuerKeyHash = hashlib.sha1(
|
||||
).digest()
|
||||
|
||||
issuerSubjectPublicKey = issuerTbsCertificate.getComponentByName('subjectPublicKeyInfo').getComponentByName(
|
||||
'subjectPublicKey')
|
||||
|
||||
issuerKeyHash = hashlib.sha1(
|
||||
valueOnlyBitStringEncoder(issuerSubjectPublicKey)
|
||||
).digest()
|
||||
|
||||
).digest()
|
||||
|
||||
userSerialNumber = userTbsCertificate.getComponentByName('serialNumber')
|
||||
|
||||
# Build request object
|
||||
|
||||
request = rfc2560.Request()
|
||||
|
||||
|
||||
reqCert = request.setComponentByName('reqCert').getComponentByName('reqCert')
|
||||
|
||||
|
||||
hashAlgorithm = reqCert.setComponentByName('hashAlgorithm').getComponentByName('hashAlgorithm')
|
||||
hashAlgorithm.setComponentByName('algorithm', sha1oid)
|
||||
|
||||
|
||||
reqCert.setComponentByName('issuerNameHash', userIssuerHash)
|
||||
reqCert.setComponentByName('issuerKeyHash', issuerKeyHash)
|
||||
reqCert.setComponentByName('serialNumber', userSerialNumber)
|
||||
|
||||
ocspRequest = rfc2560.OCSPRequest()
|
||||
|
||||
|
||||
tbsRequest = ocspRequest.setComponentByName('tbsRequest').getComponentByName('tbsRequest')
|
||||
tbsRequest.setComponentByName('version', 'v1')
|
||||
|
||||
|
||||
requestList = tbsRequest.setComponentByName('requestList').getComponentByName('requestList')
|
||||
requestList.setComponentByPosition(0, request)
|
||||
|
||||
|
||||
return ocspRequest
|
||||
|
||||
|
||||
def parseOcspResponse(ocspResponse):
|
||||
responseStatus = ocspResponse.getComponentByName('responseStatus')
|
||||
assert responseStatus == rfc2560.OCSPResponseStatus('successful'), responseStatus.prettyPrint()
|
||||
assert responseStatus == rfc2560.OCSPResponseStatus('successful'), responseStatus.prettyPrint()
|
||||
responseBytes = ocspResponse.getComponentByName('responseBytes')
|
||||
responseType = responseBytes.getComponentByName('responseType')
|
||||
assert responseType == id_pkix_ocsp_basic, responseType.prettyPrint()
|
||||
|
||||
assert responseType == rfc2560.id_pkix_ocsp_basic, responseType.prettyPrint()
|
||||
|
||||
response = responseBytes.getComponentByName('response')
|
||||
|
||||
basicOCSPResponse, _ = decoder.decode(
|
||||
response, asn1Spec=rfc2560.BasicOCSPResponse()
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
tbsResponseData = basicOCSPResponse.getComponentByName('tbsResponseData')
|
||||
|
||||
response0 = tbsResponseData.getComponentByName('responses').getComponentByPosition(0)
|
||||
|
||||
|
||||
return (
|
||||
tbsResponseData.getComponentByName('producedAt'),
|
||||
response0.getComponentByName('certID'),
|
||||
response0.getComponentByName('certStatus').getName(),
|
||||
response0.getComponentByName('thisUpdate')
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
print("""Usage:
|
||||
@ -110,16 +131,17 @@ issuerCert, _ = decoder.decode(
|
||||
sys.stdin, ('-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----')
|
||||
)[1],
|
||||
asn1Spec=rfc2459.Certificate()
|
||||
)
|
||||
)
|
||||
# noinspection PyRedeclaration
|
||||
userCert, _ = decoder.decode(
|
||||
pem.readPemBlocksFromFile(
|
||||
sys.stdin, ('-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----')
|
||||
)[1],
|
||||
asn1Spec=rfc2459.Certificate()
|
||||
)
|
||||
)
|
||||
|
||||
# Build OCSP request
|
||||
|
||||
|
||||
ocspReq = mkOcspRequest(issuerCert, userCert)
|
||||
|
||||
# Use HTTP POST to get response (see Appendix A of RFC 2560)
|
||||
@ -128,18 +150,16 @@ ocspReq = mkOcspRequest(issuerCert, userCert)
|
||||
httpReq = urllib2.Request(
|
||||
ocspUrl,
|
||||
encoder.encode(ocspReq),
|
||||
{ 'Content-Type': 'application/ocsp-request' }
|
||||
)
|
||||
{'Content-Type': 'application/ocsp-request'}
|
||||
)
|
||||
httpRsp = urllib2.urlopen(httpReq).read()
|
||||
|
||||
# Process OCSP response
|
||||
|
||||
|
||||
# noinspection PyRedeclaration
|
||||
ocspRsp, _ = decoder.decode(httpRsp, asn1Spec=rfc2560.OCSPResponse())
|
||||
|
||||
producedAt, certId, certStatus, thisUpdate = parseOcspResponse(ocspRsp)
|
||||
|
||||
print('Certificate ID %s is %s at %s till %s\n' % (
|
||||
certId.getComponentByName('serialNumber'),
|
||||
certStatus,
|
||||
producedAt,
|
||||
thisUpdate))
|
||||
print('Certificate ID %s is %s at %s till %s\n' % (certId.getComponentByName('serialNumber'),
|
||||
certStatus, producedAt, thisUpdate))
|
||||
|
@ -1,4 +1,9 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Read ASN.1/PEM X.509 CRMF request on stdin, parse into
|
||||
# plain text, then build substrate from it
|
||||
@ -11,17 +16,15 @@ if len(sys.argv) != 1:
|
||||
print("""Usage:
|
||||
$ cat ocsp-request.pem | %s""" % sys.argv[0])
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
ocspReq = rfc2560.OCSPRequest()
|
||||
|
||||
substrate = pem.readBase64FromFile(sys.stdin)
|
||||
if not substrate:
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
cr, rest = decoder.decode(substrate, asn1Spec=ocspReq)
|
||||
|
||||
print(cr.prettyPrint())
|
||||
|
||||
assert encoder.encode(cr, defMode=False) == substrate or \
|
||||
encoder.encode(cr, defMode=True) == substrate, \
|
||||
'OCSP request recode fails'
|
||||
assert encoder.encode(cr) == substrate, 'OCSP request recode fails'
|
||||
|
@ -1,4 +1,9 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Read ASN.1/PEM OCSP response on stdin, parse into
|
||||
# plain text, then build substrate from it
|
||||
@ -11,17 +16,15 @@ if len(sys.argv) != 1:
|
||||
print("""Usage:
|
||||
$ cat ocsp-response.pem | %s""" % sys.argv[0])
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
ocspReq = rfc2560.OCSPResponse()
|
||||
|
||||
substrate = pem.readBase64FromFile(sys.stdin)
|
||||
if not substrate:
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
cr, rest = decoder.decode(substrate, asn1Spec=ocspReq)
|
||||
|
||||
print(cr.prettyPrint())
|
||||
|
||||
assert encoder.encode(cr, defMode=False) == substrate or \
|
||||
encoder.encode(cr, defMode=True) == substrate, \
|
||||
'OCSP request recode fails'
|
||||
assert encoder.encode(cr) == substrate, 'OCSP request recode fails'
|
||||
|
@ -1,143 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
from pyasn1.codec.der import decoder, encoder
|
||||
from pyasn1_modules import rfc2560, rfc2459, pem
|
||||
from pyasn1.type import univ
|
||||
import sys, hashlib
|
||||
try:
|
||||
import urllib2
|
||||
except ImportError:
|
||||
import urllib.request as urllib2
|
||||
|
||||
sha1oid = univ.ObjectIdentifier((1, 3, 14, 3, 2, 26))
|
||||
|
||||
class ValueOnlyBitStringEncoder(encoder.encoder.BitStringEncoder):
|
||||
# These methods just do not encode tag and length fields of TLV
|
||||
def encodeTag(self, *args): return ''
|
||||
def encodeLength(self, *args): return ''
|
||||
def encodeValue(*args):
|
||||
substrate, isConstructed = encoder.encoder.BitStringEncoder.encodeValue(*args)
|
||||
# OCSP-specific hack follows: cut off the "unused bit count"
|
||||
# encoded bit-string value.
|
||||
return substrate[1:], isConstructed
|
||||
|
||||
def __call__(self, bitStringValue):
|
||||
return self.encode(None, bitStringValue, defMode=1, maxChunkSize=0)
|
||||
|
||||
valueOnlyBitStringEncoder = ValueOnlyBitStringEncoder()
|
||||
|
||||
def mkOcspRequest(issuerCert, userCert):
|
||||
issuerTbsCertificate = issuerCert.getComponentByName('tbsCertificate')
|
||||
issuerSubject = issuerTbsCertificate.getComponentByName('subject')
|
||||
|
||||
userTbsCertificate = userCert.getComponentByName('tbsCertificate')
|
||||
userIssuer = userTbsCertificate.getComponentByName('issuer')
|
||||
|
||||
assert issuerSubject == userIssuer, '%s\n%s' % (
|
||||
issuerSubject.prettyPrint(), userIssuer.prettyPrint()
|
||||
)
|
||||
|
||||
userIssuerHash = hashlib.sha1(
|
||||
encoder.encode(userIssuer)
|
||||
).digest()
|
||||
|
||||
issuerSubjectPublicKey = issuerTbsCertificate.getComponentByName('subjectPublicKeyInfo').getComponentByName('subjectPublicKey')
|
||||
|
||||
issuerKeyHash = hashlib.sha1(
|
||||
valueOnlyBitStringEncoder(issuerSubjectPublicKey)
|
||||
).digest()
|
||||
|
||||
userSerialNumber = userTbsCertificate.getComponentByName('serialNumber')
|
||||
|
||||
# Build request object
|
||||
|
||||
request = rfc2560.Request()
|
||||
|
||||
reqCert = request.setComponentByName('reqCert').getComponentByName('reqCert')
|
||||
|
||||
hashAlgorithm = reqCert.setComponentByName('hashAlgorithm').getComponentByName('hashAlgorithm')
|
||||
hashAlgorithm.setComponentByName('algorithm', sha1oid)
|
||||
|
||||
reqCert.setComponentByName('issuerNameHash', userIssuerHash)
|
||||
reqCert.setComponentByName('issuerKeyHash', issuerKeyHash)
|
||||
reqCert.setComponentByName('serialNumber', userSerialNumber)
|
||||
|
||||
ocspRequest = rfc2560.OCSPRequest()
|
||||
|
||||
tbsRequest = ocspRequest.setComponentByName('tbsRequest').getComponentByName('tbsRequest')
|
||||
tbsRequest.setComponentByName('version', 'v1')
|
||||
|
||||
requestList = tbsRequest.setComponentByName('requestList').getComponentByName('requestList')
|
||||
requestList.setComponentByPosition(0, request)
|
||||
|
||||
return ocspRequest
|
||||
|
||||
def parseOcspRequest(ocspRequest):
|
||||
tbsRequest = ocspRequest['responseStatus']
|
||||
|
||||
assert responseStatus == rfc2560.OCSPResponseStatus('successful'), responseStatus.prettyPrint()
|
||||
responseBytes = ocspResponse.getComponentByName('responseBytes')
|
||||
responseType = responseBytes.getComponentByName('responseType')
|
||||
assert responseType == id_pkix_ocsp_basic, responseType.prettyPrint()
|
||||
|
||||
response = responseBytes.getComponentByName('response')
|
||||
|
||||
basicOCSPResponse, _ = decoder.decode(
|
||||
response, asn1Spec=rfc2560.BasicOCSPResponse()
|
||||
)
|
||||
|
||||
tbsResponseData = basicOCSPResponse.getComponentByName('tbsResponseData')
|
||||
|
||||
response0 = tbsResponseData.getComponentByName('responses').getComponentByPosition(0)
|
||||
|
||||
return (
|
||||
tbsResponseData.getComponentByName('producedAt'),
|
||||
response0.getComponentByName('certID'),
|
||||
response0.getComponentByName('certStatus').getName(),
|
||||
response0.getComponentByName('thisUpdate')
|
||||
)
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
print("""Usage:
|
||||
$ cat CACertificate.pem userCertificate.pem | %s <ocsp-responder-url>""" % sys.argv[0])
|
||||
sys.exit(-1)
|
||||
else:
|
||||
ocspUrl = sys.argv[1]
|
||||
|
||||
# Parse CA and user certificates
|
||||
|
||||
issuerCert, _ = decoder.decode(
|
||||
pem.readPemFromFile(sys.stdin)[1],
|
||||
asn1Spec=rfc2459.Certificate()
|
||||
)
|
||||
userCert, _ = decoder.decode(
|
||||
pem.readPemFromFile(sys.stdin)[1],
|
||||
asn1Spec=rfc2459.Certificate()
|
||||
)
|
||||
|
||||
# Build OCSP request
|
||||
|
||||
ocspReq = mkOcspRequest(issuerCert, userCert)
|
||||
|
||||
# Use HTTP POST to get response (see Appendix A of RFC 2560)
|
||||
# In case you need proxies, set the http_proxy env variable
|
||||
|
||||
httpReq = urllib2.Request(
|
||||
ocspUrl,
|
||||
encoder.encode(ocspReq),
|
||||
{ 'Content-Type': 'application/ocsp-request' }
|
||||
)
|
||||
httpRsp = urllib2.urlopen(httpReq).read()
|
||||
|
||||
# Process OCSP response
|
||||
|
||||
ocspRsp, _ = decoder.decode(httpRsp, asn1Spec=rfc2560.OCSPResponse())
|
||||
|
||||
producedAt, certId, certStatus, thisUpdate = parseOcspResponse(ocspRsp)
|
||||
|
||||
print('Certificate ID %s is %s at %s till %s\n' % (
|
||||
certId.getComponentByName('serialNumber'),
|
||||
certStatus,
|
||||
producedAt,
|
||||
thisUpdate
|
||||
))
|
@ -1,4 +1,9 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Read ASN.1/PEM X.509 certificate requests (PKCS#10 format) on stdin,
|
||||
# parse each into plain text, then build substrate from it
|
||||
@ -11,29 +16,28 @@ if len(sys.argv) != 1:
|
||||
print("""Usage:
|
||||
$ cat certificateRequest.pem | %s""" % sys.argv[0])
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
certType = rfc2314.CertificationRequest()
|
||||
|
||||
certCnt = 0
|
||||
|
||||
while 1:
|
||||
while True:
|
||||
idx, substrate = pem.readPemBlocksFromFile(
|
||||
sys.stdin, ('-----BEGIN CERTIFICATE REQUEST-----',
|
||||
'-----END CERTIFICATE REQUEST-----')
|
||||
)
|
||||
sys.stdin, ('-----BEGIN CERTIFICATE REQUEST-----',
|
||||
'-----END CERTIFICATE REQUEST-----')
|
||||
)
|
||||
if not substrate:
|
||||
break
|
||||
|
||||
|
||||
cert, rest = decoder.decode(substrate, asn1Spec=certType)
|
||||
|
||||
if rest: substrate = substrate[:-len(rest)]
|
||||
|
||||
if rest:
|
||||
substrate = substrate[:-len(rest)]
|
||||
|
||||
print(cert.prettyPrint())
|
||||
|
||||
assert encoder.encode(cert, defMode=False) == substrate or \
|
||||
encoder.encode(cert, defMode=True) == substrate, \
|
||||
'cert recode fails'
|
||||
|
||||
certCnt = certCnt + 1
|
||||
|
||||
assert encoder.encode(cert) == substrate, 'cert recode fails'
|
||||
|
||||
certCnt += 1
|
||||
|
||||
print('*** %s PEM certificate request(s) de/serialized' % certCnt)
|
||||
|
@ -1,4 +1,9 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Read unencrypted PKCS#1/PKIX-compliant, PEM&DER encoded private keys on
|
||||
# stdin, print them pretty and encode back into original wire format.
|
||||
@ -12,11 +17,15 @@ if len(sys.argv) != 1:
|
||||
print("""Usage:
|
||||
$ cat rsakey.pem | %s""" % sys.argv[0])
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
cnt = 0
|
||||
|
||||
while 1:
|
||||
idx, substrate = pem.readPemBlocksFromFile(sys.stdin, ('-----BEGIN RSA PRIVATE KEY-----', '-----END RSA PRIVATE KEY-----'), ('-----BEGIN DSA PRIVATE KEY-----', '-----END DSA PRIVATE KEY-----') )
|
||||
while True:
|
||||
idx, substrate = pem.readPemBlocksFromFile(
|
||||
sys.stdin,
|
||||
('-----BEGIN RSA PRIVATE KEY-----', '-----END RSA PRIVATE KEY-----'),
|
||||
('-----BEGIN DSA PRIVATE KEY-----', '-----END DSA PRIVATE KEY-----')
|
||||
)
|
||||
if not substrate:
|
||||
break
|
||||
|
||||
@ -29,14 +38,13 @@ while 1:
|
||||
|
||||
key, rest = decoder.decode(substrate, asn1Spec=asn1Spec)
|
||||
|
||||
if rest: substrate = substrate[:-len(rest)]
|
||||
|
||||
if rest:
|
||||
substrate = substrate[:-len(rest)]
|
||||
|
||||
print(key.prettyPrint())
|
||||
|
||||
assert encoder.encode(key, defMode=False) == substrate or \
|
||||
encoder.encode(key, defMode=True) == substrate, \
|
||||
'pkcs8 recode fails'
|
||||
|
||||
cnt = cnt + 1
|
||||
|
||||
assert encoder.encode(key) == substrate, 'pkcs8 recode fails'
|
||||
|
||||
cnt += 1
|
||||
|
||||
print('*** %s key(s) re/serialized' % cnt)
|
||||
|
@ -1,4 +1,9 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Read ASN.1/PEM PKCS#7 on stdin, parse it into plain text,
|
||||
# then build substrate from it
|
||||
@ -6,27 +11,26 @@
|
||||
from pyasn1_modules import rfc2315, pem
|
||||
from pyasn1.codec.der import encoder, decoder
|
||||
import sys
|
||||
|
||||
|
||||
if len(sys.argv) != 1:
|
||||
print("""Usage:
|
||||
$ cat pkcs7Certificate.pem | %s""" % sys.argv[0])
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
idx, substrate = pem.readPemBlocksFromFile(
|
||||
sys.stdin, ('-----BEGIN PKCS7-----', '-----END PKCS7-----')
|
||||
)
|
||||
)
|
||||
|
||||
assert substrate, 'bad PKCS7 data on input'
|
||||
|
||||
|
||||
contentInfo, rest = decoder.decode(substrate, asn1Spec=rfc2315.ContentInfo())
|
||||
|
||||
if rest: substrate = substrate[:-len(rest)]
|
||||
|
||||
if rest:
|
||||
substrate = substrate[:-len(rest)]
|
||||
|
||||
print(contentInfo.prettyPrint())
|
||||
|
||||
assert encoder.encode(contentInfo, defMode=False) == substrate or \
|
||||
encoder.encode(contentInfo, defMode=True) == substrate, \
|
||||
're-encode fails'
|
||||
assert encoder.encode(contentInfo) == substrate, 're-encode fails'
|
||||
|
||||
contentType = contentInfo.getComponentByName('contentType')
|
||||
|
||||
@ -37,11 +41,11 @@ contentInfoMap = {
|
||||
(1, 2, 840, 113549, 1, 7, 4): rfc2315.SignedAndEnvelopedData(),
|
||||
(1, 2, 840, 113549, 1, 7, 5): rfc2315.DigestedData(),
|
||||
(1, 2, 840, 113549, 1, 7, 6): rfc2315.EncryptedData()
|
||||
}
|
||||
}
|
||||
|
||||
content, _ = decoder.decode(
|
||||
contentInfo.getComponentByName('content'),
|
||||
asn1Spec=contentInfoMap[contentType]
|
||||
)
|
||||
)
|
||||
|
||||
print(content.prettyPrint())
|
||||
|
@ -1,4 +1,9 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Read bunch of ASN.1/PEM plain/encrypted private keys in PKCS#8
|
||||
# format on stdin, parse each into plain text, then build substrate from it
|
||||
@ -11,11 +16,15 @@ if len(sys.argv) != 1:
|
||||
print("""Usage:
|
||||
$ cat pkcs8key.pem | %s""" % sys.argv[0])
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
cnt = 0
|
||||
|
||||
while 1:
|
||||
idx, substrate = pem.readPemBlocksFromFile(sys.stdin, ('-----BEGIN PRIVATE KEY-----', '-----END PRIVATE KEY-----'), ('-----BEGIN ENCRYPTED PRIVATE KEY-----', '-----END ENCRYPTED PRIVATE KEY-----') )
|
||||
while True:
|
||||
idx, substrate = pem.readPemBlocksFromFile(
|
||||
sys.stdin,
|
||||
('-----BEGIN PRIVATE KEY-----', '-----END PRIVATE KEY-----'),
|
||||
('-----BEGIN ENCRYPTED PRIVATE KEY-----', '-----END ENCRYPTED PRIVATE KEY-----')
|
||||
)
|
||||
if not substrate:
|
||||
break
|
||||
|
||||
@ -28,14 +37,13 @@ while 1:
|
||||
|
||||
key, rest = decoder.decode(substrate, asn1Spec=asn1Spec)
|
||||
|
||||
if rest: substrate = substrate[:-len(rest)]
|
||||
|
||||
if rest:
|
||||
substrate = substrate[:-len(rest)]
|
||||
|
||||
print(key.prettyPrint())
|
||||
|
||||
assert encoder.encode(key, defMode=False) == substrate or \
|
||||
encoder.encode(key, defMode=True) == substrate, \
|
||||
'pkcs8 recode fails'
|
||||
|
||||
cnt = cnt + 1
|
||||
|
||||
assert encoder.encode(key) == substrate, 'pkcs8 recode fails'
|
||||
|
||||
cnt += 1
|
||||
|
||||
print('*** %s PKCS#8 key(s) de/serialized' % cnt)
|
||||
|
@ -1,10 +1,16 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Generate SNMPGET request, parse response
|
||||
#
|
||||
from pyasn1.codec.ber import encoder, decoder
|
||||
from pyasn1_modules import rfc1157
|
||||
import sys, socket
|
||||
import sys
|
||||
import socket
|
||||
|
||||
if len(sys.argv) != 4:
|
||||
print("""Usage:
|
||||
@ -32,6 +38,7 @@ sock.sendto(encoder.encode(msg), (sys.argv[2], 161))
|
||||
|
||||
substrate, _ = sock.recvfrom(2048)
|
||||
|
||||
# noinspection PyRedeclaration
|
||||
rMsg, _ = decoder.decode(substrate, asn1Spec=msg)
|
||||
|
||||
print('received: %s' % rMsg.prettyPrint())
|
||||
|
46
third_party/python/pyasn1-modules/tools/x509dump-rfc5280.py
vendored
Executable file
46
third_party/python/pyasn1-modules/tools/x509dump-rfc5280.py
vendored
Executable file
@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env python
|
||||
# coding: utf-8
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Read ASN.1/PEM X.509 certificates on stdin, parse each into plain text,
|
||||
# then build substrate from it (using RFC5280)
|
||||
#
|
||||
from pyasn1.codec.der import decoder, encoder
|
||||
from pyasn1_modules import rfc5280, pem
|
||||
import sys
|
||||
|
||||
if len(sys.argv) != 1:
|
||||
print("""Usage:
|
||||
$ cat CACertificate.pem | %s
|
||||
$ cat userCertificate.pem | %s""" % (sys.argv[0], sys.argv[0]))
|
||||
sys.exit(-1)
|
||||
|
||||
certType = rfc5280.Certificate()
|
||||
|
||||
certCnt = 0
|
||||
|
||||
while 1:
|
||||
idx, substrate = pem.readPemBlocksFromFile(
|
||||
sys.stdin, ('-----BEGIN CERTIFICATE-----',
|
||||
'-----END CERTIFICATE-----')
|
||||
)
|
||||
if not substrate:
|
||||
break
|
||||
|
||||
cert, rest = decoder.decode(substrate, asn1Spec=certType)
|
||||
|
||||
if rest:
|
||||
substrate = substrate[:-len(rest)]
|
||||
|
||||
print(cert.prettyPrint())
|
||||
|
||||
assert encoder.encode(cert) == substrate, 'cert recode fails'
|
||||
|
||||
certCnt += 1
|
||||
|
||||
print('*** %s PEM cert(s) de/serialized' % certCnt)
|
@ -1,4 +1,9 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
#
|
||||
# Read ASN.1/PEM X.509 certificates on stdin, parse each into plain text,
|
||||
# then build substrate from it
|
||||
@ -12,29 +17,28 @@ if len(sys.argv) != 1:
|
||||
$ cat CACertificate.pem | %s
|
||||
$ cat userCertificate.pem | %s""" % (sys.argv[0], sys.argv[0]))
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
certType = rfc2459.Certificate()
|
||||
|
||||
certCnt = 0
|
||||
|
||||
while 1:
|
||||
while True:
|
||||
idx, substrate = pem.readPemBlocksFromFile(
|
||||
sys.stdin, ('-----BEGIN CERTIFICATE-----',
|
||||
'-----END CERTIFICATE-----')
|
||||
)
|
||||
sys.stdin, ('-----BEGIN CERTIFICATE-----',
|
||||
'-----END CERTIFICATE-----')
|
||||
)
|
||||
if not substrate:
|
||||
break
|
||||
|
||||
|
||||
cert, rest = decoder.decode(substrate, asn1Spec=certType)
|
||||
|
||||
if rest: substrate = substrate[:-len(rest)]
|
||||
|
||||
if rest:
|
||||
substrate = substrate[:-len(rest)]
|
||||
|
||||
print(cert.prettyPrint())
|
||||
|
||||
assert encoder.encode(cert, defMode=False) == substrate or \
|
||||
encoder.encode(cert, defMode=True) == substrate, \
|
||||
'cert recode fails'
|
||||
|
||||
certCnt = certCnt + 1
|
||||
|
||||
assert encoder.encode(cert) == substrate, 'cert recode fails'
|
||||
|
||||
certCnt += 1
|
||||
|
||||
print('*** %s PEM cert(s) de/serialized' % certCnt)
|
||||
|
Loading…
Reference in New Issue
Block a user