70 # define HEADER_ECDH_H
72 # include <openssl/opensslconf.h>
74 # ifdef OPENSSL_NO_ECDH
75 # error ECDH is disabled.
78 # include <openssl/ec.h>
79 # include <openssl/ossl_typ.h>
80 # ifndef OPENSSL_NO_DEPRECATED
81 # include <openssl/bn.h>
88 # define EC_FLAG_COFACTOR_ECDH 0x1000
90 const ECDH_METHOD *ECDH_OpenSSL(
void);
92 void ECDH_set_default_method(
const ECDH_METHOD *);
93 const ECDH_METHOD *ECDH_get_default_method(
void);
94 int ECDH_set_method(EC_KEY *,
const ECDH_METHOD *);
96 int ECDH_compute_key(
void *out,
size_t outlen,
const EC_POINT *pub_key,
97 EC_KEY *ecdh,
void *(*KDF) (
const void *in,
size_t inlen,
98 void *out,
size_t *outlen));
100 int ECDH_get_ex_new_index(
long argl,
void *argp, CRYPTO_EX_new
101 *new_func, CRYPTO_EX_dup *dup_func,
102 CRYPTO_EX_free *free_func);
103 int ECDH_set_ex_data(EC_KEY *d,
int idx,
void *arg);
104 void *ECDH_get_ex_data(EC_KEY *d,
int idx);
106 int ECDH_KDF_X9_62(
unsigned char *out,
size_t outlen,
107 const unsigned char *Z,
size_t Zlen,
108 const unsigned char *sinfo,
size_t sinfolen,
116 void ERR_load_ECDH_strings(
void);
121 # define ECDH_F_ECDH_CHECK 102
122 # define ECDH_F_ECDH_COMPUTE_KEY 100
123 # define ECDH_F_ECDH_DATA_NEW_METHOD 101
126 # define ECDH_R_KDF_FAILED 102
127 # define ECDH_R_NON_FIPS_METHOD 103
128 # define ECDH_R_NO_PRIVATE_VALUE 100
129 # define ECDH_R_POINT_ARITHMETIC_FAILURE 101