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'))
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'))
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'))
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'))
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'))
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)
def testObjEncode2(self): # Initialize with payload der = DerObject(0x03, b('\x12\x12')) self.assertEquals(der.encode(), b('\x03\x02\x12\x12'))
def testObjEncode3(self): # Long payload der = DerObject(b('\x10')) der.payload = b("0") * 128 self.assertEquals(der.encode(), b('\x10\x81\x80' + "0" * 128))
def testObjDecode8(self): # Verify that decode returns the object der = DerObject(0x02) self.assertEqual(der, der.decode(b('\x02\x02\x01\x02')))
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'))
def testObjDecode5(self): # Decode payload with unexpected tag gives error der = DerObject(0x02) self.assertRaises(ValueError, der.decode, b('\x03\x02\x01\x02'))
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"))
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)
def testObjEncode3(self): # Long payload der = DerObject(b('\x10')) der.payload = b("0")*128 self.assertEquals(der.encode(), b('\x10\x81\x80' + "0"*128))
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)