def KeyPairGenerate(): G = ecp2.generator() s = big.rand(curve.r) W = s * G SK = big.to_bytes(s) PK = W.toBytes(True) #set to True to compress public key return (SK, PK)
def KeyPairGenerate(): G=ecp2.generator() s = big.rand(curve.r) W=s*G SK = big.to_bytes(s) PK = W.toBytes() return (SK,PK)
def init(): global G2_TAB G = ecp2.generator() if G.isinf() : return False G2_TAB = pair.precomp(G) return True
def server(ID, Y, SS, U, V): P = H(ID) y = big.from_bytes(Y) Q = ecp2.generator() P = y * P sQ = ECp2() if not sQ.fromBytes(SS): return (False, Fp12(), Fp12()) TU = ECp() if not TU.fromBytes(U): return (False, bytearray(0), bytearray(0)) TV = ECp() if not TV.fromBytes(V): return (False, bytearray(0), bytearray(0)) TU.add(P) # TU.affine() r = pair.double_ate(Q, TV, sQ, TU) r = pair.fexp(r) if r.isone(): return (True, bytearray(0), bytearray(0)) # failed - diagnose it E = r.toBytes() r = pair.e(Q, TU) F = r.toBytes() return (False, E, F)
def KeyPairGenerate(): G = ecp2.generator() s = big.rand(curve.r) W = s * G SK = big.to_bytes(s) PK = W.toBytes() return (SK, PK)
def verify(SIG,m,W): HM=BLS_H(m) G=ecp2.generator() D=ECp() D.fromBytes(SIG) PK=ECp2() PK.fromBytes(W) D=-D # Use new multi-pairing mechanism r=pair.initmp() pair.another(r,G,D) pair.another(r,PK,HM) v=pair.miller(r) #.. or alternatively # v = pair.double_ate(G, D, PK, HM) v = pair.fexp(v) if v.isone(): return True return False
def verify(SIG, m, W): HM = BLS_H(m) G = ecp2.generator() D = ECp() D.fromBytes(SIG) PK = ECp2() PK.fromBytes(W) D = -D # Use new multi-pairing mechanism r = pair.initmp() pair.another(r, G, D) pair.another(r, PK, HM) v = pair.miller(r) #.. or alternatively # v = pair.double_ate(G, D, PK, HM) v = pair.fexp(v) if v.isone(): return True return False
def get_server_secret(Z): Q = ecp2.generator() s = big.from_bytes(Z) Q = s * Q return Q.toBytes(False)
def get_server_secret(Z): Q = ecp2.generator() s = big.from_bytes(Z) Q = s * Q return Q.toBytes()