def test_little_endian_conv(self): self.assertEquals(0, util.le2int('\x00')) self.assertEquals(1, util.le2int('\x01')) self.assertEquals(0xaaff, util.le2int('\xff\xaa')) self.assertEquals(0xaabbcc, util.le2int('\xcc\xbb\xaa')) self.assertEquals('\x00', util.int2le(0, 1)) self.assertEquals('\x00\x00', util.int2le(0, 2)) self.assertEquals('\x01', util.int2le(1, 1)) self.assertEquals('\x01\x00', util.int2le(1, 2)) self.assertEquals('\xff\xaa\x00\x00', util.int2le(0xaaff, 4)) self.assertEquals('\xdd\xcc\xbb\xaa', util.int2le(0xaabbccdd, 4)) self.assertRaises(ValueError, util.int2le, 0xaabbccdd, 2)
def non_canonical_binary_to_public(self, public_bin): x = util.le2int(public_bin) P1, P2 = self.curve.get_y(x) """ print print P1[1] <= (self.curve.gf.p - 1)/2 print P1 print P2 #print (P1[0] % 2, P1[1] % 2) #print (P2[0] % 2, P2[1] % 2) print # XXX q = self.curve.gf.p I = pow(2, (q-1)/4, q) yy = x**3 + self.curve.a*x**2 + x y = pow(yy, (q+3)/8, q) if (y*y - yy) % q != 0: y = (y*I) % q if y % 2 != 0: y = q-y #print (x, y) #print return max(P1, P2)""" return P1 # XXX
def binary_to_private(self, private_bin): return util.le2int(private_bin)