Browse code

linux-secure: Add seqiv and geniv into canister

- Added missing drbg_nopr_sha1 and rfc4106(gcm(aes)) self-test
- Manually fixed below patches due to cherry-pick failure
0002-FIPS-canister-creation.patch
0007-crypto-Remove-EXPORT_SYMBOL-EXPORT_SYMBOL_GPL-from-c.patch

Change-Id: Ia73744d1ac55322df2f06cae9d04ce100fb9d9a7
Signed-off-by: Keerthana K <keerthanak@vmware.com>
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/c/photon/+/22237
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/c/photon/+/22530
Reviewed-by: Keerthana K <keerthana.kalyanasundaram@broadcom.com>
Tested-by: Keerthana K <keerthana.kalyanasundaram@broadcom.com>

Vamsi Krishna Brahmajosyula authored on 2023/10/30 16:02:18
Showing 9 changed files
... ...
@@ -66,6 +66,7 @@
66 66
 #include <crypto/sha1_base.h>
67 67
 #include <crypto/sha512_base.h>
68 68
 #include <crypto/sha3.h>
69
+#include <crypto/internal/geniv.h>
69 70
 
70 71
 static __ro_after_init bool alg_request_report = false;
71 72
 
... ...
@@ -611,4 +612,7 @@ EXPORT_SYMBOL(sha256);
611 611
 EXPORT_SYMBOL(crypto_sha3_init);
612 612
 EXPORT_SYMBOL(crypto_sha3_update);
613 613
 EXPORT_SYMBOL(crypto_sha3_final);
614
+EXPORT_SYMBOL_GPL(aead_geniv_alloc);
615
+EXPORT_SYMBOL_GPL(aead_init_geniv);
616
+EXPORT_SYMBOL_GPL(aead_exit_geniv);
614 617
 /* End of Exports */
... ...
@@ -23,7 +23,7 @@ Signed-off-by: Keerthana K <keerthanak@vmware.com>
23 23
 Signed-off-by: Vamsi Krishna Brahmajosyula <vbrahmajosyula@vmware.com>
24 24
 ---
25 25
  arch/x86/crypto/aesni-intel_glue.c |  73 ++++++++++---------
26
- crypto/Makefile                    |  84 ++++++++++++++++++++++
26
+ crypto/Makefile                    |  86 +++++++++++++++++++++++
27 27
  crypto/algboss.c                   |   5 +-
28 28
  crypto/ccm.c                       |   7 +-
29 29
  crypto/cmac.c                      |   3 +-
... ...
@@ -36,10 +36,11 @@ Signed-off-by: Vamsi Krishna Brahmajosyula <vbrahmajosyula@vmware.com>
36 36
  crypto/gcm.c                       |  11 +--
37 37
  crypto/hmac.c                      |   3 +-
38 38
  crypto/rsa-pkcs1pad.c              |  13 ++--
39
+ crypto/sha3_generic.c              |   5 +-
39 40
  crypto/testmgr.c                   | 108 ++++++++++++++++-------------
40 41
  crypto/xts.c                       |   3 +-
41 42
  include/crypto/drbg.h              |   3 +-
42
- 17 files changed, 252 insertions(+), 130 deletions(-)
43
+ 18 files changed, 257 insertions(+), 132 deletions(-)
43 44
 
44 45
 diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c
45 46
 index a5b0cb3ef..10420b2aa 100644
... ...
@@ -321,10 +322,21 @@ index a5b0cb3ef..10420b2aa 100644
321 321
  		err = skcipher_walk_done(&walk, 0);
322 322
  	}
323 323
 diff --git a/crypto/Makefile b/crypto/Makefile
324
-index 1c6775c9a..7f7957e8f 100644
324
+index 19bf4080d..d3df694c0 100644
325 325
 --- a/crypto/Makefile
326 326
 +++ b/crypto/Makefile
327
-@@ -44,6 +44,7 @@ rsa_generic-y += rsaprivkey.asn1.o
327
+@@ -18,8 +18,10 @@ crypto_algapi-y := algapi.o scatterwalk.o $(crypto_algapi-y)
328
+ obj-$(CONFIG_CRYPTO_ALGAPI2) += crypto_algapi.o
329
+ 
330
+ obj-$(CONFIG_CRYPTO_AEAD2) += aead.o
331
++canister += geniv.o
332
+ 
333
+ obj-$(CONFIG_CRYPTO_SKCIPHER2) += skcipher.o
334
++canister += seqiv.o
335
+ obj-$(CONFIG_CRYPTO_ECHAINIV) += echainiv.o
336
+ 
337
+ crypto_hash-y += ahash.o
338
+@@ -42,6 +44,7 @@ rsa_generic-y += rsaprivkey.asn1.o
328 339
  rsa_generic-y += rsa.o
329 340
  rsa_generic-y += rsa_helper.o
330 341
  rsa_generic-y += rsa-pkcs1pad.o
... ...
@@ -332,7 +344,7 @@ index 1c6775c9a..7f7957e8f 100644
332 332
  
333 333
  $(obj)/sm2signature.asn1.o: $(obj)/sm2signature.asn1.c $(obj)/sm2signature.asn1.h
334 334
  $(obj)/sm2.o: $(obj)/sm2signature.asn1.h
335
-@@ -57,22 +58,30 @@ $(obj)/ecdsasignature.asn1.o: $(obj)/ecdsasignature.asn1.c $(obj)/ecdsasignature
335
+@@ -55,22 +58,30 @@ $(obj)/ecdsasignature.asn1.o: $(obj)/ecdsasignature.asn1.c $(obj)/ecdsasignature
336 336
  $(obj)/ecdsa.o: $(obj)/ecdsasignature.asn1.h
337 337
  ecdsa_generic-y += ecdsa.o
338 338
  ecdsa_generic-y += ecdsasignature.asn1.o
... ...
@@ -363,7 +375,7 @@ index 1c6775c9a..7f7957e8f 100644
363 363
  obj-$(CONFIG_CRYPTO_SM3) += sm3.o
364 364
  obj-$(CONFIG_CRYPTO_SM3_GENERIC) += sm3_generic.o
365 365
  obj-$(CONFIG_CRYPTO_STREEBOG) += streebog_generic.o
366
-@@ -81,13 +90,21 @@ CFLAGS_wp512.o := $(call cc-option,-fno-schedule-insns)  # https://gcc.gnu.org/b
366
+@@ -79,13 +90,21 @@ CFLAGS_wp512.o := $(call cc-option,-fno-schedule-insns)  # https://gcc.gnu.org/b
367 367
  obj-$(CONFIG_CRYPTO_BLAKE2B) += blake2b_generic.o
368 368
  CFLAGS_blake2b_generic.o := -Wframe-larger-than=4096 #  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105930
369 369
  obj-$(CONFIG_CRYPTO_GF128MUL) += gf128mul.o
... ...
@@ -385,7 +397,7 @@ index 1c6775c9a..7f7957e8f 100644
385 385
  obj-$(CONFIG_CRYPTO_CHACHA20POLY1305) += chacha20poly1305.o
386 386
  obj-$(CONFIG_CRYPTO_AEGIS128) += aegis128.o
387 387
  aegis128-y := aegis128-core.o
388
-@@ -122,6 +139,7 @@ obj-$(CONFIG_CRYPTO_TWOFISH) += twofish_generic.o
388
+@@ -120,6 +139,7 @@ obj-$(CONFIG_CRYPTO_TWOFISH) += twofish_generic.o
389 389
  obj-$(CONFIG_CRYPTO_TWOFISH_COMMON) += twofish_common.o
390 390
  obj-$(CONFIG_CRYPTO_SERPENT) += serpent_generic.o
391 391
  CFLAGS_serpent_generic.o := $(call cc-option,-fsched-pressure)  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79149
... ...
@@ -393,7 +405,7 @@ index 1c6775c9a..7f7957e8f 100644
393 393
  CFLAGS_aes_generic.o := $(call cc-option,-fno-code-hoisting) # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83356
394 394
  obj-$(CONFIG_CRYPTO_SM4) += sm4.o
395 395
  obj-$(CONFIG_CRYPTO_SM4_GENERIC) += sm4_generic.o
396
-@@ -165,11 +183,14 @@ obj-$(CONFIG_CRYPTO_USER_API_RNG) += algif_rng.o
396
+@@ -163,11 +183,14 @@ obj-$(CONFIG_CRYPTO_USER_API_RNG) += algif_rng.o
397 397
  obj-$(CONFIG_CRYPTO_USER_API_AEAD) += algif_aead.o
398 398
  obj-$(CONFIG_CRYPTO_ZSTD) += zstd.o
399 399
  obj-$(CONFIG_CRYPTO_OFB) += ofb.o
... ...
@@ -408,7 +420,7 @@ index 1c6775c9a..7f7957e8f 100644
408 408
  
409 409
  $(obj)/ecrdsa_params.asn1.o: $(obj)/ecrdsa_params.asn1.c $(obj)/ecrdsa_params.asn1.h
410 410
  $(obj)/ecrdsa_pub_key.asn1.o: $(obj)/ecrdsa_pub_key.asn1.c $(obj)/ecrdsa_pub_key.asn1.h
411
-@@ -193,6 +214,69 @@ obj-$(CONFIG_CRYPTO_SIMD) += crypto_simd.o
411
+@@ -191,6 +214,69 @@ obj-$(CONFIG_CRYPTO_SIMD) += crypto_simd.o
412 412
  # Key derivation function
413 413
  #
414 414
  obj-$(CONFIG_CRYPTO_KDF800108_CTR) += kdf_sp800108.o
... ...
@@ -1005,9 +1017,39 @@ index 1cf267bc6..e3a77b398 100644
1005 1005
 +	inst = fcw_kzalloc(sizeof(*inst) + sizeof(*ctx), GFP_KERNEL);
1006 1006
  	if (!inst)
1007 1007
  		return -ENOMEM;
1008
+
1009
+diff --git a/crypto/sha3_generic.c b/crypto/sha3_generic.c
1010
+index 3e4069935..7d107460b 100644
1011
+--- a/crypto/sha3_generic.c
1012
+@@ -14,6 +14,7 @@
1013
+ #include <linux/types.h>
1014
+ #include <crypto/sha3.h>
1015
+ #include <asm/unaligned.h>
1016
++#include "fips_canister_wrapper.h"
1008 1017
  
1018
+ /*
1019
+  * On some 32-bit architectures (h8300), GCC ends up using
1020
+@@ -185,7 +186,7 @@ int crypto_sha3_update(struct shash_desc *desc, const u8 *data,
1021
+ 	if ((sctx->partial + len) > (sctx->rsiz - 1)) {
1022
+ 		if (sctx->partial) {
1023
+ 			done = -sctx->partial;
1024
+-			memcpy(sctx->buf + sctx->partial, data,
1025
++			fcw_memcpy(sctx->buf + sctx->partial, data,
1026
+ 			       done + sctx->rsiz);
1027
+ 			src = sctx->buf;
1028
+ 		}
1029
+@@ -203,7 +204,7 @@ int crypto_sha3_update(struct shash_desc *desc, const u8 *data,
1030
+ 
1031
+ 		sctx->partial = 0;
1032
+ 	}
1033
+-	memcpy(sctx->buf + sctx->partial, src, len - done);
1034
++	fcw_memcpy(sctx->buf + sctx->partial, src, len - done);
1035
+ 	sctx->partial += (len - done);
1036
+ 
1037
+ 	return 0;
1009 1038
 diff --git a/crypto/testmgr.c b/crypto/testmgr.c
1010
-index 5e4be63ba..5fb27ae33 100644
1039
+index af31ff549..322f40897 100644
1011 1040
 --- a/crypto/testmgr.c
1012 1041
 +++ b/crypto/testmgr.c
1013 1042
 @@ -37,6 +37,7 @@
... ...
@@ -1339,7 +1381,7 @@ index 5e4be63ba..5fb27ae33 100644
1339 1339
  	if (!output_buf) {
1340 1340
  		err = -ENOMEM;
1341 1341
  		goto free_req;
1342
-@@ -4083,13 +4084,13 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
1342
+@@ -4085,13 +4086,13 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
1343 1343
  	if (testmgr_alloc_buf(xbuf))
1344 1344
  		return err;
1345 1345
  
... ...
@@ -1355,7 +1397,7 @@ index 5e4be63ba..5fb27ae33 100644
1355 1355
  		      GFP_KERNEL);
1356 1356
  	if (!key)
1357 1357
  		goto free_req;
1358
-@@ -4112,7 +4113,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
1358
+@@ -4114,7 +4115,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
1359 1359
  	 */
1360 1360
  	err = -ENOMEM;
1361 1361
  	out_len_max = crypto_akcipher_maxsize(tfm);
... ...
@@ -1364,7 +1406,7 @@ index 5e4be63ba..5fb27ae33 100644
1364 1364
  	if (!outbuf_enc)
1365 1365
  		goto free_key;
1366 1366
  
1367
-@@ -4189,7 +4190,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
1367
+@@ -4191,7 +4192,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
1368 1368
  		err = 0;
1369 1369
  		goto free_all;
1370 1370
  	}
... ...
@@ -1373,7 +1415,7 @@ index 5e4be63ba..5fb27ae33 100644
1373 1373
  	if (!outbuf_dec) {
1374 1374
  		err = -ENOMEM;
1375 1375
  		goto free_all;
1376
-@@ -5885,13 +5886,22 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
1376
+@@ -5906,13 +5907,22 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
1377 1377
  	int i;
1378 1378
  	int j;
1379 1379
  	int rc;
... ...
@@ -1398,7 +1440,7 @@ index 5e4be63ba..5fb27ae33 100644
1398 1398
  	if ((type & CRYPTO_ALG_TYPE_MASK) == CRYPTO_ALG_TYPE_CIPHER) {
1399 1399
  		char nalg[CRYPTO_MAX_ALG_NAME];
1400 1400
 diff --git a/crypto/xts.c b/crypto/xts.c
1401
-index de6cbcf69..f548992c2 100644
1401
+index b05020657..7c926f7bb 100644
1402 1402
 --- a/crypto/xts.c
1403 1403
 +++ b/crypto/xts.c
1404 1404
 @@ -20,6 +20,7 @@
... ...
@@ -23,12 +23,12 @@ Signed-off-by: Srish Srinivasan <ssrish@vmware.com>
23 23
  crypto/gcm.c                       |  26 +++----
24 24
  crypto/hmac.c                      |   4 +-
25 25
  crypto/rsa-pkcs1pad.c              |   6 +-
26
+ crypto/seqiv.c                     |   3 +-
26 27
  crypto/sha1_generic.c              |   5 +-
27 28
  crypto/sha512_generic.c            |   5 +-
28 29
  crypto/testmgr.c                   | 110 ++++++++++++++---------------
29
- crypto/xts.c                       |   2 +-
30 30
  lib/crypto/sha256.c                |  10 +++
31
- 22 files changed, 176 insertions(+), 161 deletions(-)
31
+ 22 files changed, 177 insertions(+), 161 deletions(-)
32 32
 
33 33
 diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c
34 34
 index 0628c2bca..6a4378bac 100644
... ...
@@ -867,7 +867,7 @@ index 7c289df3b..b3e099505 100644
867 867
  	for (i = 0; i < bs; i++) {
868 868
  		ipad[i] ^= HMAC_IPAD_VALUE;
869 869
 diff --git a/crypto/rsa-pkcs1pad.c b/crypto/rsa-pkcs1pad.c
870
-index 1c9d29552..ab144392a 100644
870
+index e3a77b398..f8983636f 100644
871 871
 --- a/crypto/rsa-pkcs1pad.c
872 872
 +++ b/crypto/rsa-pkcs1pad.c
873 873
 @@ -166,7 +166,7 @@ static void pkcs1pad_sg_set_buf(struct scatterlist *sg, void *buf, size_t len,
... ...
@@ -897,6 +897,27 @@ index 1c9d29552..ab144392a 100644
897 897
  	    !ctx->key_size || sig_size != ctx->key_size)
898 898
  		return -EINVAL;
899 899
  
900
+diff --git a/crypto/seqiv.c b/crypto/seqiv.c
901
+index b1bcfe537..c593c2947 100644
902
+--- a/crypto/seqiv.c
903
+@@ -17,6 +17,7 @@
904
+ #include <linux/module.h>
905
+ #include <linux/slab.h>
906
+ #include <linux/string.h>
907
++#include "fips_canister_wrapper.h"
908
+ 
909
+ static void seqiv_aead_encrypt_complete2(struct aead_request *req, int err)
910
+ {
911
+@@ -30,7 +31,7 @@ static void seqiv_aead_encrypt_complete2(struct aead_request *req, int err)
912
+ 		goto out;
913
+ 
914
+ 	geniv = crypto_aead_reqtfm(req);
915
+-	memcpy(req->iv, subreq->iv, crypto_aead_ivsize(geniv));
916
++	fcw_memcpy(req->iv, subreq->iv, crypto_aead_ivsize(geniv));
917
+ 
918
+ out:
919
+ 	kfree_sensitive(subreq->iv);
900 920
 diff --git a/crypto/sha1_generic.c b/crypto/sha1_generic.c
901 921
 index 325b57fe2..193345133 100644
902 922
 --- a/crypto/sha1_generic.c
... ...
@@ -958,7 +979,7 @@ index be70e76d6..07e27910c 100644
958 958
  }
959 959
  EXPORT_SYMBOL(crypto_sha512_finup);
960 960
 diff --git a/crypto/testmgr.c b/crypto/testmgr.c
961
-index 783c006d0..7899ab3cd 100644
961
+index 322f40897..22f4ec725 100644
962 962
 --- a/crypto/testmgr.c
963 963
 +++ b/crypto/testmgr.c
964 964
 @@ -587,7 +587,7 @@ static int build_test_sglist(struct test_sglist *tsgl,
... ...
@@ -1191,7 +1212,7 @@ index 783c006d0..7899ab3cd 100644
1191 1191
  		       template[i].dt, template[i].dtlen);
1192 1192
  
1193 1193
  		err = crypto_rng_reset(tfm, seed, seedsize);
1194
-@@ -3929,14 +3929,14 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
1194
+@@ -3930,14 +3930,14 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
1195 1195
  
1196 1196
  	if (vec->genkey) {
1197 1197
  		/* Save party A's public key */
... ...
@@ -1208,7 +1229,7 @@ index 783c006d0..7899ab3cd 100644
1208 1208
  			   vec->expected_a_public_size)) {
1209 1209
  			pr_err("alg: %s: Party A: generate public key test failed. Invalid output\n",
1210 1210
  			       alg);
1211
-@@ -3967,7 +3967,7 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
1211
+@@ -3969,7 +3969,7 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
1212 1212
  
1213 1213
  	if (vec->genkey) {
1214 1214
  		/* Save the shared secret obtained by party A */
... ...
@@ -1217,7 +1238,7 @@ index 783c006d0..7899ab3cd 100644
1217 1217
  		if (!a_ss) {
1218 1218
  			err = -ENOMEM;
1219 1219
  			goto free_all;
1220
-@@ -4005,7 +4005,7 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
1220
+@@ -4007,7 +4007,7 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
1221 1221
  	 * verify shared secret from which the user will derive
1222 1222
  	 * secret key by executing whatever hash it has chosen
1223 1223
  	 */
... ...
@@ -1226,7 +1247,7 @@ index 783c006d0..7899ab3cd 100644
1226 1226
  		   vec->expected_ss_size)) {
1227 1227
  		pr_err("alg: %s: compute shared secret test failed. Invalid output\n",
1228 1228
  		       alg);
1229
-@@ -4061,7 +4061,7 @@ static int alg_test_kpp(const struct alg_test_desc *desc, const char *driver,
1229
+@@ -4063,7 +4063,7 @@ static int alg_test_kpp(const struct alg_test_desc *desc, const char *driver,
1230 1230
  
1231 1231
  static u8 *test_pack_u32(u8 *dst, u32 val)
1232 1232
  {
... ...
@@ -1235,7 +1256,7 @@ index 783c006d0..7899ab3cd 100644
1235 1235
  	return dst + sizeof(val);
1236 1236
  }
1237 1237
  
1238
-@@ -4094,11 +4094,11 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
1238
+@@ -4096,11 +4096,11 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
1239 1239
  		      GFP_KERNEL);
1240 1240
  	if (!key)
1241 1241
  		goto free_req;
... ...
@@ -1249,7 +1270,7 @@ index 783c006d0..7899ab3cd 100644
1249 1249
  
1250 1250
  	if (vecs->public_key_vec)
1251 1251
  		err = crypto_akcipher_set_pub_key(tfm, key, vecs->key_len);
1252
-@@ -4135,18 +4135,18 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
1252
+@@ -4137,18 +4137,18 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
1253 1253
  	}
1254 1254
  
1255 1255
  	err = -E2BIG;
... ...
@@ -1275,7 +1296,7 @@ index 783c006d0..7899ab3cd 100644
1275 1275
  		akcipher_request_set_crypt(req, src_tab, NULL, m_size, c_size);
1276 1276
  	} else {
1277 1277
  		sg_init_one(&dst, outbuf_enc, out_len_max);
1278
-@@ -4203,9 +4203,9 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
1278
+@@ -4205,9 +4205,9 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
1279 1279
  
1280 1280
  	err = -E2BIG;
1281 1281
  	op = vecs->siggen_sigver_test ? "sign" : "decrypt";
... ...
@@ -1287,7 +1308,7 @@ index 783c006d0..7899ab3cd 100644
1287 1287
  
1288 1288
  	sg_init_one(&src, xbuf[0], c_size);
1289 1289
  	sg_init_one(&dst, outbuf_dec, out_len_max);
1290
-@@ -5829,13 +5829,13 @@ static void alg_check_test_descs_order(void)
1290
+@@ -5834,13 +5834,13 @@ static void alg_check_test_descs_order(void)
1291 1291
  		int diff = strcmp(alg_test_descs[i - 1].alg,
1292 1292
  				  alg_test_descs[i].alg);
1293 1293
  
... ...
@@ -1303,7 +1324,7 @@ index 783c006d0..7899ab3cd 100644
1303 1303
  			pr_warn("testmgr: duplicate alg_test_descs entry: '%s'\n",
1304 1304
  				alg_test_descs[i].alg);
1305 1305
  		}
1306
-@@ -5847,12 +5847,12 @@ static void alg_check_testvec_configs(void)
1306
+@@ -5852,12 +5852,12 @@ static void alg_check_testvec_configs(void)
1307 1307
  	int i;
1308 1308
  
1309 1309
  	for (i = 0; i < ARRAY_SIZE(default_cipher_testvec_configs); i++)
... ...
@@ -1320,7 +1341,7 @@ index 783c006d0..7899ab3cd 100644
1320 1320
  }
1321 1321
  
1322 1322
  static void testmgr_onetime_init(void)
1323
-@@ -5968,7 +5968,7 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
1323
+@@ -5973,7 +5973,7 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
1324 1324
  		}
1325 1325
  		pr_warn("alg: self-tests for %s using %s failed (rc=%d)",
1326 1326
  			alg, driver, rc);
... ...
@@ -9,16 +9,17 @@ Signed-off-by: Keerthana K <keerthanak@vmware.com
9 9
  crypto/aes_generic.c    |  5 -----
10 10
  crypto/ecc.c            | 20 --------------------
11 11
  crypto/ecdh_helper.c    |  5 +----
12
+ crypto/geniv.c          |  3 ---
12 13
  crypto/rsa_helper.c     |  2 --
13 14
  crypto/sha1_generic.c   |  3 ---
14 15
  crypto/sha256_generic.c |  4 ----
15
- crypto/sha3_generic.c   |  8 +++-----
16
+ crypto/sha3_generic.c   |  3 ---
16 17
  crypto/sha512_generic.c |  4 ----
17 18
  crypto/testmgr.c        |  2 --
18 19
  lib/crypto/aes.c        |  6 ------
19 20
  lib/crypto/sha1.c       |  2 --
20 21
  lib/crypto/sha256.c     |  5 -----
21
- 12 files changed, 4 insertions(+), 62 deletions(-)
22
+ 13 files changed, 1 insertion(+), 63 deletions(-)
22 23
 
23 24
 diff --git a/crypto/aes_generic.c b/crypto/aes_generic.c
24 25
 index 27ab27931..f73022bed 100644
... ...
@@ -234,6 +235,34 @@ index 5dac6b348..78cd5252f 100644
234 234
 -EXPORT_SYMBOL_GPL(crypto_ecdh_decode_key);
235 235
 +}
236 236
 \ No newline at end of file
237
+diff --git a/crypto/geniv.c b/crypto/geniv.c
238
+index bee4621b4..2ac9bc761 100644
239
+--- a/crypto/geniv.c
240
+@@ -104,7 +104,6 @@ struct aead_instance *aead_geniv_alloc(struct crypto_template *tmpl,
241
+ 	inst = ERR_PTR(err);
242
+ 	goto out;
243
+ }
244
+-EXPORT_SYMBOL_GPL(aead_geniv_alloc);
245
+ 
246
+ int aead_init_geniv(struct crypto_aead *aead)
247
+ {
248
+@@ -148,7 +147,6 @@ int aead_init_geniv(struct crypto_aead *aead)
249
+ 	crypto_put_default_null_skcipher();
250
+ 	goto out;
251
+ }
252
+-EXPORT_SYMBOL_GPL(aead_init_geniv);
253
+ 
254
+ void aead_exit_geniv(struct crypto_aead *tfm)
255
+ {
256
+@@ -157,7 +155,6 @@ void aead_exit_geniv(struct crypto_aead *tfm)
257
+ 	crypto_free_aead(ctx->child);
258
+ 	crypto_put_default_null_skcipher();
259
+ }
260
+-EXPORT_SYMBOL_GPL(aead_exit_geniv);
261
+ 
262
+ MODULE_LICENSE("GPL");
263
+ MODULE_DESCRIPTION("Shared IV generator code");
237 264
 diff --git a/crypto/rsa_helper.c b/crypto/rsa_helper.c
238 265
 index 94266f290..9deb71e13 100644
239 266
 --- a/crypto/rsa_helper.c
... ...
@@ -319,15 +348,7 @@ diff --git a/crypto/sha3_generic.c b/crypto/sha3_generic.c
319 319
 index 3e4069935..7d107460b 100644
320 320
 --- a/crypto/sha3_generic.c
321 321
 +++ b/crypto/sha3_generic.c
322
-@@ -14,6 +14,7 @@
323
- #include <linux/types.h>
324
- #include <crypto/sha3.h>
325
- #include <asm/unaligned.h>
326
-+#include "fips_canister_wrapper.h"
327
- 
328
- /*
329
-  * On some 32-bit architectures (h8300), GCC ends up using
330
-@@ -170,7 +171,6 @@ int crypto_sha3_init(struct shash_desc *desc)
322
+@@ -171,7 +171,6 @@ int crypto_sha3_init(struct shash_desc *desc)
331 323
  	memset(sctx->st, 0, sizeof(sctx->st));
332 324
  	return 0;
333 325
  }
... ...
@@ -335,22 +356,7 @@ index 3e4069935..7d107460b 100644
335 335
  
336 336
  int crypto_sha3_update(struct shash_desc *desc, const u8 *data,
337 337
  		       unsigned int len)
338
-@@ -185,7 +185,7 @@ int crypto_sha3_update(struct shash_desc *desc, const u8 *data,
339
- 	if ((sctx->partial + len) > (sctx->rsiz - 1)) {
340
- 		if (sctx->partial) {
341
- 			done = -sctx->partial;
342
--			memcpy(sctx->buf + sctx->partial, data,
343
-+			fcw_memcpy(sctx->buf + sctx->partial, data,
344
- 			       done + sctx->rsiz);
345
- 			src = sctx->buf;
346
- 		}
347
-@@ -203,12 +203,11 @@ int crypto_sha3_update(struct shash_desc *desc, const u8 *data,
348
- 
349
- 		sctx->partial = 0;
350
- 	}
351
--	memcpy(sctx->buf + sctx->partial, src, len - done);
352
-+	fcw_memcpy(sctx->buf + sctx->partial, src, len - done);
353
- 	sctx->partial += (len - done);
338
+@@ -209,7 +208,6 @@ int crypto_sha3_update(struct shash_desc *desc, const u8 *data,
354 339
  
355 340
  	return 0;
356 341
  }
... ...
@@ -358,7 +364,7 @@ index 3e4069935..7d107460b 100644
358 358
  
359 359
  int crypto_sha3_final(struct shash_desc *desc, u8 *out)
360 360
  {
361
-@@ -235,7 +234,6 @@ int crypto_sha3_final(struct shash_desc *desc, u8 *out)
361
+@@ -236,7 +234,6 @@ int crypto_sha3_final(struct shash_desc *desc, u8 *out)
362 362
  	memset(sctx, 0, sizeof(*sctx));
363 363
  	return 0;
364 364
  }
... ...
@@ -403,10 +409,10 @@ index 07e27910c..32ff5a0b1 100644
403 403
  static struct shash_alg sha512_algs[2] = { {
404 404
  	.digestsize	=	SHA512_DIGEST_SIZE,
405 405
 diff --git a/crypto/testmgr.c b/crypto/testmgr.c
406
-index 7899ab3cd..94279afed 100644
406
+index 22f4ec725..91325e2a8 100644
407 407
 --- a/crypto/testmgr.c
408 408
 +++ b/crypto/testmgr.c
409
-@@ -5976,5 +5976,3 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
409
+@@ -5996,5 +5996,3 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
410 410
  }
411 411
  
412 412
  #endif /* CONFIG_CRYPTO_MANAGER_DISABLE_TESTS */
... ...
@@ -38,6 +38,7 @@ Signed-off-by: Keerthana K <keerthanak@vmware.com>
38 38
  crypto/ecdh.c                      |  10 +-
39 39
  crypto/ecdsa.c                     |  16 +-
40 40
  crypto/gcm.c                       |  15 +-
41
+ crypto/geniv.c                     |   2 -
41 42
  crypto/hmac.c                      |  11 +-
42 43
  crypto/internal.h                  |   7 +-
43 44
  crypto/rsa-pkcs1pad.c              |   1 -
... ...
@@ -47,7 +48,7 @@ Signed-off-by: Keerthana K <keerthanak@vmware.com>
47 47
  crypto/sha256_generic.c            |  15 +-
48 48
  crypto/sha3_generic.c              |  19 +-
49 49
  crypto/sha512_generic.c            |  15 +-
50
- crypto/testmgr.c                   | 648 ++++++++---------------------
50
+ crypto/testmgr.c                   | 652 ++++++++---------------------
51 51
  crypto/testmgr.h                   |  23 +-
52 52
  crypto/xts.c                       |  13 +-
53 53
  include/crypto/algapi.h            |   6 +
... ...
@@ -60,7 +61,7 @@ Signed-off-by: Keerthana K <keerthanak@vmware.com>
60 60
  include/linux/crypto.h             |   8 +
61 61
  include/linux/rtattr.h             |   6 +
62 62
  include/linux/swait.h              |   4 +
63
- 38 files changed, 370 insertions(+), 824 deletions(-)
63
+ 39 files changed, 372 insertions(+), 828 deletions(-)
64 64
  create mode 100644 include/linux/rtattr.h
65 65
 
66 66
 diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c
... ...
@@ -530,7 +531,7 @@ index bd11953dc..466f5e261 100644
530 530
 -MODULE_ALIAS_CRYPTO("cmac");
531 531
 -MODULE_IMPORT_NS(CRYPTO_INTERNAL);
532 532
 diff --git a/crypto/crypto_self_test.c b/crypto/crypto_self_test.c
533
-index aad09e6a6..79c07c7d6 100644
533
+index eb4ed8bdb..19ecf60a5 100644
534 534
 --- a/crypto/crypto_self_test.c
535 535
 +++ b/crypto/crypto_self_test.c
536 536
 @@ -5,12 +5,11 @@
... ...
@@ -547,7 +548,7 @@ index aad09e6a6..79c07c7d6 100644
547 547
  
548 548
  extern int alg_test(const char *driver, const char *alg, u32 type, u32 mask);
549 549
  
550
-@@ -65,7 +64,7 @@ extern int FIPS_NOT_ALLOWED(char *);
550
+@@ -97,7 +96,7 @@ extern int FIPS_NOT_ALLOWED(char *);
551 551
  #define FIPS_NOT_ALLOWED(algname) 0
552 552
  #endif
553 553
  
... ...
@@ -556,7 +557,7 @@ index aad09e6a6..79c07c7d6 100644
556 556
  {
557 557
  	int err = -ENOMEM;
558 558
  	int i = 0;
559
-@@ -78,7 +77,7 @@ static int __init crypto_self_test_init(void)
559
+@@ -110,7 +109,7 @@ static int __init crypto_self_test_init(void)
560 560
  			continue;
561 561
  		err = alg_test(alg_self_test_tbl[i].driver_name, alg_self_test_tbl[i].alg_name, 0, 0);
562 562
  		if (err) {
... ...
@@ -565,7 +566,7 @@ index aad09e6a6..79c07c7d6 100644
565 565
  					 alg_self_test_tbl[i].driver_name,
566 566
  					 alg_self_test_tbl[i].alg_name);
567 567
  			goto error;
568
-@@ -88,4 +87,3 @@ static int __init crypto_self_test_init(void)
568
+@@ -120,4 +119,3 @@ static int __init crypto_self_test_init(void)
569 569
  error:
570 570
  	return err;
571 571
  }
... ...
@@ -1241,6 +1242,16 @@ index 887033a38..89ea69061 100644
1241 1241
 -MODULE_ALIAS_CRYPTO("rfc4106");
1242 1242
 -MODULE_ALIAS_CRYPTO("rfc4543");
1243 1243
 -MODULE_ALIAS_CRYPTO("gcm");
1244
+diff --git a/crypto/geniv.c b/crypto/geniv.c
1245
+index 2ac9bc761..8064aa6b4 100644
1246
+--- a/crypto/geniv.c
1247
+@@ -156,5 +156,3 @@ void aead_exit_geniv(struct crypto_aead *tfm)
1248
+ 	crypto_put_default_null_skcipher();
1249
+ }
1250
+ 
1251
+-MODULE_LICENSE("GPL");
1252
+-MODULE_DESCRIPTION("Shared IV generator code");
1244 1253
 diff --git a/crypto/hmac.c b/crypto/hmac.c
1245 1254
 index b3e099505..e9116ae4c 100644
1246 1255
 --- a/crypto/hmac.c
... ...
@@ -1307,7 +1318,7 @@ index c08385571..edee7e0d5 100644
1307 1307
  
1308 1308
  static inline int crypto_is_larval(struct crypto_alg *alg)
1309 1309
 diff --git a/crypto/rsa-pkcs1pad.c b/crypto/rsa-pkcs1pad.c
1310
-index cb54c382d..5464d13ad 100644
1310
+index 82e5eb5e2..dbeeb60a7 100644
1311 1311
 --- a/crypto/rsa-pkcs1pad.c
1312 1312
 +++ b/crypto/rsa-pkcs1pad.c
1313 1313
 @@ -12,7 +12,6 @@
... ...
@@ -1531,7 +1542,7 @@ index 32ff5a0b1..845c40f7e 100644
1531 1531
 -MODULE_ALIAS_CRYPTO("sha512");
1532 1532
 -MODULE_ALIAS_CRYPTO("sha512-generic");
1533 1533
 diff --git a/crypto/testmgr.c b/crypto/testmgr.c
1534
-index 94279afed..c2e52e4c3 100644
1534
+index 91325e2a8..91afcb502 100644
1535 1535
 --- a/crypto/testmgr.c
1536 1536
 +++ b/crypto/testmgr.c
1537 1537
 @@ -21,7 +21,6 @@
... ...
@@ -2975,7 +2986,7 @@ index 94279afed..c2e52e4c3 100644
2975 2975
  	}
2976 2976
  
2977 2977
  	/* Calculate shared secret key by using counter part (b) public key. */
2978
-@@ -3960,7 +3660,7 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
2978
+@@ -3962,7 +3662,7 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
2979 2979
  				 crypto_req_done, &wait);
2980 2980
  	err = crypto_wait_req(crypto_kpp_compute_shared_secret(req), &wait);
2981 2981
  	if (err) {
... ...
@@ -2984,7 +2995,7 @@ index 94279afed..c2e52e4c3 100644
2984 2984
  		       alg, err);
2985 2985
  		goto free_all;
2986 2986
  	}
2987
-@@ -3991,7 +3691,7 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
2987
+@@ -3993,7 +3693,7 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
2988 2988
  		err = crypto_wait_req(crypto_kpp_compute_shared_secret(req),
2989 2989
  				      &wait);
2990 2990
  		if (err) {
... ...
@@ -2993,7 +3004,7 @@ index 94279afed..c2e52e4c3 100644
2993 2993
  			       alg, err);
2994 2994
  			goto free_all;
2995 2995
  		}
2996
-@@ -4007,7 +3707,7 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
2996
+@@ -4009,7 +3709,7 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
2997 2997
  	 */
2998 2998
  	if (memcmp(shared_secret, fcw_sg_virt(req->dst),
2999 2999
  		   vec->expected_ss_size)) {
... ...
@@ -3002,7 +3013,7 @@ index 94279afed..c2e52e4c3 100644
3002 3002
  		       alg);
3003 3003
  		err = -EINVAL;
3004 3004
  	}
3005
-@@ -4031,7 +3731,7 @@ static int test_kpp(struct crypto_kpp *tfm, const char *alg,
3005
+@@ -4033,7 +3733,7 @@ static int test_kpp(struct crypto_kpp *tfm, const char *alg,
3006 3006
  	for (i = 0; i < tcount; i++) {
3007 3007
  		ret = do_test_kpp(tfm, vecs++, alg);
3008 3008
  		if (ret) {
... ...
@@ -3011,7 +3022,7 @@ index 94279afed..c2e52e4c3 100644
3011 3011
  			       alg, i + 1, ret);
3012 3012
  			return ret;
3013 3013
  		}
3014
-@@ -4047,7 +3747,7 @@ static int alg_test_kpp(const struct alg_test_desc *desc, const char *driver,
3014
+@@ -4049,7 +3749,7 @@ static int alg_test_kpp(const struct alg_test_desc *desc, const char *driver,
3015 3015
  
3016 3016
  	tfm = crypto_alloc_kpp(driver, type, mask);
3017 3017
  	if (IS_ERR(tfm)) {
... ...
@@ -3020,7 +3031,7 @@ index 94279afed..c2e52e4c3 100644
3020 3020
  		       driver, PTR_ERR(tfm));
3021 3021
  		return PTR_ERR(tfm);
3022 3022
  	}
3023
-@@ -4162,19 +3862,19 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
3023
+@@ -4164,19 +3864,19 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
3024 3024
  			      /* Run asymmetric encrypt */
3025 3025
  			      crypto_akcipher_encrypt(req), &wait);
3026 3026
  	if (err) {
... ...
@@ -3043,7 +3054,7 @@ index 94279afed..c2e52e4c3 100644
3043 3043
  			       op);
3044 3044
  			hexdump(outbuf_enc, c_size);
3045 3045
  			err = -EINVAL;
3046
-@@ -4218,12 +3918,12 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
3046
+@@ -4220,12 +3920,12 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
3047 3047
  			      /* Run asymmetric decrypt */
3048 3048
  			      crypto_akcipher_decrypt(req), &wait);
3049 3049
  	if (err) {
... ...
@@ -3058,7 +3069,7 @@ index 94279afed..c2e52e4c3 100644
3058 3058
  		       op, out_len);
3059 3059
  		err = -EINVAL;
3060 3060
  		goto free_all;
3061
-@@ -4231,7 +3931,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
3061
+@@ -4233,7 +3933,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
3062 3062
  	/* verify that decrypted message is equal to the original msg */
3063 3063
  	if (memchr_inv(outbuf_dec, 0, out_len - m_size) ||
3064 3064
  	    memcmp(m, outbuf_dec + out_len - m_size, m_size)) {
... ...
@@ -3067,7 +3078,7 @@ index 94279afed..c2e52e4c3 100644
3067 3067
  		hexdump(outbuf_dec, out_len);
3068 3068
  		err = -EINVAL;
3069 3069
  	}
3070
-@@ -4260,7 +3960,7 @@ static int test_akcipher(struct crypto_akcipher *tfm, const char *alg,
3070
+@@ -4262,7 +3962,7 @@ static int test_akcipher(struct crypto_akcipher *tfm, const char *alg,
3071 3071
  		if (!ret)
3072 3072
  			continue;
3073 3073
  
... ...
@@ -3076,7 +3087,7 @@ index 94279afed..c2e52e4c3 100644
3076 3076
  		       i + 1, algo, ret);
3077 3077
  		return ret;
3078 3078
  	}
3079
-@@ -4275,7 +3975,7 @@ static int alg_test_akcipher(const struct alg_test_desc *desc,
3079
+@@ -4277,7 +3977,7 @@ static int alg_test_akcipher(const struct alg_test_desc *desc,
3080 3080
  
3081 3081
  	tfm = crypto_alloc_akcipher(driver, type, mask);
3082 3082
  	if (IS_ERR(tfm)) {
... ...
@@ -3085,7 +3096,7 @@ index 94279afed..c2e52e4c3 100644
3085 3085
  		       driver, PTR_ERR(tfm));
3086 3086
  		return PTR_ERR(tfm);
3087 3087
  	}
3088
-@@ -5815,13 +5515,13 @@ static void alg_check_test_descs_order(void)
3088
+@@ -5835,13 +5535,13 @@ static void alg_check_test_descs_order(void)
3089 3089
  				  alg_test_descs[i].alg);
3090 3090
  
3091 3091
  		if (fcw_warn_on(diff > 0)) {
... ...
@@ -3101,7 +3112,7 @@ index 94279afed..c2e52e4c3 100644
3101 3101
  				alg_test_descs[i].alg);
3102 3102
  		}
3103 3103
  	}
3104
-@@ -5846,7 +5546,7 @@ static void testmgr_onetime_init(void)
3104
+@@ -5866,7 +5566,7 @@ static void testmgr_onetime_init(void)
3105 3105
  	alg_check_testvec_configs();
3106 3106
  
3107 3107
  #ifdef CONFIG_CRYPTO_MANAGER_EXTRA_TESTS
... ...
@@ -3110,7 +3121,7 @@ index 94279afed..c2e52e4c3 100644
3110 3110
  #endif
3111 3111
  }
3112 3112
  
3113
-@@ -5877,7 +5577,7 @@ static int alg_find_test(const char *alg)
3113
+@@ -5897,7 +5597,7 @@ static int alg_find_test(const char *alg)
3114 3114
  
3115 3115
  static int alg_fips_disabled(const char *driver, const char *alg)
3116 3116
  {
... ...
@@ -3119,7 +3130,7 @@ index 94279afed..c2e52e4c3 100644
3119 3119
  
3120 3120
  	return -ECANCELED;
3121 3121
  }
3122
-@@ -5889,11 +5589,6 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
3122
+@@ -5909,11 +5609,6 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
3123 3123
  	int rc;
3124 3124
  	static bool done = false;
3125 3125
  
... ...
@@ -3131,7 +3142,7 @@ index 94279afed..c2e52e4c3 100644
3131 3131
  	/* Replace DO_ONCE by this. As DO_ONCE generates jump labels entry
3132 3132
  	 * and its data (__once_key) get changed at early boot time at
3133 3133
  	 * jump_label_init() from setup_arch(). We cannot run
3134
-@@ -5945,27 +5640,26 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
3134
+@@ -5965,27 +5660,26 @@ int alg_test(const char *driver, const char *alg, u32 type, u32 mask)
3135 3135
  
3136 3136
  test_done:
3137 3137
  	if (rc) {
... ...
@@ -3166,7 +3177,7 @@ index 94279afed..c2e52e4c3 100644
3166 3166
  	if (type & CRYPTO_ALG_FIPS_INTERNAL)
3167 3167
  		return alg_fips_disabled(driver, alg);
3168 3168
 diff --git a/crypto/testmgr.h b/crypto/testmgr.h
3169
-index b23d8f1d9..4b4d56963 100644
3169
+index 0ec3d5863..0d71f0b65 100644
3170 3170
 --- a/crypto/testmgr.h
3171 3171
 +++ b/crypto/testmgr.h
3172 3172
 @@ -20,32 +20,11 @@
... ...
@@ -3204,7 +3215,7 @@ index b23d8f1d9..4b4d56963 100644
3204 3204
   * cipher_testvec:	structure to describe a symmetric cipher test
3205 3205
   * @key:	Pointer to key
3206 3206
 diff --git a/crypto/xts.c b/crypto/xts.c
3207
-index 12edd6525..25116457f 100644
3207
+index 7c926f7bb..ce5425371 100644
3208 3208
 --- a/crypto/xts.c
3209 3209
 +++ b/crypto/xts.c
3210 3210
 @@ -13,7 +13,6 @@
... ...
@@ -3240,10 +3251,10 @@ index 12edd6525..25116457f 100644
3240 3240
 -MODULE_IMPORT_NS(CRYPTO_INTERNAL);
3241 3241
 -MODULE_SOFTDEP("pre: ecb");
3242 3242
 diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h
3243
-index 224b86064..446cd7bf1 100644
3243
+index 939a3196b..1b8b7358d 100644
3244 3244
 --- a/include/crypto/algapi.h
3245 3245
 +++ b/include/crypto/algapi.h
3246
-@@ -27,7 +27,9 @@
3246
+@@ -28,7 +28,9 @@
3247 3247
  
3248 3248
  struct crypto_aead;
3249 3249
  struct crypto_instance;
... ...
@@ -3253,7 +3264,7 @@ index 224b86064..446cd7bf1 100644
3253 3253
  struct notifier_block;
3254 3254
  struct rtattr;
3255 3255
  struct seq_file;
3256
-@@ -66,7 +68,11 @@ struct crypto_instance {
3256
+@@ -69,7 +71,11 @@ struct crypto_instance {
3257 3257
  struct crypto_template {
3258 3258
  	struct list_head list;
3259 3259
  	struct hlist_head instances;
3260 3260
new file mode 100644
... ...
@@ -0,0 +1,295 @@
0
+From a31ce76f47615c99cc429e8ca0c615401a6f0b0e Mon Sep 17 00:00:00 2001
1
+From: Keerthana K <keerthanak@vmware.com>
2
+Date: Wed, 20 Sep 2023 07:38:08 +0000
3
+Subject: [PATCH] FIPS canister binary usage
4
+
5
+Build with fips canister and skip building crypto algorithms.
6
+Invoke fips canister integrity check during kernel startup.
7
+
8
+This patch can be used at two stages:
9
+ 1. Prerequisite patch for canister creation.
10
+ 2. Binary canister usage time.
11
+
12
+Signed-off-by: Alexey Makhalov <amakhalov@vmware.com>
13
+Signed-off-by: Keerthana K <keerthanak@vmware.com>
14
+Signed-off-by: Vamsi Krishna Brahmajosyula <vbrahmajosyula@vmware.com>
15
+---
16
+ arch/x86/crypto/Makefile |   4 --
17
+ crypto/Makefile          | 116 +++++++++++++++++++++++++++++++--------
18
+ init/main.c              |   3 +
19
+ lib/crypto/Makefile      |   9 ---
20
+ 4 files changed, 95 insertions(+), 37 deletions(-)
21
+
22
+diff --git a/arch/x86/crypto/Makefile b/arch/x86/crypto/Makefile
23
+index 3b1d701a4..3836c4e30 100644
24
+--- a/arch/x86/crypto/Makefile
25
+@@ -46,10 +46,6 @@ obj-$(CONFIG_CRYPTO_CHACHA20_X86_64) += chacha-x86_64.o
26
+ chacha-x86_64-y := chacha-avx2-x86_64.o chacha-ssse3-x86_64.o chacha_glue.o
27
+ chacha-x86_64-$(CONFIG_AS_AVX512) += chacha-avx512vl-x86_64.o
28
+ 
29
+-obj-$(CONFIG_CRYPTO_AES_NI_INTEL) += aesni-intel.o
30
+-aesni-intel-y := aesni-intel_asm.o aesni-intel_glue.o
31
+-aesni-intel-$(CONFIG_64BIT) += aesni-intel_avx-x86_64.o aes_ctrby8_avx-x86_64.o
32
+-
33
+ obj-$(CONFIG_CRYPTO_SHA1_SSSE3) += sha1-ssse3.o
34
+ sha1-ssse3-y := sha1_avx2_x86_64_asm.o sha1_ssse3_asm.o sha1_ssse3_glue.o
35
+ sha1-ssse3-$(CONFIG_AS_SHA1_NI) += sha1_ni_asm.o
36
+diff --git a/crypto/Makefile b/crypto/Makefile
37
+index 515ca3a4c..19bf4080d 100644
38
+--- a/crypto/Makefile
39
+@@ -18,10 +18,8 @@ crypto_algapi-y := algapi.o scatterwalk.o $(crypto_algapi-y)
40
+ obj-$(CONFIG_CRYPTO_ALGAPI2) += crypto_algapi.o
41
+ 
42
+ obj-$(CONFIG_CRYPTO_AEAD2) += aead.o
43
+-obj-$(CONFIG_CRYPTO_AEAD2) += geniv.o
44
+ 
45
+ obj-$(CONFIG_CRYPTO_SKCIPHER2) += skcipher.o
46
+-obj-$(CONFIG_CRYPTO_SEQIV) += seqiv.o
47
+ obj-$(CONFIG_CRYPTO_ECHAINIV) += echainiv.o
48
+ 
49
+ crypto_hash-y += ahash.o
50
+@@ -44,7 +42,6 @@ rsa_generic-y += rsaprivkey.asn1.o
51
+ rsa_generic-y += rsa.o
52
+ rsa_generic-y += rsa_helper.o
53
+ rsa_generic-y += rsa-pkcs1pad.o
54
+-obj-$(CONFIG_CRYPTO_RSA) += rsa_generic.o
55
+ 
56
+ $(obj)/sm2signature.asn1.o: $(obj)/sm2signature.asn1.c $(obj)/sm2signature.asn1.h
57
+ $(obj)/sm2.o: $(obj)/sm2signature.asn1.h
58
+@@ -53,13 +50,11 @@ sm2_generic-y += sm2signature.asn1.o
59
+ sm2_generic-y += sm2.o
60
+ 
61
+ obj-$(CONFIG_CRYPTO_SM2) += sm2_generic.o
62
+-obj-$(CONFIG_CRYPTO_SELF_TEST) += crypto_self_test.o
63
+ 
64
+ $(obj)/ecdsasignature.asn1.o: $(obj)/ecdsasignature.asn1.c $(obj)/ecdsasignature.asn1.h
65
+ $(obj)/ecdsa.o: $(obj)/ecdsasignature.asn1.h
66
+ ecdsa_generic-y += ecdsa.o
67
+ ecdsa_generic-y += ecdsasignature.asn1.o
68
+-obj-$(CONFIG_CRYPTO_ECDSA) += ecdsa_generic.o
69
+ 
70
+ crypto_acompress-y := acompress.o
71
+ crypto_acompress-y += scompress.o
72
+@@ -67,22 +62,15 @@ obj-$(CONFIG_CRYPTO_ACOMP2) += crypto_acompress.o
73
+ 
74
+ cryptomgr-y := algboss.o testmgr.o
75
+ 
76
+-obj-$(CONFIG_CRYPTO_MANAGER2) += cryptomgr.o
77
+ obj-$(CONFIG_CRYPTO_USER) += crypto_user.o
78
+ crypto_user-y := crypto_user_base.o
79
+ crypto_user-$(CONFIG_CRYPTO_STATS) += crypto_user_stat.o
80
+-obj-$(CONFIG_CRYPTO_CMAC) += cmac.o
81
+-obj-$(CONFIG_CRYPTO_HMAC) += hmac.o
82
+ obj-$(CONFIG_CRYPTO_VMAC) += vmac.o
83
+ obj-$(CONFIG_CRYPTO_XCBC) += xcbc.o
84
+ obj-$(CONFIG_CRYPTO_NULL2) += crypto_null.o
85
+ obj-$(CONFIG_CRYPTO_MD4) += md4.o
86
+ obj-$(CONFIG_CRYPTO_MD5) += md5.o
87
+ obj-$(CONFIG_CRYPTO_RMD160) += rmd160.o
88
+-obj-$(CONFIG_CRYPTO_SHA1) += sha1_generic.o
89
+-obj-$(CONFIG_CRYPTO_SHA256) += sha256_generic.o
90
+-obj-$(CONFIG_CRYPTO_SHA512) += sha512_generic.o
91
+-obj-$(CONFIG_CRYPTO_SHA3) += sha3_generic.o
92
+ obj-$(CONFIG_CRYPTO_SM3) += sm3.o
93
+ obj-$(CONFIG_CRYPTO_SM3_GENERIC) += sm3_generic.o
94
+ obj-$(CONFIG_CRYPTO_STREEBOG) += streebog_generic.o
95
+@@ -91,21 +79,13 @@ CFLAGS_wp512.o := $(call cc-option,-fno-schedule-insns)  # https://gcc.gnu.org/b
96
+ obj-$(CONFIG_CRYPTO_BLAKE2B) += blake2b_generic.o
97
+ CFLAGS_blake2b_generic.o := -Wframe-larger-than=4096 #  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105930
98
+ obj-$(CONFIG_CRYPTO_GF128MUL) += gf128mul.o
99
+-obj-$(CONFIG_CRYPTO_ECB) += ecb.o
100
+-obj-$(CONFIG_CRYPTO_CBC) += cbc.o
101
+-obj-$(CONFIG_CRYPTO_CFB) += cfb.o
102
+ obj-$(CONFIG_CRYPTO_PCBC) += pcbc.o
103
+-obj-$(CONFIG_CRYPTO_CTS) += cts.o
104
+ obj-$(CONFIG_CRYPTO_LRW) += lrw.o
105
+-obj-$(CONFIG_CRYPTO_XTS) += xts.o
106
+-obj-$(CONFIG_CRYPTO_CTR) += ctr.o
107
+ obj-$(CONFIG_CRYPTO_XCTR) += xctr.o
108
+ obj-$(CONFIG_CRYPTO_HCTR2) += hctr2.o
109
+ obj-$(CONFIG_CRYPTO_KEYWRAP) += keywrap.o
110
+ obj-$(CONFIG_CRYPTO_ADIANTUM) += adiantum.o
111
+ obj-$(CONFIG_CRYPTO_NHPOLY1305) += nhpoly1305.o
112
+-obj-$(CONFIG_CRYPTO_GCM) += gcm.o
113
+-obj-$(CONFIG_CRYPTO_CCM) += ccm.o
114
+ obj-$(CONFIG_CRYPTO_CHACHA20POLY1305) += chacha20poly1305.o
115
+ obj-$(CONFIG_CRYPTO_AEGIS128) += aegis128.o
116
+ aegis128-y := aegis128-core.o
117
+@@ -140,7 +120,6 @@ obj-$(CONFIG_CRYPTO_TWOFISH) += twofish_generic.o
118
+ obj-$(CONFIG_CRYPTO_TWOFISH_COMMON) += twofish_common.o
119
+ obj-$(CONFIG_CRYPTO_SERPENT) += serpent_generic.o
120
+ CFLAGS_serpent_generic.o := $(call cc-option,-fsched-pressure)  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79149
121
+-obj-$(CONFIG_CRYPTO_AES) += aes_generic.o
122
+ CFLAGS_aes_generic.o := $(call cc-option,-fno-code-hoisting) # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83356
123
+ obj-$(CONFIG_CRYPTO_SM4) += sm4.o
124
+ obj-$(CONFIG_CRYPTO_SM4_GENERIC) += sm4_generic.o
125
+@@ -171,7 +150,6 @@ obj-$(CONFIG_CRYPTO_XXHASH) += xxhash_generic.o
126
+ obj-$(CONFIG_CRYPTO_842) += 842.o
127
+ obj-$(CONFIG_CRYPTO_RNG2) += rng.o
128
+ obj-$(CONFIG_CRYPTO_ANSI_CPRNG) += ansi_cprng.o
129
+-obj-$(CONFIG_CRYPTO_DRBG) += drbg.o
130
+ CFLAGS_jitterentropy.o = -O0
131
+ KASAN_SANITIZE_jitterentropy.o = n
132
+ UBSAN_SANITIZE_jitterentropy.o = n
133
+@@ -185,13 +163,11 @@ obj-$(CONFIG_CRYPTO_USER_API_RNG) += algif_rng.o
134
+ obj-$(CONFIG_CRYPTO_USER_API_AEAD) += algif_aead.o
135
+ obj-$(CONFIG_CRYPTO_ZSTD) += zstd.o
136
+ obj-$(CONFIG_CRYPTO_OFB) += ofb.o
137
+-obj-$(CONFIG_CRYPTO_ECC) += ecc.o
138
+ obj-$(CONFIG_CRYPTO_ESSIV) += essiv.o
139
+ obj-$(CONFIG_CRYPTO_CURVE25519) += curve25519-generic.o
140
+ 
141
+ ecdh_generic-y += ecdh.o
142
+ ecdh_generic-y += ecdh_helper.o
143
+-obj-$(CONFIG_CRYPTO_ECDH) += ecdh_generic.o
144
+ 
145
+ $(obj)/ecrdsa_params.asn1.o: $(obj)/ecrdsa_params.asn1.c $(obj)/ecrdsa_params.asn1.h
146
+ $(obj)/ecrdsa_pub_key.asn1.o: $(obj)/ecrdsa_pub_key.asn1.c $(obj)/ecrdsa_pub_key.asn1.h
147
+@@ -215,3 +191,95 @@ obj-$(CONFIG_CRYPTO_SIMD) += crypto_simd.o
148
+ # Key derivation function
149
+ #
150
+ obj-$(CONFIG_CRYPTO_KDF800108_CTR) += kdf_sp800108.o
151
++obj-$(CONFIG_CRYPTO_FIPS) += fips_canister_wrapper_asm.o fips_canister_wrapper.o fips_canister.o
152
++obj-$(CONFIG_CRYPTO_FIPS) += testmgr_fips_canister_wrapper.o aesni-intel_glue_fips_canister_wrapper.o
153
++
154
++ifdef CONFIG_CRYPTO_FIPS
155
++ifneq ($(CONFIG_CRYPTO_FIPS),y)
156
++  $(error FIPS canister requires CONFIG_CRYPTO_FIPS=y)
157
++endif
158
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_AEAD)),y)
159
++  $(error FIPS canister requires CONFIG_CRYPTO_AEAD=y)
160
++endif
161
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_AEAD2)),y)
162
++  $(error FIPS canister requires CONFIG_CRYPTO_AEAD2=y)
163
++endif
164
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_SEQIV)),y)
165
++  $(error FIPS canister requires CONFIG_CRYPTO_SEQIV=y)
166
++endif
167
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_RSA)),y)
168
++  $(error FIPS canister requires CONFIG_CRYPTO_RSA=y)
169
++endif
170
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_MANAGER)),y)
171
++  $(error FIPS canister requires CONFIG_CRYPTO_MANAGER=y)
172
++endif
173
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_MANAGER2)),y)
174
++  $(error FIPS canister requires CONFIG_CRYPTO_MANAGER2=y)
175
++endif
176
++ifdef CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
177
++  $(error FIPS canister requires CONFIG_CRYPTO_MANAGER_DISABLE_TESTS to be unset)
178
++endif
179
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_HMAC)),y)
180
++  $(error FIPS canister requires CONFIG_CRYPTO_HMAC=y)
181
++endif
182
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_SHA256)),y)
183
++  $(error FIPS canister requires CONFIG_CRYPTO_SHA256=y)
184
++endif
185
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_SHA512)),y)
186
++  $(error FIPS canister requires CONFIG_CRYPTO_SHA512=y)
187
++endif
188
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_AES)),y)
189
++  $(error FIPS canister requires CONFIG_CRYPTO_AES=y)
190
++endif
191
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_ECB)),y)
192
++  $(error FIPS canister requires CONFIG_CRYPTO_ECB=y)
193
++endif
194
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_CBC)),y)
195
++  $(error FIPS canister requires CONFIG_CRYPTO_CBC=y)
196
++endif
197
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_XTS)),y)
198
++  $(error FIPS canister requires CONFIG_CRYPTO_XTS=y)
199
++endif
200
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_CTR)),y)
201
++  $(error FIPS canister requires CONFIG_CRYPTO_CTR=y)
202
++endif
203
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_DRBG)),y)
204
++  $(error FIPS canister requires CONFIG_CRYPTO_DRBG=y)
205
++endif
206
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_DRBG_HASH)),y)
207
++  $(error FIPS canister requires CONFIG_CRYPTO_DRBG_HASH=y)
208
++endif
209
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_DRBG_CTR)),y)
210
++  $(error FIPS canister requires CONFIG_CRYPTO_DRBG_CTR=y)
211
++endif
212
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_ECC)),y)
213
++  $(error FIPS canister requires CONFIG_CRYPTO_ECC=y)
214
++endif
215
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_ECDH)),y)
216
++  $(error FIPS canister requires CONFIG_CRYPTO_ECDH=y)
217
++endif
218
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_AES_NI_INTEL)),y)
219
++  $(error FIPS canister requires CONFIG_CRYPTO_AES_NI_INTEL=y)
220
++endif
221
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_CFB)),y)
222
++  $(error FIPS canister requires CONFIG_CRYPTO_CFB=y)
223
++endif
224
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_CMAC)),y)
225
++  $(error FIPS canister requires CONFIG_CRYPTO_CMAC=y)
226
++endif
227
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_CTS)),y)
228
++  $(error FIPS canister requires CONFIG_CRYPTO_CTS=y)
229
++endif
230
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_ECDSA)),y)
231
++  $(error FIPS canister requires CONFIG_CRYPTO_ECDSA=y)
232
++endif
233
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_CCM)),y)
234
++  $(error FIPS canister requires CONFIG_CRYPTO_CCM=y)
235
++endif
236
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_GCM)),y)
237
++  $(error FIPS canister requires CONFIG_CRYPTO_GCM=y)
238
++endif
239
++ifneq ($(subst Y,y,$(CONFIG_CRYPTO_SHA3)),y)
240
++  $(error FIPS canister requires CONFIG_CRYPTO_SHA3=y)
241
++endif
242
++endif
243
+diff --git a/init/main.c b/init/main.c
244
+index fe378351e..962edcc54 100644
245
+--- a/init/main.c
246
+@@ -882,6 +882,8 @@ static int __init early_randomize_kstack_offset(char *buf)
247
+ early_param("randomize_kstack_offset", early_randomize_kstack_offset);
248
+ #endif
249
+ 
250
++extern int fips_integrity_init(void);
251
++
252
+ void __init __weak arch_call_rest_init(void)
253
+ {
254
+ 	rest_init();
255
+@@ -983,6 +985,7 @@ asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
256
+ 	/* Architectural and non-timekeeping rng init, before allocator init */
257
+ 	random_init_early(command_line);
258
+ 
259
++	fips_integrity_init();
260
+ 	/*
261
+ 	 * These use large bootmem allocations and must precede
262
+ 	 * kmem_cache_init()
263
+diff --git a/lib/crypto/Makefile b/lib/crypto/Makefile
264
+index c852f067a..33d229c6d 100644
265
+--- a/lib/crypto/Makefile
266
+@@ -7,9 +7,6 @@ libcryptoutils-y				:= memneq.o utils.o
267
+ obj-y						+= chacha.o
268
+ obj-$(CONFIG_CRYPTO_LIB_CHACHA_GENERIC)		+= libchacha.o
269
+ 
270
+-obj-$(CONFIG_CRYPTO_LIB_AES)			+= libaes.o
271
+-libaes-y					:= aes.o
272
+-
273
+ obj-$(CONFIG_CRYPTO_LIB_ARC4)			+= libarc4.o
274
+ libarc4-y					:= arc4.o
275
+ 
276
+@@ -37,12 +34,6 @@ libpoly1305-y					:= poly1305-donna32.o
277
+ libpoly1305-$(CONFIG_ARCH_SUPPORTS_INT128)	:= poly1305-donna64.o
278
+ libpoly1305-y					+= poly1305.o
279
+ 
280
+-obj-$(CONFIG_CRYPTO_LIB_SHA1)			+= libsha1.o
281
+-libsha1-y					:= sha1.o
282
+-
283
+-obj-$(CONFIG_CRYPTO_LIB_SHA256)			+= libsha256.o
284
+-libsha256-y					:= sha256.o
285
+-
286
+ ifneq ($(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS),y)
287
+ libblake2s-y					+= blake2s-selftest.o
288
+ libchacha20poly1305-y				+= chacha20poly1305-selftest.o
289
+-- 
290
+2.41.0
... ...
@@ -5177,7 +5177,7 @@ CONFIG_CRYPTO_XTS=y
5177 5177
 # CONFIG_CRYPTO_CHACHA20POLY1305 is not set
5178 5178
 CONFIG_CRYPTO_CCM=y
5179 5179
 CONFIG_CRYPTO_GCM=y
5180
-CONFIG_CRYPTO_SEQIV=m
5180
+CONFIG_CRYPTO_SEQIV=y
5181 5181
 CONFIG_CRYPTO_ECHAINIV=m
5182 5182
 CONFIG_CRYPTO_ESSIV=m
5183 5183
 # end of AEAD (authenticated encryption with associated data) ciphers
... ...
@@ -10,20 +10,22 @@ Subject: [PATCH] FIPS crypto self tests
10 10
 - Added cts to crypto self-tests
11 11
 - Removed rsa(pkcs1pad, sha512), cbc, and ctr from crypto self-tests
12 12
 - Added ECC pubkey generation and verification success messages
13
+- Use drbg_nopr_sha1_tv_template for drbg_nopr_sha1 self-test
13 14
 
14 15
 Alexey: add FIPS_NOT_ALLOWED macro
15 16
 Signed-off-by: Srish Srinivasan <ssrish@vmware.com>
17
+Signed-off-by: Vamsi Krishna Brahmajosyula <vbrahmajosyula@vmware.com>
16 18
 ---
17 19
  crypto/Kconfig            |   21 +
18 20
  crypto/Makefile           |    1 +
19
- crypto/crypto_self_test.c |  119 ++
20
- crypto/testmgr.c          |   86 +-
21
- crypto/testmgr.h          | 2340 ++++++++++++++++++++++++++++++++++++-
22
- 5 files changed, 2551 insertions(+), 16 deletions(-)
21
+ crypto/crypto_self_test.c |  123 ++
22
+ crypto/testmgr.c          |   91 +-
23
+ crypto/testmgr.h          | 3164 ++++++++++++++++++++++++++++++++++++-
24
+ 5 files changed, 3383 insertions(+), 17 deletions(-)
23 25
  create mode 100644 crypto/crypto_self_test.c
24 26
 
25 27
 diff --git a/crypto/Kconfig b/crypto/Kconfig
26
-index bb427a835..a3ad66111 100644
28
+index d77966767..c849bb918 100644
27 29
 --- a/crypto/Kconfig
28 30
 +++ b/crypto/Kconfig
29 31
 @@ -229,6 +229,27 @@ config CRYPTO_TEST
... ...
@@ -55,7 +57,7 @@ index bb427a835..a3ad66111 100644
55 55
  	tristate
56 56
  	select CRYPTO_CRYPTD
57 57
 diff --git a/crypto/Makefile b/crypto/Makefile
58
-index a6f94e04e..97f7d05df 10064
58
+index 303b21c43..d7fcab76d 100644
59 59
 --- a/crypto/Makefile
60 60
 +++ b/crypto/Makefile
61 61
 @@ -49,6 +49,7 @@ sm2_generic-y += sm2signature.asn1.o
... ...
@@ -68,10 +70,10 @@ index a6f94e04e..97f7d05df 10064
68 68
  $(obj)/ecdsa.o: $(obj)/ecdsasignature.asn1.h
69 69
 diff --git a/crypto/crypto_self_test.c b/crypto/crypto_self_test.c
70 70
 new file mode 100644
71
-index 000000000..c2ffd20c9
71
+index 000000000..eb4ed8bdb
72 72
 --- /dev/null
73 73
 +++ b/crypto/crypto_self_test.c
74
-@@ -0,0 +1,119 @@
74
+@@ -0,0 +1,123 @@
75 75
 +/*
76 76
 + * Self test for Crypto Algorithms
77 77
 + *
... ...
@@ -104,6 +106,10 @@ index 000000000..c2ffd20c9
104 104
 +		.alg_name = "gcm(aes)",
105 105
 +	},
106 106
 +	{
107
++		.driver_name = "rfc4106(gcm(aes))",
108
++		.alg_name = "rfc4106(gcm(aes))",
109
++	},
110
++	{
107 111
 +		.driver_name = "ccm(aes)",
108 112
 +		.alg_name = "ccm(aes)",
109 113
 +	},
... ...
@@ -192,7 +198,7 @@ index 000000000..c2ffd20c9
192 192
 +}
193 193
 +module_init(crypto_self_test_init);
194 194
 diff --git a/crypto/testmgr.c b/crypto/testmgr.c
195
-index 04be52a99..07523e76d 100644
195
+index 56c39a0c9..af31ff549 100644
196 196
 --- a/crypto/testmgr.c
197 197
 +++ b/crypto/testmgr.c
198 198
 @@ -3925,6 +3925,7 @@ static int do_test_kpp(struct crypto_kpp *tfm, const struct kpp_testvec *vec,
... ...
@@ -235,7 +241,19 @@ index 04be52a99..07523e76d 100644
235 235
  	}, {
236 236
  		.alg = "drbg_nopr_hmac_sha512",
237 237
  		.test = alg_test_drbg,
238
-@@ -4872,11 +4880,17 @@ static const struct alg_test_desc alg_test_descs[] = {
238
+@@ -4860,7 +4868,10 @@ static const struct alg_test_desc alg_test_descs[] = {
239
+ 	}, {
240
+ 		.alg = "drbg_nopr_sha1",
241
+ 		.fips_allowed = 1,
242
+-		.test = alg_test_null,
243
++		.test = alg_test_drbg,
244
++		.suite = {
245
++			.drbg = __VECS(drbg_nopr_sha1_tv_template)
246
++		}
247
+ 	}, {
248
+ 		.alg = "drbg_nopr_sha256",
249
+ 		.test = alg_test_drbg,
250
+@@ -4872,11 +4883,17 @@ static const struct alg_test_desc alg_test_descs[] = {
239 251
  		/* covered by drbg_nopr_sha256 test */
240 252
  		.alg = "drbg_nopr_sha384",
241 253
  		.fips_allowed = 1,
... ...
@@ -255,7 +273,7 @@ index 04be52a99..07523e76d 100644
255 255
  	}, {
256 256
  		.alg = "drbg_pr_ctr_aes128",
257 257
  		.test = alg_test_drbg,
258
-@@ -4888,15 +4902,24 @@ static const struct alg_test_desc alg_test_descs[] = {
258
+@@ -4888,15 +4905,24 @@ static const struct alg_test_desc alg_test_descs[] = {
259 259
  		/* covered by drbg_pr_ctr_aes128 test */
260 260
  		.alg = "drbg_pr_ctr_aes192",
261 261
  		.fips_allowed = 1,
... ...
@@ -283,7 +301,7 @@ index 04be52a99..07523e76d 100644
283 283
  	}, {
284 284
  		.alg = "drbg_pr_hmac_sha256",
285 285
  		.test = alg_test_drbg,
286
-@@ -4908,15 +4931,24 @@ static const struct alg_test_desc alg_test_descs[] = {
286
+@@ -4908,15 +4934,24 @@ static const struct alg_test_desc alg_test_descs[] = {
287 287
  		/* covered by drbg_pr_hmac_sha256 test */
288 288
  		.alg = "drbg_pr_hmac_sha384",
289 289
  		.fips_allowed = 1,
... ...
@@ -311,7 +329,7 @@ index 04be52a99..07523e76d 100644
311 311
  	}, {
312 312
  		.alg = "drbg_pr_sha256",
313 313
  		.test = alg_test_drbg,
314
-@@ -4928,11 +4960,17 @@ static const struct alg_test_desc alg_test_descs[] = {
314
+@@ -4928,11 +4963,17 @@ static const struct alg_test_desc alg_test_descs[] = {
315 315
  		/* covered by drbg_pr_sha256 test */
316 316
  		.alg = "drbg_pr_sha384",
317 317
  		.fips_allowed = 1,
... ...
@@ -331,7 +349,7 @@ index 04be52a99..07523e76d 100644
331 331
  	}, {
332 332
  		.alg = "ecb(aes)",
333 333
  		.test = alg_test_skcipher,
334
-@@ -5101,12 +5139,14 @@ static const struct alg_test_desc alg_test_descs[] = {
334
+@@ -5101,12 +5142,14 @@ static const struct alg_test_desc alg_test_descs[] = {
335 335
  	}, {
336 336
  		.alg = "ecdsa-nist-p256",
337 337
  		.test = alg_test_akcipher,
... ...
@@ -346,7 +364,7 @@ index 04be52a99..07523e76d 100644
346 346
  		.suite = {
347 347
  			.akcipher = __VECS(ecdsa_nist_p384_tv_template)
348 348
  		}
349
-@@ -5433,10 +5473,20 @@ static const struct alg_test_desc alg_test_descs[] = {
349
+@@ -5433,10 +5476,20 @@ static const struct alg_test_desc alg_test_descs[] = {
350 350
  		.suite = {
351 351
  			.cipher = __VECS(fcrypt_pcbc_tv_template)
352 352
  		}
... ...
@@ -368,7 +386,7 @@ index 04be52a99..07523e76d 100644
368 368
  	}, {
369 369
  		.alg = "pkcs1pad(rsa,sha256)",
370 370
  		.test = alg_test_akcipher,
371
-@@ -5446,12 +5496,18 @@ static const struct alg_test_desc alg_test_descs[] = {
371
+@@ -5446,12 +5499,18 @@ static const struct alg_test_desc alg_test_descs[] = {
372 372
  		}
373 373
  	}, {
374 374
  		.alg = "pkcs1pad(rsa,sha384)",
... ...
@@ -390,10 +408,841 @@ index 04be52a99..07523e76d 100644
390 390
  		.alg = "poly1305",
391 391
  		.test = alg_test_hash,
392 392
 diff --git a/crypto/testmgr.h b/crypto/testmgr.h
393
-index 2e6b280f9..b23d8f1d9 100644
393
+index d6088e26f..4f5b35671 100644
394 394
 --- a/crypto/testmgr.h
395 395
 +++ b/crypto/testmgr.h
396
-@@ -1228,6 +1228,726 @@ static const struct akcipher_testvec ecrdsa_tv_template[] = {
396
+@@ -444,6 +444,830 @@ static const struct akcipher_testvec rsa_tv_template[] = {
397
+ 	.m_size = 8,
398
+ 	.c_size = 256,
399
+ 	.public_key_vec = true,
400
++	}, {
401
++	.key =
402
++	"\x30\x82\x08\x62\x02\x01\x00\x02"
403
++	"\x82\x01\x81\x00\xdb\x3b\x5c\x32"
404
++	"\xa2\x13\x31\xe2\xb4\x90\xf6\x82"
405
++	"\x58\x9a\xe4\xe3\x29\x0d\x2f\xac"
406
++	"\xdd\x07\xa6\x92\x77\xb9\x2f\x3a"
407
++	"\x50\x4d\x59\x27\xdb\x49\x7b\x91"
408
++	"\xb7\x6e\x84\x3d\x16\xe9\x9d\xe6"
409
++	"\xe2\x4c\x7c\x77\xd0\xed\x87\x63"
410
++	"\x5c\x12\x74\xfb\xac\xe8\x2e\x53"
411
++	"\x5b\x2d\xf7\xc1\x3a\x51\xbb\x23"
412
++	"\x83\x1a\x64\x13\x5b\xd9\x41\x43"
413
++	"\x5f\xb5\x5f\xac\xaf\x13\x18\x7a"
414
++	"\x51\x6c\xeb\x2f\x1e\x1e\x82\x11"
415
++	"\x88\x1c\x01\x5d\xc6\x19\xd8\x3a"
416
++	"\xf6\x78\xe8\xe2\xf3\x43\x05\x4e"
417
++	"\x9d\x8f\x80\x58\x90\xf1\x96\xf1"
418
++	"\x54\xc3\xd7\xd3\x48\x2e\x5e\x12"
419
++	"\xfe\x5b\x04\xb5\x86\xee\x34\x4b"
420
++	"\x3f\x7b\x13\x8e\x76\x14\x19\xff"
421
++	"\xea\xfe\x33\xed\xa7\xf7\x2c\x46"
422
++	"\x77\x7d\x8b\x75\x58\xc3\xca\xf4"
423
++	"\xe0\x94\x2f\x21\x72\x16\xe7\xd8"
424
++	"\xce\x2a\xec\xb2\x04\xd1\xa4\x1d"
425
++	"\xee\x49\x65\x60\xd5\x12\xfe\x59"
426
++	"\x57\x55\x00\x1d\x81\xdc\x23\xa9"
427
++	"\x10\x54\x99\x26\xfd\x55\xb7\xb9"
428
++	"\xdc\xe4\xfc\x76\x8d\x1e\x2e\xf1"
429
++	"\x1e\x87\xab\xe2\x4f\x25\xe5\x0d"
430
++	"\x3a\x9d\xc4\x94\x94\xa8\x4d\x04"
431
++	"\x1a\x28\xed\x3b\xa8\x6d\x5f\xfd"
432
++	"\x4c\xf1\x1a\x9c\x07\xf1\x20\x55"
433
++	"\x37\xd7\x60\x2b\xd5\x41\x12\xb9"
434
++	"\x0d\x4a\x49\xc6\xba\x44\x61\xc0"
435
++	"\x99\x2e\x10\x63\x7e\xb4\xaa\x74"
436
++	"\xfe\x8d\x03\xf4\x54\x09\xb3\x88"
437
++	"\xb0\x53\xc2\x8b\xad\x5a\x92\x3f"
438
++	"\x94\x7c\x4b\xfd\xfe\xb5\x1d\x65"
439
++	"\x2f\x80\xc3\x59\x56\x15\x40\xda"
440
++	"\x17\xbb\x11\xae\x5e\xc0\xed\xd4"
441
++	"\x3d\x20\xac\x7a\x04\x27\x24\xb7"
442
++	"\xe8\xc2\x8f\x69\xb2\x67\x5e\x43"
443
++	"\x65\xc4\x5a\x6f\xdc\x93\xf9\x64"
444
++	"\x2a\x4e\x2b\xc9\x7f\x36\xe4\x4c"
445
++	"\x35\x00\xc6\xaf\x43\x21\xd7\x0a"
446
++	"\x69\xe7\x0f\x36\xf1\x3d\xc4\xcb"
447
++	"\xa9\x26\xf3\x2b\x18\x21\x0d\xfd"
448
++	"\xc1\x03\xa6\x95\x9f\x8b\x42\x2a"
449
++	"\x30\x64\x7d\x54\x9e\x30\x86\xa8"
450
++	"\x97\x0e\x54\x8b\x96\x52\x6f\xde"
451
++	"\x1d\xb5\xfb\x87\x02\x82\x01\x80"
452
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
453
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
454
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
455
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
456
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
457
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
458
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
459
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
460
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
461
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
462
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
463
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
464
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
465
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
466
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
467
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
468
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
469
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
470
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
471
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
472
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
473
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
474
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
475
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
476
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
477
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
478
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
479
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
480
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
481
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
482
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
483
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
484
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
485
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
486
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
487
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
488
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
489
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
490
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
491
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
492
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
493
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
494
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
495
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
496
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
497
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
498
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
499
++	"\x00\x00\x00\x00\x00\x01\x00\x01"
500
++	"\x02\x82\x01\x80\x6f\xb2\xc3\xdb"
501
++	"\xec\x66\x19\x41\xa7\xbc\x40\x4c"
502
++	"\xd3\x36\x40\x2e\x59\x29\x25\xc4"
503
++	"\x4e\x6d\x6a\x7a\x2f\xd3\xc3\x73"
504
++	"\x53\x9c\xc5\x33\x20\x70\x45\x2c"
505
++	"\x4e\x28\x59\xea\x02\x35\x8f\x45"
506
++	"\x26\xc1\xcf\x9d\x00\x6f\x35\x4e"
507
++	"\xf3\x87\x57\xe1\x2f\x0c\xb1\x25"
508
++	"\xb9\x4c\x27\x72\x64\xf3\x65\x84"
509
++	"\xc7\x74\x77\xce\xc1\x3a\x65\x1d"
510
++	"\x1d\xb3\x7c\x86\xb0\x40\xeb\x74"
511
++	"\xce\xed\xce\xba\x17\xff\x75\x47"
512
++	"\xd7\x70\x65\x65\xd0\xdc\x34\x26"
513
++	"\x7e\x93\xc6\x1c\x73\xd3\x0e\xee"
514
++	"\x2a\x2b\x06\x3a\x99\xc6\xed\xa0"
515
++	"\x12\x0f\x22\x74\xbc\xcf\x1b\x11"
516
++	"\x54\x55\x2d\x86\x0b\xb4\x6c\x22"
517
++	"\x76\xba\x8f\x91\x43\x2a\x24\xc1"
518
++	"\x16\x8a\xe4\x0c\x4f\x4b\x09\x5c"
519
++	"\xf1\xde\x9e\x62\x70\x92\x79\x62"
520
++	"\xe0\xd5\xbf\x59\xac\x16\x6d\x94"
521
++	"\x32\x1e\xfe\xb0\x08\xf2\x83\x4a"
522
++	"\xd8\xb0\xbe\x9d\x62\x92\xa5\xd3"
523
++	"\x01\x43\x06\xa7\x02\x16\x16\x79"
524
++	"\x3a\x1f\xd0\x53\x72\xcf\xa9\x57"
525
++	"\xe9\x0e\x2f\x89\x73\xfd\xa5\xc5"
526
++	"\x40\xc2\x55\x3d\x8c\x87\x49\xee"
527
++	"\x14\x82\x31\xec\x5c\x59\xd6\xc9"
528
++	"\xd0\xef\x16\x74\x56\xb9\x0d\x3b"
529
++	"\x86\xb2\x65\x5f\xf1\x50\x37\x4c"
530
++	"\x7b\x75\x91\x6d\x0e\xe8\x32\x91"
531
++	"\xb2\xd7\xa9\x8b\xfe\x2d\xca\x8e"
532
++	"\x04\x71\x3b\x50\x70\xd8\x1e\x02"
533
++	"\xf2\x9f\xe7\x16\x73\xaf\xeb\x3e"
534
++	"\x63\x24\xf0\x19\x9b\x87\x5c\x43"
535
++	"\x6b\x84\xd0\x4b\x74\x2e\xbd\xf6"
536
++	"\x64\x2a\xac\x6b\x72\x10\x8d\xfd"
537
++	"\x95\xb0\x2a\x1a\xb5\xfe\x71\xcb"
538
++	"\xf0\x1f\xcb\xb5\xf8\x3b\x53\xc1"
539
++	"\xcb\x48\x23\x77\x48\xc4\xa8\xaa"
540
++	"\x1e\x32\x6b\xee\xb4\x48\xfe\x47"
541
++	"\xf5\x71\x6b\x8e\xbb\x07\x77\x57"
542
++	"\x8b\xd6\xc4\x02\x12\x66\x23\x93"
543
++	"\x67\xbe\xcd\xd5\x0e\xd6\x29\xb6"
544
++	"\x57\x2e\xe3\xe8\x13\xa5\xbb\xcb"
545
++	"\xe3\xef\xf2\x0e\xdc\xf8\x5d\x08"
546
++	"\xb6\x9c\xb0\x73\xf6\x16\x40\x0e"
547
++	"\xbe\xea\x15\x41\xd4\xe2\xa1\xa5"
548
++	"\xce\xa9\xdf\x21\x02\x81\xc1\x00"
549
++	"\xee\xc0\x09\xbb\xd0\x11\x81\x81"
550
++	"\x37\xce\x0b\xa6\xd6\xc7\xf6\x58"
551
++	"\x45\x5e\x94\x63\xf0\x8e\x15\xeb"
552
++	"\x5d\x72\xd9\x10\xfd\xb9\xe1\x30"
553
++	"\xe0\x04\xde\x70\xb7\xbe\xb9\x68"
554
++	"\xc8\xbb\x1d\x9b\x58\x35\x08\x8f"
555
++	"\xa0\x10\x26\x30\xee\xce\xf8\x7b"
556
++	"\xf5\x20\x4c\x69\xab\xf0\x47\x6d"
557
++	"\x9a\xa9\x3f\xe3\x05\xeb\xdb\x15"
558
++	"\x4e\x4f\x9d\x8f\x67\x94\xda\x02"
559
++	"\x1a\x59\xe2\xc8\x23\x7e\xc1\x96"
560
++	"\x6f\x1e\xd3\x86\x04\xa1\xdd\xcb"
561
++	"\x0f\x0e\xa4\x14\x77\xae\x95\xba"
562
++	"\x1d\x17\x40\x1d\x5b\xab\x49\x4d"
563
++	"\x96\x6c\x97\xd8\x79\x49\x39\xf9"
564
++	"\xf9\x41\x38\x09\x5f\x2f\xad\x6e"
565
++	"\x84\xbc\xba\xfd\x35\x45\x3a\xa8"
566
++	"\x6c\x50\x2a\x3c\x99\xd8\x07\xc4"
567
++	"\xe0\xae\xf3\x13\x62\x80\xa7\x05"
568
++	"\x5c\x6f\xeb\x53\xaf\x9d\x90\xf9"
569
++	"\xf6\x0c\x81\x52\x24\xc2\x8b\xa5"
570
++	"\x8d\xc5\x69\xeb\x8f\xe0\x79\xc4"
571
++	"\x12\xd0\x1b\x31\x03\x2d\xe9\xfd"
572
++	"\x1e\x7e\x71\x41\xa0\x2e\x6c\x51"
573
++	"\x02\x81\xc1\x00\xeb\x12\x4f\x16"
574
++	"\xd1\x7a\x26\x8e\xd9\x12\xa3\x1a"
575
++	"\x63\xc8\x18\xb7\x8e\xb0\xbb\xa7"
576
++	"\xca\x7a\x1b\xcc\xe6\xf7\x9a\xb3"
577
++	"\x32\x13\xe4\xec\x54\x46\xf4\xed"
578
++	"\xd9\xea\x12\xfb\x46\x43\x5e\x7b"
579
++	"\xdf\xe1\x0c\xa1\xe2\xe3\x00\xd5"
580
++	"\x82\xf9\x7a\x77\x10\x1b\xa2\xfb"
581
++	"\xe6\x4b\x1a\x9f\x16\x38\x17\x6a"
582
++	"\x91\x25\x23\x16\x76\x57\x3b\x41"
583
++	"\x37\xda\x79\xdf\x1d\x67\x21\x43"
584
++	"\xff\xcd\xf8\x50\x14\xe8\xfd\x10"
585
++	"\xbb\x5f\x72\xb3\x10\xff\x92\xeb"
586
++	"\x4d\x4f\xaf\x4a\xa3\x09\x6e\x17"
587
++	"\xc6\x05\x76\x43\xf9\x3e\xe6\xb7"
588
++	"\xe5\xd5\x63\xe2\x8d\xc7\x5a\xbe"
589
++	"\xda\x5c\xd0\xa1\xb0\xf6\x15\x2b"
590
++	"\xbb\xd6\x92\x4a\x5e\xbb\x40\xe9"
591
++	"\x3d\x87\xd4\x6d\xff\x0e\x3b\xed"
592
++	"\xcd\xa9\x04\xd3\x7f\x63\xa3\x52"
593
++	"\x82\x1a\x3b\x03\xe1\x3a\x92\xb6"
594
++	"\xf1\x9f\xeb\x77\x80\x8a\x44\x36"
595
++	"\xf6\x86\x94\xef\xb1\x31\xed\x76"
596
++	"\xdd\x66\xe5\xab\x6c\x9b\xad\xa5"
597
++	"\xae\x2d\x6c\x57\x02\x81\xc0\x61"
598
++	"\xb2\x8f\xc9\x1d\x11\xac\xce\xf5"
599
++	"\xc9\x09\x17\x92\x98\x6d\x04\x1e"
600
++	"\x0e\xdf\xe6\x2d\x8f\xd7\x04\x63"
601
++	"\x4f\x15\xe8\x50\x0b\x7a\x4d\x07"
602
++	"\xbe\xb6\x4f\xa5\xc1\x14\x19\xfe"
603
++	"\xda\x22\xf9\x68\x94\xfb\x15\xda"
604
++	"\xc8\x00\xf8\xd1\x20\x3c\xaa\x6c"
605
++	"\xda\x74\xaa\x61\x43\x87\xd7\x20"
606
++	"\x0c\xd6\x29\xce\x48\x7f\x74\x2e"
607
++	"\x81\x81\xd6\x26\xea\xd0\x73\x3f"
608
++	"\xd9\x3c\x65\xed\xb0\x77\x03\x5a"
609
++	"\x21\x61\x29\x5c\x47\xe8\x7c\xa9"
610
++	"\x82\xb2\x3d\xf5\xe3\xa9\x3d\x69"
611
++	"\x9e\x14\x0c\x6f\x70\x9e\x24\x73"
612
++	"\xc3\xa8\x37\x5b\x1a\x4d\xf1\x2e"
613
++	"\xc0\x33\x70\x12\x55\x6e\x40\xe5"
614
++	"\x6c\x5d\x90\x33\xf6\x4a\x54\x95"
615
++	"\x4e\x10\x9a\x8f\xd1\xc9\x0c\x15"
616
++	"\x6d\x41\xe6\xd2\xce\x16\x8a\xa9"
617
++	"\x12\xdb\x57\x79\x6b\x9e\xe1\xca"
618
++	"\x7f\xbf\x83\x9f\xab\x44\x7d\xd0"
619
++	"\x8f\xd2\x12\x24\xe4\x14\xaf\xd9"
620
++	"\x8a\xf3\x35\x91\x39\x7e\xa0\xa7"
621
++	"\x93\xd2\x40\xaa\x8d\x94\xa1\x02"
622
++	"\x81\xc1\x00\x95\xae\xd3\xe3\xa0"
623
++	"\xc1\x9a\x39\xcd\xa9\x9b\x68\x1b"
624
++	"\x6f\x77\xa5\xb2\x5b\x81\x32\x87"
625
++	"\xb0\x97\x71\x33\x05\x29\x61\xbf"
626
++	"\x9a\x81\x63\xa7\x0a\x83\xbd\xcc"
627
++	"\xcb\xcb\x08\x6b\xa6\x4c\x4c\xae"
628
++	"\xb3\x3b\xfa\xfd\x61\x34\xcf\xc0"
629
++	"\x15\xa1\xd0\x9c\xd6\x2c\x43\x20"
630
++	"\x52\x64\x82\x36\x80\xc3\x10\x5d"
631
++	"\x99\xfb\x2c\xbb\x70\x32\x50\x06"
632
++	"\x03\xbd\x24\xc0\x31\x42\x32\x6d"
633
++	"\x79\xb7\x0b\x2f\x35\x68\xa7\x35"
634
++	"\xd8\xc2\x4d\x99\x9e\x53\xec\x37"
635
++	"\x0f\x6d\x7c\x26\x32\xc4\x02\xa9"
636
++	"\x5a\x23\x03\x87\x7b\x71\x28\x5a"
637
++	"\x56\x35\xc3\x36\x2a\x61\xf3\x33"
638
++	"\x52\x74\x9a\xf0\xf6\xd1\x66\x46"
639
++	"\xb6\x8b\xf2\x85\x3d\xd1\x48\x73"
640
++	"\xa0\xc1\x38\xc5\x77\x47\xdb\xd5"
641
++	"\xe0\x31\x2d\x87\x69\x67\xbf\x0b"
642
++	"\x0f\x2e\xd2\xfa\xa0\xf4\x79\x3f"
643
++	"\x84\x68\x48\x70\xf6\x1a\x17\xb1"
644
++	"\x84\xe2\xe3\x79\xbe\x64\x0a\x13"
645
++	"\x53\x09\x1d\xce\x0b\x97\x57\xef"
646
++	"\x80\x07\x03\x02\x81\xc0\x26\xb1"
647
++	"\x98\x36\x17\xa1\x6e\x69\x48\x2b"
648
++	"\x58\x51\xbe\x3a\x78\x12\x0b\x4d"
649
++	"\xf6\x36\xe3\x79\x67\xab\x50\xe9"
650
++	"\x43\x11\xff\xa1\x5b\x70\x05\x61"
651
++	"\x96\x89\x83\x3a\xec\xcb\xaf\x12"
652
++	"\x81\x4c\xfc\xe5\xc1\x4c\x51\xdc"
653
++	"\x5d\x06\xbe\x97\xbe\x38\xf7\xf6"
654
++	"\x47\xd7\x3b\xfe\xbf\x03\xb2\x2e"
655
++	"\xad\x82\xec\x37\xf9\x14\xb1\x28"
656
++	"\xf9\xff\x3b\x8f\xd6\x0a\xd6\xbf"
657
++	"\x5c\xa0\x13\x39\x08\x9f\x1b\x79"
658
++	"\xcf\xc9\xb5\x83\xe8\xb1\x20\x62"
659
++	"\x27\xbe\x36\xa3\xec\xde\xb7\x70"
660
++	"\x9b\x48\x72\x23\xb0\xb1\xd0\x06"
661
++	"\x49\x65\xf0\x46\xe4\xe1\xc7\xa1"
662
++	"\xa7\x43\x13\x26\xe8\xd8\x9d\x41"
663
++	"\x03\x6c\xf6\x6f\x3a\x91\xd9\xef"
664
++	"\x4d\xca\xa3\x2e\x48\x04\x60\xbf"
665
++	"\xb3\xb8\x5e\xa8\x96\x1b\x56\x60"
666
++	"\xd6\x89\x9a\x13\xd4\xad\x5c\x5a"
667
++	"\x5f\x0c\x17\x7c\x78\x2c\xa5\x13"
668
++	"\x8b\x6f\x50\x21\x13\x8b\x71\x9d"
669
++	"\xa3\xe9\xf2\x83\x9e\x23\x40\x04"
670
++	"\x09\x29\x1a\x1f\x4f\x72\x00",
671
++	.key_len = 2151,
672
++	/*
673
++	 * m is SHA384 hash of following message:
674
++	 * "\x56\xff\xeb\x36\xf2\xcc\xff\x84"
675
++	 * "\x8c\xf5\x8c\xa5\xc8\xc8\xaa\x67"
676
++	 * "\x77\x6c\xd5\x95\xcc\x37\x82\xf2"
677
++	 * "\x8d\xd8\x7c\x1a\x51\xf3\x0d\x71"
678
++	 * "\x1e\x0f\x89\x90\x36\x49\x31\x71"
679
++	 * "\x3c\xd0\x58\xfc\x58\x3f\x85\x49"
680
++	 * "\x6b\xb9\x8e\x07\xd8\xfe\xbd\xe0"
681
++	 * "\x8f\x22\x80\x24\x3e\x3c\x54\xe5"
682
++	 * "\xf1\xe4\xe4\x4d\x12\x16\x21\x06"
683
++	 * "\x73\xae\x93\x89\x17\x12\x14\x0e"
684
++	 * "\xfc\xba\x56\xa6\xd9\xfe\x56\x03"
685
++	 * "\x5d\x9c\xa6\x57\x50\xa5\x1f\xd0"
686
++	 * "\x5a\x70\x0e\x6d\x4d\x82\x04\xc2"
687
++	 * "\x60\x68\x06\x2e\x02\x1a\x7c\x36"
688
++	 * "\x79\xd0\xca\x5e\x0c\xaf\x55\x00"
689
++	 * "\x51\x31\xd0\x17\xd8\x82\x6f\x79"
690
++	 * "\xdd\x95\xa4\x93\x48\x8e\xde\xc7"
691
++	 * "\x19\x63\x55\x2f\xff\xa7\x35\x2d"
692
++	 * "\xb3\x7f\xd9\xbf\x1f\xfd\x66\xfe"
693
++	 * "\x03\x57\xfb\x2b\x49\x1d\x25\xb6"
694
++	 * "\x97\x05\xd6\x37\x48\x30\xb5\x53"
695
++	 * "\x90\xea\x5b\x72\xad\x59\x57\x4d"
696
++	 * "\x5d\x19\x34\xfe\x38\x06\x7f\xb4"
697
++	 * "\xcd\xed\xc3\xfe\xe2\x6e\xb1\x74"
698
++	 */
699
++	.m =
700
++	"\x3e\xea\x5d\xc1\x7d\x4a\x8e\x82"
701
++	"\x29\x12\x8f\xc4\x8b\xbd\xea\xfd"
702
++	"\x7d\x6e\x45\x5d\xcc\xf6\xf0\x36"
703
++	"\x70\xb7\x14\x02\x53\x50\xca\xcf"
704
++	"\xe6\xa6\x2e\xa3\xe4\x1e\x8f\xdd"
705
++	"\x30\x07\xde\x32\x97\x8c\x15\xdb",
706
++	.m_size = 48,
707
++	.c =
708
++	"\x71\xcc\x88\x5c\xde\x7e\x3c\x8c"
709
++	"\x06\xf7\x7b\x74\x4f\x9c\x9f\x7e"
710
++	"\xa8\x1f\x6f\xf1\xa7\xc9\x58\x6d"
711
++	"\x73\x13\x65\x30\xb6\x1f\x2b\xe2"
712
++	"\xe2\xfd\x97\x91\xf0\x9e\xb4\xb4"
713
++	"\x7e\x8c\x49\xa8\xd3\x06\x88\xd1"
714
++	"\x34\xeb\x3b\x04\x08\x86\x2b\xaf"
715
++	"\x40\x86\x9a\xeb\xfa\x54\xf7\x5a"
716
++	"\x7f\x10\x0c\x49\xe3\x51\x3f\x69"
717
++	"\xae\x13\x5d\xf1\xb2\x67\x6c\x32"
718
++	"\x01\x5a\x01\x0e\x22\xda\xa7\x36"
719
++	"\xc9\x46\xf5\x9f\xb8\x1b\x48\x83"
720
++	"\x89\xdd\x1f\xf2\x35\x21\x2d\x49"
721
++	"\x06\x23\xbe\x10\xaa\x94\x34\xf0"
722
++	"\x8c\xb2\x41\x81\x73\xba\x7d\x36"
723
++	"\x5c\x55\x17\x6a\x2c\x9b\x22\xab"
724
++	"\x2a\x3d\x1d\xa6\x09\x11\xe1\x71"
725
++	"\x72\x78\xfc\x97\x6e\x51\x9c\xea"
726
++	"\xd9\x0d\xcc\x52\x0d\x9e\xfc\xf6"
727
++	"\xad\x75\x21\xb7\x90\x1b\x93\xe0"
728
++	"\xff\x4a\x72\xb2\x19\x29\x39\x36"
729
++	"\xfd\x5d\xe5\x15\x91\xc6\x52\x34"
730
++	"\xd6\xfb\x36\xaf\xc8\x48\xf8\x62"
731
++	"\xa6\xf5\xbf\x0e\x39\x30\xb1\x2a"
732
++	"\xe6\xc1\x48\x67\xbc\x6e\x52\x34"
733
++	"\xed\x74\xbb\x2e\x67\x33\xac\xf7"
734
++	"\x28\x45\xd4\xee\xec\xb0\x69\xf1"
735
++	"\xb1\xdf\xf7\x94\xa4\x5b\x03\xc1"
736
++	"\x3c\x1a\x02\xc9\xbd\xf7\xcd\x19"
737
++	"\x1f\x05\x7b\xdb\x7f\x12\xc0\x98"
738
++	"\xf2\xc5\xb0\x14\x35\x8a\x53\x34"
739
++	"\xb7\x67\x64\xca\x58\x2c\xd3\x0f"
740
++	"\x28\x36\x3d\xad\xfc\x4f\xdd\x07"
741
++	"\x96\xa0\x2b\xf0\x3e\xd3\x4a\xd7"
742
++	"\x97\xfa\x7c\x42\x2e\xd3\xc9\x26"
743
++	"\x25\x3f\x70\xda\xd3\x8a\xa7\xd7"
744
++	"\x9e\x99\x8d\x71\x17\x0c\x86\x6d"
745
++	"\x2b\x5b\xb8\x22\xac\x31\x5d\x0e"
746
++	"\x0c\xf9\xe7\x74\xdf\x75\x1a\xfa"
747
++	"\x73\x3b\xa8\xdc\xd0\x86\x0f\x9f"
748
++	"\xe6\x42\xa9\xe6\xcd\x8e\xfa\x35"
749
++	"\x2a\x4f\xc5\xea\x70\x15\x22\xe1"
750
++	"\x5f\x70\x65\xb2\x60\x0e\x82\x7a"
751
++	"\x58\xef\x01\x7d\x16\x23\x33\xfc"
752
++	"\x29\x89\xeb\x43\xf1\x9c\xa7\xf4"
753
++	"\x28\x7d\x30\x8a\x93\x39\xfd\x53"
754
++	"\x97\x57\x81\x57\x70\xc6\x1f\x94"
755
++	"\x1e\xa5\xed\x69\xfb\x6a\xd1\xe6",
756
++	.c_size = 384,
757
++	}, {
758
++	.key =
759
++	"\x30\x82\x0b\x28\x02\x01\x00\x02"
760
++	"\x82\x02\x01\x00\xb0\xf8\x80\x65"
761
++	"\x86\xb7\x22\xf4\x14\x07\x04\xf0"
762
++	"\x00\xf5\x1f\xc9\x03\x28\xad\x8e"
763
++	"\xc8\xe4\x0d\xeb\x69\x14\xf9\xcc"
764
++	"\x4a\xfe\x29\x63\x14\xb9\xcc\x6b"
765
++	"\xbc\x16\x5b\xf4\x27\x94\x4c\xa0"
766
++	"\xd6\x68\x6b\xfd\xab\x52\xfe\xd2"
767
++	"\x53\x3a\x3a\x86\xcd\x6a\x58\x4c"
768
++	"\xd8\x7a\xa3\xaa\x0f\xae\x92\xab"
769
++	"\x30\x8a\xc6\x96\x7b\xba\x04\xd4"
770
++	"\xc2\xea\xb4\xca\xfe\x7e\x84\x9a"
771
++	"\x69\x2e\xef\x11\x34\xd1\x0d\xa2"
772
++	"\x1b\x5b\x8f\xb2\x94\x54\xbb\xfa"
773
++	"\xd6\xff\xb0\x98\xec\xf1\x6c\xd1"
774
++	"\x61\x52\x1f\xcc\x92\x66\x7f\x95"
775
++	"\x0c\xd4\xe3\x4b\x54\x24\xb0\xc8"
776
++	"\xa2\x05\x00\xa9\x93\x88\x64\x82"
777
++	"\xa9\x35\xa8\xc6\x06\xbd\xc9\x10"
778
++	"\x88\x91\xf9\xe8\x60\x9a\xbe\x17"
779
++	"\xc3\x9e\xf4\x6b\x92\xf5\xb4\xe7"
780
++	"\xa3\x24\xcd\xa9\x42\xb8\xfd\x0e"
781
++	"\x73\x4b\x2a\x2b\xfc\x2d\x75\x48"
782
++	"\xf8\x8f\x1b\xad\xd8\xab\xa9\x5a"
783
++	"\x8c\xde\x63\x12\xe8\x89\xb4\x38"
784
++	"\x5e\xaa\xfe\xf1\x39\xae\xd6\xdf"
785
++	"\x76\x4f\xb6\xe3\x4a\x5b\xd3\xe1"
786
++	"\x4d\xe8\x2e\xe5\x9f\xd2\x56\x51"
787
++	"\x1b\x5f\x66\x15\x4e\x0d\xfa\xed"
788
++	"\xb5\x74\xdd\x40\x51\xdc\x72\x56"
789
++	"\x62\xd9\x21\xd2\x73\xc0\x34\x6d"
790
++	"\x67\x34\xb4\xcb\xfc\xc3\x83\x44"
791
++	"\xec\xba\x5c\x44\x66\xb5\xb7\xee"
792
++	"\x50\x3f\xa6\x79\x5c\xb5\x7d\x93"
793
++	"\xc1\x6c\x05\x34\xef\xb9\xcd\xf6"
794
++	"\xb1\x8d\x26\xec\x39\x12\x31\x5d"
795
++	"\x12\x68\xd2\x9c\xe2\x74\xc4\xe5"
796
++	"\xbf\x46\x6e\xdd\xb6\x92\xee\xd3"
797
++	"\x9f\x7b\x4b\xe4\x8b\xde\xf2\x3f"
798
++	"\xd4\x0e\x5c\x11\x40\x9a\x50\xac"
799
++	"\x81\xab\x9f\x60\xf5\xad\xa7\xa2"
800
++	"\xb9\xf9\x57\xe8\xc0\xf3\x24\x1f"
801
++	"\xa1\x89\x95\x31\x19\x32\x66\xd5"
802
++	"\x8a\xf5\xe4\x66\x65\xf8\xa1\x5a"
803
++	"\xfb\xb0\xc6\xef\x47\x87\x4a\x60"
804
++	"\xdd\x0c\xa5\xfe\xd5\x63\xc4\x39"
805
++	"\x2c\x2e\xd8\xb1\x7b\x53\xa6\x28"
806
++	"\xa1\x9f\x1b\xf1\xda\x28\xd9\x7e"
807
++	"\xdf\x15\xc2\x64\x61\x81\x55\x0a"
808
++	"\x79\x3d\xe6\x9f\x1e\x59\xc7\x74"
809
++	"\x16\xb0\x75\x48\x02\xb5\x76\x08"
810
++	"\x64\x10\x53\x6c\xba\xfa\x8e\x93"
811
++	"\x1b\x55\xb2\x40\x93\x4d\x30\x1b"
812
++	"\x1f\x11\xc0\x8a\x7e\x73\xe1\x45"
813
++	"\x46\x95\x5f\x2a\xde\x09\xe5\x11"
814
++	"\x1f\xa0\xb3\xa2\x29\x08\xac\x96"
815
++	"\x28\x3b\x8a\xa1\x1e\xb2\x22\x8c"
816
++	"\x5e\xc1\xe5\x26\x5b\x9f\x62\xa1"
817
++	"\xb2\x01\xa2\xba\xa0\x75\xfa\xd3"
818
++	"\xa4\x23\xd4\x26\x82\xeb\x39\x0a"
819
++	"\x0c\xc8\x0d\x8a\xc3\xda\x92\x62"
820
++	"\xd1\x5a\xe1\x3f\x4d\xd7\xf2\x70"
821
++	"\x32\x9f\x4e\xc9\x24\x18\x34\xfc"
822
++	"\x5e\xc6\x05\x00\xa8\x3d\x86\x02"
823
++	"\xf8\x10\xa4\x4b\x6b\xb9\x2c\x84"
824
++	"\x49\xec\x22\x45\x02\x82\x02\x00"
825
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
826
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
827
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
828
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
829
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
830
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
831
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
832
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
833
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
834
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
835
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
836
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
837
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
838
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
839
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
840
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
841
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
842
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
843
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
844
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
845
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
846
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
847
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
848
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
849
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
850
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
851
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
852
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
853
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
854
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
855
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
856
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
857
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
858
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
859
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
860
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
861
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
862
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
863
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
864
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
865
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
866
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
867
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
868
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
869
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
870
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
871
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
872
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
873
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
874
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
875
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
876
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
877
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
878
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
879
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
880
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
881
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
882
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
883
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
884
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
885
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
886
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
887
++	"\x00\x00\x00\x00\x00\x00\x00\x00"
888
++	"\x00\x00\x00\x00\x00\x01\x00\x01"
889
++	"\x02\x82\x02\x00\x2a\x65\x1d\xbd"
890
++	"\x34\xac\xa2\xbe\xfe\x1d\x40\x5d"
891
++	"\x8e\x9d\x2a\x64\x29\x51\x91\x62"
892
++	"\x67\x55\xda\xcf\xce\x78\xab\xee"
893
++	"\xf8\xf8\x32\x49\xfe\x29\x14\x83"
894
++	"\xaa\xa7\x60\x97\xf8\xf3\x59\xf8"
895
++	"\x1d\xe5\x1e\x19\xc2\xf5\x3a\xfe"
896
++	"\x7f\xd9\xaf\x33\xa3\xfa\x19\xf5"
897
++	"\x2e\xd7\x12\x66\x27\x23\x97\x17"
898
++	"\x53\xa5\xab\x35\x59\xa6\x92\x89"
899
++	"\xb5\xb8\x2c\x5f\x84\xe0\x22\x3c"
900
++	"\x2b\x7e\x86\xdf\x04\x5c\x20\x7b"
901
++	"\xf9\x39\xd2\x0e\xe1\xe1\xfa\xb6"
902
++	"\x78\xd3\x00\x27\x62\x7b\xe3\xa9"
903
++	"\xb5\x3a\xcb\x4b\x62\xb7\x13\x51"
904
++	"\x4d\xa5\xa2\x5d\xe5\x66\x74\xc3"
905
++	"\x5b\xac\xff\x1f\xa0\xac\x48\x07"
906
++	"\xd5\x29\x79\xa9\x16\xec\x58\x42"
907
++	"\x91\xb5\x06\xbd\x58\x87\x39\x8a"
908
++	"\xcf\xde\x40\x87\x94\xc9\x2f\xf1"
909
++	"\x5d\xef\xef\x24\xe1\x4b\x17\xb4"
910
++	"\x62\x82\x5b\x33\xf6\x51\x9d\x8b"
911
++	"\x41\xa0\x66\xed\x1a\xbe\xe4\xef"
912
++	"\x40\x57\xf6\x3c\x0d\x61\x0f\xbf"
913
++	"\x81\x4e\x4d\x8c\xd4\x58\xc2\x38"
914
++	"\xfe\x4a\xd2\x71\x58\xda\xee\xc3"
915
++	"\x46\xba\x9c\xa1\x7d\xcc\x11\xc9"
916
++	"\x94\x59\x22\x47\x70\x4f\x81\x11"
917
++	"\x79\x2a\xe9\xe6\x02\xb6\x60\xdd"
918
++	"\xb9\x08\x73\x45\xcb\x5c\xfc\x32"
919
++	"\x49\x4b\x23\x14\xcb\x14\xbb\x59"
920
++	"\xc3\xac\x51\x76\x41\x74\xbe\xff"
921
++	"\x64\x52\x1b\x3b\x09\x76\xa1\xaa"
922
++	"\xbb\x1f\xda\xe4\xb9\x8d\xd7\x7d"
923
++	"\x6b\xad\x3f\x87\xac\xe5\x5f\x6d"
924
++	"\x86\x66\xf1\x1a\x48\xf0\xba\xe8"
925
++	"\x9c\x49\xb7\x31\x1b\x07\xad\x28"
926
++	"\x41\x0a\x77\x75\x91\x13\x26\x82"
927
++	"\x7f\x4a\x9f\x62\x96\x9f\x80\x54"
928
++	"\xa4\xa5\x33\xd0\x6d\x84\x3c\x3f"
929
++	"\x9e\xd8\x65\x98\x63\xe2\x77\x76"
930
++	"\x8f\x89\x60\x68\xcf\x04\x63\x35"
931
++	"\xbd\xb8\xc0\x5b\xe8\x2e\xb6\xb0"
932
++	"\x5a\x06\x6c\x53\x02\x98\x1c\x51"
933
++	"\x7f\x6b\x85\x46\x66\x7a\x08\xc9"
934
++	"\x67\xca\x30\x40\xca\x5c\x4b\x85"
935
++	"\x68\x4b\x7b\x9d\x29\x50\x5b\x4e"
936
++	"\xac\xcb\x9b\xa4\xb9\xe2\x47\x29"
937
++	"\xdb\x08\x92\x20\xba\x9d\xf8\x11"
938
++	"\x95\x6c\xc6\x22\x57\xb8\xd6\x76"
939
++	"\x5e\x64\x78\x2e\x62\x46\x8c\xd8"
940
++	"\x41\xbc\x26\x2a\x84\xa4\x7b\x62"
941
++	"\x23\x2e\x78\x12\xb5\x7b\x9b\x89"
942
++	"\x1b\xae\x7a\x45\x4b\x3c\xf4\x15"
943
++	"\xac\xa4\xe8\xe3\xe0\x64\x80\x1a"
944
++	"\x31\x95\xaf\xc5\xd9\x55\x4d\x4e"
945
++	"\x68\x47\x0d\xa7\x5e\xdd\x5d\x70"
946
++	"\xe9\xc2\x0a\x32\x7a\x11\x62\x92"
947
++	"\x5e\x37\x06\x67\x4d\x68\x87\x65"
948
++	"\xaa\xdb\x41\x35\x6e\x36\xba\xb6"
949
++	"\x64\x7c\x79\x84\xbe\x35\x16\x43"
950
++	"\xdf\xf9\xd9\x16\xc1\x49\x62\x49"
951
++	"\x5f\x14\x0a\x90\x5c\x60\xaf\xee"
952
++	"\x09\xea\xce\x87\x71\x11\x24\xce"
953
++	"\xf3\x29\x61\x81\x02\x82\x01\x01"
954
++	"\x00\xe3\xe0\xd4\x64\xb3\xa8\x8f"
955
++	"\x16\xd0\x33\xfb\xfc\xca\xc5\x4c"
956
++	"\xbc\xb7\xc6\xe8\x6c\x71\x55\xbf"
957
++	"\xe1\xfa\x6e\x12\x48\x3d\x94\xae"
958
++	"\xb9\x98\xf4\xe1\x59\x24\xfd\x79"
959
++	"\x73\x6e\xc8\xad\x90\x83\x38\x02"
960
++	"\x8d\x27\x4c\x87\x56\x5c\xed\x66"
961
++	"\xbf\xa0\x51\x53\xfa\x7c\x87\x0b"
962
++	"\xe5\x79\xf5\xda\x3f\x2b\x11\xf5"
963
++	"\xb4\x1c\xed\x6a\x11\xc6\xfe\x73"
964
++	"\x2f\x86\x76\x20\x46\x0f\x9b\x84"
965
++	"\x76\x33\xaa\xc5\xb4\xfa\xe9\x16"
966
++	"\xbb\x10\xe5\x0c\x3f\x02\x68\x69"
967
++	"\x10\x81\x30\x4a\x90\x29\xd7\xfb"
968
++	"\x48\xc7\x98\x59\xb5\xbf\xae\xf6"
969
++	"\x76\x8f\x6b\x12\xaf\x0d\xc6\x2e"
970
++	"\x2c\xfe\x35\xdf\x62\x01\xb7\xee"
971
++	"\x49\xd5\x29\x49\x43\xe4\xfe\x3c"
972
++	"\x03\xeb\x7a\x04\x6a\xbc\xaf\x44"
973
++	"\xab\x7d\xe6\x65\xa3\x98\x9c\x77"
974
++	"\x03\x18\x4e\x90\x13\x3a\x47\x81"
975
++	"\x8b\x1f\x5d\x11\x6e\xfb\xe2\x56"
976
++	"\x52\x96\x38\x59\x48\xea\x4e\x9e"
977
++	"\x25\xe8\xa2\x20\x34\xa3\x90\x1f"
978
++	"\x01\xee\xa9\x73\xd9\xeb\xca\xbb"
979
++	"\x36\x76\xc7\x64\xeb\x74\xf7\x10"
980
++	"\x58\xd1\x77\x41\x91\x1e\xf5\x2b"
981
++	"\x86\x34\x3f\xe8\x34\x1e\x23\x01"
982
++	"\xf5\xd6\x36\x40\x60\x50\xec\xd5"
983
++	"\x22\x57\x75\x77\x75\x3d\xa5\x91"
984
++	"\xc5\x25\xf0\xc4\xe1\xab\x5b\xa0"
985
++	"\xb7\x48\xbb\x44\xff\x82\x2c\x40"
986
++	"\x5d\x02\x82\x01\x01\x00\xc6\xcf"
987
++	"\x64\x59\xf5\x21\xdf\x0d\x49\xcf"
988
++	"\x81\x4e\xb4\x73\x45\x65\xa2\x15"
989
++	"\x89\x33\xd8\x1d\x73\xa1\xa1\xbb"
990
++	"\x5e\x21\x34\x6e\xb5\xb9\x81\x54"
991
++	"\x9b\xcb\xc6\x8f\xf2\x23\xc0\x21"
992
++	"\xf3\x31\xcc\x27\xd5\xae\x43\xec"
993
++	"\xf2\x8e\x16\xc1\x58\x2b\xe9\x14"
994
++	"\x6c\x1e\x3e\x3a\x96\xe0\x3a\x7c"
995
++	"\x39\x19\x07\x00\x97\x8f\x84\xa1"
996
++	"\x91\x4e\xce\x3b\x2c\xc8\xe5\xfd"
997
++	"\x45\xad\xcb\x08\xf5\x9d\xf2\x38"
998
++	"\x80\x14\x5f\xef\xf4\xfb\x2d\xb1"
999
++	"\x47\x47\xf6\xf9\x1d\x12\xbf\x9d"
1000
++	"\x8e\x0c\xe4\xd0\xe9\x9a\x0e\x5d"
1001
++	"\x8c\xc7\xe1\xba\x89\x22\xa0\x56"
1002
++	"\x8d\x4b\xcb\xb2\x77\xa8\x82\x63"
1003
++	"\x21\x04\x7d\xbe\xe0\x9f\xa3\xbe"
1004
++	"\xaf\xe0\xeb\x6c\xc6\x4a\x71\x1b"
1005
++	"\xfa\xf2\x95\x7e\xf8\x44\x9e\x30"
1006
++	"\xb8\x7c\xe5\x9b\xc7\xe9\x67\x58"
1007
++	"\xe4\x53\xa6\x90\x2a\x65\x26\x68"
1008
++	"\x7b\xee\x4e\xe1\x09\xbf\x58\x3c"
1009
++	"\xc8\x76\xa1\x85\xd9\x71\x9a\xf9"
1010
++	"\xeb\xb7\x0f\xb3\x14\x5e\xca\xac"
1011
++	"\x8d\x4c\xd7\x94\xb2\x17\x1b\x13"
1012
++	"\x04\xb9\x89\x7c\x64\x58\x2a\x1e"
1013
++	"\x40\x28\xfe\x81\x7b\xcd\x64\x4b"
1014
++	"\x24\x96\x6a\xe7\x8c\xd3\x49\xaf"
1015
++	"\x51\xc6\xfd\xb7\x06\x00\x60\x7e"
1016
++	"\x6b\x0a\x88\x06\x87\xa4\x03\x6c"
1017
++	"\x94\x04\x3e\xcd\x02\x3c\xcf\x4d"
1018
++	"\x1e\xa1\x69\xe3\x6b\x09\x02\x82"
1019
++	"\x01\x01\x00\x84\x28\x48\x05\x7f"
1020
++	"\x0c\x2a\xb0\x18\x5f\x8d\xac\xb6"
1021
++	"\x0c\x66\xcc\xab\xe8\x77\xb3\x2c"
1022
++	"\xa7\x86\x79\x10\x3b\xf5\xee\x5f"
1023
++	"\x88\x73\x2c\xc0\x40\x84\xd0\xa6"
1024
++	"\x5b\x3a\xac\x6f\x7b\x82\xed\x64"
1025
++	"\xac\x7f\x0e\x4d\xd4\x5c\x49\x01"
1026
++	"\xeb\xcc\xc3\x25\xbf\x04\xed\x28"
1027
++	"\x7b\x49\xb2\xf4\x60\x59\x0a\x79"
1028
++	"\x78\x18\xff\x34\x27\x9c\x74\x62"
1029
++	"\xeb\xfe\xf1\x79\x11\xd8\xf5\xc8"
1030
++	"\xe7\x70\x92\xfc\xb3\xf5\xa5\x58"
1031
++	"\x3f\x06\x27\xc7\x4c\x8f\x25\x9b"
1032
++	"\xc7\xe1\xe6\xe8\x85\x91\x38\xba"
1033
++	"\x8b\xbf\xf8\x1d\x89\x85\xbd\x9a"
1034
++	"\x45\x66\x3a\xac\x42\x74\xbb\x81"
1035
++	"\x49\x86\x4e\x21\xc0\x2c\xa5\x32"
1036
++	"\x49\xf1\xb0\x70\x27\x59\x8e\x3e"
1037
++	"\xa8\x13\x36\x52\xc2\x98\xfd\x2e"
1038
++	"\x20\x97\xba\xbd\x71\x79\x50\xbf"
1039
++	"\x99\x3e\x8c\x54\xf4\x7b\x2a\x2b"
1040
++	"\x8a\x7c\xde\xaa\x79\xd7\x3a\x7e"
1041
++	"\x6a\x6d\x95\xc7\xf9\x36\x0e\xcb"
1042
++	"\x94\x7c\xb3\x8f\x8f\x37\x0e\x50"
1043
++	"\x2d\xad\x4d\xf9\x93\xdc\xd4\x6d"
1044
++	"\xa3\x4d\x9f\xf0\x93\x03\x3c\x6a"
1045
++	"\xc1\x3e\x81\xc4\x39\x5d\x95\x44"
1046
++	"\x56\xfb\xbf\x01\x5e\x6e\xd4\x8b"
1047
++	"\x05\xd2\x85\x38\x8e\x8e\x17\x4d"
1048
++	"\xd7\x8c\x64\x36\x44\xb1\xdb\x14"
1049
++	"\xbd\x89\x24\xc5\x34\x35\x7a\x8b"
1050
++	"\x5e\xc0\x7e\x8b\x77\xd0\x34\x3e"
1051
++	"\xd2\x5b\x21\x02\x82\x01\x01\x00"
1052
++	"\xc4\x7c\x86\x1e\x8e\x31\xca\xa3"
1053
++	"\xf4\x75\xfb\xc3\x50\x7e\xb8\x70"
1054
++	"\x88\xef\xa5\xe9\x32\x47\x71\x57"
1055
++	"\xa6\x63\x6a\xd5\x80\x5f\x86\x84"
1056
++	"\xef\x78\x32\x7e\x04\x21\x91\xdb"
1057
++	"\x99\x71\x34\x4c\xdc\x0b\xe6\x98"
1058
++	"\xd3\x93\x23\xea\x20\x3d\x38\x2a"
1059
++	"\x35\xb2\xb4\x64\x73\x76\x2e\x55"
1060
++	"\x30\x18\x43\xca\x23\x6c\x87\x5e"
1061
++	"\x15\x64\x25\x1b\x70\xa1\x75\x52"
1062
++	"\x9c\x53\x63\x81\x2f\x30\x0c\xa7"
1063
++	"\xec\x93\xc0\xa9\xe2\x63\x62\x88"
1064
++	"\xb8\x91\x03\xf4\xf0\xf7\x25\xaf"
1065
++	"\xb8\xe7\x3b\x54\x2c\xf4\xf8\x5b"
1066
++	"\x04\xa5\x9a\x94\x95\xd8\x68\xde"
1067
++	"\x6a\xfe\xff\xa8\x90\x8a\x32\xce"
1068
++	"\xbd\x06\xc1\xc4\x11\x8f\x0b\xab"
1069
++	"\x5b\x07\x04\x06\x54\x46\xed\xf6"
1070
++	"\xf6\xb1\x03\xa4\xaa\xf1\x90\xe7"
1071
++	"\x28\x3c\xd8\xa8\xbf\xb8\xe5\xac"
1072
++	"\x1d\x32\xf2\x7e\x66\x19\x07\x7d"
1073
++	"\x6e\xa7\x47\x0c\xb0\xb2\xa2\x92"
1074
++	"\x94\xdf\x85\xf4\x11\x11\x1b\x65"
1075
++	"\xb7\x18\x17\xc9\x95\xdf\x94\x5b"
1076
++	"\x57\x0d\x90\x9d\x08\x57\x72\x67"
1077
++	"\x79\x9f\xa3\x44\xc7\xc7\xc3\xd8"
1078
++	"\x8a\xcf\xd8\xf3\x6b\x0d\x87\xd0"
1079
++	"\xe7\xb5\x88\x54\x8d\x15\x89\xcd"
1080
++	"\xec\x7e\x34\x61\x69\xb1\x70\x62"
1081
++	"\x00\xfc\x10\x48\x99\x45\x72\xdb"
1082
++	"\x3b\x73\x1d\x1a\xd1\x02\x86\x9a"
1083
++	"\x98\xfb\x0c\x31\xd5\x58\x29\x19"
1084
++	"\x02\x82\x01\x00\x00\x87\x87\x9b"
1085
++	"\x3d\x45\x6c\xfb\x63\x20\xa1\xb9"
1086
++	"\xf5\x69\xce\x6b\x96\xae\x69\xf0"
1087
++	"\xe1\xf2\x8b\x39\x2a\x18\xc8\xca"
1088
++	"\x58\xc1\x30\x2f\x15\xca\x93\x89"
1089
++	"\x38\x37\x83\x85\x6e\x09\x5b\xad"
1090
++	"\xac\x43\x23\xa3\x19\xfd\x1d\xc8"
1091
++	"\xa2\x8f\x75\x55\xc8\xf7\x0e\x37"
1092
++	"\xa8\x52\xd1\xb6\x94\x03\xc9\xe1"
1093
++	"\xbf\xde\x4f\xd9\x3c\xa0\xc4\x2d"
1094
++	"\x7d\x6a\x57\x02\xb6\x17\x05\xd7"
1095
++	"\x0d\x43\xce\xf0\x2b\x95\xb3\x31"
1096
++	"\xdf\x96\x03\x36\x5e\x5d\xed\xbd"
1097
++	"\x71\xc3\xf2\x64\x2c\x3d\x3b\x64"
1098
++	"\xfa\x3b\x83\x94\x6d\x07\xda\x52"
1099
++	"\x44\x60\x51\xe5\x4b\xcf\x1d\xec"
1100
++	"\x50\x50\xa6\xea\x39\x40\x18\x17"
1101
++	"\x1d\xd8\xd2\xdf\xc9\x4e\x52\xf4"
1102
++	"\x92\x95\x49\xd6\x3d\x1e\x03\xa2"
1103
++	"\x85\xd7\x5c\xa4\x84\x6c\x80\x22"
1104
++	"\x63\x14\x6c\x41\x20\x23\xbb\x54"
1105
++	"\xc7\x05\x5f\xb7\xb4\x4e\xbd\x79"
1106
++	"\x7d\xeb\xb6\x47\xcc\x70\xeb\x0e"
1107
++	"\x98\x12\x09\x44\x7e\x22\x34\x6a"
1108
++	"\x11\x17\x2f\xdd\xe2\xac\x51\xe9"
1109
++	"\x97\x1c\xb1\xe9\xa2\x3e\xb2\xce"
1110
++	"\x25\x9d\xb6\x67\xed\x11\x93\xa8"
1111
++	"\x62\x49\xcb\x35\x41\xd2\xdd\x9b"
1112
++	"\xb5\xb4\xcb\xcf\xd3\xd5\x09\xc4"
1113
++	"\xfe\xfe\x49\x01\xc7\x0a\xe8\x9d"
1114
++	"\xe3\x09\xa9\x3d\x73\x7f\x20\x8f"
1115
++	"\xbb\x56\xda\x27\x28\x39\xbc\xf6"
1116
++	"\x59\xfe\x77\xb2\x00",
1117
++	.key_len = 2861,
1118
++	/*
1119
++	 * m is SHA1 hash of following message:
1120
++	 * "\x15\x1a\x49\x51\x70\x2b\x73\xd2"
1121
++	 * "\xe6\xd0\xdc\x0d\x75\x72\x3a\xfd"
1122
++	 * "\x3f\x1c\xa8\x78\x3a\x3e\x1e\xfd"
1123
++	 * "\x69\x6e\xf5\x77\x45\x92\xce\x9b"
1124
++	 * "\x4b\xf7\x61\x12\xba\xbc\x18\xc4"
1125
++	 * "\x0d\x53\x5f\x79\x4e\x18\xfb\x42"
1126
++	 * "\x88\x7c\x78\x71\xae\x8a\xae\x76"
1127
++	 * "\x2c\x03\x0d\x89\xef\x80\x25\x46"
1128
++	 * "\x4a\x2a\x26\x70\xb5\xc3\x7a\xb7"
1129
++	 * "\x8e\x57\x03\xe9\xb5\x4a\x01\x76"
1130
++	 * "\xf7\xe5\xf8\x6b\xd8\x18\xc6\x71"
1131
++	 * "\x68\x17\xd5\x34\x73\xa6\x1b\x10"
1132
++	 * "\x3c\x14\xc4\x50\x8f\xf3\x28\x81"
1133
++	 * "\xe8\x51\x8a\x75\xfc\x16\x8d\x01"
1134
++	 * "\x37\x81\x30\x0b\x91\x62\x5b\x0f"
1135
++	 * "\x7a\xb6\x64\xde\x44\x62\x08\x18"
1136
++	 * "\xcc\xff\x00\x42\x4c\x39\xf8\x28"
1137
++	 * "\xf0\x89\xce\x33\x28\x41\x28\xcc"
1138
++	 * "\xf5\x19\x96\x7c\xbf\xe7\x10\x3d"
1139
++	 * "\x57\x10\x89\x88\x1b\x19\x0b\xb6"
1140
++	 * "\x84\xb2\xb6\x24\xe3\x82\x1b\xce"
1141
++	 * "\xfe\xf0\xf3\xa1\x9f\xb2\x1f\x04"
1142
++	 * "\x3f\x7f\xf7\x4f\x19\x8d\xcb\x83"
1143
++	 * "\x24\xe3\xc5\x67\x08\xf6\x18\xe3"
1144
++	 * "\x2b\x6d\xe6\x47\x46\x67\x4c\xec"
1145
++	 * "\x69\xaf\x0a\x8b\x6a\x35\x20\x1d"
1146
++	 * "\x77\x91\x7f\x34\xfd\x36\x24\x6b"
1147
++	 * "\xfa\xfd\x8c\x2f\x6f\x85\x7e\x08"
1148
++	 * "\x7b\x5e\xd6\xc0\xd0\x97\x95\xbe"
1149
++	 * "\xb4\xf4\x86\x3d\xf8\xc6\x80\xb1"
1150
++	 * "\x12\x35\xec\x86\xff\x94\x41\x02"
1151
++	 * "\x2e\xb7\xde\xdc\x25\x00\xe0\xf0"
1152
++	 */
1153
++	.m =
1154
++	"\x11\xf6\xe7\xb6\x78\x4b\xaf\x4e"
1155
++	"\xe2\x48\x2a\x00\x48\x9c\xc9\xf6"
1156
++	"\x4e\xc0\x6f\x13",
1157
++	.m_size = 20,
1158
++	.c =
1159
++	"\x59\x13\xb0\xd9\x68\xe8\xe3\x0b"
1160
++	"\x46\x0f\xdf\x4c\x0d\x23\x83\x86"
1161
++	"\xa0\x16\x46\xc8\x9e\xca\x9a\xda"
1162
++	"\x1e\xc4\x69\xd3\xc5\x84\x3d\x32"
1163
++	"\x73\xf2\x4c\x85\x22\x3f\x07\xd0"
1164
++	"\xfc\x0e\x36\xdb\x3c\xdd\x07\xb5"
1165
++	"\x09\xd0\x0b\x2e\xe1\x04\x0b\x02"
1166
++	"\xb5\x68\x91\xfa\x17\x83\xf7\xb3"
1167
++	"\x40\xea\x86\xc4\x70\x6e\xa0\x1b"
1168
++	"\x5c\x9b\xbe\x8a\xf9\x2d\xb6\x28"
1169
++	"\xeb\xcc\x73\xbb\x60\x50\x51\xfa"
1170
++	"\xbc\x6c\x52\x0c\x1c\x13\x37\xaa"
1171
++	"\xff\x06\xc0\xc8\xff\x75\x1b\x17"
1172
++	"\x01\xe7\x59\x6e\xa6\x71\x29\xbe"
1173
++	"\xf2\x85\xe9\x2e\xb1\x09\x90\xe6"
1174
++	"\xab\x1d\x99\xf2\xce\x66\x6d\xd6"
1175
++	"\xf9\x02\x76\x00\x2f\xd3\xd3\x2e"
1176
++	"\x98\x2d\x2c\x92\x4e\x3f\xc3\xb8"
1177
++	"\x29\x6d\x11\x30\x6f\xa4\x33\x87"
1178
++	"\x6b\xe9\x69\x99\xea\x4d\x99\x60"
1179
++	"\x37\xd9\xbb\x1b\x54\x63\xab\x62"
1180
++	"\x00\xc3\xdd\x2b\x33\xaf\xf2\x22"
1181
++	"\xa9\xd8\x66\xe4\x7b\x2b\xe6\xf7"
1182
++	"\x9e\x4a\x13\xc8\x6b\x3f\x0a\xd9"
1183
++	"\x31\x9c\xb2\x80\xf2\x00\x43\xd3"
1184
++	"\x70\x49\x89\xb4\x09\x6d\xde\xc9"
1185
++	"\x07\x84\x77\x85\xbc\x84\x47\xcf"
1186
++	"\x4f\xa8\x3b\x11\xc0\x41\x33\xbb"
1187
++	"\x54\x11\xa2\x66\xdd\x44\xd0\x87"
1188
++	"\xc5\xea\x6a\xc1\x08\x8d\x9a\x0b"
1189
++	"\x8b\x9e\xd8\x5c\x03\xf6\x13\x4a"
1190
++	"\xd8\xdb\x5b\xcd\x35\x91\xbc\x69"
1191
++	"\x40\x83\x8a\xbe\xba\x45\xd2\xf4"
1192
++	"\x08\x04\xc4\x9f\x2f\xf1\xe2\x0b"
1193
++	"\xb7\xec\x91\x5a\xe4\xbe\xa3\xb6"
1194
++	"\xc9\xec\x79\x3c\x60\x0a\x6a\xe9"
1195
++	"\x93\xa4\xec\x3e\xbb\x84\x59\xad"
1196
++	"\x65\x09\x10\x0b\xcd\xa7\x1b\xdf"
1197
++	"\xec\x15\x2f\xb1\xac\x5c\xf6\xab"
1198
++	"\x44\x99\xa3\xae\x82\xeb\x01\x7a"
1199
++	"\x17\x4a\xa6\xe2\x4f\x4f\x77\x0b"
1200
++	"\xd6\x25\x54\x82\x53\xa4\xf9\x23"
1201
++	"\x41\xa0\xa3\x4a\x88\xc2\xf8\xfa"
1202
++	"\x51\x0a\xd7\x0f\xbd\x1e\xf3\x52"
1203
++	"\x2a\x21\x3d\xb8\x04\xa5\xbc\x5b"
1204
++	"\xa2\x61\xcf\x89\xc0\xce\x9b\x6a"
1205
++	"\xd6\x29\xbe\x82\x7f\x36\xd1\x64"
1206
++	"\x6e\x7c\x35\x0c\x3f\x55\xb1\x23"
1207
++	"\x2f\x84\xbb\x56\x52\xe5\x0b\x0e"
1208
++	"\x88\xac\x17\xb1\x6c\x1c\x60\xfc"
1209
++	"\x82\xae\xe5\x3a\x1d\x3f\x40\x48"
1210
++	"\x5d\xbc\xc0\xba\x89\x9b\x26\x33"
1211
++	"\xec\x18\x3b\xa8\xfc\x5b\x35\xc0"
1212
++	"\x25\xd1\xc8\x79\x72\x74\x8e\x5a"
1213
++	"\xa3\xf1\x72\x63\x72\xec\xfd\xc7"
1214
++	"\xe4\x14\x0d\xeb\xd0\x4b\x17\xd1"
1215
++	"\x8a\x28\x43\x8f\x30\xce\xf6\x87"
1216
++	"\xe3\xd5\xe3\xce\xd0\x54\xaa\x5d"
1217
++	"\x65\x7b\xf7\x67\xeb\x5e\x5d\xf4"
1218
++	"\x73\x2a\x86\x71\x14\x09\x25\x1c"
1219
++	"\x48\xd9\x98\xc8\x0a\x15\x58\x62"
1220
++	"\x51\xe7\x7c\xce\x0a\xf0\x6d\xd9"
1221
++	"\x20\x68\x11\x8c\x3b\x2d\xd9\xcb"
1222
++	"\x13\xe1\x1c\xe3\x2c\x80\xbb\x9a",
1223
++	.c_size = 512,
1224
+ #ifndef CONFIG_CRYPTO_FIPS
1225
+ 	}, {
1226
+ 	.key =
1227
+@@ -1228,6 +2052,726 @@ static const struct akcipher_testvec ecrdsa_tv_template[] = {
397 1228
  /*
398 1229
   * PKCS#1 RSA test vectors. Obtained from CAVS testing.
399 1230
   */
... ...
@@ -1120,7 +1969,7 @@ index 2e6b280f9..b23d8f1d9 100644
1120 1120
  static const struct akcipher_testvec pkcs1pad_rsa_tv_template[] = {
1121 1121
  	{
1122 1122
  	.key =
1123
-@@ -1344,6 +2064,845 @@ static const struct akcipher_testvec pkcs1pad_rsa_tv_template[] = {
1123
+@@ -1344,6 +2888,845 @@ static const struct akcipher_testvec pkcs1pad_rsa_tv_template[] = {
1124 1124
  	}
1125 1125
  };
1126 1126
  
... ...
@@ -1966,7 +2815,7 @@ index 2e6b280f9..b23d8f1d9 100644
1966 1966
  static const struct kpp_testvec dh_tv_template[] = {
1967 1967
  	{
1968 1968
  	.secret =
1969
-@@ -4399,6 +5958,52 @@ static const struct kpp_testvec ecdh_p384_tv_template[] = {
1969
+@@ -4399,6 +6782,52 @@ static const struct kpp_testvec ecdh_p384_tv_template[] = {
1970 1970
  	.b_public_size = 96,
1971 1971
  	.expected_a_public_size = 96,
1972 1972
  	.expected_ss_size = 48
... ...
@@ -2019,7 +2868,7 @@ index 2e6b280f9..b23d8f1d9 100644
2019 2019
  	}
2020 2020
  };
2021 2021
  
2022
-@@ -7640,6 +9245,98 @@ static const struct hash_testvec aes_cmac128_tv_template[] = {
2022
+@@ -7640,6 +10069,98 @@ static const struct hash_testvec aes_cmac128_tv_template[] = {
2023 2023
  				  "\x69\x6a\x2c\x05\x6c\x31\x54\x10",
2024 2024
  		.psize		= 64,
2025 2025
  		.ksize		= 32,
... ...
@@ -2118,7 +2967,7 @@ index 2e6b280f9..b23d8f1d9 100644
2118 2118
  	}
2119 2119
  };
2120 2120
  
2121
-@@ -22994,6 +24691,185 @@ static const struct cprng_testvec ansi_cprng_aes_tv_template[] = {
2121
+@@ -22994,6 +25515,185 @@ static const struct cprng_testvec ansi_cprng_aes_tv_template[] = {
2122 2122
  	},
2123 2123
  };
2124 2124
  
... ...
@@ -2304,7 +3153,7 @@ index 2e6b280f9..b23d8f1d9 100644
2304 2304
  /*
2305 2305
   * SP800-90A DRBG Test vectors from
2306 2306
   * http://csrc.nist.gov/groups/STM/cavp/documents/drbg/drbgtestvectors.zip
2307
-@@ -23318,6 +25194,40 @@ static const struct drbg_testvec drbg_pr_hmac_sha256_tv_template[] = {
2307
+@@ -23318,6 +26018,40 @@ static const struct drbg_testvec drbg_pr_hmac_sha256_tv_template[] = {
2308 2308
  	},
2309 2309
  };
2310 2310
  
... ...
@@ -2345,7 +3194,7 @@ index 2e6b280f9..b23d8f1d9 100644
2345 2345
  static const struct drbg_testvec drbg_pr_ctr_aes128_tv_template[] = {
2346 2346
  	{
2347 2347
  		.entropy = (unsigned char *)
2348
-@@ -23434,6 +25344,283 @@ static const struct drbg_testvec drbg_pr_ctr_aes128_tv_template[] = {
2348
+@@ -23434,6 +26168,283 @@ static const struct drbg_testvec drbg_pr_ctr_aes128_tv_template[] = {
2349 2349
  	},
2350 2350
  };
2351 2351
  
... ...
@@ -2629,7 +3478,7 @@ index 2e6b280f9..b23d8f1d9 100644
2629 2629
  /*
2630 2630
   * SP800-90A DRBG Test vectors from
2631 2631
   * http://csrc.nist.gov/groups/STM/cavp/documents/drbg/drbgtestvectors.zip
2632
-@@ -23564,6 +25751,70 @@ static const struct drbg_testvec drbg_nopr_sha256_tv_template[] = {
2632
+@@ -23564,6 +26575,70 @@ static const struct drbg_testvec drbg_nopr_sha256_tv_template[] = {
2633 2633
  	},
2634 2634
  };
2635 2635
  
... ...
@@ -2700,7 +3549,7 @@ index 2e6b280f9..b23d8f1d9 100644
2700 2700
  static const struct drbg_testvec drbg_nopr_hmac_sha256_tv_template[] = {
2701 2701
  	{
2702 2702
  		.entropy = (unsigned char *)
2703
-@@ -34639,7 +36890,94 @@ static const struct cipher_testvec cts_mode_tv_template[] = {
2703
+@@ -34639,7 +37714,94 @@ static const struct cipher_testvec cts_mode_tv_template[] = {
2704 2704
  			  "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
2705 2705
  			  "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
2706 2706
  			  "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
... ...
@@ -2797,4 +3646,4 @@ index 2e6b280f9..b23d8f1d9 100644
2797 2797
  
2798 2798
  /*
2799 2799
 -- 
2800
-2.39.0
2800
+2.41.0
... ...
@@ -14,7 +14,7 @@
14 14
 Summary:        Kernel
15 15
 Name:           linux-secure
16 16
 Version:        6.1.62
17
-Release:        2%{?kat_build:.kat}%{?dist}
17
+Release:        3%{?kat_build:.kat}%{?dist}
18 18
 License:        GPLv2
19 19
 URL:            http://www.kernel.org
20 20
 Group:          System Environment/Kernel
... ...
@@ -163,7 +163,7 @@ Patch510: FIPS-do-not-allow-not-certified-algos-in-fips-2.patch
163 163
 # Below patches are common for fips and canister_build flags
164 164
 # 0001-FIPS-canister-binary-usage.patch is renamed as <ver-rel>-0001-FIPS-canister-binary-usage.patch
165 165
 # in both places until final canister binary is released
166
-Patch10000: 6.1.56-3-0001-FIPS-canister-binary-usage.patch
166
+Patch10000: 6.1.60-2-0001-FIPS-canister-binary-usage.patch
167 167
 Patch10001: 0001-scripts-kallsyms-Extra-kallsyms-parsing.patch
168 168
 # Below patches are specific to canister_build flag
169 169
 Patch10003: 0002-FIPS-canister-creation.patch
... ...
@@ -332,25 +332,6 @@ cp %{SOURCE28} crypto/
332 332
 sed -i 's/CONFIG_LOCALVERSION="-secure"/CONFIG_LOCALVERSION="-%{release}-secure"/' .config
333 333
 
334 334
 %if 0%{?canister_build}
335
-sed -i "s/CONFIG_DEBUG_LIST=y/# CONFIG_DEBUG_LIST is not set/" .config
336
-sed -i "s/CONFIG_BUG_ON_DATA_CORRUPTION=y/# CONFIG_BUG_ON_DATA_CORRUPTION is not set/" .config
337
-sed -i "s/CONFIG_CRYPTO_AEAD=m/CONFIG_CRYPTO_AEAD=y/" .config
338
-sed -i "s/CONFIG_CRYPTO_SIMD=m/CONFIG_CRYPTO_SIMD=y/" .config
339
-sed -i "s/CONFIG_CRYPTO_AES_NI_INTEL=m/CONFIG_CRYPTO_AES_NI_INTEL=y/" .config
340
-sed -i "s/CONFIG_CRYPTO_CMAC=m/CONFIG_CRYPTO_CMAC=y/" .config
341
-sed -i "s/CONFIG_CRYPTO_CTS=m/CONFIG_CRYPTO_CTS=y/" .config
342
-sed -i "s/CONFIG_CRYPTO_CCM=m/CONFIG_CRYPTO_CCM=y/" .config
343
-sed -i "s/CONFIG_CRYPTO_GHASH=m/CONFIG_CRYPTO_GHASH=y/" .config
344
-sed -i "s/CONFIG_CRYPTO_GF128MUL=m/CONFIG_CRYPTO_GF128MUL=y/" .config
345
-sed -i "s/CONFIG_CRYPTO_NULL=m/CONFIG_CRYPTO_NULL=y/" .config
346
-sed -i "s/CONFIG_CRYPTO_GCM=m/CONFIG_CRYPTO_GCM=y/" .config
347
-# Disable JUMP_LABEL, PRINTK_INDEX in canister
348
-sed -i "/# CONFIG_STATIC_KEYS_SELFTEST is not set/d" .config
349
-sed -i "s/CONFIG_JUMP_LABEL=y/# CONFIG_JUMP_LABEL is not set/" .config
350
-sed -i "/CONFIG_DRM_USE_DYNAMIC_DEBUG=y/d" .config
351
-sed -i "/# CONFIG_KFENCE_STATIC_KEYS is not set/d" .config
352
-sed -i "s/CONFIG_PRINTK_INDEX=y/# CONFIG_PRINTK_INDEX is not set/" .config
353
-
354 335
 sed -i "0,/FIPS_CANISTER_VERSION.*$/s/FIPS_CANISTER_VERSION.*$/FIPS_CANISTER_VERSION \"%{lkcm_version}\"/" crypto/fips_integrity.c
355 336
 sed -i "0,/FIPS_KERNEL_VERSION.*$/s/FIPS_KERNEL_VERSION.*$/FIPS_KERNEL_VERSION \"%{version}-%{release}-secure\"/" crypto/fips_integrity.c
356 337
 
... ...
@@ -479,6 +460,9 @@ ln -sf linux-%{uname_r}.cfg /boot/photon.cfg
479 479
 %endif
480 480
 
481 481
 %changelog
482
+* Tue Dec 05 2023 Keerthana K <keerthanak@vmware.com> 6.1.62-3
483
+- Include seqiv and geniv into canister
484
+- Add missing rsa, drbg_nopr_sha1, rfc4106(gcm(aes)) self-test
482 485
 * Wed Nov 29 2023 Brennan Lamoreaux <blamoreaux@vmware.com> 6.1.62-2
483 486
 - Fix for CVE-2023-2176
484 487
 * Wed Nov 29 2023 Ankit Jain <ankitja@vmware.com> 6.1.62-1