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