Botan
1.10.9
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
src
pubkey
dh
dh.h
Go to the documentation of this file.
1
/*
2
* Diffie-Hellman
3
* (C) 1999-2007 Jack Lloyd
4
*
5
* Distributed under the terms of the Botan license
6
*/
7
8
#ifndef BOTAN_DIFFIE_HELLMAN_H__
9
#define BOTAN_DIFFIE_HELLMAN_H__
10
11
#include <botan/dl_algo.h>
12
#include <botan/pow_mod.h>
13
#include <botan/blinding.h>
14
#include <botan/pk_ops.h>
15
16
namespace
Botan
{
17
18
/**
19
* This class represents Diffie-Hellman public keys.
20
*/
21
class
BOTAN_DLL
DH_PublicKey
:
public
virtual
DL_Scheme_PublicKey
22
{
23
public
:
24
std::string
algo_name
()
const
{
return
"DH"
; }
25
26
MemoryVector<byte>
public_value()
const
;
27
size_t
max_input_bits
()
const
{
return
group_p().bits(); }
28
29
DL_Group::Format
group_format
()
const
{
return
DL_Group::ANSI_X9_42
; }
30
31
DH_PublicKey
(
const
AlgorithmIdentifier
& alg_id,
32
const
MemoryRegion<byte>
& key_bits) :
33
DL_Scheme_PublicKey
(alg_id, key_bits,
DL_Group
::ANSI_X9_42) {}
34
35
/**
36
* Construct a public key with the specified parameters.
37
* @param grp the DL group to use in the key
38
* @param y the public value y
39
*/
40
DH_PublicKey
(
const
DL_Group
& grp,
const
BigInt
& y);
41
protected
:
42
DH_PublicKey
() {}
43
};
44
45
/**
46
* This class represents Diffie-Hellman private keys.
47
*/
48
class
BOTAN_DLL
DH_PrivateKey
:
public
DH_PublicKey
,
49
public
PK_Key_Agreement_Key
,
50
public
virtual
DL_Scheme_PrivateKey
51
{
52
public
:
53
MemoryVector<byte>
public_value()
const
;
54
55
/**
56
* Load a DH private key
57
* @param alg_id the algorithm id
58
* @param key_bits the subject public key
59
* @param rng a random number generator
60
*/
61
DH_PrivateKey
(
const
AlgorithmIdentifier
& alg_id,
62
const
MemoryRegion<byte>
& key_bits,
63
RandomNumberGenerator
&
rng
);
64
65
/**
66
* Construct a private key with predetermined value.
67
* @param rng random number generator to use
68
* @param grp the group to be used in the key
69
* @param x the key's secret value (or if zero, generate a new key)
70
*/
71
DH_PrivateKey
(
RandomNumberGenerator
& rng,
const
DL_Group
& grp,
72
const
BigInt
& x = 0);
73
};
74
75
/**
76
* DH operation
77
*/
78
class
BOTAN_DLL
DH_KA_Operation
:
public
PK_Ops::Key_Agreement
79
{
80
public
:
81
DH_KA_Operation
(
const
DH_PrivateKey
& key);
82
83
SecureVector<byte>
agree(
const
byte
w[],
size_t
w_len);
84
private
:
85
const
BigInt
& p;
86
87
Fixed_Exponent_Power_Mod
powermod_x_p;
88
Blinder
blinder;
89
};
90
91
}
92
93
#endif
Botan::DL_Scheme_PrivateKey
Definition:
dl_algo.h:85
Botan::DH_PublicKey::group_format
DL_Group::Format group_format() const
Definition:
dh.h:29
Botan::DH_PublicKey::DH_PublicKey
DH_PublicKey(const AlgorithmIdentifier &alg_id, const MemoryRegion< byte > &key_bits)
Definition:
dh.h:31
Botan::BigInt
Definition:
bigint.h:22
Botan::RandomNumberGenerator
Definition:
rng.h:20
Botan::DL_Scheme_PublicKey
Definition:
dl_algo.h:20
Botan::byte
unsigned char byte
Definition:
types.h:22
Botan::DL_Group
Definition:
dl_group.h:20
rng
RandomNumberGenerator * rng
Definition:
global_rng.cpp:165
Botan::DL_Group::Format
Format
Definition:
dl_group.h:44
Botan::DH_KA_Operation
Definition:
dh.h:78
Botan::MemoryRegion< byte >
Botan
Definition:
algo_base.h:14
Botan::DL_Group::ANSI_X9_42
Definition:
dl_group.h:45
Botan::MemoryVector< byte >
Botan::PK_Ops::Key_Agreement
Definition:
pk_ops.h:145
Botan::DH_PublicKey::algo_name
std::string algo_name() const
Definition:
dh.h:24
Botan::DH_PublicKey
Definition:
dh.h:21
Botan::Blinder
Definition:
blinding.h:19
Botan::DH_PublicKey::DH_PublicKey
DH_PublicKey()
Definition:
dh.h:42
Botan::PK_Key_Agreement_Key
Definition:
pk_keys.h:118
Botan::AlgorithmIdentifier
Definition:
alg_id.h:20
Botan::Fixed_Exponent_Power_Mod
Definition:
pow_mod.h:73
Botan::SecureVector< byte >
Botan::DH_PublicKey::max_input_bits
size_t max_input_bits() const
Definition:
dh.h:27
Botan::DH_PrivateKey
Definition:
dh.h:48
Generated on Sat Aug 20 2016 08:18:48 for Botan by
1.8.9.1