%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich
%% http://www.iis.ee.ethz.ch/~sha3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
clc;
N = 1;
it = 2;
finit = 5;
hashsize=256;
disp(['Start generating ' num2str(3) ' test vectors of length ' num2str(N*hashsize) ' for Hamsi'])
stm = fopen('hamsi256_stimuli.asc', 'w', 'native');
exp = fopen('hamsi256_expresp.asc', 'w', 'native');
% RESET Cycles
fprintf(stm, '%X %X %X %08X \n', [0 0 0 0]);
fprintf(stm, '%X %X %X %08X \n', [0 0 0 0]);
fprintf(stm, '%X %X %X %08X \n', [1 0 0 0]);
fprintf(stm, '%X %X %X %08X \n', [1 0 0 0]);
%%%%% START SIMULATION %%%%%
% ZERO INPUT ------------------------------------------------------------
% data
Msg = zeros(N,1);
% power sim
N = 32;
Msg = (2^32-1)*ones(32,1);
for j=1:N
fprintf(stm, '%X %X %X %08X\n', [1 1 0 Msg(j)]);
for i=1:it,
fprintf(stm, '%X %X %X %08X\n', [1 0 0 0]);
end
end
Hs = Hamsi256(dec2hex(Msg,8),N*32);
fprintf(exp, '%s\n', Hs);
Len = uint64(hashsize*N);
Lenbytes = bitshift(Len, -32);
fprintf(stm, '%X %X %X %08X\n', [1 1 0 Lenbytes]);
for i=1:it,
fprintf(stm, '%X %X %X %08X\n', [1 0 0 0]);
end
% lenbytes + 4 - final round
Lenbytes = bitand(Len, 2^32-1);
fprintf(stm, '%X %X %X %08X\n', [1 1 1 Lenbytes]);
for i=1:finit
fprintf(stm, '%X %X %X %08X\n', [1 0 1 0]);
end
% MSG SEPARATION --------------------------------------------------------
for i=1:it,
fprintf(stm, '%X %X %X %08X\n', [1 0 0 0]);
end
% RANDOM INPUT-------------------------------------------------------------
% Msg = round((2^32-1)*rand(N,1));
% for j=1:N
% % data
%
% fprintf(stm, '%X %X %X %08X\n', [1 1 0 Msg(j)]);
%
% for i=1:it,
%
% fprintf(stm, '%X %X %X %08X\n', [1 0 0 0]);
% end
% end
%
% Hs = Hamsi256(dec2hex(Msg,8),N*32);
% fprintf(exp, '%s\n', Hs);
%
% % lenbytes - 3 rounds
% Len = uint64(hashsize*N);
% Lenbytes = bitshift(Len, -32);
% fprintf(stm, '%X %X %X %08X\n', [1 1 0 Lenbytes]);
%
% for i=1:it,
%
% fprintf(stm, '%X %X %X %08X\n', [1 0 0 0]);
% end
%
% % lenbytes + 4 - final round
% Lenbytes = bitand(Len, 2^32-1);
% fprintf(stm, '%X %X %X %08X\n', [1 1 1 Lenbytes]);
%
% for i=1:finit
%
% fprintf(stm, '%X %X %X %08X\n', [1 0 1 0]);
% end
% END ROUND
for i=1:it,
fprintf(stm, '%X %X %X %08X\n', [1 0 0 0]);
end
fclose(stm);
fclose(exp);
disp('End generation')