Botan
1.10.9
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
src
engine
engine.h
Go to the documentation of this file.
1
/*
2
* Engine
3
* (C) 1999-2007 Jack Lloyd
4
*
5
* Distributed under the terms of the Botan license
6
*/
7
8
#ifndef BOTAN_ENGINE_H__
9
#define BOTAN_ENGINE_H__
10
11
#include <botan/scan_name.h>
12
#include <botan/block_cipher.h>
13
#include <botan/stream_cipher.h>
14
#include <botan/hash.h>
15
#include <botan/mac.h>
16
#include <botan/pbkdf.h>
17
#include <botan/pow_mod.h>
18
#include <botan/pk_keys.h>
19
#include <botan/pk_ops.h>
20
21
namespace
Botan
{
22
23
class
Algorithm_Factory;
24
class
Keyed_Filter;
25
26
/**
27
* Base class for all engines. All non-pure virtual functions simply
28
* return NULL, indicating the algorithm in question is not
29
* supported. Subclasses can reimplement whichever function(s)
30
* they want to hook in a particular type.
31
*/
32
class
BOTAN_DLL
Engine
33
{
34
public
:
35
virtual
~Engine
() {}
36
37
/**
38
* @return name of this engine
39
*/
40
virtual
std::string provider_name()
const
= 0;
41
42
/**
43
* @param algo_spec the algorithm name/specification
44
* @param af an algorithm factory object
45
* @return newly allocated object, or NULL
46
*/
47
virtual
BlockCipher
*
48
find_block_cipher(
const
SCAN_Name
& algo_spec,
49
Algorithm_Factory
& af)
const
;
50
51
/**
52
* @param algo_spec the algorithm name/specification
53
* @param af an algorithm factory object
54
* @return newly allocated object, or NULL
55
*/
56
virtual
StreamCipher
*
57
find_stream_cipher(
const
SCAN_Name
& algo_spec,
58
Algorithm_Factory
& af)
const
;
59
60
/**
61
* @param algo_spec the algorithm name/specification
62
* @param af an algorithm factory object
63
* @return newly allocated object, or NULL
64
*/
65
virtual
HashFunction
*
66
find_hash(
const
SCAN_Name
& algo_spec,
67
Algorithm_Factory
& af)
const
;
68
69
/**
70
* @param algo_spec the algorithm name/specification
71
* @param af an algorithm factory object
72
* @return newly allocated object, or NULL
73
*/
74
virtual
MessageAuthenticationCode
*
75
find_mac(
const
SCAN_Name
& algo_spec,
76
Algorithm_Factory
& af)
const
;
77
78
/**
79
* @param algo_spec the algorithm name/specification
80
* @param af an algorithm factory object
81
* @return newly allocated object, or NULL
82
*/
83
virtual
PBKDF
* find_pbkdf(
const
SCAN_Name
& algo_spec,
84
Algorithm_Factory
& af)
const
;
85
86
/**
87
* @param n the modulus
88
* @param hints any use hints
89
* @return newly allocated object, or NULL
90
*/
91
virtual
Modular_Exponentiator
*
92
mod_exp(
const
BigInt
&
n
,
93
Power_Mod::Usage_Hints
hints)
const
;
94
95
/**
96
* Return a new cipher object
97
* @param algo_spec the algorithm name/specification
98
* @param dir specifies if encryption or decryption is desired
99
* @param af an algorithm factory object
100
* @return newly allocated object, or NULL
101
*/
102
virtual
Keyed_Filter
*
get_cipher
(
const
std::string& algo_spec,
103
Cipher_Dir
dir,
104
Algorithm_Factory
& af);
105
106
/**
107
* Return a new operator object for this key, if possible
108
* @param key the key we want an operator for
109
* @return newly allocated operator object, or NULL
110
*/
111
virtual
PK_Ops::Key_Agreement
*
112
get_key_agreement_op(
const
Private_Key
& key)
const
;
113
114
/**
115
* Return a new operator object for this key, if possible
116
* @param key the key we want an operator for
117
* @return newly allocated operator object, or NULL
118
*/
119
virtual
PK_Ops::Signature
*
120
get_signature_op(
const
Private_Key
& key)
const
;
121
122
/**
123
* Return a new operator object for this key, if possible
124
* @param key the key we want an operator for
125
* @return newly allocated operator object, or NULL
126
*/
127
virtual
PK_Ops::Verification
*
128
get_verify_op(
const
Public_Key
& key)
const
;
129
130
/**
131
* Return a new operator object for this key, if possible
132
* @param key the key we want an operator for
133
* @return newly allocated operator object, or NULL
134
*/
135
virtual
PK_Ops::Encryption
*
136
get_encryption_op(
const
Public_Key
& key)
const
;
137
138
/**
139
* Return a new operator object for this key, if possible
140
* @param key the key we want an operator for
141
* @return newly allocated operator object, or NULL
142
*/
143
virtual
PK_Ops::Decryption
*
144
get_decryption_op(
const
Private_Key
& key)
const
;
145
};
146
147
}
148
149
#endif
Botan::Algorithm_Factory
Definition:
algo_factory.h:34
n
BigInt n
Definition:
numthry.cpp:26
Botan::BigInt
Definition:
bigint.h:22
Botan::Keyed_Filter
Definition:
key_filt.h:20
Botan::Private_Key
Definition:
pk_keys.h:86
Botan::PK_Ops::Signature
Definition:
pk_ops.h:49
Botan::MessageAuthenticationCode
Definition:
mac.h:20
Botan::Engine
Definition:
engine.h:32
Botan::StreamCipher
Definition:
stream_cipher.h:18
Botan
Definition:
algo_base.h:14
Botan::PK_Ops::Key_Agreement
Definition:
pk_ops.h:145
Botan::SCAN_Name
Definition:
scan_name.h:21
Botan::Public_Key
Definition:
pk_keys.h:21
Botan::Engine::~Engine
virtual ~Engine()
Definition:
engine.h:35
Botan::HashFunction
Definition:
hash.h:20
Botan::Power_Mod::Usage_Hints
Usage_Hints
Definition:
pow_mod.h:35
Botan::Cipher_Dir
Cipher_Dir
Definition:
sym_algo.h:87
Botan::PK_Ops::Decryption
Definition:
pk_ops.h:35
Botan::get_cipher
Keyed_Filter * get_cipher(const std::string &algo_spec, Cipher_Dir direction)
Definition:
lookup.cpp:124
Botan::PK_Ops::Encryption
Definition:
pk_ops.h:21
Botan::PK_Ops::Verification
Definition:
pk_ops.h:85
Botan::BlockCipher
Definition:
block_cipher.h:18
Botan::PBKDF
Definition:
pbkdf.h:21
Botan::Modular_Exponentiator
Definition:
pow_mod.h:18
Generated on Sat Aug 20 2016 08:18:47 for Botan by
1.8.9.1