Crypto++
8.2
Free C++ class library of cryptographic schemes
oaep.h
Go to the documentation of this file.
1
// oaep.h - originally written and placed in the public domain by Wei Dai
2
3
/// \file oaep.h
4
/// \brief Classes for optimal asymmetric encryption padding
5
/// \since Crypto++ 2.1
6
7
#ifndef CRYPTOPP_OAEP_H
8
#define CRYPTOPP_OAEP_H
9
10
#include "
cryptlib.h
"
11
#include "
pubkey.h
"
12
#include "
sha.h
"
13
14
NAMESPACE_BEGIN(
CryptoPP
)
15
16
/// \brief OAEP padding base class
17
/// \since Crypto++ 2.1
18
class CRYPTOPP_DLL
OAEP_Base
: public
PK_EncryptionMessageEncodingMethod
19
{
20
public
:
21
bool
ParameterSupported(
const
char
*name)
const
{
return
strcmp(name, Name::EncodingParameters()) == 0;}
22
size_t
MaxUnpaddedLength(
size_t
paddedLength)
const
;
23
void
Pad(
RandomNumberGenerator
&rng,
const
byte
*raw,
size_t
inputLength,
byte
*padded,
size_t
paddedLength,
const
NameValuePairs
¶meters)
const
;
24
DecodingResult
Unpad(
const
byte
*padded,
size_t
paddedLength,
byte
*raw,
const
NameValuePairs
¶meters)
const
;
25
26
protected
:
27
virtual
unsigned
int
DigestSize()
const
=0;
28
virtual
HashTransformation
* NewHash()
const
=0;
29
virtual
MaskGeneratingFunction
* NewMGF()
const
=0;
30
};
31
32
/// \brief OAEP padding
33
/// \tparam H HashTransformation derived class
34
/// \tparam MGF MaskGeneratingFunction derived class
35
/// \sa <a href="http://www.weidai.com/scan-mirror/ca.html#cem_OAEP-MGF1">EME-OAEP</a>, for use with classes derived from TF_ES
36
/// \since Crypto++ 2.1
37
template
<
class
H,
class
MGF=P1363_MGF1>
38
class
OAEP
:
public
OAEP_Base
,
public
EncryptionStandard
39
{
40
public
:
41
static
std::string CRYPTOPP_API StaticAlgorithmName() {
return
std::string(
"OAEP-"
) + MGF::StaticAlgorithmName() +
"("
+ H::StaticAlgorithmName() +
")"
;}
42
typedef
OAEP<H, MGF>
EncryptionMessageEncodingMethod
;
43
44
protected
:
45
unsigned
int
DigestSize()
const
{
return
H::DIGESTSIZE;}
46
HashTransformation
* NewHash()
const
{
return
new
H;}
47
MaskGeneratingFunction
* NewMGF()
const
{
return
new
MGF;}
48
};
49
50
CRYPTOPP_DLL_TEMPLATE_CLASS
OAEP<SHA1>
;
51
52
NAMESPACE_END
53
54
#endif
HashTransformation
Interface for hash functions and data processing part of MACs.
Definition:
cryptlib.h:1084
MaskGeneratingFunction
Mask generation function interface.
Definition:
pubkey.h:685
pubkey.h
This file contains helper classes/functions for implementing public key algorithms.
RandomNumberGenerator
Interface for random number generators.
Definition:
cryptlib.h:1383
sha.h
Classes for SHA-1 and SHA-2 family of message digests.
EncryptionStandard
Base class for public key encryption standard classes.
Definition:
pubkey.h:2218
DecodingResult
Returns a decoding results.
Definition:
cryptlib.h:255
OAEP
OAEP padding.
Definition:
oaep.h:38
PK_EncryptionMessageEncodingMethod
Message encoding method for public key encryption.
Definition:
pubkey.h:208
CryptoPP
Crypto++ library namespace.
NameValuePairs
Interface for retrieving values given their names.
Definition:
cryptlib.h:293
cryptlib.h
Abstract base classes that provide a uniform interface to this library.
OAEP_Base
OAEP padding base class.
Definition:
oaep.h:18
Generated on Tue Feb 18 2020 04:05:21 for Crypto++ by
1.8.17