You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.4 KiB
42 lines
1.4 KiB
#ifndef CRYPTOPP_OAEP_H |
|
#define CRYPTOPP_OAEP_H |
|
|
|
#include "pubkey.h" |
|
#include "sha.h" |
|
|
|
NAMESPACE_BEGIN(CryptoPP) |
|
|
|
//! _ |
|
class CRYPTOPP_DLL OAEP_Base : public PK_EncryptionMessageEncodingMethod |
|
{ |
|
public: |
|
bool ParameterSupported(const char *name) const {return strcmp(name, Name::EncodingParameters()) == 0;} |
|
size_t MaxUnpaddedLength(size_t paddedLength) const; |
|
void Pad(RandomNumberGenerator &rng, const byte *raw, size_t inputLength, byte *padded, size_t paddedLength, const NameValuePairs ¶meters) const; |
|
DecodingResult Unpad(const byte *padded, size_t paddedLength, byte *raw, const NameValuePairs ¶meters) const; |
|
|
|
protected: |
|
virtual unsigned int DigestSize() const =0; |
|
virtual HashTransformation * NewHash() const =0; |
|
virtual MaskGeneratingFunction * NewMGF() const =0; |
|
}; |
|
|
|
//! <a href="http://www.weidai.com/scan-mirror/ca.html#cem_OAEP-MGF1">EME-OAEP</a>, for use with classes derived from TF_ES |
|
template <class H, class MGF=P1363_MGF1> |
|
class OAEP : public OAEP_Base, public EncryptionStandard |
|
{ |
|
public: |
|
static std::string CRYPTOPP_API StaticAlgorithmName() {return std::string("OAEP-") + MGF::StaticAlgorithmName() + "(" + H::StaticAlgorithmName() + ")";} |
|
typedef OAEP<H, MGF> EncryptionMessageEncodingMethod; |
|
|
|
protected: |
|
unsigned int DigestSize() const {return H::DIGESTSIZE;} |
|
HashTransformation * NewHash() const {return new H;} |
|
MaskGeneratingFunction * NewMGF() const {return new MGF;} |
|
}; |
|
|
|
CRYPTOPP_DLL_TEMPLATE_CLASS OAEP<SHA>; |
|
|
|
NAMESPACE_END |
|
|
|
#endif
|
|
|