]> www.wagner.pp.ru Git - openssl-gost/engine.git/blob - test/00-engine.t
Fix perl tests and library name
[openssl-gost/engine.git] / test / 00-engine.t
1 #!/usr/bin/perl
2 use Test::More tests => 7;
3 use Cwd 'abs_path';
4
5 # prepare data for 
6
7 open F,">","testdata.dat";
8 print F "12345670" x 128;
9 close F;
10
11 # Set OPENSSL_ENGINES environment variable to just built engine
12 if(!defined $ENV{'OPENSSL_ENGINES'}){
13         $ENV{'OPENSSL_ENGINES'} = abs_path("../.libs");
14 }
15
16 $key='0123456789abcdef' x 2;
17
18 #
19 # You can redefine engine to use using ENGINE_NAME environment variable
20
21 $engine=$ENV{'ENGINE_NAME'}||"gost";
22
23 # Reopen STDERR to eliminate extra output
24 open STDERR, ">>","tests.err";
25
26 if (exists $ENV{'OPENSSL_CONF'}) {
27         delete $ENV{'OPENSSL_CONF'}
28 }
29 #
30 # This test needs output of openssl engine -c command.
31 # Default one  is hardcoded below, but you can place file
32 # ${ENGINE_NAME}.info into this directory if you use this test suite
33 # to test other engine implementing GOST cryptography.
34 #
35 if ( -f $engine . ".info") {
36         diag("Reading $engine.info");
37         open F, "<", $engine . ".info";
38         read F,$engine_info,1024;
39 } else {
40
41 $engine_info= <<EOINF;
42 (gost) Reference implementation of GOST engine
43  [gost89, gost89-cnt, gost89-cnt-12, gost89-cbc, grasshopper-ecb, grasshopper-cbc, grasshopper-cfb, grasshopper-ofb, grasshopper-ctr, magma-cbc, magma-ctr, md_gost94, gost-mac, md_gost12_256, md_gost12_512, gost-mac-12, magma-mac, grasshopper-mac, gost2001, gost-mac, gost2012_256, gost2012_512, gost-mac-12, magma-mac, grasshopper-mac]
44 EOINF
45 }
46
47 $ENV{'OPENSSL_CONF'}=abs_path("no_such_file.cfg");
48 is(`openssl engine -c $engine`,
49 $engine_info,
50 "load engine without any config");
51
52 is(`openssl dgst -engine $engine -md_gost94 testdata.dat`,
53 "md_gost94(testdata.dat)= f7fc6d16a6a5c12ac4f7d320e0fd0d8354908699125e09727a4ef929122b1cae\n",
54 "compute digest without config");
55
56
57 open F,">","test.cnf";
58 print F <<EOCFG;
59 openssl_conf = openssl_def
60 [openssl_def]
61 engines = engines
62 [engines]
63 ${engine}=gost_conf
64 [gost_conf]
65 default_algorithms = ALL
66
67 EOCFG
68 close F;
69 $ENV{'OPENSSL_CONF'}=abs_path('test.cnf');
70
71 is(`openssl engine -c $engine`,
72 $engine_info,
73 "load engine with config");
74
75 is(`openssl dgst -md_gost94 testdata.dat`,
76 "md_gost94(testdata.dat)= f7fc6d16a6a5c12ac4f7d320e0fd0d8354908699125e09727a4ef929122b1cae\n",
77 "compute digest with config without explicit engine param");
78
79 is(`openssl dgst -engine $engine -md_gost94 testdata.dat`,
80 "md_gost94(testdata.dat)= f7fc6d16a6a5c12ac4f7d320e0fd0d8354908699125e09727a4ef929122b1cae\n",
81 "compute digest with both config and explicit engine param");
82
83 like(`openssl ciphers`, qr|GOST2001-GOST89-GOST89|, 'display GOST2001-GOST89-GOST89 cipher');
84
85 like(`openssl ciphers`, qr|GOST2012-GOST8912-GOST8912|, 'display GOST2012-GOST8912-GOST8912 cipher');
86
87 unlink('testdata.dat');
88 unlink('test.cnf');