def test_gf2m_add__neg(self): """ Negative tests for gf2m_add(a, b) """ # Not meant to be called with other values than int or long self.failUnlessRaises(TypeError, ar.gf2m_add, 0.0, 0b110) self.failUnlessRaises(TypeError, ar.gf2m_add, "asdf", 0b110) self.failUnlessEqual(ar.gf2m_add(-0b110, 0b1101), 0b1011) self.failUnlessEqual(ar.gf2m_add(0b110, -0b1101), 0b1011) self.failUnlessEqual(ar.gf2m_add(0b110, -0b1101), 0b1011)
def test_gf2m_add__neg(self): """ Negative tests for gf2m_add(a, b) """ # Not meant to be called with other values than int or long self.failUnlessRaises(TypeError, ar.gf2m_add, 0.0, 0b110) self.failUnlessRaises(TypeError, ar.gf2m_add, "asdf", 0b110) self.failUnlessEqual(ar.gf2m_add(-0b110,0b1101), 0b1011) self.failUnlessEqual(ar.gf2m_add(0b110,-0b1101), 0b1011) self.failUnlessEqual(ar.gf2m_add(0b110,-0b1101), 0b1011)
def test_gf2m_add__pos(self): """ Positive tests for gf2m_add(a,b) Sage test calculations:: sage: F.<t> = GF(2)[] sage: a = x^3 + x^2 + 1 # a = 0b1101 sage: b = x^2 + x # b = 0b110 sage: a+b x^3 + x + 1 sage: b+a x^3 + x + 1 """ self.failUnlessEqual(ar.gf2m_add(0b1101, 0b110), 0b1011) self.failUnlessEqual(ar.gf2m_add(0b110, 0b1101), 0b1011)
def test_gf2m_add__pos(self): """ Positive tests for gf2m_add(a,b) Sage test calculations:: sage: F.<t> = GF(2)[] sage: a = x^3 + x^2 + 1 # a = 0b1101 sage: b = x^2 + x # b = 0b110 sage: a+b x^3 + x + 1 sage: b+a x^3 + x + 1 """ self.failUnlessEqual(ar.gf2m_add(0b1101,0b110), 0b1011) self.failUnlessEqual(ar.gf2m_add(0b110,0b1101), 0b1011)
def check_point_on_curve(self, P): """ Checks if point is on curve. y^2 + x*y = x^3 + a*x^2 + b """ x = P[0] y = P[1] if ((ar._binpolydeg(x) >= self._m) or (ar._binpolydeg(y) >= self._m)): return 0 left = ar.gf2m_add(ar.gf2m_modmul(y, y, self._fx), ar.gf2m_modmul(x, y, self._fx)) right = ar.gf2m_add( ar.gf2m_add( ar.gf2m_modmul(ar.gf2m_modmul(x, x, self._fx), x, self._fx), ar.gf2m_modmul(self._a, ar.gf2m_modmul(x, x, self._fx), self._fx)), self._b) if (left == right): return 1 return 0
def check_point_on_curve(self, P): """ Checks if point is on curve. y^2 + x*y = x^3 + a*x^2 + b """ x = P[0] y = P[1] if ((ar._binpolydeg(x) >= self._m) or (ar._binpolydeg(y) >= self._m)): return 0 left = ar.gf2m_add(ar.gf2m_modmul(y,y,self._fx), ar.gf2m_modmul(x,y,self._fx)) right = ar.gf2m_add(ar.gf2m_add( ar.gf2m_modmul(ar.gf2m_modmul(x,x,self._fx),x,self._fx), ar.gf2m_modmul(self._a,ar.gf2m_modmul(x,x,self._fx),self._fx)), self._b) if (left == right): return 1 return 0