aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorlloyd <[email protected]>2008-10-01 15:01:06 +0000
committerlloyd <[email protected]>2008-10-01 15:01:06 +0000
commit1034cf44b4ee0948312c11a1b079b8b04c5828e2 (patch)
tree17bd5ec37cea079132d0774435b81f8c18fc01f4 /src
parent9da5c08de6bb6a6972a48ee5bb11ab7654c37f63 (diff)
Split Diffie-Hellman off almost completely, such that nearly none of
it builds if it is disabled. Current deficiency: due to #if defined(BLAH) in the engine code, Botan will not be binary compat across different configurations b/c the vtable will change size. Move some source from core/ to core/libstate where it belonged (engine stuff)
Diffstat (limited to 'src')
-rw-r--r--src/core/info.txt2
-rw-r--r--src/core/libstate/def_powm.cpp (renamed from src/core/def_powm.cpp)0
-rw-r--r--src/core/libstate/eng_base.cpp76
-rw-r--r--src/core/libstate/eng_def.h (renamed from src/core/eng_def.h)3
-rw-r--r--src/core/libstate/engine.cpp2
-rw-r--r--src/core/libstate/engine.h36
-rw-r--r--src/core/libstate/info.txt2
-rw-r--r--src/pubkey/dh/dh_core.h4
-rw-r--r--src/pubkey/dh/dh_op.cpp20
-rw-r--r--src/pubkey/dh/dh_op.h (renamed from src/pubkey/pubkey/dh_op.cpp)38
-rw-r--r--src/pubkey/dh/info.txt2
-rw-r--r--src/pubkey/dsa/dsa.cpp1
-rw-r--r--src/pubkey/elgamal/elgamal.cpp1
-rw-r--r--src/pubkey/nr/nr.cpp1
-rw-r--r--src/pubkey/pubkey/if_op.cpp (renamed from src/pubkey/pubkey/rsa_op.cpp)0
-rw-r--r--src/pubkey/pubkey/info.txt3
-rw-r--r--src/pubkey/pubkey/pk_ops.h11
-rw-r--r--src/pubkey/rsa/rsa.cpp3
-rw-r--r--src/pubkey/rw/rw.cpp1
19 files changed, 85 insertions, 121 deletions
diff --git a/src/core/info.txt b/src/core/info.txt
index 9331d56dd..6c031d36f 100644
--- a/src/core/info.txt
+++ b/src/core/info.txt
@@ -21,10 +21,8 @@ base.h
botan.h
data_src.cpp
data_src.h
-def_powm.cpp
defalloc.cpp
defalloc.h
-eng_def.h
enums.h
exceptn.cpp
exceptn.h
diff --git a/src/core/def_powm.cpp b/src/core/libstate/def_powm.cpp
index a28438f5b..a28438f5b 100644
--- a/src/core/def_powm.cpp
+++ b/src/core/libstate/def_powm.cpp
diff --git a/src/core/libstate/eng_base.cpp b/src/core/libstate/eng_base.cpp
index a296a2762..aaaf46723 100644
--- a/src/core/libstate/eng_base.cpp
+++ b/src/core/libstate/eng_base.cpp
@@ -64,82 +64,6 @@ class Algorithm_Cache_Impl : public Engine::Algorithm_Cache<T>
}
/*************************************************
-* Basic No-Op Engine Implementation *
-*************************************************/
-IF_Operation* Engine::if_op(const BigInt&, const BigInt&, const BigInt&,
- const BigInt&, const BigInt&, const BigInt&,
- const BigInt&, const BigInt&) const
- {
- return 0;
- }
-
-/*************************************************
-* Basic No-Op Engine Implementation *
-*************************************************/
-DSA_Operation* Engine::dsa_op(const DL_Group&, const BigInt&,
- const BigInt&) const
- {
- return 0;
- }
-
-/*************************************************
-* Basic No-Op Engine Implementation *
-*************************************************/
-NR_Operation* Engine::nr_op(const DL_Group&, const BigInt&,
- const BigInt&) const
- {
- return 0;
- }
-
-/*************************************************
-* Basic No-Op Engine Implementation *
-*************************************************/
-ELG_Operation* Engine::elg_op(const DL_Group&, const BigInt&,
- const BigInt&) const
- {
- return 0;
- }
-
-/*************************************************
-* Basic No-Op Engine Implementation *
-*************************************************/
-DH_Operation* Engine::dh_op(const DL_Group&, const BigInt&) const
- {
- return 0;
- }
-
-#if defined(BOTAN_HAS_ECDSA)
-/*************************************************
-* Basic No-Op Engine Implementation *
-*************************************************/
-ECDSA_Operation* Engine::ecdsa_op(const EC_Domain_Params&,
- const BigInt&,
- const PointGFp&) const
- {
- return 0;
- }
-
-/*************************************************
-* Basic No-Op Engine Implementation *
-*************************************************/
-ECKAEG_Operation* Engine::eckaeg_op(const EC_Domain_Params&,
- const BigInt&,
- const PointGFp&) const
- {
- return 0;
- }
-#endif
-
-/*************************************************
-* Basic No-Op Engine Implementation *
-*************************************************/
-Modular_Exponentiator* Engine::mod_exp(const BigInt&,
- Power_Mod::Usage_Hints) const
- {
- return 0;
- }
-
-/*************************************************
* Acquire a BlockCipher *
*************************************************/
const BlockCipher* Engine::block_cipher(const std::string& name) const
diff --git a/src/core/eng_def.h b/src/core/libstate/eng_def.h
index 95f1fc0f7..7d7ecce58 100644
--- a/src/core/eng_def.h
+++ b/src/core/libstate/eng_def.h
@@ -24,7 +24,10 @@ class BOTAN_DLL Default_Engine : public Engine
NR_Operation* nr_op(const DL_Group&, const BigInt&, const BigInt&) const;
ELG_Operation* elg_op(const DL_Group&, const BigInt&,
const BigInt&) const;
+
+#if defined(BOTAN_HAS_DH)
DH_Operation* dh_op(const DL_Group&, const BigInt&) const;
+#endif
Modular_Exponentiator* mod_exp(const BigInt&,
Power_Mod::Usage_Hints) const;
diff --git a/src/core/libstate/engine.cpp b/src/core/libstate/engine.cpp
index fb2477936..13ab63193 100644
--- a/src/core/libstate/engine.cpp
+++ b/src/core/libstate/engine.cpp
@@ -83,6 +83,7 @@ ELG_Operation* elg_op(const DL_Group& group, const BigInt& y, const BigInt& x)
throw Lookup_Error("Engine_Core::elg_op: Unable to find a working engine");
}
+#if defined(BOTAN_HAS_DH)
/*************************************************
* Acquire a DH op *
*************************************************/
@@ -99,6 +100,7 @@ DH_Operation* dh_op(const DL_Group& group, const BigInt& x)
throw Lookup_Error("Engine_Core::dh_op: Unable to find a working engine");
}
+#endif
#if defined(BOTAN_HAS_ECDSA)
/*************************************************
diff --git a/src/core/libstate/engine.h b/src/core/libstate/engine.h
index 212d02d7a..12c69385b 100644
--- a/src/core/libstate/engine.h
+++ b/src/core/libstate/engine.h
@@ -13,6 +13,10 @@
#include <botan/basefilt.h>
#include <botan/enums.h>
+#if defined(BOTAN_HAS_DH)
+ #include <botan/dh_op.h>
+#endif
+
#if defined(BOTAN_HAS_ECDSA)
#include <botan/ec_dompar.h>
#endif
@@ -39,27 +43,41 @@ class BOTAN_DLL Engine
virtual IF_Operation* if_op(const BigInt&, const BigInt&, const BigInt&,
const BigInt&, const BigInt&, const BigInt&,
- const BigInt&, const BigInt&) const;
+ const BigInt&, const BigInt&) const
+ { return 0; }
+
virtual DSA_Operation* dsa_op(const DL_Group&, const BigInt&,
- const BigInt&) const;
+ const BigInt&) const
+ { return 0; }
+
virtual NR_Operation* nr_op(const DL_Group&, const BigInt&,
- const BigInt&) const;
+ const BigInt&) const
+ { return 0; }
+
virtual ELG_Operation* elg_op(const DL_Group&, const BigInt&,
- const BigInt&) const;
- virtual DH_Operation* dh_op(const DL_Group&, const BigInt&) const;
+ const BigInt&) const
+ { return 0; }
+
+#if defined(BOTAN_HAS_DH)
+ virtual DH_Operation* dh_op(const DL_Group&, const BigInt&) const
+ { return 0; }
+#endif
#if defined(BOTAN_HAS_ECDSA)
virtual ECDSA_Operation* ecdsa_op(const EC_Domain_Params& dom_pars,
const BigInt& priv_key,
- const PointGFp& pub_key) const;
+ const PointGFp& pub_key) const
+ { return 0; }
virtual ECKAEG_Operation* eckaeg_op(const EC_Domain_Params& dom_pars,
const BigInt& priv_key,
- const PointGFp& pub_key) const;
+ const PointGFp& pub_key) const
+ { return 0; }
#endif
virtual Modular_Exponentiator* mod_exp(const BigInt&,
- Power_Mod::Usage_Hints) const;
+ Power_Mod::Usage_Hints) const
+ { return 0; }
virtual Keyed_Filter* get_cipher(const std::string&, Cipher_Dir);
@@ -129,7 +147,9 @@ NR_Operation* nr_op(const DL_Group&, const BigInt&, const BigInt&);
ELG_Operation* elg_op(const DL_Group&, const BigInt&, const BigInt&);
+#if defined(BOTAN_HAS_DH)
DH_Operation* dh_op(const DL_Group&, const BigInt&);
+#endif
#if defined(BOTAN_HAS_ECDSA)
ECDSA_Operation* ecdsa_op(const EC_Domain_Params& dom_pars,
diff --git a/src/core/libstate/info.txt b/src/core/libstate/info.txt
index f160ca771..6a54463ac 100644
--- a/src/core/libstate/info.txt
+++ b/src/core/libstate/info.txt
@@ -7,7 +7,9 @@ define LIBSTATE_MODULE
<add>
def_alg.cpp
def_mode.cpp
+def_powm.cpp
eng_base.cpp
+eng_def.h
engine.cpp
engine.h
get_enc.cpp
diff --git a/src/pubkey/dh/dh_core.h b/src/pubkey/dh/dh_core.h
index 3735f31e1..666e615fc 100644
--- a/src/pubkey/dh/dh_core.h
+++ b/src/pubkey/dh/dh_core.h
@@ -6,10 +6,8 @@
#ifndef BOTAN_DH_CORE_H__
#define BOTAN_DH_CORE_H__
-#include <botan/bigint.h>
+#include <botan/dh_op.h>
#include <botan/blinding.h>
-#include <botan/pk_ops.h>
-#include <botan/dl_group.h>
namespace Botan {
diff --git a/src/pubkey/dh/dh_op.cpp b/src/pubkey/dh/dh_op.cpp
new file mode 100644
index 000000000..3b87c6467
--- /dev/null
+++ b/src/pubkey/dh/dh_op.cpp
@@ -0,0 +1,20 @@
+/*************************************************
+* DH Operations Source File *
+* (C) 1999-2007 Jack Lloyd *
+*************************************************/
+
+#include <botan/dh_op.h>
+#include <botan/eng_def.h>
+
+namespace Botan {
+
+/*************************************************
+* Acquire a DH op *
+*************************************************/
+DH_Operation* Default_Engine::dh_op(const DL_Group& group,
+ const BigInt& x) const
+ {
+ return new Default_DH_Op(group, x);
+ }
+
+}
diff --git a/src/pubkey/pubkey/dh_op.cpp b/src/pubkey/dh/dh_op.h
index 0bcfd4ef8..4fbd3f5dc 100644
--- a/src/pubkey/pubkey/dh_op.cpp
+++ b/src/pubkey/dh/dh_op.h
@@ -1,19 +1,30 @@
/*************************************************
-* DH Operations Source File *
-* (C) 1999-2007 Jack Lloyd *
+* DH Operations Header File *
+* (C) 1999-2008 Jack Lloyd *
*************************************************/
-#include <botan/eng_def.h>
-#include <botan/pow_mod.h>
-#include <botan/numthry.h>
+#ifndef BOTAN_DH_OPS_H__
+#define BOTAN_DH_OPS_H__
+
+#include <botan/dl_group.h>
#include <botan/reducer.h>
+#include <botan/pow_mod.h>
namespace Botan {
-namespace {
+/*************************************************
+* DH Operation Interface *
+*************************************************/
+class BOTAN_DLL DH_Operation
+ {
+ public:
+ virtual BigInt agree(const BigInt&) const = 0;
+ virtual DH_Operation* clone() const = 0;
+ virtual ~DH_Operation() {}
+ };
/*************************************************
-* Default DH Operation *
+* Botan's Default DH Operation *
*************************************************/
class Default_DH_Op : public DH_Operation
{
@@ -24,18 +35,9 @@ class Default_DH_Op : public DH_Operation
Default_DH_Op(const DL_Group& group, const BigInt& x) :
powermod_x_p(x, group.get_p()) {}
private:
- const Fixed_Exponent_Power_Mod powermod_x_p;
+ Fixed_Exponent_Power_Mod powermod_x_p;
};
}
-/*************************************************
-* Acquire a DH op *
-*************************************************/
-DH_Operation* Default_Engine::dh_op(const DL_Group& group,
- const BigInt& x) const
- {
- return new Default_DH_Op(group, x);
- }
-
-}
+#endif
diff --git a/src/pubkey/dh/info.txt b/src/pubkey/dh/info.txt
index 3765644c8..a54188c57 100644
--- a/src/pubkey/dh/info.txt
+++ b/src/pubkey/dh/info.txt
@@ -9,6 +9,8 @@ dh.cpp
dh.h
dh_core.cpp
dh_core.h
+dh_op.h
+dh_op.cpp
</add>
<requires>
diff --git a/src/pubkey/dsa/dsa.cpp b/src/pubkey/dsa/dsa.cpp
index ef69a1ee5..c998c35b2 100644
--- a/src/pubkey/dsa/dsa.cpp
+++ b/src/pubkey/dsa/dsa.cpp
@@ -6,6 +6,7 @@
#include <botan/dsa.h>
#include <botan/numthry.h>
#include <botan/keypair.h>
+#include <botan/look_pk.h>
namespace Botan {
diff --git a/src/pubkey/elgamal/elgamal.cpp b/src/pubkey/elgamal/elgamal.cpp
index ea0d581b0..01b322d63 100644
--- a/src/pubkey/elgamal/elgamal.cpp
+++ b/src/pubkey/elgamal/elgamal.cpp
@@ -6,6 +6,7 @@
#include <botan/elgamal.h>
#include <botan/numthry.h>
#include <botan/keypair.h>
+#include <botan/look_pk.h>
#include <botan/util.h>
namespace Botan {
diff --git a/src/pubkey/nr/nr.cpp b/src/pubkey/nr/nr.cpp
index 99eff9726..063eedbcc 100644
--- a/src/pubkey/nr/nr.cpp
+++ b/src/pubkey/nr/nr.cpp
@@ -6,6 +6,7 @@
#include <botan/nr.h>
#include <botan/numthry.h>
#include <botan/keypair.h>
+#include <botan/look_pk.h>
namespace Botan {
diff --git a/src/pubkey/pubkey/rsa_op.cpp b/src/pubkey/pubkey/if_op.cpp
index 0b151bf3b..0b151bf3b 100644
--- a/src/pubkey/pubkey/rsa_op.cpp
+++ b/src/pubkey/pubkey/if_op.cpp
diff --git a/src/pubkey/pubkey/info.txt b/src/pubkey/pubkey/info.txt
index 8c97aa744..421232286 100644
--- a/src/pubkey/pubkey/info.txt
+++ b/src/pubkey/pubkey/info.txt
@@ -11,9 +11,9 @@ asn1
</requires>
<add>
-dh_op.cpp
dsa_op.cpp
elg_op.cpp
+if_op.cpp
nr_op.cpp
pk_algs.cpp
pk_algs.h
@@ -24,7 +24,6 @@ pkcs8.cpp
pkcs8.h
pubkey.cpp
pubkey.h
-rsa_op.cpp
x509_key.cpp
x509_key.h
</add>
diff --git a/src/pubkey/pubkey/pk_ops.h b/src/pubkey/pubkey/pk_ops.h
index 5413fc7cd..32be0326f 100644
--- a/src/pubkey/pubkey/pk_ops.h
+++ b/src/pubkey/pubkey/pk_ops.h
@@ -67,17 +67,6 @@ class BOTAN_DLL ELG_Operation
virtual ~ELG_Operation() {}
};
-/*************************************************
-* DH Operation *
-*************************************************/
-class BOTAN_DLL DH_Operation
- {
- public:
- virtual BigInt agree(const BigInt&) const = 0;
- virtual DH_Operation* clone() const = 0;
- virtual ~DH_Operation() {}
- };
-
#if defined(BOTAN_HAS_ECDSA)
/*************************************************
* ECDSA Operation *
diff --git a/src/pubkey/rsa/rsa.cpp b/src/pubkey/rsa/rsa.cpp
index 8faec9972..7b74f3c57 100644
--- a/src/pubkey/rsa/rsa.cpp
+++ b/src/pubkey/rsa/rsa.cpp
@@ -4,9 +4,10 @@
*************************************************/
#include <botan/rsa.h>
+#include <botan/parsing.h>
#include <botan/numthry.h>
#include <botan/keypair.h>
-#include <botan/parsing.h>
+#include <botan/look_pk.h>
namespace Botan {
diff --git a/src/pubkey/rw/rw.cpp b/src/pubkey/rw/rw.cpp
index 39cbcdd6e..a2888a87d 100644
--- a/src/pubkey/rw/rw.cpp
+++ b/src/pubkey/rw/rw.cpp
@@ -6,6 +6,7 @@
#include <botan/rw.h>
#include <botan/numthry.h>
#include <botan/keypair.h>
+#include <botan/look_pk.h>
#include <botan/parsing.h>
#include <algorithm>