1 {-Test prog for HOTP functions, we 03.10} 2 3 program t_hotp; 4 5 {$i std.inc} 6 7 {$ifdef APPCONS} 8 {$apptype console} 9 {$endif} 10 11 12 uses 13 hotp; 14 15 {Data from Simon Josefsson HOTP Toolkit, http://www.nongnu.org/hotp-toolkit/} 16 const 17 tv6: array[0..19] of string[6] = ( 18 '755224', '287082', '359152', '969429', 19 '338314', '254676', '287922', '162583', 20 '399871', '520489', '403154', '481090', 21 '868912', '736127', '229903', '436521', 22 '186581', '447589', '903435', '578337'); 23 tv7: array[0..19] of string[7] = ( 24 '4755224', '4287082', '7359152', '6969429', 25 '0338314', '8254676', '8287922', '2162583', 26 '3399871', '5520489', '2403154', '3481090', 27 '7868912', '3736127', '5229903', '3436521', 28 '2186581', '4447589', '1903435', '1578337'); 29 tv8: array[0..19] of string[8] = ( 30 '84755224', '94287082', '37359152', '26969429', 31 '40338314', '68254676', '18287922', '82162583', 32 '73399871', '45520489', '72403154', '43481090', 33 '47868912', '33736127', '35229903', '23436521', 34 '22186581', '94447589', '71903435', '21578337'); 35 36 const 37 secret: string[20] = '12345678901234567890'; 38 var 39 count: THOTPCount; 40 i,err: integer; 41 s: string[8]; 42 begin 43 writeln('Selftest: ', hotp_selftest); 44 hotp_set_count32(count,0,0); 45 err := 0; 46 for i:=0 to 19 do begin 47 s := hotp_generate_otps(secret, count, 6, -1); 48 if s<>tv6[i] then begin 49 inc(err); 50 writeln('Error: digits 6, i=',i:2,': TV = ', tv6[i]:8, ' HOTP result = ', s:8); 51 end; 52 s := hotp_generate_otps(secret, count, 7, -1); 53 if s<>tv7[i] then begin 54 inc(err); 55 writeln('Error: digits 7, i=',i:2,': TV = ', tv7[i]:8, ' HOTP result = ', s:8); 56 end; 57 s := hotp_generate_otps(secret, count, 8, -1); 58 if s<>tv8[i] then begin 59 inc(err); 60 writeln('Error: digits 8, i=',i:2,': TV = ', tv8[i]:8, ' HOTP result = ', s:8); 61 end; 62 hotp_inc_count(count); 63 end; 64 if err=0 then writeln('Test OK') 65 else writeln(' ** failed: ',err, ' errors!'); 66 end. 67