diff options
author | Stephan Mueller <smueller@chronox.de> | 2015-03-01 14:40:17 -0500 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2015-03-04 04:13:29 -0500 |
commit | 37821da088d090d8e152f3f8cc072948fa544e5a (patch) | |
tree | 68a2ec28c6f2ebca89767609bb70af7612c7f430 | |
parent | 04bcbfcf7e28ba502383a8e19d99960ab8e347c8 (diff) |
crypto: drbg - remove superflowous memsets
The DRBG code contains memset(0) calls to initialize a varaible
that are not necessary as the variable is always overwritten by
the processing.
This patch increases the CTR and Hash DRBGs by about 5%.
Signed-off-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r-- | crypto/drbg.c | 18 |
1 files changed, 0 insertions, 18 deletions
diff --git a/crypto/drbg.c b/crypto/drbg.c index c14274ac8d61..56c1d7ec3d9e 100644 --- a/crypto/drbg.c +++ b/crypto/drbg.c | |||
@@ -308,9 +308,6 @@ static int drbg_ctr_bcc(struct drbg_state *drbg, | |||
308 | 308 | ||
309 | drbg_string_fill(&data, out, drbg_blocklen(drbg)); | 309 | drbg_string_fill(&data, out, drbg_blocklen(drbg)); |
310 | 310 | ||
311 | /* 10.4.3 step 1 */ | ||
312 | memset(out, 0, drbg_blocklen(drbg)); | ||
313 | |||
314 | /* 10.4.3 step 2 / 4 */ | 311 | /* 10.4.3 step 2 / 4 */ |
315 | list_for_each_entry(curr, in, list) { | 312 | list_for_each_entry(curr, in, list) { |
316 | const unsigned char *pos = curr->buf; | 313 | const unsigned char *pos = curr->buf; |
@@ -406,7 +403,6 @@ static int drbg_ctr_df(struct drbg_state *drbg, | |||
406 | 403 | ||
407 | memset(pad, 0, drbg_blocklen(drbg)); | 404 | memset(pad, 0, drbg_blocklen(drbg)); |
408 | memset(iv, 0, drbg_blocklen(drbg)); | 405 | memset(iv, 0, drbg_blocklen(drbg)); |
409 | memset(temp, 0, drbg_statelen(drbg)); | ||
410 | 406 | ||
411 | /* 10.4.2 step 1 is implicit as we work byte-wise */ | 407 | /* 10.4.2 step 1 is implicit as we work byte-wise */ |
412 | 408 | ||
@@ -523,7 +519,6 @@ static int drbg_ctr_update(struct drbg_state *drbg, struct list_head *seed, | |||
523 | unsigned int len = 0; | 519 | unsigned int len = 0; |
524 | struct drbg_string cipherin; | 520 | struct drbg_string cipherin; |
525 | 521 | ||
526 | memset(temp, 0, drbg_statelen(drbg) + drbg_blocklen(drbg)); | ||
527 | if (3 > reseed) | 522 | if (3 > reseed) |
528 | memset(df_data, 0, drbg_statelen(drbg)); | 523 | memset(df_data, 0, drbg_statelen(drbg)); |
529 | 524 | ||
@@ -585,8 +580,6 @@ static int drbg_ctr_generate(struct drbg_state *drbg, | |||
585 | int ret = 0; | 580 | int ret = 0; |
586 | struct drbg_string data; | 581 | struct drbg_string data; |
587 | 582 | ||
588 | memset(drbg->scratchpad, 0, drbg_blocklen(drbg)); | ||
589 | |||
590 | /* 10.2.1.5.2 step 2 */ | 583 | /* 10.2.1.5.2 step 2 */ |
591 | if (addtl && !list_empty(addtl)) { | 584 | if (addtl && !list_empty(addtl)) { |
592 | ret = drbg_ctr_update(drbg, addtl, 2); | 585 | ret = drbg_ctr_update(drbg, addtl, 2); |
@@ -761,7 +754,6 @@ static struct drbg_state_ops drbg_hmac_ops = { | |||
761 | .generate = drbg_hmac_generate, | 754 | .generate = drbg_hmac_generate, |
762 | .crypto_init = drbg_init_hash_kernel, | 755 | .crypto_init = drbg_init_hash_kernel, |
763 | .crypto_fini = drbg_fini_hash_kernel, | 756 | .crypto_fini = drbg_fini_hash_kernel, |
764 | |||
765 | }; | 757 | }; |
766 | #endif /* CONFIG_CRYPTO_DRBG_HMAC */ | 758 | #endif /* CONFIG_CRYPTO_DRBG_HMAC */ |
767 | 759 | ||
@@ -838,8 +830,6 @@ static int drbg_hash_df(struct drbg_state *drbg, | |||
838 | unsigned char *tmp = drbg->scratchpad + drbg_statelen(drbg); | 830 | unsigned char *tmp = drbg->scratchpad + drbg_statelen(drbg); |
839 | struct drbg_string data; | 831 | struct drbg_string data; |
840 | 832 | ||
841 | memset(tmp, 0, drbg_blocklen(drbg)); | ||
842 | |||
843 | /* 10.4.1 step 3 */ | 833 | /* 10.4.1 step 3 */ |
844 | input[0] = 1; | 834 | input[0] = 1; |
845 | drbg_cpu_to_be32((outlen * 8), &input[1]); | 835 | drbg_cpu_to_be32((outlen * 8), &input[1]); |
@@ -879,7 +869,6 @@ static int drbg_hash_update(struct drbg_state *drbg, struct list_head *seed, | |||
879 | unsigned char *V = drbg->scratchpad; | 869 | unsigned char *V = drbg->scratchpad; |
880 | unsigned char prefix = DRBG_PREFIX1; | 870 | unsigned char prefix = DRBG_PREFIX1; |
881 | 871 | ||
882 | memset(drbg->scratchpad, 0, drbg_statelen(drbg)); | ||
883 | if (!seed) | 872 | if (!seed) |
884 | return -EINVAL; | 873 | return -EINVAL; |
885 | 874 | ||
@@ -921,9 +910,6 @@ static int drbg_hash_process_addtl(struct drbg_state *drbg, | |||
921 | LIST_HEAD(datalist); | 910 | LIST_HEAD(datalist); |
922 | unsigned char prefix = DRBG_PREFIX2; | 911 | unsigned char prefix = DRBG_PREFIX2; |
923 | 912 | ||
924 | /* this is value w as per documentation */ | ||
925 | memset(drbg->scratchpad, 0, drbg_blocklen(drbg)); | ||
926 | |||
927 | /* 10.1.1.4 step 2 */ | 913 | /* 10.1.1.4 step 2 */ |
928 | if (!addtl || list_empty(addtl)) | 914 | if (!addtl || list_empty(addtl)) |
929 | return 0; | 915 | return 0; |
@@ -959,9 +945,6 @@ static int drbg_hash_hashgen(struct drbg_state *drbg, | |||
959 | struct drbg_string data; | 945 | struct drbg_string data; |
960 | LIST_HEAD(datalist); | 946 | LIST_HEAD(datalist); |
961 | 947 | ||
962 | memset(src, 0, drbg_statelen(drbg)); | ||
963 | memset(dst, 0, drbg_blocklen(drbg)); | ||
964 | |||
965 | /* 10.1.1.4 step hashgen 2 */ | 948 | /* 10.1.1.4 step hashgen 2 */ |
966 | memcpy(src, drbg->V, drbg_statelen(drbg)); | 949 | memcpy(src, drbg->V, drbg_statelen(drbg)); |
967 | 950 | ||
@@ -1018,7 +1001,6 @@ static int drbg_hash_generate(struct drbg_state *drbg, | |||
1018 | len = drbg_hash_hashgen(drbg, buf, buflen); | 1001 | len = drbg_hash_hashgen(drbg, buf, buflen); |
1019 | 1002 | ||
1020 | /* this is the value H as documented in 10.1.1.4 */ | 1003 | /* this is the value H as documented in 10.1.1.4 */ |
1021 | memset(drbg->scratchpad, 0, drbg_blocklen(drbg)); | ||
1022 | /* 10.1.1.4 step 4 */ | 1004 | /* 10.1.1.4 step 4 */ |
1023 | drbg_string_fill(&data1, &prefix, 1); | 1005 | drbg_string_fill(&data1, &prefix, 1); |
1024 | list_add_tail(&data1.list, &datalist); | 1006 | list_add_tail(&data1.list, &datalist); |