Home | History | Annotate | Download | only in tests
      1 #
      2 # This file is part of pyasn1-modules software.
      3 #
      4 # Copyright (c) 2005-2017, Ilya Etingof <etingof (at] gmail.com>
      5 # License: http://pyasn1.sf.net/license.html
      6 #
      7 import sys
      8 
      9 from pyasn1.codec.der import decoder as der_decoder
     10 from pyasn1.codec.der import encoder as der_encoder
     11 
     12 from pyasn1_modules import pem
     13 from pyasn1_modules import rfc2459
     14 
     15 try:
     16     import unittest2 as unittest
     17 
     18 except ImportError:
     19     import unittest
     20 
     21 
     22 class CertificateTestCase(unittest.TestCase):
     23     pem_text = """\
     24 MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
     25 IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
     26 BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
     27 aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
     28 9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy
     29 NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
     30 azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
     31 YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
     32 Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
     33 cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD
     34 cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs
     35 2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY
     36 JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE
     37 Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ
     38 n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A
     39 PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu
     40 """
     41 
     42     def setUp(self):
     43         self.asn1Spec = rfc2459.Certificate()
     44 
     45     def testDerCodec(self):
     46 
     47         substrate = pem.readBase64fromText(self.pem_text)
     48 
     49         asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
     50 
     51         assert not rest
     52         assert asn1Object.prettyPrint()
     53         assert der_encoder.encode(asn1Object) == substrate
     54 
     55     def testDerCodecDecodeOpenTypes(self):
     56 
     57         substrate = pem.readBase64fromText(self.pem_text)
     58 
     59         asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True)
     60 
     61         assert not rest
     62         assert asn1Object.prettyPrint()
     63         assert der_encoder.encode(asn1Object) == substrate
     64 
     65 
     66 class CertificateListTestCase(unittest.TestCase):
     67     pem_text = """\
     68 MIIBVjCBwAIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJBVTETMBEGA1UE
     69 CBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRk
     70 MRUwEwYDVQQDEwxzbm1wbGFicy5jb20xIDAeBgkqhkiG9w0BCQEWEWluZm9Ac25t
     71 cGxhYnMuY29tFw0xMjA0MTExMzQwNTlaFw0xMjA1MTExMzQwNTlaoA4wDDAKBgNV
     72 HRQEAwIBATANBgkqhkiG9w0BAQUFAAOBgQC1D/wwnrcY/uFBHGc6SyoYss2kn+nY
     73 RTwzXmmldbNTCQ03x5vkWGGIaRJdN8QeCzbEi7gpgxgpxAx6Y5WkxkMQ1UPjNM5n
     74 DGVDOtR0dskFrrbHuNpWqWrDaBN0/ryZiWKjr9JRbrpkHgVY29I1gLooQ6IHuKHY
     75 vjnIhxTFoCb5vA==
     76 """
     77 
     78     def setUp(self):
     79         self.asn1Spec = rfc2459.CertificateList()
     80 
     81     def testDerCodec(self):
     82 
     83         substrate = pem.readBase64fromText(self.pem_text)
     84 
     85         asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
     86 
     87         assert not rest
     88         assert asn1Object.prettyPrint()
     89         assert der_encoder.encode(asn1Object) == substrate
     90 
     91     def testDerCodecDecodeOpenTypes(self):
     92 
     93         substrate = pem.readBase64fromText(self.pem_text)
     94 
     95         asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True)
     96 
     97         assert not rest
     98         assert asn1Object.prettyPrint()
     99         assert der_encoder.encode(asn1Object) == substrate
    100 
    101 
    102 class DSAPrivateKeyTestCase(unittest.TestCase):
    103     pem_text = """\
    104 MIIBugIBAAKBgQCN91+Cma8UPw09gjwP9WOJCdpv3mv3/qFqzgiODGZx0Q002iTl
    105 1dq36m5TsWYFEcMCEyC3tFuoQ0mGq5zUUOmJvHCIPufs0g8Av0fhY77uFqneHHUi
    106 VQMCPCHX9vTCWskmDE21LJppU27bR4H2q+ysE30d6u3+84qrItsn4bjpcQIVAPR5
    107 QrmooOXDn7fHJzshmxImGC4VAoGAXxKyEnlvzq93d4V6KLWX3H5Jk2JP771Ss1bT
    108 6D/mSbLlvjjo7qsj6diul1axu6Wny31oPertzA2FeGEzkqvjSNmSxyYYMDB3kEcx
    109 ahntt37I1FgSlgdZHuhdtl1h1DBKXqCCneOZuNj+kW5ib14u5HDfFIbec2HJbvVs
    110 lJ/k83kCgYB4TD8vgHetXHxqsiZDoy5wOnQ3mmFAfl8ZdQsIfov6kEgArwPYUOVB
    111 JsX84f+MFjIOKXUV8dHZ8VRrGCLAbXcxKqLNWKlKHUnEsvt63pkaTy/RKHyQS+pn
    112 wontdTt9EtbF+CqIWnm2wpn3O+SbdtawzPOL1CcGB0jYABwbeQ81RwIUFKdyRYaa
    113 INow2I3/ks+0MxDabTY=
    114 """
    115 
    116     def setUp(self):
    117         self.asn1Spec = rfc2459.DSAPrivateKey()
    118 
    119     def testDerCodec(self):
    120 
    121         substrate = pem.readBase64fromText(self.pem_text)
    122 
    123         asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec)
    124 
    125         assert not rest
    126         assert asn1Object.prettyPrint()
    127         assert der_encoder.encode(asn1Object) == substrate
    128 
    129     def testDerCodecDecodeOpenTypes(self):
    130 
    131         substrate = pem.readBase64fromText(self.pem_text)
    132 
    133         asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec, decodeOpenTypes=True)
    134 
    135         assert not rest
    136         assert asn1Object.prettyPrint()
    137         assert der_encoder.encode(asn1Object) == substrate
    138 
    139 
    140 
    141 suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
    142 
    143 if __name__ == '__main__':
    144     unittest.TextTestRunner(verbosity=2).run(suite)
    145