def derive(private_key: PrivateKey, peer_public_key: PublicKey) -> bytes: """ Key exchange between private key and peer's public key, `derive(k1, k2.public_key)` should be equal to `derive(k2, k1.public_key)`. Parameters ---------- private_key: coincurve.PrivateKey A secp256k1 private key peer_public_key: coincurve.PublicKey Peer's public key Returns ------- bytes A secret key used for symmetric encryption >>> from coincurve import PrivateKey >>> ke1 = generate_eth_key() >>> ke2 = generate_eth_key() >>> k1 = hex2prv(ke1.to_hex()) >>> k2 = hex2prv(ke2.to_hex()) >>> derive(k1, k2.public_key) == derive(k2, k1.public_key) True """ return private_key.ecdh(peer_public_key.format())
def derive(private_key: PrivateKey, peer_public_key: PublicKey) -> bytes: return private_key.ecdh(peer_public_key.format())