Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

# SapphireEncryption Class Reference

`#include <sapphire.h>`

Inheritance diagram for SapphireEncryption:

List of all members.

## Detailed Description

Sapphire-II Cipher

Definition at line 42 of file sapphire.h.

## Public Member Functions
| SapphireEncryption (const byte *userKey, unsigned int keyLength=DEFAULT_KEYLENGTH)
byte | ProcessByte (byte b)
| implemented as {ProcessData(&input, &input, 1); return input;}
void | ProcessString (byte *outString, const byte *inString, unsigned int length)
| same as ProcessData(outString, inString, length)
void | ProcessString (byte *inoutString, unsigned int length)
| same as ProcessData(inoutString, inoutString, length)
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 | ProcessData (byte *outString, const byte *inString, unsigned int length)=0
| encrypt or decrypt an array of bytes of specified length
virtual void | ProcessLastBlock (byte *outString, const byte *inString, unsigned int 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
virtual bool | IsRandomAccess () const=0
| returns whether this cipher supports random access
virtual void | Seek (dword n)
| for random access ciphers, seek to an absolute position
virtual bool | IsSelfInverting () const=0
| returns whether this transformation is self-inverting (e.g. xor with a keystream)
virtual bool | IsForwardTransformation () const=0
| returns whether this is an encryption object
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
## Protected Member Functions
void | ShuffleCards ()
## Protected Attributes
SecByteBlock | cards
byte | rotor
byte | ratchet
byte | avalanche
byte | last_plain
byte | last_cipher

## Member Function Documentation

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 458 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 Definition at line 465 of file cryptlib.h.

virtual void StreamTransformation::ProcessData | ( | byte * | outString,
|  | const byte * | inString,
|  | unsigned int | length
| ) | `[pure virtual, inherited]`

| encrypt or decrypt an array of bytes of specified length Note: either inString == outString, or they don't overlap Implemented in ARC4_Base, and PublicBlumBlumShub. Referenced by StreamTransformation::ProcessLastBlock().

void StreamTransformation::ProcessLastBlock | ( | byte * | outString,
|  | const byte * | inString,
|  | unsigned int | 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. Definition at line 76 of file cryptlib.cpp. References StreamTransformation::MandatoryBlockSize(), StreamTransformation::MinLastBlockSize(), and StreamTransformation::ProcessData().

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

- sapphire.h
- sapphire.cpp