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

N      = 1; % # Messages
nmax   = 1; % Maximal message size
rnd    = 0;  % Rnd Message Size (On:1 - Off:0)

arc = 80; % 20 - 160 - 80

if arc == 20,
    disp(['Start generating ' num2str(N) ' messages for [4G]-BLAKE-32'])
elseif arc == 160,
    disp(['Start generating ' num2str(N) ' messages for [1/2G]-BLAKE-32'])
elseif arc == 80,
    disp(['Start generating ' num2str(N) ' messages for [1G]-BLAKE-32'])
else
    disp('Invalid architecture')
end
    

stm = fopen(['blake32_stimuli.asc'], 'w', 'native');
exp = fopen(['blake32_expresp.asc'], 'w', 'native');

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


%%%%% START SIMULATION %%%%%

% RANDOM INPUT -------------------------------------------------------------
for j=1:N,
    
  if rnd == 0,
      n = nmax;
  else
      n = ceil(nmax*rand(1));
  end
    
  M = round((2^32-1)*rand(n,16));
  S = round(zeros(1,4)); %S = round((2^32-1)*rand(1,4));
  T = round((2^32-1)*rand(n,2));
  
  % for power
  n = 2;
  M = round((2^32-1)*ones(n,16));
  T = [0 512; 0 512];
  
  H = blakehash(M, S, T);
    
  for i=1:n
    fprintf(stm, '%X %X %08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X ', [1 1 M(i,:)]);
    fprintf(stm, '%08X%08X\n', T(i,:));
    
    for ii=1:arc,
        fprintf(stm, '%X %X %0128X %016X\n', [1 0 0 0]);
    end
  end
  
  fprintf(exp, '%08X%08X%08X%08X%08X%08X%08X%08X\n', H);
  
  fprintf(stm, '%X %X %0128X %016X\n', [1 0 0 0]);

end

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

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

fclose(stm);
fclose(exp);

disp('End generation')

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