Пример #1
0
 def testObjDecode3(self):
     # Decode payload with too much data gives error
     der = DerObject(0x02)
     self.assertRaises(ValueError, der.decode, b('\x02\x02\x01\x02\xFF'))
     # Decode payload with too little data gives error
     der = DerObject(0x02)
     self.assertRaises(ValueError, der.decode, b('\x02\x02\x01'))
Пример #2
0
 def testObjEncode1(self):
     # No payload
     der = DerObject(b('\x02'))
     self.assertEquals(der.encode(), b('\x02\x00'))
     # Small payload (primitive)
     der.payload = b('\x45')
     self.assertEquals(der.encode(), b('\x02\x01\x45'))
     # Invariant
     self.assertEquals(der.encode(), b('\x02\x01\x45'))
     # Initialize with numerical tag
     der = DerObject(0x04)
     der.payload = b('\x45')
     self.assertEquals(der.encode(), b('\x04\x01\x45'))
     # Initialize with constructed type
     der = DerObject(b('\x10'), constructed=True)
     self.assertEquals(der.encode(), b('\x30\x00'))
Пример #3
0
 def testObjEncode4(self):
     # Implicit tags (constructed)
     der = DerObject(0x10, implicit=1, constructed=True)
     der.payload = b('ppll')
     self.assertEquals(der.encode(), b('\xa1\x04ppll'))
     # Implicit tags (primitive)
     der = DerObject(0x02, implicit=0x1E, constructed=False)
     der.payload = b('ppll')
     self.assertEquals(der.encode(), b('\x9E\x04ppll'))
Пример #4
0
 def testObjDecode4(self):
     # Decode implicit tag (primitive)
     der = DerObject(0x02, constructed=False, implicit=0xF)
     self.assertRaises(ValueError, der.decode, b('\x02\x02\x01\x02'))
     der.decode(b('\x8F\x01\x00'))
     self.assertEquals(der.payload, b('\x00'))
     # Decode implicit tag (constructed)
     der = DerObject(0x02, constructed=True, implicit=0xF)
     self.assertRaises(ValueError, der.decode, b('\x02\x02\x01\x02'))
     der.decode(b('\xAF\x01\x00'))
     self.assertEquals(der.payload, b('\x00'))
Пример #5
0
    def testObjDecode7(self):
        # Decode explicit tag
        der = DerObject(0x10, explicit=5)
        der.decode(b("\xa5\x06\x10\x04xxll"))
        self.assertEquals(der._inner_tag_octet, 0x10)
        self.assertEquals(der.payload, b('xxll'))

        # Explicit tag may be 0
        der = DerObject(0x10, explicit=0)
        der.decode(b("\xa0\x06\x10\x04xxll"))
        self.assertEquals(der._inner_tag_octet, 0x10)
        self.assertEquals(der.payload, b('xxll'))
Пример #6
0
 def testObjEncode4(self):
     # Implicit tags (constructed)
     der = DerObject(0x10, implicit=1, constructed=True)
     der.payload = b('ppll')
     self.assertEquals(der.encode(), b('\xa1\x04ppll'))
     # Implicit tags (primitive)
     der = DerObject(0x02, implicit=0x1E, constructed=False)
     der.payload = b('ppll')
     self.assertEquals(der.encode(), b('\x9E\x04ppll'))
Пример #7
0
 def testObjDecode4(self):
     # Decode implicit tag (primitive)
     der = DerObject(0x02, constructed=False, implicit=0xF)
     self.assertRaises(ValueError, der.decode, b('\x02\x02\x01\x02'))
     der.decode(b('\x8F\x01\x00'))
     self.assertEquals(der.payload, b('\x00'))
     # Decode implicit tag (constructed)
     der = DerObject(0x02, constructed=True, implicit=0xF)
     self.assertRaises(ValueError, der.decode, b('\x02\x02\x01\x02'))
     der.decode(b('\xAF\x01\x00'))
     self.assertEquals(der.payload, b('\x00'))
Пример #8
0
    def testObjDecode7(self):
        # Decode explicit tag
        der = DerObject(0x10, explicit=5)
        der.decode(b("\xa5\x06\x10\x04xxll"))
        self.assertEquals(der._inner_tag_octet, 0x10)
        self.assertEquals(der.payload, b('xxll'))

        # Explicit tag may be 0
        der = DerObject(0x10, explicit=0)
        der.decode(b("\xa0\x06\x10\x04xxll"))
        self.assertEquals(der._inner_tag_octet, 0x10)
        self.assertEquals(der.payload, b('xxll'))
Пример #9
0
 def testObjDecode2(self):
     # Decode long payload
     der = DerObject(0x02)
     der.decode(b('\x02\x81\x80' + "1" * 128))
     self.assertEquals(der.payload, b("1") * 128)
     self.assertEquals(der._tag_octet, 0x02)
Пример #10
0
 def testObjEncode2(self):
     # Initialize with payload
     der = DerObject(0x03, b('\x12\x12'))
     self.assertEquals(der.encode(), b('\x03\x02\x12\x12'))
Пример #11
0
 def testObjEncode3(self):
     # Long payload
     der = DerObject(b('\x10'))
     der.payload = b("0") * 128
     self.assertEquals(der.encode(), b('\x10\x81\x80' + "0" * 128))
Пример #12
0
 def testObjDecode8(self):
     # Verify that decode returns the object
     der = DerObject(0x02)
     self.assertEqual(der, der.decode(b('\x02\x02\x01\x02')))
Пример #13
0
 def testObjEncode1(self):
     # No payload
     der = DerObject(b('\x02'))
     self.assertEquals(der.encode(), b('\x02\x00'))
     # Small payload (primitive)
     der.payload = b('\x45')
     self.assertEquals(der.encode(), b('\x02\x01\x45'))
     # Invariant
     self.assertEquals(der.encode(), b('\x02\x01\x45'))
     # Initialize with numerical tag
     der = DerObject(0x04)
     der.payload = b('\x45')
     self.assertEquals(der.encode(), b('\x04\x01\x45'))
     # Initialize with constructed type
     der = DerObject(b('\x10'), constructed=True)
     self.assertEquals(der.encode(), b('\x30\x00'))
Пример #14
0
 def testObjDecode6(self):
     # Arbitrary DER object
     der = DerObject()
     der.decode(b('\x65\x01\x88'))
     self.assertEquals(der._tag_octet, 0x65)
     self.assertEquals(der.payload, b('\x88'))
Пример #15
0
 def testObjDecode6(self):
     # Arbitrary DER object
     der = DerObject()
     der.decode(b('\x65\x01\x88'))
     self.assertEquals(der._tag_octet, 0x65)
     self.assertEquals(der.payload, b('\x88'))
Пример #16
0
 def testObjEncode2(self):
     # Initialize with payload
     der = DerObject(0x03, b('\x12\x12'))
     self.assertEquals(der.encode(), b('\x03\x02\x12\x12'))
Пример #17
0
 def testObjDecode5(self):
     # Decode payload with unexpected tag gives error
     der = DerObject(0x02)
     self.assertRaises(ValueError, der.decode, b('\x03\x02\x01\x02'))
Пример #18
0
 def testObjDecode8(self):
     # Verify that decode returns the object
     der = DerObject(0x02)
     self.assertEqual(der, der.decode(b('\x02\x02\x01\x02')))
Пример #19
0
 def testObjEncode5(self):
     # Encode type with explicit tag
     der = DerObject(0x10, explicit=5)
     der.payload = b("xxll")
     self.assertEqual(der.encode(), b("\xa5\x06\x10\x04xxll"))
Пример #20
0
 def testObjDecode1(self):
     # Decode short payload
     der = DerObject(0x02)
     der.decode(b('\x02\x02\x01\x02'))
     self.assertEquals(der.payload, b("\x01\x02"))
     self.assertEquals(der._tag_octet, 0x02)
Пример #21
0
 def testObjEncode5(self):
     # Encode type with explicit tag
     der = DerObject(0x10, explicit=5)
     der.payload = b("xxll")
     self.assertEqual(der.encode(), b("\xa5\x06\x10\x04xxll"))
Пример #22
0
 def testObjEncode3(self):
     # Long payload
     der = DerObject(b('\x10'))
     der.payload = b("0")*128
     self.assertEquals(der.encode(), b('\x10\x81\x80' + "0"*128))
Пример #23
0
 def testObjDecode1(self):
     # Decode short payload
     der = DerObject(0x02)
     der.decode(b('\x02\x02\x01\x02'))
     self.assertEquals(der.payload, b("\x01\x02"))
     self.assertEquals(der._tag_octet, 0x02)
Пример #24
0
 def testObjDecode2(self):
     # Decode long payload
     der = DerObject(0x02)
     der.decode(b('\x02\x81\x80' + "1"*128))
     self.assertEquals(der.payload, b("1")*128)
     self.assertEquals(der._tag_octet, 0x02)