%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 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')

Generated on Fri Sep 24 10:39:12 CEST 2010
Home