# Sortix nightly manual

This manual documents Sortix nightly, a development build that has not been officially released. You can instead view this document in the latest official manual.

ECDH_COMPUTE_KEY(3) | Library Functions Manual | ECDH_COMPUTE_KEY(3) |

# NAME

`ECDH_compute_key`

,
`ECDH_size`

—
Elliptic Curve Diffie-Hellman key exchange

# SYNOPSIS

```
#include
<openssl/ecdh.h>
```

`int`

`ECDH_compute_key`

(`void *out`,

`size_t outlen`,

`const EC_POINT *public_key`,

`EC_KEY *ecdh`,

`void *(*KDF)(const void *in, size_t inlen, void *out, size_t *outlen)`);

`int`

`ECDH_size`

(`const EC_KEY *ecdh`);

# DESCRIPTION

`ECDH_compute_key`

() performs Elliptic Curve
Diffie-Hellman key agreement. It combines the private key contained in
`ecdh`with the other party's

`public_key`, takes the

`x`component of the affine coordinates, and optionally applies the key derivation function

`KDF`. It stores the resulting symmetric key in the buffer

`out`, which is

`outlen`bytes long. If

`KDF`is

`NULL`

,
`outlen`must be at least

`ECDH_size`

(`ecdh`).

`ECDH_size`

() returns the number of bytes
needed to store an affine coordinate of a point on the elliptic curve used by
`ecdh`, which is one eighth of the degree of the finite field underlying that elliptic curve, rounded up to the next integer number.

# RETURN VALUES

`ECDH_compute_key`

() returns the length of the
computed key in bytes or -1 if an error occurs.
`ECDH_size`

() returns the number of bytes
needed to store an affine coordinate.
# SEE ALSO

DH_generate_key(3), DH_size(3), EC_GROUP_new(3), EC_KEY_new(3), EC_POINT_new(3), X25519(3)# HISTORY

`ECDH_compute_key`

() first appeared in OpenSSL
0.9.8 and has been available since OpenBSD 4.5.
`ECDH_size`

() first appeared in
OpenBSD 6.1.March 12, 2021 | Debian |