Пример #1
0
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)
Пример #2
0
def KeyPairGenerate():
    G=ecp2.generator()
    s = big.rand(curve.r)
    W=s*G
    SK = big.to_bytes(s)
    PK = W.toBytes()
    return (SK,PK)
Пример #3
0
def init():
    global G2_TAB
    G = ecp2.generator()
    if G.isinf() :
        return False
    G2_TAB = pair.precomp(G)
    return True
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
def KeyPairGenerate():
    G = ecp2.generator()
    s = big.rand(curve.r)
    W = s * G
    SK = big.to_bytes(s)
    PK = W.toBytes()
    return (SK, PK)
Пример #7
0
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
Пример #8
0
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
Пример #9
0
def get_server_secret(Z):
    Q = ecp2.generator()
    s = big.from_bytes(Z)
    Q = s * Q
    return Q.toBytes(False)
Пример #10
0
def get_server_secret(Z):
    Q = ecp2.generator()
    s = big.from_bytes(Z)
    Q = s * Q
    return Q.toBytes()