-
-
Notifications
You must be signed in to change notification settings - Fork 43
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
883def9
commit 9a3a1db
Showing
4 changed files
with
87 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# | ||
# This file is part of pyasn1-modules software. | ||
# | ||
# Created by Russ Housley with assistance from asn1ate v.0.6.0. | ||
# | ||
# Copyright (c) 2019, Vigil Security, LLC | ||
# License: http://snmplabs.com/pyasn1/license.html | ||
# | ||
# Diffie-Hellman Key Agreement | ||
# | ||
# ASN.1 source from: | ||
# https://www.rfc-editor.org/rfc/rfc2631.txt | ||
# https://www.rfc-editor.org/errata/eid5897 | ||
# | ||
|
||
from pyasn1.type import constraint | ||
from pyasn1.type import namedtype | ||
from pyasn1.type import tag | ||
from pyasn1.type import univ | ||
|
||
|
||
class KeySpecificInfo(univ.Sequence): | ||
componentType = namedtype.NamedTypes( | ||
namedtype.NamedType('algorithm', univ.ObjectIdentifier()), | ||
namedtype.NamedType('counter', univ.OctetString().subtype( | ||
subtypeSpec=constraint.ValueSizeConstraint(4, 4))) | ||
) | ||
|
||
|
||
class OtherInfo(univ.Sequence): | ||
componentType = namedtype.NamedTypes( | ||
namedtype.NamedType('keyInfo', KeySpecificInfo()), | ||
namedtype.OptionalNamedType('partyAInfo', univ.OctetString().subtype( | ||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), | ||
namedtype.NamedType('suppPubInfo', univ.OctetString().subtype( | ||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))) | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# | ||
# This file is part of pyasn1-modules software. | ||
# | ||
# Created by Russ Housley | ||
# Copyright (c) 2019, Vigil Security, LLC | ||
# License: http://snmplabs.com/pyasn1/license.html | ||
# | ||
|
||
import sys | ||
|
||
from pyasn1.codec.der.decoder import decode as der_decode | ||
from pyasn1.codec.der.encoder import encode as der_encode | ||
|
||
from pyasn1.type import univ | ||
|
||
from pyasn1_modules import pem | ||
from pyasn1_modules import rfc2631 | ||
|
||
try: | ||
import unittest2 as unittest | ||
except ImportError: | ||
import unittest | ||
|
||
|
||
class OtherInfoTestCase(unittest.TestCase): | ||
pem_text = "MB0wEwYLKoZIhvcNAQkQAwYEBAAAAAGiBgQEAAAAwA==" | ||
|
||
def setUp(self): | ||
self.asn1Spec = rfc2631.OtherInfo() | ||
|
||
def testDerCodec(self): | ||
substrate = pem.readBase64fromText(self.pem_text) | ||
asn1Object, rest = der_decode(substrate, asn1Spec=self.asn1Spec) | ||
assert not rest | ||
assert asn1Object.prettyPrint() | ||
assert der_encode(asn1Object) == substrate | ||
|
||
hex1 = univ.OctetString(hexValue='00000001') | ||
assert asn1Object['keyInfo']['counter'] == hex1 | ||
|
||
|
||
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__]) | ||
|
||
if __name__ == '__main__': | ||
import sys | ||
|
||
result = unittest.TextTestRunner(verbosity=2).run(suite) | ||
sys.exit(not result.wasSuccessful()) |