| 11 | from cscan.constants import GroupName |
| 12 | |
| 13 | class TestKeyShareExtension(unittest.TestCase): |
| 14 | def test___init__(self): |
| 15 | ext = KeyShareExtension() |
| 16 | |
| 17 | self.assertIsNotNone(ext) |
| 18 | |
| 19 | def test_create(self): |
| 20 | ext = KeyShareExtension() |
| 21 | |
| 22 | ext.create([(1, bytearray(b'\x12')), |
| 23 | (2, bytearray(b'\x33'))]) |
| 24 | |
| 25 | self.assertEqual(ext.client_shares, [(1, bytearray(b'\x12')), |
| 26 | (2, bytearray(b'\x33'))]) |
| 27 | |
| 28 | def test_write(self): |
| 29 | ext = KeyShareExtension() |
| 30 | |
| 31 | ext.create([(GroupName.secp256r1, bytearray(b'\xff\xfa')), |
| 32 | (GroupName.ffdhe2048, bytearray(b'\xaf\xaa'))]) |
| 33 | |
| 34 | data = ext.write() |
| 35 | |
| 36 | self.assertEqual(data, bytearray( |
| 37 | b'\x00\x2a\x00\x0d' |
| 38 | b'\x00\x0b' |
| 39 | b'\x00\x17\x02\xff\xfa' |
| 40 | b'\x01\x00\x00\x02\xaf\xaa')) |
| 41 | |
| 42 | def test_write_with_no_data(self): |
| 43 | ext = KeyShareExtension() |
| 44 | |
| 45 | data = ext.write() |
| 46 | |
| 47 | self.assertEqual(data, bytearray(b'\x00\x2a\x00\x00')) |
| 48 | |
| 49 | def test_parse(self): |
| 50 | parser = Parser(bytearray( |
| 51 | #b'\x00\x2a\x00\x0d' |
| 52 | b'\x00\x0b' |
| 53 | b'\x00\x17\x02\xff\xfa' |
| 54 | b'\x01\x00\x00\x02\xaf\xaa')) |
| 55 | |
| 56 | ext = KeyShareExtension() |
| 57 | ext.parse(parser) |
| 58 | |
| 59 | self.assertEqual(ext.client_shares, |
| 60 | [(GroupName.secp256r1, bytearray(b'\xff\xfa')), |
| 61 | (GroupName.ffdhe2048, bytearray(b'\xaf\xaa'))]) |
| 62 | |
| 63 | def test_parse_with_no_data(self): |
| 64 | parser = Parser(bytearray()) |
| 65 | |
| 66 | ext = KeyShareExtension() |
| 67 | ext.parse(parser) |
| 68 | |
| 69 | self.assertIsNone(ext.client_shares) |
| 70 |
nothing calls this directly
no outgoing calls
no test coverage detected