Crypto++
Main Page
Namespaces
Classes
Files
File List
File Members
oaep.h
1
#ifndef CRYPTOPP_OAEP_H
2
#define CRYPTOPP_OAEP_H
3
4
#include "
pubkey.h
"
5
#include "sha.h"
6
7
NAMESPACE_BEGIN(CryptoPP)
8
9
//! _
10
class CRYPTOPP_DLL
OAEP_Base
: public
PK_EncryptionMessageEncodingMethod
11
{
12
public
:
13
bool
ParameterSupported(
const
char
*name)
const
{
return
strcmp(name,
Name::EncodingParameters
()) == 0;}
14
size_t
MaxUnpaddedLength(
size_t
paddedLength)
const
;
15
void
Pad(
RandomNumberGenerator
&rng,
const
byte *raw,
size_t
inputLength, byte *padded,
size_t
paddedLength,
const
NameValuePairs
¶meters)
const
;
16
DecodingResult
Unpad(
const
byte *padded,
size_t
paddedLength, byte *raw,
const
NameValuePairs
¶meters)
const
;
17
18
protected
:
19
virtual
unsigned
int
DigestSize()
const
=0;
20
virtual
HashTransformation
* NewHash()
const
=0;
21
virtual
MaskGeneratingFunction
* NewMGF()
const
=0;
22
};
23
24
//! <a href="http://www.weidai.com/scan-mirror/ca.html#cem_OAEP-MGF1">EME-OAEP</a>, for use with classes derived from TF_ES
25
template
<
class
H,
class
MGF=P1363_MGF1>
26
class
OAEP
:
public
OAEP_Base
,
public
EncryptionStandard
27
{
28
public
:
29
static
std::string CRYPTOPP_API StaticAlgorithmName() {
return
std::string(
"OAEP-"
) + MGF::StaticAlgorithmName() +
"("
+ H::StaticAlgorithmName() +
")"
;}
30
typedef
OAEP<H, MGF>
EncryptionMessageEncodingMethod
;
31
32
protected
:
33
unsigned
int
DigestSize()
const
{
return
H::DIGESTSIZE;}
34
HashTransformation
* NewHash()
const
{
return
new
H;}
35
MaskGeneratingFunction
* NewMGF()
const
{
return
new
MGF;}
36
};
37
38
CRYPTOPP_DLL_TEMPLATE_CLASS
OAEP<SHA>
;
39
40
NAMESPACE_END
41
42
#endif
Generated on Mon Jul 23 2012 20:25:34 for Crypto++ by
1.8.1.1