5 #ifndef CRYPTOPP_IMPORTS 15 size_t
OAEP_Base::MaxUnpaddedLength(
size_t paddedLength)
const 25 if (oaepBlockLen % 8 != 0)
34 const size_t seedLen = hLen, dbLen = oaepBlockLen-seedLen;
35 byte *
const maskedSeed = oaepBlock;
36 byte *
const maskedDB = oaepBlock+seedLen;
42 pHash->
CalculateDigest(maskedDB, encodingParameters.begin(), encodingParameters.size());
43 memset(maskedDB+hLen, 0, dbLen-hLen-inputLength-1);
44 maskedDB[dbLen-inputLength-1] = 0x01;
45 memcpy(maskedDB+dbLen-inputLength, input, inputLength);
49 pMGF->GenerateAndMask(*pHash, maskedDB, dbLen, maskedSeed, seedLen);
50 pMGF->GenerateAndMask(*pHash, maskedSeed, seedLen, maskedDB, dbLen);
58 if (oaepBlockLen % 8 != 0)
60 invalid = (oaepBlock[0] != 0) || invalid;
67 const size_t seedLen = hLen, dbLen = oaepBlockLen-seedLen;
69 invalid = (oaepBlockLen < 2*hLen+1) || invalid;
72 byte *
const maskedSeed = t;
73 byte *
const maskedDB = t+seedLen;
76 pMGF->GenerateAndMask(*pHash, maskedSeed, seedLen, maskedDB, dbLen);
77 pMGF->GenerateAndMask(*pHash, maskedDB, dbLen, maskedSeed, seedLen);
83 byte *M = std::find(maskedDB+hLen, maskedDB+dbLen, 0x01);
84 invalid = (M == maskedDB+dbLen) || invalid;
85 invalid = (std::find_if(maskedDB+hLen, M, std::bind2nd(std::not_equal_to<byte>(), byte(0))) != M) || invalid;
86 invalid = !pHash->
VerifyDigest(maskedDB, encodingParameters.begin(), encodingParameters.size()) || invalid;
92 memcpy(output, M, maskedDB+dbLen-M);
used to pass byte array input as part of a NameValuePairs object
const char * DigestSize()
int, in bytes
virtual void GenerateBlock(byte *output, size_t size)
Generate random array of bytes.
Classes for automatic resource management.
Interface for random number generators.
SecByteBlock is a SecBlock<byte> typedef.
Pointer that overloads operator→
Returns a decoding results.
bool GetValue(const char *name, T &value) const
Get a named value.
size_t MaxUnpaddedLength(size_t paddedLength) const
max size of unpadded message in bytes, given max size of padded message in bits (1 less than size of ...
const char * EncodingParameters()
ConstByteArrayParameter.
T1 SaturatingSubtract(const T1 &a, const T2 &b)
Performs a saturating subtract clamped at 0.
Crypto++ library namespace.
Interface for retrieving values given their names.