]> git.cryptolib.org Git - avr-crypto-lib.git/blob - get_test.rb
some testvectors
[avr-crypto-lib.git] / get_test.rb
1 #!/usr/bin/ruby 
2
3 require "serialport.so"
4
5 if ARGV.size < 5
6   STDERR.print <<EOF
7   Usage: ruby #{$0} port bps nbits stopb command [target_dir] [additional specifier]
8 EOF
9   exit(1)
10 end
11
12 command=ARGV[4]+" ";
13 $dir=(ARGV.size>=6)?ARGV[5]:"";
14 param=(ARGV.size>=7)?ARGV[6]:"";
15
16 puts("\nPort: "+ARGV[0]+ "@"+ARGV[1]+" "+ARGV[2]+"N"+ARGV[3]+"\n");
17 $linewidth = 16
18 $sp = SerialPort.new(ARGV[0], ARGV[1].to_i, ARGV[2].to_i, ARGV[3].to_i, SerialPort::NONE);
19 $sp.read_timeout=5000; # 5 seconds
20 $sp.write(command);
21
22 def readTestVector(param)
23   fname=$dir;
24   lb="";
25   buffer="";
26   set=0;
27   vector=0;
28   begin
29     lb=$sp.gets();
30     if (m=/unknown command/.match(lb) || m=/[Ee][Rr]{2}[Oo][Rr]/.match(lb))
31       puts("ERROR: "+lb);
32       exit(2);
33     end
34     if(lb==nil)
35       return false;
36     end
37   end while(m=/\*+/.match(lb));
38   
39   buffer += lb;
40   begin
41     lb=$sp.gets();
42     if(lb==nil)
43       return false;
44     end
45     buffer+=lb;
46   end while(m=/\*.*/.match(lb));
47
48   while(!(m=/Test vectors/.match(lb))) 
49     m=/[^:]*:[\s]([A-Za-z0-9_-]*)/.match(lb);
50     if(m) 
51       fname+=m[1]+".";
52     end
53     buffer+=lb;
54     lb = $sp.gets();
55   end
56   if(param!="")
57     fname+=param+".";
58   end
59   puts("-> "+fname+"txt");
60   file=File.new(fname+"txt", "w");
61     buffer+=lb;
62     file.write(buffer);
63     begin
64       if (m=/Test\ vectors\ \-\-\ set[\s]+([0-9]+)/.match(lb))
65         set=m[1].to_i;
66         print("\nSet "+m[1]+":");
67       end
68       if (m=/Set [0-9]*, vector#[\s]*([0-9]+):/.match(lb))
69         vector=m[1].to_i;
70         #print(" "+m[1]);
71         if(vector!=0 && vector % $linewidth==0)
72           print("\n      ")
73         end
74         printf(" %3u", vector);
75       end
76       lb=$sp.gets();
77       if(lb==nil)
78         file.close();
79         return false;
80       end
81       file.write(lb);
82     end while(!m=/End of test vectors/.match(lb));
83     puts("\n");
84   file.close();
85   return true
86 end
87
88 if(readTestVector(param)==false)
89   puts("ERROR: test seem not to be implemented");
90   exit(3);
91 end
92
93 while(readTestVector(param))
94 end
95
96 exit(0);
97
98