Beispiel #1
0
 def setUp(self):
     self.cwd = os.path.dirname(os.path.abspath(__file__))
     self.curve_name = 'prime256v1'
     self.curve = wcurve.secp256r1_curve()
     self.curve_infective = wcurve.secp256r1_curve_infective()
     self.bin = 'ec_ref'
     self.bin_path = os.path.join(self.cwd, self.bin)
Beispiel #2
0
    return secret_key * curve.base_point

def compute_sharedkey(secret_key, pub_key):
    if not pub_key.is_valid():
        return
    return secret_key * pub_key

def run(curve, tag):
    sk1 = generate_secretkey(curve)
    sk2 = generate_secretkey(curve)

    pk1 = compute_pubkey(curve, sk1)
    start = time.time()
    pk2 = compute_pubkey(curve, sk2)
    pub_time = time.time() - start

    sh1 = compute_sharedkey(sk1, pk2)
    assert sh1 is not None
    start = time.time()
    sh2 = compute_sharedkey(sk2, pk1)
    shared_time = time.time() - start
    assert sh2 is not None

    print('%-25s: pub_key=%0.3fs  shared_key=%0.3fs  equals=%s' % \
              (tag, pub_time, shared_time, sh1 == sh2))

if __name__ == '__main__':
    run(wcurve.secp256r1_curve(), 'secp256r1')
    run(wcurve.secp256r1_curve_infective(),
        'secp256r1_curve_infective')