2 * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
4 * Licensed under the OpenSSL license (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
10 #include <openssl/dh.h>
11 #include "internal/refcount.h"
15 * This first argument is used to pick up errors when a DH is passed
16 * instead of a EVP_PKEY
22 int32_t length
; /* optional */
23 BIGNUM
*pub_key
; /* g^x % p */
24 BIGNUM
*priv_key
; /* x */
26 BN_MONT_CTX
*method_mont_p
;
27 /* Place holders if we want to do X9.42 DH */
33 CRYPTO_REF_COUNT references
;
34 CRYPTO_EX_DATA ex_data
;
35 const DH_METHOD
*meth
;
43 int (*generate_key
) (DH
*dh
);
44 int (*compute_key
) (unsigned char *key
, const BIGNUM
*pub_key
, DH
*dh
);
47 int (*bn_mod_exp
) (const DH
*dh
, BIGNUM
*r
, const BIGNUM
*a
,
48 const BIGNUM
*p
, const BIGNUM
*m
, BN_CTX
*ctx
,
51 int (*finish
) (DH
*dh
);
54 /* If this is non-NULL, it will be used to generate parameters */
55 int (*generate_params
) (DH
*dh
, int prime_len
, int generator
,