diff options
-rw-r--r-- | CHANGES | 9 | ||||
-rw-r--r-- | crypto/dh/dh.h | 9 | ||||
-rw-r--r-- | crypto/dsa/dsa.h | 9 | ||||
-rw-r--r-- | crypto/ecdh/ecdh.h | 9 | ||||
-rw-r--r-- | crypto/ecdsa/ecdsa.h | 13 | ||||
-rw-r--r-- | crypto/ecdsa/ecdsatest.c | 1 | ||||
-rw-r--r-- | crypto/engine/eng_openssl.c | 1 | ||||
-rw-r--r-- | crypto/engine/eng_table.c | 3 | ||||
-rw-r--r-- | crypto/engine/engine.h | 9 | ||||
-rw-r--r-- | crypto/err/err.h | 5 | ||||
-rw-r--r-- | crypto/err/err_all.c | 1 | ||||
-rw-r--r-- | crypto/evp/evp_enc.c | 1 | ||||
-rw-r--r-- | crypto/ossl_typ.h | 22 | ||||
-rw-r--r-- | crypto/rand/rand.h | 7 | ||||
-rw-r--r-- | crypto/rsa/rsa.h | 8 | ||||
-rw-r--r-- | crypto/store/store.h | 13 | ||||
-rw-r--r-- | crypto/ui/ui.h | 16 | ||||
-rw-r--r-- | engines/e_4758_cca.c | 2 | ||||
-rw-r--r-- | engines/e_aep.c | 5 | ||||
-rw-r--r-- | engines/e_atalla.c | 3 | ||||
-rw-r--r-- | engines/e_cswift.c | 4 | ||||
-rw-r--r-- | engines/e_ncipher.c | 1 | ||||
-rw-r--r-- | engines/e_nuron.c | 4 | ||||
-rw-r--r-- | engines/e_sureware.c | 1 | ||||
-rw-r--r-- | engines/e_ubsec.c | 3 |
25 files changed, 108 insertions, 51 deletions
@@ -4,6 +4,15 @@ Changes between 0.9.7c and 0.9.8 [xx XXX xxxx] + *) Reduced header interdepencies by declaring more opaque objects in + ossl_typ.h. As a consequence, including some headers (eg. engine.h) will + give fewer recursive includes, which could break lazy source code - so + this change is covered by the OPENSSL_NO_DEPRECATED symbol. As always, + developers should define this symbol when building and using openssl to + ensure they track the recommended behaviour, interfaces, [etc], but + backwards-compatible behaviour prevails when this isn't defined. + [Geoff Thorpe] + *) New function X509_POLICY_NODE_print() which prints out policy nodes. [Steve Henson] diff --git a/crypto/dh/dh.h b/crypto/dh/dh.h index db4e11090d..28a1b4208d 100644 --- a/crypto/dh/dh.h +++ b/crypto/dh/dh.h @@ -78,9 +78,12 @@ extern "C" { #endif -typedef struct dh_st DH; +/* Already defined in ossl_typ.h */ +/* typedef struct dh_st DH; */ +/* typedef struct dh_method DH_METHOD; */ -typedef struct dh_method { +struct dh_method + { const char *name; /* Methods here */ int (*generate_key)(DH *dh); @@ -95,7 +98,7 @@ typedef struct dh_method { char *app_data; /* If this is non-NULL, it will be used to generate parameters */ int (*generate_params)(DH *dh, int prime_len, int generator, BN_GENCB *cb); -} DH_METHOD; + }; struct dh_st { diff --git a/crypto/dsa/dsa.h b/crypto/dsa/dsa.h index 651add43ae..d54c5d59bc 100644 --- a/crypto/dsa/dsa.h +++ b/crypto/dsa/dsa.h @@ -87,7 +87,9 @@ extern "C" { #endif -typedef struct dsa_st DSA; +/* Already defined in ossl_typ.h */ +/* typedef struct dsa_st DSA; */ +/* typedef struct dsa_method DSA_METHOD; */ typedef struct DSA_SIG_st { @@ -95,7 +97,8 @@ typedef struct DSA_SIG_st BIGNUM *s; } DSA_SIG; -typedef struct dsa_method { +struct dsa_method + { const char *name; DSA_SIG * (*dsa_do_sign)(const unsigned char *dgst, int dlen, DSA *dsa); int (*dsa_sign_setup)(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, @@ -119,7 +122,7 @@ typedef struct dsa_method { BN_GENCB *cb); /* If this is non-NULL, it is used to generate DSA keys */ int (*dsa_keygen)(DSA *dsa); -} DSA_METHOD; + }; struct dsa_st { diff --git a/crypto/ecdh/ecdh.h b/crypto/ecdh/ecdh.h index db6fd48701..1a62a214b3 100644 --- a/crypto/ecdh/ecdh.h +++ b/crypto/ecdh/ecdh.h @@ -83,8 +83,11 @@ extern "C" { #endif -typedef struct ecdh_method -{ +/* Already defined in ossl_typ.h */ +/* typedef struct ecdh_method ECDH_METHOD; */ + +struct ecdh_method + { const char *name; int (*compute_key)(void *key, size_t outlen, const EC_POINT *pub_key, EC_KEY *ecdh, void *(*KDF)(void *in, size_t inlen, void *out, size_t outlen)); @@ -94,7 +97,7 @@ typedef struct ecdh_method #endif int flags; char *app_data; -} ECDH_METHOD; + }; typedef struct ecdh_data_st { /* EC_KEY_METH_DATA part */ diff --git a/crypto/ecdsa/ecdsa.h b/crypto/ecdsa/ecdsa.h index 3e6abd26f6..a57ba0f14f 100644 --- a/crypto/ecdsa/ecdsa.h +++ b/crypto/ecdsa/ecdsa.h @@ -73,14 +73,17 @@ extern "C" { #endif +/* Already defined in ossl_typ.h */ +/* typedef struct ecdsa_method ECDSA_METHOD; */ + typedef struct ECDSA_SIG_st -{ + { BIGNUM *r; BIGNUM *s; -} ECDSA_SIG; + } ECDSA_SIG; -typedef struct ecdsa_method -{ +struct ecdsa_method + { const char *name; ECDSA_SIG *(*ecdsa_do_sign)(const unsigned char *dgst, int dgst_len, EC_KEY *eckey); @@ -94,7 +97,7 @@ typedef struct ecdsa_method #endif int flags; char *app_data; -} ECDSA_METHOD; + }; typedef struct ecdsa_data_st { /* EC_KEY_METH_DATA part */ diff --git a/crypto/ecdsa/ecdsatest.c b/crypto/ecdsa/ecdsatest.c index d58e9a63f0..f3371e4229 100644 --- a/crypto/ecdsa/ecdsatest.c +++ b/crypto/ecdsa/ecdsatest.c @@ -95,6 +95,7 @@ int main(int argc, char * argv[]) #include <openssl/ecdsa.h> #include <openssl/engine.h> #include <openssl/err.h> +#include <openssl/rand.h> static const char rnd_seed[] = "string to make the random number generator " "think it has entropy"; diff --git a/crypto/engine/eng_openssl.c b/crypto/engine/eng_openssl.c index 09d281c19d..4b9cc0a83d 100644 --- a/crypto/engine/eng_openssl.c +++ b/crypto/engine/eng_openssl.c @@ -69,6 +69,7 @@ #include <openssl/dso.h> #include <openssl/pem.h> #include <openssl/evp.h> +#include <openssl/rand.h> /* This testing gunk is implemented (and explained) lower down. It also assumes * the application explicitly calls "ENGINE_load_openssl()" because this is no diff --git a/crypto/engine/eng_table.c b/crypto/engine/eng_table.c index c69a84a8bf..23e41110cb 100644 --- a/crypto/engine/eng_table.c +++ b/crypto/engine/eng_table.c @@ -52,8 +52,9 @@ * */ +#include "cryptlib.h" #include <openssl/evp.h> -#include <openssl/engine.h> +#include <openssl/lhash.h> #include "eng_int.h" /* This is the type of item in the 'implementation' table. Each 'nid' hashes to diff --git a/crypto/engine/engine.h b/crypto/engine/engine.h index bcbec5162c..712687ea40 100644 --- a/crypto/engine/engine.h +++ b/crypto/engine/engine.h @@ -3,7 +3,7 @@ * project 2000. */ /* ==================================================================== - * Copyright (c) 1999-2001 The OpenSSL Project. All rights reserved. + * Copyright (c) 1999-2004 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -70,7 +70,7 @@ #error ENGINE is disabled. #endif -#include <openssl/ossl_typ.h> +#ifndef OPENSSL_NO_DEPRECATED #include <openssl/bn.h> #ifndef OPENSSL_NO_RSA #include <openssl/rsa.h> @@ -90,8 +90,11 @@ #include <openssl/rand.h> #include <openssl/store.h> #include <openssl/ui.h> -#include <openssl/symhacks.h> #include <openssl/err.h> +#endif + +#include <openssl/ossl_typ.h> +#include <openssl/symhacks.h> #ifdef __cplusplus extern "C" { diff --git a/crypto/err/err.h b/crypto/err/err.h index d893f60bb7..b723cd977a 100644 --- a/crypto/err/err.h +++ b/crypto/err/err.h @@ -66,6 +66,7 @@ #include <stdlib.h> #endif +#include <openssl/ossl_typ.h> #ifndef OPENSSL_NO_BIO #include <openssl/bio.h> #endif @@ -301,8 +302,8 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); -/* This opaque type encapsulates the low-level error-state functions */ -typedef struct st_ERR_FNS ERR_FNS; +/* Already defined in ossl_typ.h */ +/* typedef struct st_ERR_FNS ERR_FNS; */ /* An application can use this function and provide the return value to loaded * modules that should use the application's ERR state/functionality */ const ERR_FNS *ERR_get_implementation(void); diff --git a/crypto/err/err_all.c b/crypto/err/err_all.c index 6da4326b2a..bfb4c1ab12 100644 --- a/crypto/err/err_all.c +++ b/crypto/err/err_all.c @@ -91,6 +91,7 @@ #ifndef OPENSSL_NO_ENGINE #include <openssl/engine.h> #endif +#include <openssl/ui.h> #include <openssl/ocsp.h> #include <openssl/err.h> diff --git a/crypto/evp/evp_enc.c b/crypto/evp/evp_enc.c index b5236b9766..c495200282 100644 --- a/crypto/evp/evp_enc.c +++ b/crypto/evp/evp_enc.c @@ -60,6 +60,7 @@ #include "cryptlib.h" #include <openssl/evp.h> #include <openssl/err.h> +#include <openssl/rand.h> #ifndef OPENSSL_NO_ENGINE #include <openssl/engine.h> #endif diff --git a/crypto/ossl_typ.h b/crypto/ossl_typ.h index 2977b10827..41a0558617 100644 --- a/crypto/ossl_typ.h +++ b/crypto/ossl_typ.h @@ -107,6 +107,20 @@ typedef struct env_md_st EVP_MD; typedef struct env_md_ctx_st EVP_MD_CTX; typedef struct evp_pkey_st EVP_PKEY; +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; + +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; + +typedef struct rand_meth_st RAND_METHOD; + +typedef struct ecdh_method ECDH_METHOD; +typedef struct ecdsa_method ECDSA_METHOD; + typedef struct x509_st X509; typedef struct X509_algor_st X509_ALGOR; typedef struct X509_crl_st X509_CRL; @@ -117,6 +131,14 @@ typedef struct x509_store_ctx_st X509_STORE_CTX; typedef struct v3_ext_ctx X509V3_CTX; typedef struct conf_st CONF; +typedef struct store_st STORE; +typedef struct store_method_st STORE_METHOD; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct st_ERR_FNS ERR_FNS; + typedef struct engine_st ENGINE; typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; diff --git a/crypto/rand/rand.h b/crypto/rand/rand.h index 606382dd21..6f544994ce 100644 --- a/crypto/rand/rand.h +++ b/crypto/rand/rand.h @@ -71,7 +71,10 @@ extern "C" { #endif -typedef struct rand_meth_st +/* Already defined in ossl_typ.h */ +/* typedef struct rand_meth_st RAND_METHOD; */ + +struct rand_meth_st { void (*seed)(const void *buf, int num); int (*bytes)(unsigned char *buf, int num); @@ -79,7 +82,7 @@ typedef struct rand_meth_st void (*add)(const void *buf, int num, double entropy); int (*pseudorand)(unsigned char *buf, int num); int (*status)(void); - } RAND_METHOD; + }; #ifdef BN_DEBUG extern int rand_predictable; diff --git a/crypto/rsa/rsa.h b/crypto/rsa/rsa.h index b3ed1edd3f..f82d493f95 100644 --- a/crypto/rsa/rsa.h +++ b/crypto/rsa/rsa.h @@ -76,9 +76,11 @@ extern "C" { #endif -typedef struct rsa_st RSA; +/* Declared already in ossl_typ.h */ +/* typedef struct rsa_st RSA; */ +/* typedef struct rsa_meth_st RSA_METHOD; */ -typedef struct rsa_meth_st +struct rsa_meth_st { const char *name; int (*rsa_pub_enc)(int flen,const unsigned char *from, @@ -119,7 +121,7 @@ typedef struct rsa_meth_st * it would be nice to assume there are no such things as "builtin software" * implementations. */ int (*rsa_keygen)(RSA *rsa, int bits, unsigned long e, BN_GENCB *cb); - } RSA_METHOD; + }; struct rsa_st { diff --git a/crypto/store/store.h b/crypto/store/store.h index 314f216283..40fb38fc43 100644 --- a/crypto/store/store.h +++ b/crypto/store/store.h @@ -59,6 +59,7 @@ #ifndef HEADER_STORE_H #define HEADER_STORE_H +#include <openssl/ossl_typ.h> #include <openssl/x509.h> #include <openssl/evp.h> #include <openssl/bn.h> @@ -67,15 +68,9 @@ extern "C" { #endif -/* The STORE type is a per-store context that holds all the necessary data - to perform all the supported storage operations. */ -typedef struct store_st STORE; - -/* All instances of STORE have a reference to a method structure, which is a - ordered vector of functions that implement the lower level things to do. - There is an instruction on the implementation further down, in the section - for method implementors. */ -typedef struct store_method_st STORE_METHOD; +/* Already defined in ossl_typ.h */ +/* typedef struct store_st STORE; */ +/* typedef struct store_method_st STORE_METHOD; */ /* All the following functions return 0, a negative number or NULL on error. diff --git a/crypto/ui/ui.h b/crypto/ui/ui.h index 735a2d988e..f7c3054d8c 100644 --- a/crypto/ui/ui.h +++ b/crypto/ui/ui.h @@ -61,23 +61,15 @@ #include <openssl/crypto.h> #include <openssl/safestack.h> +#include <openssl/ossl_typ.h> #ifdef __cplusplus extern "C" { #endif -/* The UI type is a holder for a specific user interface session. It can - contain an illimited number of informational or error strings as well - as things to prompt for, both passwords (noecho mode) and others (echo - mode), and verification of the same. All of these are called strings, - and are further described below. */ -typedef struct ui_st UI; - -/* All instances of UI have a reference to a method structure, which is a - ordered vector of functions that implement the lower level things to do. - There is an instruction on the implementation further down, in the section - for method implementors. */ -typedef struct ui_method_st UI_METHOD; +/* Declared already in ossl_typ.h */ +/* typedef struct ui_st UI; */ +/* typedef struct ui_method_st UI_METHOD; */ /* All the following functions return -1 or NULL on error and in some cases diff --git a/engines/e_4758_cca.c b/engines/e_4758_cca.c index b006ed8763..3c8e5f6193 100644 --- a/engines/e_4758_cca.c +++ b/engines/e_4758_cca.c @@ -56,11 +56,11 @@ #include <stdio.h> #include <string.h> #include <openssl/crypto.h> -/* #include <openssl/pem.h> */ #include <openssl/dso.h> #include <openssl/x509.h> #include <openssl/objects.h> #include <openssl/engine.h> +#include <openssl/rand.h> #ifndef OPENSSL_NO_HW #ifndef OPENSSL_NO_HW_4758_CCA diff --git a/engines/e_aep.c b/engines/e_aep.c index aa4fe75704..5e66fb1f83 100644 --- a/engines/e_aep.c +++ b/engines/e_aep.c @@ -1,6 +1,3 @@ -/* crypto/engine/hw_aep.c */ -/* - */ /* ==================================================================== * Copyright (c) 1999 The OpenSSL Project. All rights reserved. * @@ -72,6 +69,8 @@ typedef int pid_t; #include <openssl/dso.h> #include <openssl/engine.h> #include <openssl/buffer.h> +#include <openssl/rsa.h> +#include <openssl/dsa.h> #ifndef OPENSSL_NO_HW #ifndef OPENSSL_NO_HW_AEP diff --git a/engines/e_atalla.c b/engines/e_atalla.c index cc6c9695f0..82dae45867 100644 --- a/engines/e_atalla.c +++ b/engines/e_atalla.c @@ -62,6 +62,9 @@ #include <openssl/buffer.h> #include <openssl/dso.h> #include <openssl/engine.h> +#include <openssl/rsa.h> +#include <openssl/dsa.h> +#include <openssl/dh.h> #ifndef OPENSSL_NO_HW #ifndef OPENSSL_NO_HW_ATALLA diff --git a/engines/e_cswift.c b/engines/e_cswift.c index cc39cd4947..b73126b037 100644 --- a/engines/e_cswift.c +++ b/engines/e_cswift.c @@ -62,6 +62,10 @@ #include <openssl/buffer.h> #include <openssl/dso.h> #include <openssl/engine.h> +#include <openssl/rsa.h> +#include <openssl/dsa.h> +#include <openssl/dh.h> +#include <openssl/rand.h> #ifndef OPENSSL_NO_HW #ifndef OPENSSL_NO_HW_CSWIFT diff --git a/engines/e_ncipher.c b/engines/e_ncipher.c index e075d1b459..481c9b0997 100644 --- a/engines/e_ncipher.c +++ b/engines/e_ncipher.c @@ -64,6 +64,7 @@ #include <openssl/dso.h> #include <openssl/engine.h> #include <openssl/ui.h> +#include <openssl/rand.h> #ifndef OPENSSL_NO_HW #ifndef OPENSSL_NO_HW_NCIPHER diff --git a/engines/e_nuron.c b/engines/e_nuron.c index 4df6f0495a..3ddbf594df 100644 --- a/engines/e_nuron.c +++ b/engines/e_nuron.c @@ -62,7 +62,9 @@ #include <openssl/buffer.h> #include <openssl/dso.h> #include <openssl/engine.h> - +#include <openssl/rsa.h> +#include <openssl/dsa.h> +#include <openssl/dh.h> #ifndef OPENSSL_NO_HW #ifndef OPENSSL_NO_HW_NURON diff --git a/engines/e_sureware.c b/engines/e_sureware.c index 8e77e5c282..654f41031a 100644 --- a/engines/e_sureware.c +++ b/engines/e_sureware.c @@ -56,6 +56,7 @@ #include <openssl/pem.h> #include <openssl/dso.h> #include <openssl/engine.h> +#include <openssl/rand.h> #ifndef OPENSSL_NO_HW #ifndef OPENSSL_NO_HW_SUREWARE diff --git a/engines/e_ubsec.c b/engines/e_ubsec.c index 5aa29f1c53..37c22638ff 100644 --- a/engines/e_ubsec.c +++ b/engines/e_ubsec.c @@ -64,6 +64,9 @@ #include <openssl/buffer.h> #include <openssl/dso.h> #include <openssl/engine.h> +#include <openssl/rsa.h> +#include <openssl/dsa.h> +#include <openssl/dh.h> #ifndef OPENSSL_NO_HW #ifndef OPENSSL_NO_HW_UBSEC |