def test_bytes_to_element(self): b = encodepoint((0, 1)) # order 1, aka Zero self.assertRaises(ValueError, bytes_to_element, b) p = bytes_to_unknown_group_element(b) self.assertFalse(isinstance(p, Element)) self.assertIs(p, Zero) b = encodepoint((0, -1 % Q)) # order 2 self.assertRaises(ValueError, bytes_to_element, b) p = bytes_to_unknown_group_element(b) self.assertFalse(isinstance(p, Element)) # (..,26) is in the right group b = b"\x1a" + b"\x00" * 31 p = bytes_to_element(b) self.assertTrue(isinstance(p, Element))
def test_bytes_to_element(self): b = encodepoint((0,1)) # order 1, aka Zero self.assertRaises(ValueError, bytes_to_element, b) p = bytes_to_unknown_group_element(b) self.assertFalse(isinstance(p, Element)) self.assertIs(p, Zero) b = encodepoint((0,-1%Q)) # order 2 self.assertRaises(ValueError, bytes_to_element, b) p = bytes_to_unknown_group_element(b) self.assertFalse(isinstance(p, Element)) # (..,26) is in the right group b = b"\x1a" + b"\x00"*31 p = bytes_to_element(b) self.assertTrue(isinstance(p, Element))
def test_orders(self): # all points should have an order that's listed in ORDERS. Test some # specific points. For low-order points, actually find the complete # subgroup and measure its size. p = Zero values = self.collect(p) self.assertEqual(len(values), 1) self.assertEqual(values, set([Zero.to_bytes()])) self.assertEqual(get_order(p), 1) # (0,-1) should be order 2 p = ElementOfUnknownGroup(xform_affine_to_extended((0,-1))) values = self.collect(p) self.assertEqual(len(values), 2) self.assertEqual(values, set([Zero.to_bytes(), p.to_bytes()])) self.assertEqual(get_order(p), 2) # (..,26) is in the right group (order L) b = b"\x1a" + b"\x00"*31 p = bytes_to_unknown_group_element(b) self.assertEqual(get_order(p), L) # (..,35) is maybe order 2*L b = b"\x23" + b"\x00"*31 p = bytes_to_unknown_group_element(b) self.assertEqual(get_order(p), 2*L) # (..,48) is maybe order 4*L b = b"\x30" + b"\x00"*31 p = bytes_to_unknown_group_element(b) self.assertEqual(get_order(p), 4*L) # (..,55) is maybe order 8*L b = b"\x37" + b"\x00"*31 p = bytes_to_unknown_group_element(b) self.assertEqual(get_order(p), 8*L)
def test_orders(self): # all points should have an order that's listed in ORDERS. Test some # specific points. For low-order points, actually find the complete # subgroup and measure its size. p = Zero values = self.collect(p) self.assertEqual(len(values), 1) self.assertEqual(values, set([Zero.to_bytes()])) self.assertEqual(get_order(p), 1) # (0,-1) should be order 2 p = ElementOfUnknownGroup(xform_affine_to_extended((0, -1))) values = self.collect(p) self.assertEqual(len(values), 2) self.assertEqual(values, set([Zero.to_bytes(), p.to_bytes()])) self.assertEqual(get_order(p), 2) # (..,26) is in the right group (order L) b = b"\x1a" + b"\x00" * 31 p = bytes_to_unknown_group_element(b) self.assertEqual(get_order(p), L) # (..,35) is maybe order 2*L b = b"\x23" + b"\x00" * 31 p = bytes_to_unknown_group_element(b) self.assertEqual(get_order(p), 2 * L) # (..,48) is maybe order 4*L b = b"\x30" + b"\x00" * 31 p = bytes_to_unknown_group_element(b) self.assertEqual(get_order(p), 4 * L) # (..,55) is maybe order 8*L b = b"\x37" + b"\x00" * 31 p = bytes_to_unknown_group_element(b) self.assertEqual(get_order(p), 8 * L)