1#
2# This file is part of pyasn1-modules software.
3#
4# Copyright (c) 2019, Vigil Security, LLC
5# License: http://snmplabs.com/pyasn1/license.html
6#
7import sys
8
9from pyasn1.codec.der.decoder import decode as der_decode
10from pyasn1.codec.der.encoder import encode as der_encode
11
12from pyasn1.type import univ
13
14from pyasn1_modules import pem
15from pyasn1_modules import rfc5652
16from pyasn1_modules import rfc6019
17
18try:
19    import unittest2 as unittest
20except ImportError:
21    import unittest
22
23
24class BinarySigningTimeTestCase(unittest.TestCase):
25    pem_text = "MBUGCyqGSIb3DQEJEAIuMQYCBFy/hlQ="
26
27    def setUp(self):
28        self.asn1Spec = rfc5652.Attribute()
29
30    def testDerCodec(self):
31        substrate = pem.readBase64fromText(self.pem_text)
32
33        asn1Object, rest = der_decode(substrate, asn1Spec=self.asn1Spec)
34
35        assert not rest
36        assert asn1Object.prettyPrint()
37        assert der_encode(asn1Object) == substrate
38
39        assert asn1Object['attrType'] == rfc6019.id_aa_binarySigningTime
40        bintime, rest = der_decode(asn1Object['attrValues'][0],
41                                   asn1Spec=rfc6019.BinaryTime())
42        assert bintime == 0x5cbf8654
43
44    def testOpenTypes(self):
45        substrate = pem.readBase64fromText(self.pem_text)
46        asn1Object, rest = der_decode(substrate,
47                                      asn1Spec=self.asn1Spec,
48                                      decodeOpenTypes=True)
49        assert not rest
50        assert asn1Object.prettyPrint()
51        assert der_encode(asn1Object) == substrate
52
53        assert asn1Object['attrType'] in rfc5652.cmsAttributesMap.keys()
54        assert asn1Object['attrValues'][0] == 0x5cbf8654
55
56
57suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
58
59if __name__ == '__main__':
60    import sys
61
62    result = unittest.TextTestRunner(verbosity=2).run(suite)
63    sys.exit(not result.wasSuccessful())
64