#include "Keccak-f.h"


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 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.
| 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, | |||
| const vector< SliceValue > & | state3, | |||
| bool | showParity3 | |||
| ) |
This method outputs to fout the value of the 3 states in a human readable way.
| 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 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.
| slices | The destination for the slices. | |
| lanes | The state as a vector of lanes. | |
| laneSize | The 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.
| lanes | The destination for the lanes. | |
| slices | The 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.
| slices | The state as a vector of slices. | |
| x | The x coordinate. | |
| z | The z coordinate. |
| unsigned int getHammingWeight | ( | const vector< LaneValue > & | state | ) |
This function returns the Hamming weight of the given state.
| unsigned int getHammingWeight | ( | const vector< SliceValue > & | 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 vector< LaneValue > & | lanes | ) |
This method returns the number of active rows in the state given as lanes.
| 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 SliceValue & | slice | ) |
This method returns the number of active rows in the given slice value.
This method returns the value of a given row in a slice.
| lanes | The state as a vector of lanes. | |
| y | The y coordinate. | |
| z | The 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.
| slices | The state as a vector of slices. | |
| y | The y coordinate. | |
| z | The 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.
| lanes | The state as a vector of lanes. | |
| z | The 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.
| slices | The state as a vector of slices. | |
| x | The x coordinate. | |
| z | The 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.
| slices | The state as a vector of slices. | |
| column | The row value. | |
| x | The x coordinate. | |
| z | The z coordinate. |
This method sets the value of a particular row in a vector of lanes.
| lanes | The state as a vector of lanes. | |
| row | The row value. | |
| y | The y coordinate. | |
| z | The 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.
| slices | The state as a vector of slices. | |
| row | The row value. | |
| y | The y coordinate. | |
| z | The 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.
| lanes | The state as a vector of lanes. | |
| slice | The slice value. | |
| z | The z coordinate. |
This function translates a row value along the X axis and returns the translated value. Note that 0 <= dx < 5 is required.
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.
| 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.
1.5.6