Beispiel #1
0
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())
Beispiel #2
0
def derive(private_key: PrivateKey, peer_public_key: PublicKey) -> bytes:
    return private_key.ecdh(peer_public_key.format())