%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich
%% http://www.iis.ee.ethz.ch/~sha3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
clc;
N = 4;
hashsize=256;
it = 7;
disp(['Start generating ' num2str(2) ' for Luffa'])
stm = fopen('luffa256_stimuli.asc', 'w', 'native');
exp = fopen('luffa256_expresp.asc', 'w', 'native');
% RESET Cycles
fprintf(stm, '%X %X %X %064X \n', [0 0 0 0]);
fprintf(stm, '%X %X %X %064X \n', [0 0 0 0]);
fprintf(stm, '%X %X %X %064X \n', [1 0 0 0]);
fprintf(stm, '%X %X %X %064X \n', [1 0 0 0]);
%%%%% START SIMULATION %%%%%
% ZERO INPUT ------------------------------------------------------------
% data
%Msg = dec2hex(zeros(N,1),8);
% power sim
Msg = dec2hex((2^32-1)*ones(N,1),8);
for i=1:3
Msg=cat(2,Msg,Msg);
end
for j=1:N
fprintf(stm, '%X %X %X %s\n', [1 1 0 Msg(j,:)]);
for i=1:it,
fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]);
end
end
Hs = Luffa(Msg,N*256,256);
fprintf(exp, '%s\n', Hs);
% pad msg
pad='80';
padmsg=[pad, sprintf('%062X',0)];
fprintf(stm, '%X %X %X %s\n', [1 1 0 padmsg]);
for i=1:it
fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]);
end
% finalization
fprintf(stm, '%X %X %X %064X\n', [1 1 0 0]);
for i=1:it
fprintf(stm, '%X %X %X %064X\n', [1 0 1 0]);
end
% MSG SEPARATION --------------------------------------------------------
for i=1:2
fprintf(stm, '%X %X %X %064X\n', [1 0 1 0]);
end
% % RANDOM INPUT-------------------------------------------------------------
% for i=1:8
% rndm=dec2hex(round((2^32-1)*rand(N,1)),8);
% if i==1
% Msg=rndm;
% else
% Msg=cat(2,Msg,rndm);
% end
% end
% for j=1:N
% fprintf(stm, '%X %X %X %s\n', [1 1 0 Msg(j,:)]);
%
% for i=1:it
% fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]);
% end
% end
%
% Hs = Luffa(Msg,N*256,256);
% fprintf(exp, '%s\n', Hs);
%
% % pad msg
% pad='80';
% padmsg=[pad, sprintf('%062X',0)];
% fprintf(stm, '%X %X %X %s\n', [1 1 0 padmsg]);
%
% for i=1:it
% fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]);
% end
%
% % finalization
% fprintf(stm, '%X %X %X %064X\n', [1 1 0 0]);
%
% for i=1:it
% fprintf(stm, '%X %X %X %064X\n', [1 0 1 0]);
% end
% END ROUND
for i=1:2,
fprintf(stm, '%X %X %X %064X\n', [1 0 1 0]);
end
fclose(stm);
fclose(exp);
disp('End generation')