def test_multiply_random(self):
     for _ in range(100):
         sk1 = curve25519.generate_secret()
         sk2 = curve25519.generate_secret()
         pk1 = curve25519.publickey(sk1)
         pk2 = curve25519.publickey(sk2)
         session1 = curve25519.multiply(sk1, pk2)
         session2 = curve25519.multiply(sk2, pk1)
         self.assertEqual(session1, session2)
Ejemplo n.º 2
0
def ecdh(seckey: bytes, peer_public_key: bytes, curve: str) -> bytes:
    if curve == 'secp256k1':
        from trezor.crypto.curve import secp256k1
        session_key = secp256k1.multiply(seckey, peer_public_key)
    elif curve == 'nist256p1':
        from trezor.crypto.curve import nist256p1
        session_key = nist256p1.multiply(seckey, peer_public_key)
    elif curve == 'curve25519':
        from trezor.crypto.curve import curve25519
        if peer_public_key[0] != 0x40:
            raise ValueError('Curve25519 public key should start with 0x40')
        session_key = b'\x04' + curve25519.multiply(seckey, peer_public_key[1:])
    else:
        raise ValueError('Unsupported curve for ECDH: ' + curve)

    return session_key
Ejemplo n.º 3
0
def ecdh(seckey: bytes, peer_public_key: bytes, curve: str) -> bytes:
    if curve == "secp256k1":
        from trezor.crypto.curve import secp256k1

        session_key = secp256k1.multiply(seckey, peer_public_key)
    elif curve == "nist256p1":
        from trezor.crypto.curve import nist256p1

        session_key = nist256p1.multiply(seckey, peer_public_key)
    elif curve == "curve25519":
        from trezor.crypto.curve import curve25519

        if peer_public_key[0] != 0x40:
            raise wire.DataError("Curve25519 public key should start with 0x40")
        session_key = b"\x04" + curve25519.multiply(seckey, peer_public_key[1:])
    else:
        raise wire.DataError("Unsupported curve for ECDH: " + curve)

    return session_key
 def test_multiply(self):
     for sk, pk, session in self.vectors:
         session2 = curve25519.multiply(unhexlify(sk), unhexlify(pk))
         self.assertEqual(session2, unhexlify(session))