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