示例#1
0
 def _sign_loop(self, r, s, h, k, priv):
     while r == 0 or s == 0:
         if k is None:
             k = (getrandbits(self.bits) % (self.N - 1)) + 1
         kinv = inv(k, self.N)
         kg = mulp(self.a, self.b, self.p, self.G, k)
         r = kg[0] % self.N
         if r == 0:
             continue
         s = (kinv * (h + r * priv)) % self.N
     return r, s
示例#2
0
文件: ecc.py 项目: tpazderka/pyjwkest
 def sign(self, h, priv, k=None):
     while h > self.N:
         h >>= 1
     r = s = 0
     while r == 0 or s == 0:
         if k is None:
             k = (getrandbits(self.bits) % (self.N - 1)) + 1
         kinv = inv(k, self.N)
         kg = mulp(self.a, self.b, self.p, self.G, k)
         r = kg[0] % self.N
         if r == 0:
             continue
         s = (kinv * (h + r * priv)) % self.N
     return self.int2bytes(r) + self.int2bytes(s) 
示例#3
0
文件: ecc.py 项目: otakup0pe/pyjwkest
 def sign(self, h, priv, k=None):
     while h > self.N:
         h >>= 1
     r = s = 0
     while r == 0 or s == 0:
         if k is None:
             k = (getrandbits(self.bits) % (self.N - 1)) + 1
         kinv = inv(k, self.N)
         kg = mulp(self.a, self.b, self.p, self.G, k)
         r = kg[0] % self.N
         if r == 0:
             continue
         s = (kinv * (h + r * priv)) % self.N
     return self.int2bytes(r) + self.int2bytes(s) 
示例#4
0
 def dh_z(self, priv, pub):
     return self.int2bytes(mulp(self.a, self.b, self.p, pub, priv)[0])
示例#5
0
 def public_key_for(self, priv):
     return mulp(self.a, self.b, self.p, self.G, priv)
示例#6
0
 def key_pair(self):
     priv = (getrandbits(self.bits) % (self.N - 1)) + 1
     pub = mulp(self.a, self.b, self.p, self.G, priv)
     return priv, pub