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

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