Exemplo n.º 1
0
    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 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)
 def binary_to_private(self, private_bin):
     return util.le2int(private_bin)