예제 #1
0
def test_mult():
    key_cipher = np.array([[GF2int(randint(0, 255)) for i in range(4)]
                           for j in range(4)],
                          dtype=GF2int)
    v1 = np.array([[GF2int(randint(0, 255)) for i in range(4)]
                   for j in range(4)],
                  dtype=GF2int)
    v2 = np.array([[GF2int(randint(0, 255)) for i in range(4)]
                   for j in range(4)],
                  dtype=GF2int)
    sub = Master.get_one_sub(key_cipher)

    shares1 = Master.get_shares(v1, sub)
    shares2 = Master.get_shares(v2, sub)
    sub.initShares(shares1)
    for s, mini in enumerate(sub.minicircuits):
        mini.state2 = shares2[s]

    sub.multiply(inputs1=[mini.state2 for mini in sub.minicircuits])

    reconstruct = Master.reconstructShares(sub)
    if not np.array_equal(v1 * v2, reconstruct):
        return 0
    else:
        return 1
예제 #2
0
def test_addKey():
    key_cipher = np.array([[GF2int(randint(0, 255)) for i in range(4)]
                           for j in range(4)],
                          dtype=GF2int)
    v = np.array([[GF2int(randint(0, 255)) for i in range(4)]
                  for j in range(4)],
                 dtype=GF2int)
    sub = Master.get_one_sub(key_cipher)

    shares = Master.get_shares(v, sub)
    sub.initShares(shares)
    sub.addKey(0)
    reconstruct = Master.reconstructShares(sub)

    if not np.array_equal(v + key_cipher, reconstruct):
        return 0
    else:
        return 1
예제 #3
0
def test_Sbox():
    key_cipher = np.array([[GF2int(randint(0, 255)) for i in range(4)]
                           for j in range(4)],
                          dtype=GF2int)
    v = np.array([[GF2int(randint(0, 255)) for i in range(4)]
                  for j in range(4)],
                 dtype=GF2int)
    sub = Master.get_one_sub(key_cipher)

    shares = Master.get_shares(v, sub)
    sub.initShares(shares)
    sub.SubBytes()
    reconstruct = Master.reconstructShares(sub)
    if not np.array_equal(np.array(sbox[np.array(v, dtype=int)], dtype=GF2int),
                          reconstruct):
        return 0
    else:
        return 1