- Main Page
- Namespaces
- Classes
- Files

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# BlumBlumShub Class Reference

`#include <blumshub.h>`

Inheritance diagram for BlumBlumShub:

List of all members.

## Detailed Description

BlumBlumShub with factorization of the modulus.

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

## Member Function Documentation

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

Note:
  either inString == outString, or they don't overlap

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

Note:
  optimal input length is n * OptimalBlockSize() - GetOptimalBlockSizeUsed() for any n > 0

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().

The documentation for this class was generated from the following files:

- blumshub.h
- blumshub.cpp