summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES9
-rw-r--r--crypto/dh/dh.h9
-rw-r--r--crypto/dsa/dsa.h9
-rw-r--r--crypto/ecdh/ecdh.h9
-rw-r--r--crypto/ecdsa/ecdsa.h13
-rw-r--r--crypto/ecdsa/ecdsatest.c1
-rw-r--r--crypto/engine/eng_openssl.c1
-rw-r--r--crypto/engine/eng_table.c3
-rw-r--r--crypto/engine/engine.h9
-rw-r--r--crypto/err/err.h5
-rw-r--r--crypto/err/err_all.c1
-rw-r--r--crypto/evp/evp_enc.c1
-rw-r--r--crypto/ossl_typ.h22
-rw-r--r--crypto/rand/rand.h7
-rw-r--r--crypto/rsa/rsa.h8
-rw-r--r--crypto/store/store.h13
-rw-r--r--crypto/ui/ui.h16
-rw-r--r--engines/e_4758_cca.c2
-rw-r--r--engines/e_aep.c5
-rw-r--r--engines/e_atalla.c3
-rw-r--r--engines/e_cswift.c4
-rw-r--r--engines/e_ncipher.c1
-rw-r--r--engines/e_nuron.c4
-rw-r--r--engines/e_sureware.c1
-rw-r--r--engines/e_ubsec.c3
25 files changed, 108 insertions, 51 deletions
diff --git a/CHANGES b/CHANGES
index baa2a8afea..5dd7a41b51 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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