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())
me.assertRaises(ValueError, C.ECPt.frombuf, C.bytes("0001fe000201"))
## String conversion and parsing.
+ me.assertEqual(str(P), "(254, 291)")
me.assertEqual(C.ECPt.parse("254, 291)"), (P, ")"))
+ me.assertEqual(C.ECPt.parse("(254, 291)"), (P, ""))
me.assertRaises(ValueError, C.ECPt.parse, "(254, 291")
###--------------------------------------------------------------------------
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):
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.
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)
## Simultaneous multiplication.
Q, R, S = 5*P, 7*P, 11*P
+ me.assertEqual(E.mmul(set([(Q, 9), (R, 8), (S, 5)])), 156*P)
me.assertEqual(E.mmul([Q, 9, R, 8, S, 5]), 156*P)
me.assertEqual(E.mmul(Q, 9, R, 8, S, 5), 156*P)
def test_tinycurves(me):
me._test_curve(C.ECInfo(E, 2*P, 13, 2), checkfail = True)
- ei, _ = C.ECInfo.parse("binpoly: 0x13; bin: 0x01, 0x08; 0x02, 0x0c: 5*4")
+ ei = C.ECInfo.fromstring("binpoly: 0x13; bin: 0x01, 0x08; 0x02, 0x0c: 5*4")
me._test_curve(ei, checkfail = True)
TestCurves.generate_testcases((name, C.eccurves[name]) for name in