%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich
%%            http://www.iis.ee.ethz.ch/~sha3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
clc;

rnd    = 0;
nmax   = 2;
N      = 1;

R      = 79.5;  % 10/79.5 Latency

disp(['Start generating ' num2str(N) ' messages for Groestl-256'])


stm = fopen('groestl256_stimuli.asc', 'w', 'native');
exp = fopen('groestl256_expresp.asc', 'w', 'native');

% RESET Cycles

fprintf(stm, '%X %X %0128X\n', [0 0 0]);
fprintf(stm, '%X %X %0128X\n', [0 0 0]);
fprintf(stm, '%X %X %0128X\n', [1 0 0]);
fprintf(stm, '%X %X %0128X\n', [1 0 0]);

%Test environment
% m1=[hex2dec('61') hex2dec('63') hex2dec('65') hex2dec('67') hex2dec('69') hex2dec('6b') hex2dec('6d') hex2dec('80'); 
% hex2dec('62') hex2dec('64') hex2dec('66') hex2dec('68') hex2dec('6a') hex2dec('6c') hex2dec('6e') hex2dec('00'); 
% hex2dec('63') hex2dec('65') hex2dec('67') hex2dec('69') hex2dec('6b') hex2dec('6d') hex2dec('6f') hex2dec('00'); 
% hex2dec('64') hex2dec('66') hex2dec('68') hex2dec('6a') hex2dec('6c') hex2dec('6e') hex2dec('70') hex2dec('00'); 
% hex2dec('62') hex2dec('64') hex2dec('66') hex2dec('68') hex2dec('6a') hex2dec('6c') hex2dec('6e') hex2dec('00'); 
% hex2dec('63') hex2dec('65') hex2dec('67') hex2dec('69') hex2dec('6b') hex2dec('6d') hex2dec('6f') hex2dec('00'); 
% hex2dec('64') hex2dec('66') hex2dec('68') hex2dec('6a') hex2dec('6c') hex2dec('6e') hex2dec('70') hex2dec('00'); 
% hex2dec('65') hex2dec('67') hex2dec('69') hex2dec('6b') hex2dec('6d') hex2dec('6f') hex2dec('71') hex2dec('00')];
% 
%   M=zeros(8,16);
%   M(:,1:8)=m1;
%   M(8,16)=2;
%   n=2;
%   
%   H = groestl256_hash(M,n);
% 
%   for k=0:n-1
%     fprintf(stm, '%X %X ',[1 1]);
%     for i=1:8
%         fprintf(stm, '%02X%02X%02X%02X%02X%02X%02X%02X', M(:,k*8+i));
%     end
%     fprintf(stm,'\n');
%     for ii=1:2*R,
%         fprintf(stm, '%X %X %0128X\n', [1 0 0]);
%     end
%   end
%   for ii=1:2*R+1,
%       fprintf(stm, '%X %X %0128X\n', [1 0 0]);
%   end
%   fprintf(exp, '%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X\n', H);
  

% RANDOM INPUT ------------------------------------------------------------

for j=1:N;
    
  if rnd == 0,
      n = nmax;
  else
      n = ceil(nmax*rand(1));
  end
    
  M = round((2^8-1)*rand(8,8*n)); %Create random message
  M = round((2^8-1)*ones(8,8*n)); %Create all-ones message
  
  H = groestl256_hash(M,n); 
    
  for k=0:n-1
    
    fprintf(stm, '%X %X ',[1 1]);
    for i=1:8
        fprintf(stm, '%02X%02X%02X%02X%02X%02X%02X%02X', M(:,k*8+i));
    end
    fprintf(stm,'\n');
    for ii=1:2*R,
        fprintf(stm, '%X %X %0128X\n', [1 0 0]);
    end
  end
  for ii=1:2*R+1,
      fprintf(stm, '%X %X %0128X\n', [1 0 0]);
  end
  fprintf(exp, '%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X\n', H);
    
end

% END RANDOM INPUT -------------------------------------------------------------

fprintf(stm, '%X %X %0128X\n', [1 0 0]);
fprintf(stm, '%X %X %0128X\n', [1 0 0]);
fprintf(stm, '%X %X %0128X\n', [1 0 0]);
fprintf(stm, '%X %X %0128X\n', [1 0 0]);

fclose(stm);
fclose(exp);

disp('End generation')

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