]> www.wagner.pp.ru Git - openssl-gost/engine.git/blob - tcl_tests/enc.try
2f682a77fb3cb6fd092a027459f8d2a9aa57f9a2
[openssl-gost/engine.git] / tcl_tests / enc.try
1 #!/usr/bin/tclsh/
2 # -*- coding: cp1251 -*-
3 lappend auto_path [file dirname [info script]] 
4 package require ossltest
5 set plain0 [getFile plain.enc]
6 file copy -force cfb0.enc $::test::dir
7 file copy -force cnt0.enc $::test::dir
8 file copy -force cbc0.enc $::test::dir
9 file copy -force aes0.enc $::test::dir
10 file copy -force plain.enc $::test::dir
11 file copy -force magma_plain.enc $::test::dir
12 file copy -force magma_acpkm_plain.enc $::test::dir
13 set cfb1 [getFile cfb1.enc]
14 set cbc1 [getFile cbc1.enc]
15 set cnt1 [getFile cnt1.enc]
16 set aes1 [getFile aes1.enc]
17 set magma1 [getFile magma1.enc]
18 set macpkm1 [getFile macpkm1.enc]
19 cd $::test::dir 
20 file delete cfb1.enc cbc1.enc cnt1.enc aes1.enc magma1.enc magma1.enc macpkm1.enc
21 start_tests "Тесты на команду enc" 
22
23 save_env2 {CRYPT_PARAMS}
24 if [info exists env(CRYPT_PARAMS)] {unset env(CRYPT_PARAMS)}
25
26 test -createsfiles cfb0.dec "Decrypting etalon file in CFB mode" {
27         openssl "enc -gost89 -d -md md5 -in cfb0.enc -out cfb0.dec -k 1234567890 -p"
28         getFile cfb0.dec 
29 } 0 $plain0
30
31 test -createsfiles cnt0.dec "Decrypting etalon file CNT mode" {
32         openssl "enc -gost89-cnt -d -md md5 -in cnt0.enc -out cnt0.dec -k 1234567890 -p"
33         getFile cnt0.dec 
34 } 0 $plain0
35
36 test -createsfiles cbc0.dec "Decrypting etalon file in CBC mode" {
37         openssl "enc -gost89-cbc -d -md md5 -in cbc0.enc -out cbc0.dec -k 1234567890 -p"
38         getFile cbc0.dec 
39 } 0 $plain0
40
41 test -createsfiles aes0.dec "Decrypting etalon file encrypted with AES" {
42         openssl "enc -aes-128-cbc -d -md md5 -in aes0.enc -out aes0.dec -k 1234567890"
43         getFile aes0.dec 
44 } 0 $plain0
45
46
47 test -createsfiles cfb1.enc "Encrypting etalon file in CFB mode" {
48         openssl "enc -gost89 -in plain.enc -out cfb1.enc -K 0D6F24152DB4B18CC4B0EE62F55FAD0BEADC26E7992C5EDF039114EC3F44EB08 -iv 8EE68900818CD1F9 -p"
49         getFile cfb1.enc 
50 } 0 $cfb1
51
52 test -createsfiles cnt1.enc "Encrypting etalon file in CNT mode" {
53         openssl "enc -gost89-cnt -in plain.enc -out cnt1.enc -K EF164FDF5B1128DE44AFCC00A0323DC1090EC99DE9C6B085B0D2550AB9F1AF47 -iv 9AF32B4E2FB1DF3D -p"
54         getFile cnt1.enc 
55 } 0 $cnt1
56
57 test -createsfiles cbc1.enc "Encrypting etalon file in CBC mode" {
58         openssl "enc -gost89-cbc -in plain.enc -out cbc1.enc -K F6AF8D0EDF555D164E3DDFA20615D7DF602B99A5ED4BD4103C4CA622D4544636 -iv 8264BBB5A072CDB5 -p"
59         getFile cbc1.enc 
60 } 0 $cbc1
61
62 test -createsfiles aes1.enc "Encrypting etalon file with AES" {
63         openssl "enc -aes-128-cbc -in plain.enc -out aes1.enc -K D45358C3C6E711392E9F2AFF46C444B1 -iv 78E88EFC8F44B9C27C45C5FCC61DCD94 -p"
64         getFile aes1.enc 
65 } 0 $aes1
66
67
68 set plain "Test data to encrypt "
69 makeFile enc.dat $plain binary
70 set plain2 [string repeat "Test data for encrypt of big string\n" 64]
71 makeFile enc2.dat $plain2 binary
72
73 test -createsfiles {cfb.enc} "Encrypting file in CFB mode" {
74         openssl "enc -gost89 -out cfb.enc -in enc.dat -k 1234567890 -p"
75         file isfile cfb.enc
76 } 0 1
77
78 test -createsfiles {cnt.enc} "Encrypting file in CNT mode" {
79         openssl "enc -gost89-cnt -out cnt.enc -in enc.dat -k 1234567890 -p"
80         file isfile cnt.enc
81 } 0 1
82
83 test -createsfiles {cbc.enc} "Encrypting file in CBC mode" {
84         openssl "enc -gost89-cbc -out cbc.enc -in enc.dat -k 1234567890 -p"
85         file isfile cbc.enc
86 } 0 1
87
88 test -createsfiles aes.enc "Encrypting file using aes" {
89         openssl "enc -aes-128-cbc -out aes.enc -in enc.dat -k 1234567890"
90         file isfile aes.enc     
91 } 0 1
92
93 test "Ciphered text in CFB mode  differs from plain text" {
94         set ciphered [getFile cfb.enc binary]
95         string first $ciphered $plain
96 } 0 -1
97
98 test "Ciphered text in CNT mode  differs from plain text" {
99         set ciphered [getFile cnt.enc binary]
100         string first $ciphered $plain
101 } 0 -1
102
103 test "Ciphered text in CBC mode  differs from plain text" {
104         set ciphered [getFile cbc.enc binary]
105         string first $ciphered $plain
106 } 0 -1
107
108 test "Ciphered with aes text differs from plain text" {
109         set ciphered [getFile aes.enc binary]
110         string first $ciphered $plain
111 } 0 -1
112
113 test -createsfiles cfb.dec "Decrypting file, encrypted in CFB mode" {
114         openssl "enc -gost89 -d -in cfb.enc -out enc.dec -k 1234567890 -p"
115         getFile enc.dec 
116 } 0 $plain
117
118 test -createsfiles cnt.dec "Decrypting file, encrypted in CNT mode" {
119         openssl "enc -gost89-cnt -d -in cnt.enc -out cnt.dec -k 1234567890 -p"
120         getFile cnt.dec 
121 } 0 $plain
122
123 test -createsfiles cbc.dec "Decrypting file, encrypted in CBC mode" {
124         openssl "enc -gost89-cbc -d -in cbc.enc -out cbc.dec -k 1234567890 -p"
125         getFile cbc.dec 
126 } 0 $plain
127
128 test -createsfiles aes.dec "Decrypting file encrypted with aes" {
129         openssl "enc -aes-128-cbc -d -in aes.enc -out aes.dec -k 1234567890"
130         getFile aes.dec 
131 } 0 $plain
132
133
134 test -createsfiles {cfb2.enc} "Encrypting more than 1KB" {
135         if [info exists env(CRYPT_PARAMS)] {unset env(CRYPT_PARAMS)}
136         openssl "enc -gost89 -out cfb2.enc -in enc2.dat -k 1234567890 -p"
137         file isfile cfb2.enc
138 } 0 1
139
140 test -createsfiles {cfb2.dec} "Decrypting more than 1Kb" {
141         openssl "enc -d -gost89 -out cfb2.dec -in cfb2.enc -k 1234567890 -p"
142         getFile cfb2.dec
143 } 0 $plain2     
144
145 test -createsfiles {cnt2.enc} "Encrypting more than 1KB in CNT mode" {
146         if [info exists env(CRYPT_PARAMS)] {unset env(CRYPT_PARAMS)}
147         openssl "enc -gost89-cnt -out cnt2.enc -in enc2.dat -k 1234567890 -p"
148         file isfile cnt2.enc
149 } 0 1
150
151 test -createsfiles {cnt2.dec} "Decrypting more than 1Kb in CNT mode" {
152         openssl "enc -d -gost89-cnt -out cnt2.dec -in cnt2.enc -k 1234567890 -p"
153         getFile cnt2.dec
154 } 0 $plain2     
155
156 test -createsfiles {cnc2.enc} "Encrypting more than 1KB in CBC mode" {
157         if [info exists env(CRYPT_PARAMS)] {unset env(CRYPT_PARAMS)}
158         openssl "enc -gost89-cbc -out cbc2.enc -in enc2.dat -k 1234567890 -p"
159         file isfile cbc2.enc
160 } 0 1
161
162 test -createsfiles {cbc2.dec} "Decrypting more than 1Kb in CBC mode" {
163         openssl "enc -d -gost89-cbc -out cbc2.dec -in cbc2.enc -k 1234567890 -p"
164         getFile cbc2.dec
165 } 0 $plain2     
166
167 test -skip {![file exists enc2.dat]} -createsfiles {cfb3.enc} "Encrypting with paramset TC26 (symbolic)" {
168         set env(CRYPT_PARAMS) "id-tc26-gost-28147-param-Z"
169         openssl "enc -gost89 -out cfb3.enc -in enc2.dat -k 1234567890 -p"
170         file isfile cfb3.enc
171 } 0 1
172
173 test -skip {![file exists cfb3.enc]} -createsfiles {cfb3.dec1} "Decrypting with paramset TC26 (OID)" {
174         set env(CRYPT_PARAMS) "1.2.643.7.1.2.5.1.1"
175         openssl "enc -gost89 -d -in cfb3.enc -out cfb3.dec1 -k 1234567890 -p"
176         getFile cfb3.dec1       
177 } 0 $plain2
178
179 test -skip {![file exists enc2.dat]} -createsfiles {cbc3.enc} "Encrypting in CBC mode with paramset RIC 1 (symbolic)" {
180         set env(CRYPT_PARAMS) "id-Gost28147-89-CryptoPro-RIC-1-ParamSet"
181         openssl "enc -gost89-cbc -out cbc3.enc -in enc2.dat -k 1234567890 -p"
182         file isfile cbc3.enc
183 } 0 1
184
185 test -skip {![file exists cbc3.enc]} -createsfiles {cbc3.dec1} "Decrypting in CBC mode with paramset RIC 1 (OID)" {
186         set env(CRYPT_PARAMS) "1.2.643.2.2.31.7"
187         openssl "enc -gost89-cbc -d -in cbc3.enc -out cbc3.dec1 -k 1234567890 -p"
188         getFile cbc3.dec1       
189 } 0 $plain2
190 restore_env2 {CRYPT_PARAMS}
191
192 save_env2 {CRYPT_PARAMS OPENSSL_CONF}
193 test -skip {![file exists cfb3.enc]} -createsfiles {cfb3.dec2} "Decrypting with default params" {
194         if [info exists env(CRYPT_PARAMS)] {unset env(CRYPT_PARAMS)}
195         makeFile enc1.cnf [regsub -all "\n\\s*CRYPT_PARAMS\\s*=\[\^\n]*" [getConfig] ""]
196         set ::env(OPENSSL_CONF) [file join [pwd] enc1.cnf]
197         openssl "enc -gost89 -d -in cfb3.enc -out cfb3.dec2 -k 1234567890 -p"
198         getFile cfb3.dec2       
199 } 0 $plain2
200 restore_env2 {CRYPT_PARAMS OPENSSL_CONF}
201
202 save_env2 {CRYPT_PARAMS}
203 test -skip {![file exists cfb3.enc]} -createsfiles {cfb3.dec3} "Decrypting with  wrong explicitely set" {
204         set env(CRYPT_PARAMS) "id-Gost28147-89-CryptoPro-B-ParamSet"
205         openssl "enc -gost89 -d -in cfb3.enc -out cfb3.dec3 -k 1234567890 -p"
206         string equal [getFile cfb3.dec3] $plain2        
207 } 0 0
208
209 restore_env2 {CRYPT_PARAMS}
210
211 test -createsfiles magma1.enc "Encrypting etalon file (Magma-CTR)" {
212         openssl "enc -magma-ctr -K ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff -iv 1234567800000000 -in magma_plain.enc -out magma1.enc"
213         getFile magma1.enc 
214 } 0 $magma1
215
216 test -createsfiles macpkm1.enc "Encrypting etalon file (Magma-ACPKM)" {
217         openssl "enc -id-tc26-cipher-gostr3412-2015-magma-ctracpkm -K F797256845F36CF075603445CD322BACC3834032BC425E4D3C8495236F7B6CAF -iv 00000FFF00000000 -in magma_acpkm_plain.enc -out macpkm1.enc"
218         getFile macpkm1.enc 
219 } 0 $macpkm1
220
221
222 end_tests