aboutsummaryrefslogtreecommitdiffstats
path: root/src/pubkey/dh
diff options
context:
space:
mode:
authorlloyd <[email protected]>2014-01-01 21:20:55 +0000
committerlloyd <[email protected]>2014-01-01 21:20:55 +0000
commit197dc467dec28a04c3b2f30da7cef122dfbb13e9 (patch)
treecdbd3ddaec051c72f0a757db461973d90c37b97a /src/pubkey/dh
parent62faac373c07cfe10bc8c309e89ebdd30d8e5eaa (diff)
Shuffle things around. Add NIST X.509 test to build.
Diffstat (limited to 'src/pubkey/dh')
-rw-r--r--src/pubkey/dh/dh.cpp98
-rw-r--r--src/pubkey/dh/dh.h94
-rw-r--r--src/pubkey/dh/info.txt16
3 files changed, 0 insertions, 208 deletions
diff --git a/src/pubkey/dh/dh.cpp b/src/pubkey/dh/dh.cpp
deleted file mode 100644
index 55d53518a..000000000
--- a/src/pubkey/dh/dh.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-* Diffie-Hellman
-* (C) 1999-2007 Jack Lloyd
-*
-* Distributed under the terms of the Botan license
-*/
-
-#include <botan/dh.h>
-#include <botan/numthry.h>
-#include <botan/workfactor.h>
-
-namespace Botan {
-
-/*
-* DH_PublicKey Constructor
-*/
-DH_PublicKey::DH_PublicKey(const DL_Group& grp, const BigInt& y1)
- {
- group = grp;
- y = y1;
- }
-
-/*
-* Return the public value for key agreement
-*/
-std::vector<byte> DH_PublicKey::public_value() const
- {
- return unlock(BigInt::encode_1363(y, group_p().bytes()));
- }
-
-/*
-* Create a DH private key
-*/
-DH_PrivateKey::DH_PrivateKey(RandomNumberGenerator& rng,
- const DL_Group& grp,
- const BigInt& x_arg)
- {
- group = grp;
- x = x_arg;
-
- if(x == 0)
- {
- const BigInt& p = group_p();
- x.randomize(rng, 2 * dl_work_factor(p.bits()));
- }
-
- if(y == 0)
- y = power_mod(group_g(), x, group_p());
-
- if(x == 0)
- gen_check(rng);
- else
- load_check(rng);
- }
-
-/*
-* Load a DH private key
-*/
-DH_PrivateKey::DH_PrivateKey(const AlgorithmIdentifier& alg_id,
- const secure_vector<byte>& key_bits,
- RandomNumberGenerator& rng) :
- DL_Scheme_PrivateKey(alg_id, key_bits, DL_Group::ANSI_X9_42)
- {
- if(y == 0)
- y = power_mod(group_g(), x, group_p());
-
- load_check(rng);
- }
-
-/*
-* Return the public value for key agreement
-*/
-std::vector<byte> DH_PrivateKey::public_value() const
- {
- return DH_PublicKey::public_value();
- }
-
-DH_KA_Operation::DH_KA_Operation(const DH_PrivateKey& dh,
- RandomNumberGenerator& rng) :
- p(dh.group_p()), powermod_x_p(dh.get_x(), p)
- {
- BigInt k(rng, p.bits() - 1);
- blinder = Blinder(k, powermod_x_p(inverse_mod(k, p)), p);
- }
-
-secure_vector<byte> DH_KA_Operation::agree(const byte w[], size_t w_len)
- {
- BigInt input = BigInt::decode(w, w_len);
-
- if(input <= 1 || input >= p - 1)
- throw Invalid_Argument("DH agreement - invalid key provided");
-
- BigInt r = blinder.unblind(powermod_x_p(blinder.blind(input)));
-
- return BigInt::encode_1363(r, p.bytes());
- }
-
-}
diff --git a/src/pubkey/dh/dh.h b/src/pubkey/dh/dh.h
deleted file mode 100644
index c670399d8..000000000
--- a/src/pubkey/dh/dh.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-* Diffie-Hellman
-* (C) 1999-2007 Jack Lloyd
-*
-* Distributed under the terms of the Botan license
-*/
-
-#ifndef BOTAN_DIFFIE_HELLMAN_H__
-#define BOTAN_DIFFIE_HELLMAN_H__
-
-#include <botan/dl_algo.h>
-#include <botan/pow_mod.h>
-#include <botan/blinding.h>
-#include <botan/pk_ops.h>
-
-namespace Botan {
-
-/**
-* This class represents Diffie-Hellman public keys.
-*/
-class BOTAN_DLL DH_PublicKey : public virtual DL_Scheme_PublicKey
- {
- public:
- std::string algo_name() const { return "DH"; }
-
- std::vector<byte> public_value() const;
- size_t max_input_bits() const { return group_p().bits(); }
-
- DL_Group::Format group_format() const { return DL_Group::ANSI_X9_42; }
-
- DH_PublicKey(const AlgorithmIdentifier& alg_id,
- const secure_vector<byte>& key_bits) :
- DL_Scheme_PublicKey(alg_id, key_bits, DL_Group::ANSI_X9_42) {}
-
- /**
- * Construct a public key with the specified parameters.
- * @param grp the DL group to use in the key
- * @param y the public value y
- */
- DH_PublicKey(const DL_Group& grp, const BigInt& y);
- protected:
- DH_PublicKey() {}
- };
-
-/**
-* This class represents Diffie-Hellman private keys.
-*/
-class BOTAN_DLL DH_PrivateKey : public DH_PublicKey,
- public PK_Key_Agreement_Key,
- public virtual DL_Scheme_PrivateKey
- {
- public:
- std::vector<byte> public_value() const;
-
- /**
- * Load a DH private key
- * @param alg_id the algorithm id
- * @param key_bits the subject public key
- * @param rng a random number generator
- */
- DH_PrivateKey(const AlgorithmIdentifier& alg_id,
- const secure_vector<byte>& key_bits,
- RandomNumberGenerator& rng);
-
- /**
- * Construct a private key with predetermined value.
- * @param rng random number generator to use
- * @param grp the group to be used in the key
- * @param x the key's secret value (or if zero, generate a new key)
- */
- DH_PrivateKey(RandomNumberGenerator& rng, const DL_Group& grp,
- const BigInt& x = 0);
- };
-
-/**
-* DH operation
-*/
-class BOTAN_DLL DH_KA_Operation : public PK_Ops::Key_Agreement
- {
- public:
- DH_KA_Operation(const DH_PrivateKey& key,
- RandomNumberGenerator& rng);
-
- secure_vector<byte> agree(const byte w[], size_t w_len);
- private:
- const BigInt& p;
-
- Fixed_Exponent_Power_Mod powermod_x_p;
- Blinder blinder;
- };
-
-}
-
-#endif
diff --git a/src/pubkey/dh/info.txt b/src/pubkey/dh/info.txt
deleted file mode 100644
index bb2707951..000000000
--- a/src/pubkey/dh/info.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-define DIFFIE_HELLMAN 20131128
-
-<header:public>
-dh.h
-</header:public>
-
-<source>
-dh.cpp
-</source>
-
-<requires>
-dl_algo
-dl_group
-libstate
-numbertheory
-</requires>