X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=crypto%2Fdh%2Fdh.h;h=a15fc1c65f7ec0fd6f3dd102d6355a9b49fcc711;hb=c5f8bbbc0b94f3ec3f3f8f2aabbe3cc81f7b8158;hp=8d60ae5c52f201c67648f9f2e067e7380a46b802;hpb=31b8d8684441e6cd5138832bb1b2ddb10acd6ba6;p=oweals%2Fopenssl.git diff --git a/crypto/dh/dh.h b/crypto/dh/dh.h index 8d60ae5c52..a15fc1c65f 100644 --- a/crypto/dh/dh.h +++ b/crypto/dh/dh.h @@ -59,17 +59,40 @@ #ifndef HEADER_DH_H #define HEADER_DH_H +#ifdef NO_DH +#error DH is disabled. +#endif + +#ifndef NO_BIO +#include +#endif +#include +#include + +#define DH_FLAG_CACHE_MONT_P 0x01 + #ifdef __cplusplus extern "C" { #endif -#ifndef HEADER_BN_H -#define BIGNUM char -#endif +typedef struct dh_st DH; -#define DH_FLAG_CACHE_MONT_P 0x01 +typedef struct dh_method { + const char *name; + /* Methods here */ + int (*generate_key)(DH *dh); + int (*compute_key)(unsigned char *key,BIGNUM *pub_key,DH *dh); + int (*bn_mod_exp)(DH *dh, BIGNUM *r, BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *m_ctx); /* Can be null */ -typedef struct dh_st + int (*init)(DH *dh); + int (*finish)(DH *dh); + int flags; + char *app_data; +} DH_METHOD; + +struct dh_st { /* This first argument is used to pick up errors when * a DH is passed instead of a EVP_PKEY */ @@ -78,12 +101,22 @@ typedef struct dh_st BIGNUM *p; BIGNUM *g; int length; /* optional */ - BIGNUM *pub_key; /* y */ + BIGNUM *pub_key; /* g^x */ BIGNUM *priv_key; /* x */ int flags; char *method_mont_p; - } DH; + /* Place holders if we want to do X9.42 DH */ + BIGNUM *q; + BIGNUM *j; + unsigned char *seed; + int seedlen; + BIGNUM *counter; + + int references; + CRYPTO_EX_DATA ex_data; + DH_METHOD *meth; + }; #define DH_GENERATOR_2 2 /* #define DH_GENERATOR_3 3 */ @@ -91,10 +124,14 @@ typedef struct dh_st /* DH_check error codes */ #define DH_CHECK_P_NOT_PRIME 0x01 -#define DH_CHECK_P_NOT_STRONG_PRIME 0x02 +#define DH_CHECK_P_NOT_SAFE_PRIME 0x02 #define DH_UNABLE_TO_CHECK_GENERATOR 0x04 #define DH_NOT_SUITABLE_GENERATOR 0x08 +/* primes p where (p-1)/2 is prime too are called "safe"; we define + this for backward compatibility: */ +#define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME + #define DHparams_dup(x) (DH *)ASN1_dup((int (*)())i2d_DHparams, \ (char *(*)())d2i_DHparams,(char *)(x)) #define d2i_DHparams_fp(fp,x) (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ @@ -103,15 +140,30 @@ typedef struct dh_st (unsigned char *)(x)) #define d2i_DHparams_bio(bp,x) (DH *)ASN1_d2i_bio((char *(*)())DH_new, \ (char *(*)())d2i_DHparams,(bp),(unsigned char **)(x)) +#ifdef __cplusplus +#define i2d_DHparams_bio(bp,x) ASN1_i2d_bio((int (*)())i2d_DHparams,(bp), \ + (unsigned char *)(x)) +#else #define i2d_DHparams_bio(bp,x) ASN1_i2d_bio(i2d_DHparams,(bp), \ (unsigned char *)(x)) +#endif + +DH_METHOD *DH_OpenSSL(void); + +void DH_set_default_method(DH_METHOD *meth); +DH_METHOD *DH_get_default_method(void); +DH_METHOD *DH_set_method(DH *dh, DH_METHOD *meth); +DH *DH_new_method(DH_METHOD *meth); -#ifndef NOPROTO DH * DH_new(void); void DH_free(DH *dh); int DH_size(DH *dh); +int DH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); +int DH_set_ex_data(DH *d, int idx, void *arg); +void *DH_get_ex_data(DH *d, int idx); DH * DH_generate_parameters(int prime_len,int generator, - void (*callback)(int,int,char *),char *cb_arg); + void (*callback)(int,int,void *),void *cb_arg); int DH_check(DH *dh,int *codes); int DH_generate_key(DH *dh); int DH_compute_key(unsigned char *key,BIGNUM *pub_key,DH *dh); @@ -120,33 +172,18 @@ int i2d_DHparams(DH *a,unsigned char **pp); #ifndef NO_FP_API int DHparams_print_fp(FILE *fp, DH *x); #endif -#ifdef HEADER_BIO_H +#ifndef NO_BIO int DHparams_print(BIO *bp, DH *x); #else int DHparams_print(char *bp, DH *x); #endif void ERR_load_DH_strings(void ); -#else - -DH * DH_new(); -void DH_free(); -int DH_size(); -DH * DH_generate_parameters(); -int DH_check(); -int DH_generate_key(); -int DH_compute_key(); -DH * d2i_DHparams(); -int i2d_DHparams(); -#ifndef NO_FP_API -int DHparams_print_fp(); -#endif -int DHparams_print(); -void ERR_load_DH_strings(); - -#endif - /* BEGIN ERROR CODES */ +/* The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + /* Error codes for the DH functions. */ /* Function codes. */ @@ -159,7 +196,7 @@ void ERR_load_DH_strings(); /* Reason codes. */ #define DH_R_NO_PRIVATE_VALUE 100 - + #ifdef __cplusplus } #endif