X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fdh%2Fdhtest.c;h=dc25283f7c96b83002ca537928b086337adc1990;hp=b3387158806f96ab0a559a06b16e1c87e0039707;hb=66ecdf3bfb0320647b8e2ab9f93ffc3f231e54e8;hpb=d02b48c63a58ea4367a0e905979f140b7d090f86 diff --git a/crypto/dh/dhtest.c b/crypto/dh/dhtest.c index b338715880..dc25283f7c 100644 --- a/crypto/dh/dhtest.c +++ b/crypto/dh/dhtest.c @@ -1,5 +1,5 @@ /* crypto/dh/dhtest.c */ -/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * * This package is an SSL implementation written @@ -56,56 +56,79 @@ * [including the GNU Public Licence.] */ +/* Until the key-gen callbacks are modified to use newer prototypes, we allow + * deprecated functions for openssl-internal code */ +#ifdef OPENSSL_NO_DEPRECATED +#undef OPENSSL_NO_DEPRECATED +#endif + #include #include #include -#ifdef WIN16 -#define APPS_WIN16 -#endif -#include "crypto.h" -#include "bio.h" -#include "bn.h" -#include "dh.h" -#ifdef WIN16 -#define MS_CALLBACK _far _loadds +#include "../e_os.h" + +#include +#include +#include +#include +#include + +#ifdef OPENSSL_NO_DH +int main(int argc, char *argv[]) +{ + printf("No DH support\n"); + return(0); +} #else -#define MS_CALLBACK -#endif +#include -#ifndef NOPROTO -static void MS_CALLBACK cb(int p, int n); +#ifdef OPENSSL_SYS_WIN16 +#define MS_CALLBACK _far _loadds #else -static void MS_CALLBACK cb(); +#define MS_CALLBACK #endif -#ifdef WIN16 -#define APPS_WIN16 -#include "../bio/bss_file.c" -#endif +static void MS_CALLBACK cb(int p, int n, void *arg); -BIO *out=NULL; +static const char rnd_seed[] = "string to make the random number generator think it has entropy"; -int main(argc,argv) -int argc; -char *argv[]; +int main(int argc, char *argv[]) { - DH *a,*b; + DH *a; + DH *b=NULL; char buf[12]; unsigned char *abuf=NULL,*bbuf=NULL; int i,alen,blen,aout,bout,ret=1; + BIO *out; + + CRYPTO_malloc_debug_init(); + CRYPTO_dbg_set_options(V_CRYPTO_MDEBUG_ALL); + CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); -#ifdef WIN32 +#ifdef OPENSSL_SYS_WIN32 CRYPTO_malloc_init(); #endif + RAND_seed(rnd_seed, sizeof rnd_seed); + out=BIO_new(BIO_s_file()); - if (out == NULL) exit(1); + if (out == NULL) EXIT(1); BIO_set_fp(out,stdout,BIO_NOCLOSE); - a=DH_generate_parameters(64,DH_GENERATOR_5,cb); + a=DH_generate_parameters(64,DH_GENERATOR_5,cb,out); if (a == NULL) goto err; + if (!DH_check(a, &i)) goto err; + if (i & DH_CHECK_P_NOT_PRIME) + BIO_puts(out, "p value is not prime\n"); + if (i & DH_CHECK_P_NOT_SAFE_PRIME) + BIO_puts(out, "p value is not a safe prime\n"); + if (i & DH_UNABLE_TO_CHECK_GENERATOR) + BIO_puts(out, "unable to check the generator value\n"); + if (i & DH_NOT_SUITABLE_GENERATOR) + BIO_puts(out, "the g value is not a generator\n"); + BIO_puts(out,"\np ="); BN_print(out,a->p); BIO_puts(out,"\ng ="); @@ -134,7 +157,7 @@ char *argv[]; BIO_puts(out,"\n"); alen=DH_size(a); - abuf=(unsigned char *)Malloc(alen); + abuf=(unsigned char *)OPENSSL_malloc(alen); aout=DH_compute_key(abuf,b->pub_key,a); BIO_puts(out,"key1 ="); @@ -146,7 +169,7 @@ char *argv[]; BIO_puts(out,"\n"); blen=DH_size(b); - bbuf=(unsigned char *)Malloc(blen); + bbuf=(unsigned char *)OPENSSL_malloc(blen); bout=DH_compute_key(bbuf,a->pub_key,b); BIO_puts(out,"key2 ="); @@ -164,15 +187,21 @@ char *argv[]; else ret=0; err: - if (abuf != NULL) Free(abuf); - if (bbuf != NULL) Free(bbuf); - exit(ret); + ERR_print_errors_fp(stderr); + + if (abuf != NULL) OPENSSL_free(abuf); + if (bbuf != NULL) OPENSSL_free(bbuf); + if(b != NULL) DH_free(b); + if(a != NULL) DH_free(a); + BIO_free(out); + CRYPTO_cleanup_all_ex_data(); + ERR_remove_state(0); + CRYPTO_mem_leaks_fp(stderr); + EXIT(ret); return(ret); } -static void MS_CALLBACK cb(p, n) -int p; -int n; +static void MS_CALLBACK cb(int p, int n, void *arg) { char c='*'; @@ -180,8 +209,10 @@ int n; if (p == 1) c='+'; if (p == 2) c='*'; if (p == 3) c='\n'; - BIO_write(out,&c,1); + BIO_write((BIO *)arg,&c,1); + (void)BIO_flush((BIO *)arg); #ifdef LINT p=n; #endif } +#endif