]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - host/shavs_test2.rb
Bug in TDES fixed
[avr-crypto-lib.git] / host / shavs_test2.rb
index ad242f4445b81a671b190666e573a89c51248085..ab901927b4f5a4ec2bb4eec7d92f4506d05e8303 100644 (file)
@@ -25,8 +25,16 @@ require 'serialport'
 require 'getopt/std'
 
 $buffer_size = 0
+$conffile_check = Hash.new
+$conffile_check.default = 0
+
+################################################################################
+# readconfigfile                                                               #
+################################################################################
 
 def readconfigfile(fname, conf)
+  return conf if $conffile_check[fname]==1
+  $conffile_check[fname]=1
   section = "default"
   if not File.exists?(fname)
     return conf
@@ -42,12 +50,20 @@ def readconfigfile(fname, conf)
        end
        next if not /=/.match(line)
        m=/[\s]*([^\s]*)[\s]*=[\s]*([^\s]*)/.match(line)
-       conf[section][m[1]] = m[2]
+       if m[1]=="include"
+         Dir.glob(m[2]){ |fn| conf = readconfigfile(fn, conf) }
+       else
+         conf[section][m[1]] = m[2]
+       end
   end
   file.close()
   return conf
 end
 
+################################################################################
+# reset_system                                                                 #
+################################################################################
+
 def reset_system
   $sp.print("exit\r")
   sleep 0.1
@@ -55,6 +71,10 @@ def reset_system
   sleep 0.1
 end
 
+################################################################################
+# scan_system                                                                  #
+################################################################################
+
 def scan_system
   algos = Hash.new
   $sp.print("shavs_list\r")
@@ -67,13 +87,17 @@ def scan_system
   end
 end
 
+################################################################################
+# init_system                                                                  #
+################################################################################
+
 def init_system(algo_select)
   $sp.print("echo off \r")
   print("DBG i: " + "echo off \r"+"\n") if $debug
- sleep 1
+ sleep 0.1
   $sp.print("shavs_set #{algo_select}\r")
-  print("DBG i: " + "shavs_set #{$algo_select} \r"+"\n") if $debug
-  sleep 1
+  print("DBG i: " + "shavs_set #{$algo_select} \r"+"\n") if $debug
+  sleep 0.1
   $sp.print("shavs_test1 \r")
   print("DBG i: " + "shavs_test1 \r"+"\n") if $debug
   begin
@@ -82,6 +106,10 @@ def init_system(algo_select)
   $buffer_size = m[1].to_i(16)
 end
 
+################################################################################
+# get_md                                                                       #
+################################################################################
+
 def get_md
   begin
     line = $sp.gets()
@@ -91,11 +119,16 @@ def get_md
   return line
 end
 
+################################################################################
+# send_md                                                                      #
+################################################################################
+
 def send_md(md_string)
   $sp.print("Msg = ")
   for i in 0..md_string.length-1
     $sp.print(md_string[i].chr)
 #      print("DBG s: "+ md_string[i].chr) if $debug
+#   sleep(0.001)
        if((i%($buffer_size*2)==0)&&(i!=0))
          begin
                line=$sp.gets()
@@ -104,6 +137,10 @@ def send_md(md_string)
   end
 end
 
+################################################################################
+# run_test                                                                     #
+################################################################################
+
 def run_test(filename, skip=0)
   nerrors = 0
   line=1
@@ -116,14 +153,19 @@ def run_test(filename, skip=0)
   until file.eof
     begin
       lb=file.gets()
-    end while not (file.eof or (/[\s]*Len[\s]*=.*/.match(lb)))
-    len = /[\s]*Len[\s]*=[\s]*([0-9]*)/.match(lb)[1].to_i
-    puts("DBG sending: "+lb) if $debug
-       return if file.eof
+#        printf("DBG info: file read: %s", lb)
+    end while not (file.eof or (/[\s]*Len[\s]*=/.match(lb)))
+#      puts("got ya")
+       if file.eof
+         file.close()
+         return nerrors
+       end
+       len = /[\s]*Len[\s]*=[\s]*([0-9]*)/.match(lb)[1].to_i
        if(skip>0)
          skip -= 1
          redo
        end
+    puts("DBG sending: "+lb) if $debug
        $sp.print(lb.strip)
        $sp.print("\r")
     begin
@@ -148,18 +190,29 @@ def run_test(filename, skip=0)
          putc('*')
        else
          putc('!')
-         printf("<%d>",len)
+       #  printf("<%d>",len)
+         printf("\nError @%05d: %s [should]\n           != %s [is]- ",len, a, b)
          nerrors += 1
        end
        pos += 1
   end
-  return nerrors.to_i
+  file.close()
+  return nerrors
 end
 
+
+################################################################################
+# MAIN                                                                         #
+################################################################################
+
+opts = Getopt::Std.getopts("s:f:i:j:hdca")
+
 conf = Hash.new
 conf = readconfigfile("/etc/testport.conf", conf)
 conf = readconfigfile("~/.testport.conf", conf)
 conf = readconfigfile("testport.conf", conf)
+conf = readconfigfile(opts["f"], conf) if opts["f"]
+
 #puts conf.inspect
 
 puts("serial port interface version: " + SerialPort::VERSION);
@@ -190,19 +243,38 @@ reset_system()
 algos=scan_system()
 #puts algos.inspect
 
-algos.sort.each do |algoa|
+if opts["d"]
+  $debug = true
+end
+
+if opts["s"]
+  algos_rev = algos.invert
+  algo_tasks = Array.new
+  opts["s"].each_byte{ |x|
+    if algos_rev[x.chr]
+      algo_tasks << [algos_rev[x.chr],x.chr]
+    end
+  }
+else
+  algo_tasks=algos.sort
+end
+
+algo_tasks.each do |algoa|
   algo = algoa[0]
   if conf[algo]==nil
     puts("No test-set defined for #{algo} \r\n")
     next
   else
        i=0
+       i = opts["j"] if opts["j"]
        logfile=File.open(conf["PORT"]["testlogbase"]+algo+".txt", "a")
        while conf[algo]["file_#{i}"] != nil
          puts("Testing #{algo} with #{conf[algo]["file_#{i}"]}")
          reset_system()
          init_system(algoa[1])
-         nerrors=run_test(conf[algo]["file_#{i}"], 0)
+         skip=0
+         skip=opts["i"].to_i if opts["i"]
+         nerrors=run_test(conf[algo]["file_#{i}"], skip)
       if nerrors == 0
         puts("\n[ok]")
         logfile.puts("[ok] "+conf[algo]["file_#{i}"]+ " ("+Time.now.to_s()+")")