KeccakTools

Keccak-fParts.h File Reference

#include "Keccak-f.h"
Include dependency graph for Keccak-fParts.h:
This graph shows which files directly or indirectly include this file:

Typedefs

typedef unsigned char RowValue
typedef unsigned char ColumnValue
typedef UINT32 SliceValue

Functions

SliceValue getSliceFromRow (const RowValue &row, const unsigned int &y)
RowValue getRowFromSlice (const SliceValue &slice, const unsigned int &y)
RowValue getRow (const vector< SliceValue > &slices, unsigned int y=0, unsigned int z=0)
void setRow (vector< SliceValue > &slices, RowValue row, unsigned int y=0, unsigned int z=0)
SliceValue getSliceValue (RowValue row0, RowValue row1, RowValue row2, RowValue row3, RowValue row4)
ColumnValue getColumn (const vector< SliceValue > &slices, unsigned int x=0, unsigned int z=0)
void setColumn (vector< SliceValue > &slices, ColumnValue column, unsigned int x=0, unsigned int z=0)
void invertColumn (vector< SliceValue > &slices, unsigned int x=0, unsigned int z=0)
RowValue translateRow (const RowValue &row, const unsigned int &dx)
RowValue translateRowSafely (RowValue row, int dx)
SliceValue translateSlice (SliceValue slice, unsigned int dx, unsigned int dy)
SliceValue translateSliceSafely (SliceValue slice, int dx, int dy)
void translateStateAlongZ (vector< SliceValue > &state, unsigned int dz)
RowValue getRow (const vector< LaneValue > &lanes, unsigned int y=0, unsigned int z=0)
void setRow (vector< LaneValue > &lanes, RowValue row, unsigned int y=0, unsigned int z=0)
SliceValue getSlice (const vector< LaneValue > &lanes, unsigned int z=0)
void setSlice (vector< LaneValue > &lanes, SliceValue slice, unsigned int z=0)
void fromLanesToSlices (const vector< LaneValue > &lanes, vector< SliceValue > &slices, unsigned int laneSize)
void fromSlicesToLanes (const vector< SliceValue > &slices, vector< LaneValue > &lanes)
void displayState (ostream &fout, const vector< SliceValue > &state, bool showParity=false)
void displayStates (ostream &fout, const vector< SliceValue > &state1, bool showParity1, const vector< SliceValue > &state2, bool showParity2)
void displayStates (ostream &fout, const vector< SliceValue > &state1, bool showParity1, const vector< SliceValue > &state2, bool showParity2, const vector< SliceValue > &state3, bool showParity3)
unsigned int getHammingWeightRow (RowValue row)
unsigned int getHammingWeightSlice (SliceValue slice)
unsigned int getHammingWeight (const vector< SliceValue > &state)
unsigned int getHammingWeightLane (LaneValue lane)
unsigned int getHammingWeight (const vector< LaneValue > &state)
unsigned int getNrActiveRows (const SliceValue &slice)
unsigned int getNrActiveRows (const vector< SliceValue > &slices)
unsigned int getNrActiveRows (const vector< LaneValue > &lanes)

Variables

const int nrRowsAndColumns = 5
const SliceValue maxSliceValue = 0x1FFFFFF

Typedef Documentation

typedef unsigned char ColumnValue

The ColumnsValue type is one byte, containing the 5 bits of a column, in the least significant bits of the byte.

typedef unsigned char RowValue

The RowValue type is one byte, containing the 5 bits of a row, in the least significant bits of the byte.

typedef UINT32 SliceValue

The SliceValue type is one 32-bit word, containing the 5 rows of a slice, each located in 5 bits of this word. The row y is in the bits corresponding to numerical value (0-31)*32^y in the word. See getSliceFromRow() and getRowFromSlice() for more details.


Function Documentation

void displayState ( ostream &  fout,
const vector< SliceValue > &  state,
bool  showParity = false 
)

This method outputs to fout the value of the state in a human readable way. The slices are displayed side by side.

void displayStates ( ostream &  fout,
const vector< SliceValue > &  state1,
bool  showParity1,
const vector< SliceValue > &  state2,
bool  showParity2 
)

This method outputs to fout the value of the 2 states in a human readable way.

void displayStates ( ostream &  fout,
const vector< SliceValue > &  state1,
bool  showParity1,
const vector< SliceValue > &  state2,
bool  showParity2,
const vector< SliceValue > &  state3,
bool  showParity3 
)

This method outputs to fout the value of the 3 states in a human readable way.

void fromLanesToSlices ( const vector< LaneValue > &  lanes,
vector< SliceValue > &  slices,
unsigned int  laneSize 
)

This method creates the value of a state represented as a vector of slices from a state represented as a vector of lanes.

Parameters:
slicesThe destination for the slices.
lanesThe state as a vector of lanes.
laneSizeThe lane size, which is also the number of slices.
void fromSlicesToLanes ( const vector< SliceValue > &  slices,
vector< LaneValue > &  lanes 
)

This method creates the value of a state represented as a vector of lanes from a state represented as a vector of slices.

Parameters:
lanesThe destination for the lanes.
slicesThe state as a vector of slices.
ColumnValue getColumn ( const vector< SliceValue > &  slices,
unsigned int  x = 0,
unsigned int  z = 0 
)

This method returns the value of a given column in a slice.

Parameters:
slicesThe state as a vector of slices.
xThe x coordinate.
zThe z coordinate.
unsigned int getHammingWeight ( const vector< SliceValue > &  state)

This function returns the Hamming weight of the given state.

unsigned int getHammingWeight ( const vector< LaneValue > &  state)

This function returns the Hamming weight of the given state.

unsigned int getHammingWeightLane ( LaneValue  lane)

This function returns the Hamming weight of the given lane.

unsigned int getHammingWeightRow ( RowValue  row)

This function returns the Hamming weight of the given row value.

unsigned int getHammingWeightSlice ( SliceValue  slice)

This function returns the Hamming weight of the given slice value.

unsigned int getNrActiveRows ( const SliceValue slice)

This method returns the number of active rows in the given slice value.

unsigned int getNrActiveRows ( const vector< SliceValue > &  slices)

This method returns the number of active rows in the state given as slices.

unsigned int getNrActiveRows ( const vector< LaneValue > &  lanes)

This method returns the number of active rows in the state given as lanes.

RowValue getRow ( const vector< LaneValue > &  lanes,
unsigned int  y = 0,
unsigned int  z = 0 
)

This method returns the value of a given row in a slice.

Parameters:
lanesThe state as a vector of lanes.
yThe y coordinate.
zThe z coordinate.
RowValue getRow ( const vector< SliceValue > &  slices,
unsigned int  y = 0,
unsigned int  z = 0 
)

This method returns the value of a given row in a slice.

Parameters:
slicesThe state as a vector of slices.
yThe y coordinate.
zThe z coordinate.
RowValue getRowFromSlice ( const SliceValue slice,
const unsigned int &  y 
) [inline]

This function returns the row value at row y in the given slice value.

SliceValue getSlice ( const vector< LaneValue > &  lanes,
unsigned int  z = 0 
)

This method returns the value of a given slice in a state represented as a vector of lanes.

Parameters:
lanesThe state as a vector of lanes.
zThe slice index (z coordinate).
SliceValue getSliceFromRow ( const RowValue row,
const unsigned int &  y 
) [inline]

This function returns a SliceValue with bits set to zero, except at row y, where the value is given by the argument row.

SliceValue getSliceValue ( RowValue  row0,
RowValue  row1,
RowValue  row2,
RowValue  row3,
RowValue  row4 
)

This method constructs a slice value from 5 row values.

void invertColumn ( vector< SliceValue > &  slices,
unsigned int  x = 0,
unsigned int  z = 0 
)

This method complements all the bits of a particular column in a vector of slices.

Parameters:
slicesThe state as a vector of slices.
xThe x coordinate.
zThe z coordinate.
void setColumn ( vector< SliceValue > &  slices,
ColumnValue  column,
unsigned int  x = 0,
unsigned int  z = 0 
)

This method sets the value of a particular column in a vector of slices.

Parameters:
slicesThe state as a vector of slices.
columnThe row value.
xThe x coordinate.
zThe z coordinate.
void setRow ( vector< SliceValue > &  slices,
RowValue  row,
unsigned int  y = 0,
unsigned int  z = 0 
)

This method sets the value of a particular row in a vector of slices.

Parameters:
slicesThe state as a vector of slices.
rowThe row value.
yThe y coordinate.
zThe z coordinate.
void setRow ( vector< LaneValue > &  lanes,
RowValue  row,
unsigned int  y = 0,
unsigned int  z = 0 
)

This method sets the value of a particular row in a vector of lanes.

Parameters:
lanesThe state as a vector of lanes.
rowThe row value.
yThe y coordinate.
zThe z coordinate.
void setSlice ( vector< LaneValue > &  lanes,
SliceValue  slice,
unsigned int  z = 0 
)

This method sets the value of a particular slice in a vector of lanes.

Parameters:
lanesThe state as a vector of lanes.
sliceThe slice value.
zThe z coordinate.
RowValue translateRow ( const RowValue row,
const unsigned int &  dx 
) [inline]

This function translates a row value along the X axis and returns the translated value. Note that 0 <= dx < 5 is required.

RowValue translateRowSafely ( RowValue  row,
int  dx 
)

Same as translateRow, but any (negative and positive) value of dx is allowed.

SliceValue translateSlice ( SliceValue  slice,
unsigned int  dx,
unsigned int  dy 
)

This function translates a slice value along the X and Y axes and returns the translated value. Note that 0 <= dx < 5 and 0 <= dy < 5 are required.

SliceValue translateSliceSafely ( SliceValue  slice,
int  dx,
int  dy 
)

Same as translateSlice(), but any (negative and positive) value of dx and dy is allowed.

void translateStateAlongZ ( vector< SliceValue > &  state,
unsigned int  dz 
)

This function translates the state along the Z axis.


Variable Documentation

const SliceValue maxSliceValue = 0x1FFFFFF

This constant indicates the maximum value if one needs to loop through all the possible slice values.

const int nrRowsAndColumns = 5

The number of rows and columns in Keccak-f.