singe/thirdparty/openssl/gost-engine/tcl_tests/req-newkey.try
2023-11-16 22:15:24 -06:00

100 lines
4.7 KiB
Tcl
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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:TCA "ГОСТ 2012 256 бит ТК26 A" 0 1.2.643.7.1.2.1.1.1
gost2012_256:TCB "ГОСТ 2012 256 бит ТК26 B" 0 1.2.643.7.1.2.1.1.2
gost2012_256:TCC "ГОСТ 2012 256 бит ТК26 C" 0 1.2.643.7.1.2.1.1.3
gost2012_256:TCD "ГОСТ 2012 256 бит ТК26 D" 0 1.2.643.7.1.2.1.1.4
gost2012_256:TCE "ГОСТ 2012 256 бит ТК26 неверный параметр" 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 бит ТК26 C" 0 1.2.643.7.1.2.1.2.3
gost2012_512:D "ГОСТ 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 "Certificate request self-signature verify OK\n"
}
end_tests