initial import
This commit is contained in:
Executable
+117
@@ -0,0 +1,117 @@
|
||||
/*
|
||||
The Keccak sponge function, designed by Guido Bertoni, Joan Daemen,
|
||||
Michaël Peeters and Gilles Van Assche. For more information, feedback or
|
||||
questions, please refer to our website: http://keccak.noekeon.org/
|
||||
|
||||
Implementation by the designers,
|
||||
hereby denoted as "the implementer".
|
||||
|
||||
To the extent possible under law, the implementer has waived all copyright
|
||||
and related or neighboring rights to the source code in this file.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "displayIntermediateValues.h"
|
||||
#include "KeccakNISTInterface.h"
|
||||
|
||||
FILE *intermediateValueFile = 0;
|
||||
int displayLevel = 0;
|
||||
|
||||
void displaySetIntermediateValueFile(FILE *f)
|
||||
{
|
||||
intermediateValueFile = f;
|
||||
}
|
||||
|
||||
void displaySetLevel(int level)
|
||||
{
|
||||
displayLevel = level;
|
||||
}
|
||||
|
||||
void displayBytes(int level, const char *text, const unsigned char *bytes, unsigned int size)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
if ((intermediateValueFile) && (level <= displayLevel)) {
|
||||
fprintf(intermediateValueFile, "%s:\n", text);
|
||||
for(i=0; i<size; i++)
|
||||
fprintf(intermediateValueFile, "%02X ", bytes[i]);
|
||||
fprintf(intermediateValueFile, "\n");
|
||||
fprintf(intermediateValueFile, "\n");
|
||||
}
|
||||
}
|
||||
|
||||
void displayBits(int level, const char *text, const unsigned char *data, unsigned int size, int MSBfirst)
|
||||
{
|
||||
unsigned int i, iByte, iBit;
|
||||
|
||||
if ((intermediateValueFile) && (level <= displayLevel)) {
|
||||
fprintf(intermediateValueFile, "%s:\n", text);
|
||||
for(i=0; i<size; i++) {
|
||||
iByte = i/8;
|
||||
iBit = i%8;
|
||||
if (MSBfirst)
|
||||
fprintf(intermediateValueFile, "%d ", ((data[iByte] << iBit) & 0x80) != 0);
|
||||
else
|
||||
fprintf(intermediateValueFile, "%d ", ((data[iByte] >> iBit) & 0x01) != 0);
|
||||
}
|
||||
fprintf(intermediateValueFile, "\n");
|
||||
fprintf(intermediateValueFile, "\n");
|
||||
}
|
||||
}
|
||||
|
||||
void displayStateAsBytes(int level, const char *text, const unsigned char *state)
|
||||
{
|
||||
displayBytes(level, text, state, KeccakPermutationSizeInBytes);
|
||||
}
|
||||
|
||||
void displayStateAs32bitWords(int level, const char *text, const unsigned int *state)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
if ((intermediateValueFile) && (level <= displayLevel)) {
|
||||
fprintf(intermediateValueFile, "%s:\n", text);
|
||||
for(i=0; i<KeccakPermutationSize/64; i++) {
|
||||
fprintf(intermediateValueFile, "%08X:%08X", (unsigned int)state[2*i+0], (unsigned int)state[2*i+1]);
|
||||
if ((i%5) == 4)
|
||||
fprintf(intermediateValueFile, "\n");
|
||||
else
|
||||
fprintf(intermediateValueFile, " ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void displayStateAs64bitWords(int level, const char *text, const unsigned long long int *state)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
if ((intermediateValueFile) && (level <= displayLevel)) {
|
||||
fprintf(intermediateValueFile, "%s:\n", text);
|
||||
for(i=0; i<KeccakPermutationSize/64; i++) {
|
||||
fprintf(intermediateValueFile, "%08X", (unsigned int)(state[i] >> 32));
|
||||
fprintf(intermediateValueFile, "%08X", (unsigned int)(state[i] & 0xFFFFFFFFULL));
|
||||
if ((i%5) == 4)
|
||||
fprintf(intermediateValueFile, "\n");
|
||||
else
|
||||
fprintf(intermediateValueFile, " ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void displayRoundNumber(int level, unsigned int i)
|
||||
{
|
||||
if ((intermediateValueFile) && (level <= displayLevel)) {
|
||||
fprintf(intermediateValueFile, "\n");
|
||||
fprintf(intermediateValueFile, "--- Round %d ---\n", i);
|
||||
fprintf(intermediateValueFile, "\n");
|
||||
}
|
||||
}
|
||||
|
||||
void displayText(int level, const char *text)
|
||||
{
|
||||
if ((intermediateValueFile) && (level <= displayLevel)) {
|
||||
fprintf(intermediateValueFile, text);
|
||||
fprintf(intermediateValueFile, "\n");
|
||||
fprintf(intermediateValueFile, "\n");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user