Skip to content

Commit c8fab0f

Browse files
committed
Add zuc256 to gmssl and speed
1 parent 01c1bfa commit c8fab0f

7 files changed

Lines changed: 5174 additions & 5149 deletions

File tree

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,13 @@ $ gmssl sms4 -in README.md -out README.sms4
122122
$ gmssl sms4 -d -in README.sms4
123123
```
124124

125-
ZUC encryption and decryption:
125+
ZUC/ZUC256 encryption and decryption:
126126

127127
```sh
128128
$ gmssl zuc -in README.md -out README.zuc
129129
$ gmssl zuc -d -in README.zuc
130+
$ gmssl zuc256 -in README.md -out README.zuc256
131+
$ gmssl zuc256 -d -in README.zuc256
130132
```
131133

132134
SM2 private key generation:

apps/progs.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ static FUNCTION functions[] = {
304304
#ifndef OPENSSL_NO_ZUC
305305
{ FT_cipher, "zuc", enc_main, enc_options },
306306
#endif
307+
{ FT_cipher, "zuc256", enc_main, enc_options },
307308
#ifndef OPENSSL_NO_AES
308309
{ FT_cipher, "aes-128-cbc", enc_main, enc_options },
309310
#endif

apps/progs.pl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118
cast5 => "cast",
119119
);
120120
foreach my $cmd (
121-
"sms4", "sms4-cbc", "sms4-ecb", "sms4-ofb", "sms4-cfb", "zuc",
121+
"sms4", "sms4-cbc", "sms4-ecb", "sms4-ofb", "sms4-cfb", "zuc", "zuc256",
122122
"aes-128-cbc", "aes-128-ecb",
123123
"aes-192-cbc", "aes-192-ecb",
124124
"aes-256-cbc", "aes-256-ecb",

apps/speed.c

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@
148148
#define BUFSIZE (1024*16+1)
149149
#define MAX_MISALIGNMENT 63
150150

151-
#define ALGOR_NUM 33
151+
#define ALGOR_NUM 34
152152
#define SIZE_NUM 6
153153
#define PRIME_NUM 3
154154
#define RSA_NUM 7
@@ -297,7 +297,7 @@ static const char *names[ALGOR_NUM] = {
297297
"camellia-128 cbc", "camellia-192 cbc", "camellia-256 cbc",
298298
"evp", "sha256", "sha512", "whirlpool",
299299
"aes-128 ige", "aes-192 ige", "aes-256 ige", "ghash",
300-
"sm3", "sms4 cbc", "zuc"
300+
"sm3", "sms4 cbc", "zuc", "zuc256"
301301
};
302302

303303
static double results[ALGOR_NUM][SIZE_NUM];
@@ -483,6 +483,7 @@ OPTIONS speed_options[] = {
483483
#define D_SM3 30
484484
#define D_CBC_SMS4 31
485485
#define D_ZUC 32
486+
#define D_ZUC256 33
486487
static OPT_PAIR doit_choices[] = {
487488
#ifndef OPENSSL_NO_MD2
488489
{"md2", D_MD2},
@@ -561,6 +562,7 @@ static OPT_PAIR doit_choices[] = {
561562
#endif
562563
#ifndef OPENSSL_NO_ZUC
563564
{"zuc", D_ZUC},
565+
{"zuc256", D_ZUC256},
564566
#endif
565567
{NULL}
566568
};
@@ -1504,6 +1506,7 @@ int speed_main(int argc, char **argv)
15041506
#endif
15051507
#ifndef OPENSSL_NO_ZUC
15061508
ZUC_KEY zuc_ks;
1509+
ZUC256_KEY zuc256_ks;
15071510
#endif
15081511
#ifndef OPENSSL_NO_BF
15091512
BF_KEY bf_ks;
@@ -1998,6 +2001,7 @@ int speed_main(int argc, char **argv)
19982001
#endif
19992002
#ifndef OPENSSL_NO_ZUC
20002003
ZUC_set_key(&zuc_ks, key16, iv);
2004+
ZUC256_set_key(&zuc256_ks, key32, iv);
20012005
#endif
20022006
#ifndef OPENSSL_NO_RC4
20032007
RC4_set_key(&rc4_ks, 16, key16);
@@ -2060,6 +2064,7 @@ int speed_main(int argc, char **argv)
20602064
c[D_SM3][0] = count;
20612065
c[D_CBC_SMS4][0] = count;
20622066
c[D_ZUC][0] = count;
2067+
c[D_ZUC256][0] = count;
20632068

20642069
for (i = 1; i < SIZE_NUM; i++) {
20652070
long l0, l1;
@@ -2102,6 +2107,7 @@ int speed_main(int argc, char **argv)
21022107
c[D_IGE_256_AES][i] = c[D_IGE_256_AES][i - 1] * l0 / l1;
21032108
c[D_CBC_SMS4][i] = c[D_CBC_SMS4][i - 1] * l0 / l1;
21042109
c[D_ZUC][i] = c[D_ZUC][i - 1] * l0 / l1;
2110+
c[D_ZUC256][i] = c[D_ZUC256][i - 1] * l0 / l1;
21052111
}
21062112

21072113
# ifndef OPENSSL_NO_RSA
@@ -2621,6 +2627,22 @@ int speed_main(int argc, char **argv)
26212627
print_result(D_ZUC, testnum, count, d);
26222628
}
26232629
}
2630+
if (doit[D_ZUC256]) {
2631+
if (async_jobs > 0) {
2632+
BIO_printf(bio_err, "Async mode is not supported with %s\n",
2633+
names[D_ZUC256]);
2634+
doit[D_ZUC256] = 0;
2635+
}
2636+
for (testnum = 0; testnum < SIZE_NUM && async_init == 0; testnum++) {
2637+
print_message(names[D_ZUC256], c[D_ZUC256][testnum], lengths[testnum]);
2638+
Time_F(START);
2639+
for (count = 0, run = 1; COND(c[D_ZUC256][testnum]); count++)
2640+
ZUC256_generate_keystream(&zuc256_ks, lengths[testnum]/4,
2641+
(unsigned int *)loopargs[0].buf);
2642+
d = Time_F(STOP);
2643+
print_result(D_ZUC256, testnum, count, d);
2644+
}
2645+
}
26242646
#endif
26252647
#ifndef OPENSSL_NO_RC2
26262648
if (doit[D_CBC_RC2]) {

include/openssl/evp.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565

6666
# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */
6767
# define EVP_MAX_KEY_LENGTH 64
68-
# define EVP_MAX_IV_LENGTH 16
68+
# define EVP_MAX_IV_LENGTH 32/* longest is ZUC256 (23) */
6969
# define EVP_MAX_BLOCK_LENGTH 32
7070

7171
# define PKCS5_SALT_LEN 8

0 commit comments

Comments
 (0)