]> www.wagner.pp.ru Git - openssl-gost/engine.git/blob - tcl_tests/req-newkey.try
3c4a8a80141a219d4be56c994c3367cb852a0656
[openssl-gost/engine.git] / tcl_tests / req-newkey.try
1 #!/usr/bin/tclsh
2 if {[info exists env(PKG_PATH)]} {
3         lappend auto_path $env(PKG_PATH)
4 } else {        
5         lappend auto_path [file dirname [info script]]
6 }
7 package require ossltest
8 package require asn 0.4.1
9 cd $::test::dir
10
11 switch -exact [engine_name] {
12         "ccore" {
13                 set no_param_set "no public key parameters set"
14                 set invalid_paramset "invalid pubic key paramset name"
15         }
16         "open" {
17                 set no_param_set "no parameters set"
18                 set invalid_paramset "parameter error"
19         }
20 }
21
22 start_tests "Создание ключей и заявок, команда req -newkey"
23 makeCA
24 foreach {alg descr code result} {
25 gost2001: "ГОСТ 2001 Криптопро" 1 no_param_set
26 gost2001:A "ГОСТ 2001 Криптопро A" 0 1.2.643.2.2.35.1
27 gost2001:B "ГОСТ 2001 Криптопро B" 0 1.2.643.2.2.35.2
28 gost2001:C "ГОСТ 2001 Криптопро C" 0 1.2.643.2.2.35.3
29 gost2001:D "ГОСТ 2001 Криптопро неверный параметр" 1 invalid_paramset
30 gost2001:test "ГОСТ 2001 Криптопро тестовый" 0 1.2.643.2.2.35.0
31 gost2001:XA "ГОСТ 2001 Криптопро XA" 0 1.2.643.2.2.36.0
32 gost2001:XB "ГОСТ 2001 Криптопро XB" 0 1.2.643.2.2.36.1
33 gost2001:id-GostR3410-2001-CryptoPro-XchB-ParamSet  "ГОСТ 2001 Криптопро XB по имени" 0 1.2.643.2.2.36.1
34 gost2001:1.2.643.2.2.36.1 "ГОСТ 2001 Криптопро XB по OID" 0 1.2.643.2.2.36.1
35 gost2001:1.2.840.113549.1.1.1 "Недопустимый OID" 1 invalid_paramset
36 gost2001:RSAencryption: "Недопустимое имя объекта" 1 invalid_paramset
37 gost2012_256: "ГОСТ 2012 256 бит" 1 no_param_set
38 gost2012_256:A "ГОСТ 2012 256 бит Криптопро A" 0 1.2.643.2.2.35.1
39 gost2012_256:B "ГОСТ 2012 256 бит Криптопро B" 0 1.2.643.2.2.35.2
40 gost2012_256:C "ГОСТ 2012 256 бит Криптопро C" 0 1.2.643.2.2.35.3
41 gost2012_256:D "ГОСТ 2012 256 бит Криптопро неверный параметр" 1 invalid_paramset
42 gost2012_256:id-GostR3410-2001-CryptoPro-B-ParamSet  "ГОСТ 2012 256 бит Криптопро B по имени" 0 1.2.643.2.2.35.2
43 gost2012_256:1.2.643.2.2.35.1 "ГОСТ 2012 256 бит Криптопро A по OID" 0 1.2.643.2.2.35.1
44 gost2012_256:1.2.840.113549.1.1.1 "Недопустимый OID" 1 invalid_paramset
45 gost2012_256:RSAencryption: "Недопустимое имя объекта" 1 invalid_paramset
46 gost2012_512: "ГОСТ 2012 512 бит" 1 no_param_set
47 gost2012_512:A "ГОСТ 2012 512 бит ТК26 A" 0 1.2.643.7.1.2.1.2.1
48 gost2012_512:B "ГОСТ 2012 512 бит ТК26 B" 0 1.2.643.7.1.2.1.2.2
49 gost2012_512:C "ГОСТ 2012 512 бит неверный параметр" 1 invalid_paramset
50 gost2012_512:id-tc26-gost-3410-2012-512-paramSetB  "ГОСТ 2012 512 бит набор параметров B по имени" 0 1.2.643.7.1.2.1.2.2
51 gost2012_512:1.2.643.7.1.2.1.2.1 "ГОСТ 2012 512 бит набор параметров A по OID" 0 1.2.643.7.1.2.1.2.1
52 gost2012_512:1.2.643.2.2.35.1 "Недопустимый OID" 1 invalid_paramset
53 gost2012_512:RSAencryption: "Недопустимое имя объекта" 1 invalid_paramset
54
55
56 } {
57
58         switch -exact $result {
59                 "no_param_set" { set result $no_param_set }
60                 "invalid_paramset" { set result $invalid_paramset }
61         }
62         
63         set index [string first ":" $alg]
64         if {$index != -1} {
65                 set algname [string range $alg 0 [expr $index-1]]
66                 set algparam [string range $alg [expr $index+1] end]
67         } else {
68                 set algname $alg
69                 set algparam ""
70         }
71         if {$algparam ne ""} {
72                 set algparamcmdline "-pkeyopt paramset:$algparam"
73         } else {
74                 set algparamcmdline ""
75         }
76
77         test -skip {{[engine_name] eq "open" && $alg eq "gost2001:test"}} $descr {
78                 openssl "req -newkey $algname $algparamcmdline -keyout test.key -out test.req -batch -nodes -config $::test::ca/req.conf"
79                 set pkcs8 [readpem test.key]
80                 asn::asnGetSequence pkcs8 seq1
81                 asn::asnGetInteger seq1 int0
82                 asn::asnGetSequence seq1 seq2
83                 asn::asnGetObjectIdentifier seq2 oid
84                 asn::asnGetSequence seq2 seq3
85                 asn::asnGetObjectIdentifier seq3 oid
86                 join $oid .
87         } $code $result 
88         log "errorInfo: $errorInfo"
89
90         test -skip {![file exists test.req]} "Заявка подписана корректно" {
91                 grep "verif" [openssl "req -verify -in test.req"]
92         } 0 "verify OK\n"
93 }
94 end_tests