Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
    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))
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)