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