update binary chaff
[mobile-com.git] / DH-Keccak / assets / KremKeccak / displayIntermediateValues.c
CommitLineData
cc395669 1/*
2The Keccak sponge function, designed by Guido Bertoni, Joan Daemen,
3Michaƫl Peeters and Gilles Van Assche. For more information, feedback or
4questions, please refer to our website: http://keccak.noekeon.org/
5
6Implementation by the designers,
7hereby denoted as "the implementer".
8
9To the extent possible under law, the implementer has waived all copyright
10and related or neighboring rights to the source code in this file.
11http://creativecommons.org/publicdomain/zero/1.0/
12*/
13
14#include <stdio.h>
15#include "displayIntermediateValues.h"
16#include "KeccakNISTInterface.h"
17
18FILE *intermediateValueFile = 0;
19int displayLevel = 0;
20
21void displaySetIntermediateValueFile(FILE *f)
22{
23 intermediateValueFile = f;
24}
25
26void displaySetLevel(int level)
27{
28 displayLevel = level;
29}
30
31void displayBytes(int level, const char *text, const unsigned char *bytes, unsigned int size)
32{
33 unsigned int i;
34
35 if ((intermediateValueFile) && (level <= displayLevel)) {
36 fprintf(intermediateValueFile, "%s:\n", text);
37 for(i=0; i<size; i++)
38 fprintf(intermediateValueFile, "%02X ", bytes[i]);
39 fprintf(intermediateValueFile, "\n");
40 fprintf(intermediateValueFile, "\n");
41 }
42}
43
44void displayBits(int level, const char *text, const unsigned char *data, unsigned int size, int MSBfirst)
45{
46 unsigned int i, iByte, iBit;
47
48 if ((intermediateValueFile) && (level <= displayLevel)) {
49 fprintf(intermediateValueFile, "%s:\n", text);
50 for(i=0; i<size; i++) {
51 iByte = i/8;
52 iBit = i%8;
53 if (MSBfirst)
54 fprintf(intermediateValueFile, "%d ", ((data[iByte] << iBit) & 0x80) != 0);
55 else
56 fprintf(intermediateValueFile, "%d ", ((data[iByte] >> iBit) & 0x01) != 0);
57 }
58 fprintf(intermediateValueFile, "\n");
59 fprintf(intermediateValueFile, "\n");
60 }
61}
62
63void displayStateAsBytes(int level, const char *text, const unsigned char *state)
64{
65 displayBytes(level, text, state, KeccakPermutationSizeInBytes);
66}
67
68void displayStateAs32bitWords(int level, const char *text, const unsigned int *state)
69{
70 unsigned int i;
71
72 if ((intermediateValueFile) && (level <= displayLevel)) {
73 fprintf(intermediateValueFile, "%s:\n", text);
74 for(i=0; i<KeccakPermutationSize/64; i++) {
75 fprintf(intermediateValueFile, "%08X:%08X", (unsigned int)state[2*i+0], (unsigned int)state[2*i+1]);
76 if ((i%5) == 4)
77 fprintf(intermediateValueFile, "\n");
78 else
79 fprintf(intermediateValueFile, " ");
80 }
81 }
82}
83
84void displayStateAs64bitWords(int level, const char *text, const unsigned long long int *state)
85{
86 unsigned int i;
87
88 if ((intermediateValueFile) && (level <= displayLevel)) {
89 fprintf(intermediateValueFile, "%s:\n", text);
90 for(i=0; i<KeccakPermutationSize/64; i++) {
91 fprintf(intermediateValueFile, "%08X", (unsigned int)(state[i] >> 32));
92 fprintf(intermediateValueFile, "%08X", (unsigned int)(state[i] & 0xFFFFFFFFULL));
93 if ((i%5) == 4)
94 fprintf(intermediateValueFile, "\n");
95 else
96 fprintf(intermediateValueFile, " ");
97 }
98 }
99}
100
101void displayRoundNumber(int level, unsigned int i)
102{
103 if ((intermediateValueFile) && (level <= displayLevel)) {
104 fprintf(intermediateValueFile, "\n");
105 fprintf(intermediateValueFile, "--- Round %d ---\n", i);
106 fprintf(intermediateValueFile, "\n");
107 }
108}
109
110void displayText(int level, const char *text)
111{
112 if ((intermediateValueFile) && (level <= displayLevel)) {
113 fprintf(intermediateValueFile, text);
114 fprintf(intermediateValueFile, "\n");
115 fprintf(intermediateValueFile, "\n");
116 }
117}