62 #include <openssl/e_os2.h>
65 #error DH is disabled.
68 #ifndef OPENSSL_NO_BIO
69 #include <openssl/bio.h>
71 #include <openssl/ossl_typ.h>
72 #ifndef OPENSSL_NO_DEPRECATED
73 #include <openssl/bn.h>
76 #ifndef OPENSSL_DH_MAX_MODULUS_BITS
77 # define OPENSSL_DH_MAX_MODULUS_BITS 10000
80 #define DH_FLAG_CACHE_MONT_P 0x01
81 #define DH_FLAG_NO_EXP_CONSTTIME 0x02
101 int (*generate_key)(
DH *dh);
102 int (*compute_key)(
unsigned char *key,
const BIGNUM *pub_key,
DH *dh);
108 int (*finish)(
DH *dh);
112 int (*generate_params)(
DH *dh,
int prime_len,
int generator,
BN_GENCB *cb);
142 #define DH_GENERATOR_2 2
144 #define DH_GENERATOR_5 5
147 #define DH_CHECK_P_NOT_PRIME 0x01
148 #define DH_CHECK_P_NOT_SAFE_PRIME 0x02
149 #define DH_UNABLE_TO_CHECK_GENERATOR 0x04
150 #define DH_NOT_SUITABLE_GENERATOR 0x08
153 #define DH_CHECK_PUBKEY_TOO_SMALL 0x01
154 #define DH_CHECK_PUBKEY_TOO_LARGE 0x02
158 #define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME
160 #define DHparams_dup(x) ASN1_dup_of_const(DH,i2d_DHparams,d2i_DHparams,x)
161 #define d2i_DHparams_fp(fp,x) (DH *)ASN1_d2i_fp((char *(*)())DH_new, \
162 (char *(*)())d2i_DHparams,(fp),(unsigned char **)(x))
163 #define i2d_DHparams_fp(fp,x) ASN1_i2d_fp(i2d_DHparams,(fp), \
164 (unsigned char *)(x))
165 #define d2i_DHparams_bio(bp,x) ASN1_d2i_bio_of(DH,DH_new,d2i_DHparams,bp,x)
166 #define i2d_DHparams_bio(bp,x) ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x)
170 void DH_set_default_method(
const DH_METHOD *meth);
171 const DH_METHOD *DH_get_default_method(
void);
176 void DH_free(
DH *dh);
177 int DH_up_ref(
DH *dh);
178 int DH_size(
const DH *dh);
179 int DH_get_ex_new_index(
long argl,
void *argp, CRYPTO_EX_new *new_func,
180 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
181 int DH_set_ex_data(
DH *d,
int idx,
void *arg);
182 void *DH_get_ex_data(
DH *d,
int idx);
185 #ifndef OPENSSL_NO_DEPRECATED
186 DH * DH_generate_parameters(
int prime_len,
int generator,
187 void (*callback)(
int,
int,
void *),
void *cb_arg);
191 int DH_generate_parameters_ex(
DH *dh,
int prime_len,
int generator,
BN_GENCB *cb);
193 int DH_check(
const DH *dh,
int *codes);
194 int DH_check_pub_key(
const DH *dh,
const BIGNUM *pub_key,
int *codes);
195 int DH_generate_key(
DH *dh);
196 int DH_compute_key(
unsigned char *key,
const BIGNUM *pub_key,
DH *dh);
197 DH * d2i_DHparams(
DH **a,
const unsigned char **pp,
long length);
198 int i2d_DHparams(
const DH *a,
unsigned char **pp);
199 #ifndef OPENSSL_NO_FP_API
200 int DHparams_print_fp(FILE *fp,
const DH *x);
202 #ifndef OPENSSL_NO_BIO
203 int DHparams_print(
BIO *bp,
const DH *x);
205 int DHparams_print(
char *bp,
const DH *x);
212 void ERR_load_DH_strings(
void);
217 #define DH_F_COMPUTE_KEY 102
218 #define DH_F_DHPARAMS_PRINT 100
219 #define DH_F_DHPARAMS_PRINT_FP 101
220 #define DH_F_DH_BUILTIN_GENPARAMS 106
221 #define DH_F_DH_NEW_METHOD 105
222 #define DH_F_GENERATE_KEY 103
223 #define DH_F_GENERATE_PARAMETERS 104
226 #define DH_R_BAD_GENERATOR 101
227 #define DH_R_INVALID_PUBKEY 102
228 #define DH_R_MODULUS_TOO_LARGE 103
229 #define DH_R_NO_PRIVATE_VALUE 100
Definition: eng_int.h:148