%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich %% http://www.iis.ee.ethz.ch/~sha3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear; clc; N = 1; nmax = 2; pl = 1; h = 256; b = 32; r = 16; disp(['Start generating ' num2str(N+1) ' test vectors for CubeHash'... num2str(r) '/' num2str(b) '-' num2str(h)]) stm = fopen(['cubehash' num2str(h) '_stimuli.asc'], 'w', 'native'); exp = fopen(['cubehash' num2str(h) '_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 -------------------------------------------------------------- % n = ceil(nmax*rand(1,1)); % M = zeros(n,b*8/32); % H = cubehash(M, h, r, b); % % for i=1:n % if i==1, % fprintf(stm, '%X %X %X %08X%08X%08X%08X%08X%08X%08X%08X\n', [1 1 1 M(i, :)]); % else % fprintf(stm, '%X %X %X %08X%08X%08X%08X%08X%08X%08X%08X\n', [1 0 1 M(i, :)]); % end % % for j=1:r*pl-1 % fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]); % end % end % % for i=1:h/8, % fprintf(exp, '%02X', H(i)); % end % fprintf(exp, '\n'); % % for i=1:r*10*pl+1 % fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]); % end % RANDOM INPUT ------------------------------------------------------------ for j=1:N, n = ceil(nmax*rand(1,1)); M = round((2^8-1)*rand(n,b*8/32)); n = 4; M = round((2^8-1)*ones(n,b*8/32)); H = cubehash(M, h, r, b); for i=1:n if i==1, fprintf(stm, '%X %X %X %08X%08X%08X%08X%08X%08X%08X%08X\n', [1 1 1 M(i, :)]); else fprintf(stm, '%X %X %X %08X%08X%08X%08X%08X%08X%08X%08X\n', [1 0 1 M(i, :)]); end for j=1:r*pl-1 fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]); end end for i=1:h/8, fprintf(exp, '%02X', H(i)); end fprintf(exp, '\n'); for i=1:r*10*pl+1 fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]); end end % ------------------------------------------------------------------------- for i=1:10*pl, fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]); end % END ROUND --------------------------------------------------------------- fclose(stm); fclose(exp); disp('End generation')