#include <blumshub.h>
Inheritance diagram for BlumBlumShub:
Definition at line 40 of file blumshub.h.
Public Member Functions | |
BlumBlumShub (const Integer &p, const Integer &q, const Integer &seed) | |
bool | IsRandomAccess () const |
returns whether this cipher supports random access | |
void | Seek (lword index) |
for random access ciphers, seek to an absolute position | |
unsigned int | GenerateBit () |
generate new random bit and return it | |
byte | GenerateByte () |
generate new random byte and return it | |
void | ProcessData (byte *outString, const byte *inString, size_t length) |
encrypt or decrypt an array of bytes of specified length | |
bool | IsSelfInverting () const |
returns whether this transformation is self-inverting (e.g. xor with a keystream) | |
bool | IsForwardTransformation () const |
returns whether this is an encryption object | |
virtual word32 | GenerateWord32 (word32 a=0, word32 b=0xffffffffL) |
generate a random 32 bit word in the range min to max, inclusive | |
virtual void | GenerateBlock (byte *output, size_t size) |
generate random array of bytes | |
virtual void | DiscardBytes (size_t n) |
generate and discard n bytes | |
template<class IT> | |
void | Shuffle (IT begin, IT end) |
randomly shuffle the specified array, resulting permutation is uniformly distributed | |
virtual std::string | AlgorithmName () const |
returns name of this algorithm, not universally implemented yet | |
virtual Clonable * | Clone () const |
this is not implemented by most classes yet | |
StreamTransformation & | Ref () |
return a reference to this object, | |
virtual unsigned int | MandatoryBlockSize () const |
returns block size, if input must be processed in blocks, otherwise 1 | |
virtual unsigned int | OptimalBlockSize () const |
returns the input block size that is most efficient for this cipher | |
virtual unsigned int | GetOptimalBlockSizeUsed () const |
returns how much of the current block is used up | |
virtual unsigned int | OptimalDataAlignment () const |
returns how input should be aligned for optimal performance | |
virtual void | ProcessLastBlock (byte *outString, const byte *inString, size_t length) |
for ciphers where the last block of data is special, encrypt or decrypt the last block of data | |
virtual unsigned int | MinLastBlockSize () const |
returns the minimum size of the last block, 0 indicating the last block is not special | |
void | ProcessString (byte *inoutString, size_t length) |
same as ProcessData(inoutString, inoutString, length) | |
void | ProcessString (byte *outString, const byte *inString, size_t length) |
same as ProcessData(outString, inString, length) | |
byte | ProcessByte (byte input) |
implemented as {ProcessData(&input, &input, 1); return input;} | |
Protected Attributes | |
const Integer | p |
const Integer | q |
const Integer | x0 |
ModularArithmetic | modn |
word | maxBits |
word | bitsLeft |
Integer | current |
Friends | |
class | BlumGoldwasserPublicKey |
class | BlumGoldwasserPrivateKey |
unsigned int PublicBlumBlumShub::GenerateBit | ( | ) | [virtual, inherited] |
generate new random bit and return it
Default implementation is to call GenerateByte() and return its parity.
Reimplemented from RandomNumberGenerator.
Definition at line 16 of file blumshub.cpp.
References PublicBlumBlumShub::bitsLeft, PublicBlumBlumShub::current, Integer::GetBit(), PublicBlumBlumShub::maxBits, PublicBlumBlumShub::modn, and ModularArithmetic::Square().
Referenced by PublicBlumBlumShub::GenerateByte().
void PublicBlumBlumShub::ProcessData | ( | byte * | outString, | |
const byte * | inString, | |||
size_t | length | |||
) | [inline, virtual, inherited] |
encrypt or decrypt an array of bytes of specified length
Implements StreamTransformation.
Definition at line 21 of file blumshub.h.
void RandomNumberGenerator::GenerateBlock | ( | byte * | output, | |
size_t | size | |||
) | [virtual, inherited] |
generate random array of bytes
Default implementation is to call GenerateByte() size times.
Reimplemented in KDF2_RNG, NonblockingRng, BlockingRng, and RandomPool.
Definition at line 122 of file cryptlib.cpp.
References RandomNumberGenerator::GenerateByte().
Referenced by PSSR_MEM_Base::ComputeMessageRepresentative(), DL_GroupParameters_DSA::GenerateRandom(), OAEP_Base::Pad(), Integer::Randomize(), PolynomialMod2::Randomize(), and ElGamalBase::SymmetricEncrypt().
void RandomNumberGenerator::DiscardBytes | ( | size_t | n | ) | [virtual, inherited] |
generate and discard n bytes
Default implementation is to call GenerateByte() n times.
Reimplemented in ARC4_Base.
Definition at line 148 of file cryptlib.cpp.
References RandomNumberGenerator::GenerateByte().
StreamTransformation& StreamTransformation::Ref | ( | ) | [inline, inherited] |
return a reference to this object,
This function is useful for passing a temporary StreamTransformation object to a function that takes a non-const reference.
Definition at line 466 of file cryptlib.h.
virtual unsigned int StreamTransformation::OptimalBlockSize | ( | ) | const [inline, virtual, inherited] |
returns the input block size that is most efficient for this cipher
Reimplemented in ECB_OneWay.
Definition at line 473 of file cryptlib.h.
Referenced by StreamTransformationFilter::FirstPut().
void StreamTransformation::ProcessLastBlock | ( | byte * | outString, | |
const byte * | inString, | |||
size_t | length | |||
) | [virtual, inherited] |
for ciphers where the last block of data is special, encrypt or decrypt the last block of data
For now the only use of this function is for CBC-CTS mode.
Reimplemented in CBC_CTS_Encryption, and CBC_CTS_Decryption.
Definition at line 107 of file cryptlib.cpp.
References StreamTransformation::MandatoryBlockSize(), StreamTransformation::MinLastBlockSize(), and StreamTransformation::ProcessData().
Referenced by StreamTransformationFilter::LastPut().