ec.c: Dispatch to `ecptxl_3' whether or not we have a curve.
[catacomb-python] / t / t-ec.py
index ef80b90..f11da7d 100644 (file)
--- a/t/t-ec.py
+++ b/t/t-ec.py
@@ -59,7 +59,8 @@ class TestCurvelessPoints (U.TestCase):
     me.assertRaises(ValueError, C.ECPt, "12345")
     me.assertRaises(ValueError, C.ECPt, "12345,")
     me.assertRaises(ValueError, C.ECPt, "12345, xyzzy")
-    me.assertRaises(TypeError, C.ECPt, (1, 2, 3))
+    me.assertRaises(ValueError, C.ECPt, "12345, 67890!??")
+    me.assertRaises(ValueError, C.ECPt, (1, 2, 3))
     me.assertRaises(TypeError, C.ECPt, 1, 2, 3)
     me.assertRaises(TypeError, C.ECPt, 1234)
     me.assertRaises(TypeError, C.ECPt, object())
@@ -144,6 +145,7 @@ class TestCurves (T.GenericTestMixin):
     me.assertEqual(E("%s, %s" % (P.ix, P.iy)), P)
     me.assertRaises(ValueError, E, "1234")
     me.assertRaises(ValueError, E, "1234,")
+    me.assertRaises(ValueError, E, "1234, 5678?")
     me.assertRaises(TypeError, E, 1, None)
     Q = E(P.ix); me.assertTrue(Q == P or Q == -P)
     for i in T.range(128):
@@ -178,7 +180,9 @@ class TestCurves (T.GenericTestMixin):
     me.assertEqual(Q + R, 23*P)
     me.assertEqual(Q + R.point, 23*P)
     me.assertRaises(TypeError, T.add, Q.point, R.point)
+    me.assertRaises(TypeError, T.mul, kk(1), Q)
     me.assertEqual(Q - R, 11*P)
+    me.assertEqual(l(17)*P, Q)
     me.assertEqual(P*l(17), Q)
 
     ## Ordering.
@@ -194,23 +198,29 @@ class TestCurves (T.GenericTestMixin):
     Z1 = C.ByteString.zero(1)
     me.assertEqual(O.ec2osp(), Z1)
     me.assertEqual(E.os2ecp(Z1), (O, Z0))
-    t = C.ByteString(C.WriteBuffer()
-                       .putu8(0x04)
-                       .put(P.ix.storeb(k.noctets))
-                       .put(P.iy.storeb(k.noctets)))
+    t = C.WriteBuffer() \
+         .putu8(0x04) \
+         .put(P.ix.storeb(k.noctets)) \
+         .put(P.iy.storeb(k.noctets)) \
+         .contents
     me.assertEqual(P.ec2osp(), t)
-    me.assertEqual(C.ByteString(C.WriteBuffer().putecptraw(P)), t)
+    me.assertEqual(C.WriteBuffer().putecptraw(P).contents, t)
+    me.assertEqual(C.WriteBuffer().ec2osp(P).contents, t)
     me.assertEqual(E.os2ecp(t), (P, Z0))
     me.assertEqual(C.ReadBuffer(t).getecptraw(E), P)
+    me.assertEqual(C.ReadBuffer(t).os2ecp(E), P)
     if isinstance(k, C.PrimeField): ybit = int(P.iy&1)
     else:
       try: ybit = int((P.y/P.x).value&C.GF(1))
       except ZeroDivisionError: ybit = 0
-    t = C.ByteString(C.WriteBuffer()
-                       .putu8(0x02 | ybit)
-                       .put(P.ix.storeb(k.noctets)))
+    t = C.WriteBuffer() \
+         .putu8(0x02 | ybit) \
+         .put(P.ix.storeb(k.noctets)) \
+         .contents
     me.assertEqual(P.ec2osp(C.EC_LSB), t)
+    me.assertEqual(C.WriteBuffer().ec2osp(P, C.EC_LSB).contents, t)
     me.assertEqual(E.os2ecp(t, C.EC_LSB), (P, Z0))
+    me.assertEqual(C.ReadBuffer(t).os2ecp(E, C.EC_LSB), P)
 
     ## Curve methods.
     Q = E.find(P.x); me.assertTrue(Q == P or Q == -P)