staging/skein: more cleanup
cover staging/skein: more cleanup
Clean up a few more things in skein to get it closer to mainline inclusion. The first may be questionable (so I probably should have put it last -- oh well, I can always respin), but it seemed like putting all of the threefish block functions in one file, like the skein block functions are all in one file, made sense.
Jake Edge (3):
move all threefish block functions to one file, remove unneeded
include
fix some comment typos
Rename a few more variables and structure member names to lower case.
drivers/staging/skein/Makefile | 4 +- drivers/staging/skein/skein.c | 148 +- drivers/staging/skein/skein.h | 34 +- drivers/staging/skein/skein_api.c | 32 +- drivers/staging/skein/skein_api.h | 2 +- drivers/staging/skein/skein_block.c | 155 +- drivers/staging/skein/threefish_1024_block.c | 4902 --------------- drivers/staging/skein/threefish_256_block.c | 1139 ---- drivers/staging/skein/threefish_512_block.c | 2225 ------- drivers/staging/skein/threefish_api.h | 18 +- drivers/staging/skein/threefish_block.c | 8258 ++++++++++++++++++++++++++ 11 files changed, 8454 insertions(+), 8463 deletions(-) delete mode 100644 drivers/staging/skein/threefish_1024_block.c delete mode 100644 drivers/staging/skein/threefish_256_block.c delete mode 100644 drivers/staging/skein/threefish_512_block.c create mode 100644 drivers/staging/skein/threefish_block.c
Signature · 1 line
1.9.0
PATCH 1/3 staging/skein: move all threefish block functions to one file
move all threefish block functions to one file, remove unneeded include
---
against staging-next branch of staging tree
drivers/staging/skein/Makefile | 4 +- drivers/staging/skein/threefish_1024_block.c | 4902 --------------- drivers/staging/skein/threefish_256_block.c | 1139 ---- drivers/staging/skein/threefish_512_block.c | 2225 ------- drivers/staging/skein/threefish_block.c | 8258 ++++++++++++++++++++++++++ 5 files changed, 8259 insertions(+), 8269 deletions(-) delete mode 100644 drivers/staging/skein/threefish_1024_block.c delete mode 100644 drivers/staging/skein/threefish_256_block.c delete mode 100644 drivers/staging/skein/threefish_512_block.c create mode 100644 drivers/staging/skein/threefish_block.c
drivers/staging/skein/Makefile +1 -3
@@ -5,7 +5,5 @@ obj-$(CONFIG_CRYPTO_SKEIN) += skein.o \ skein_api.o \ skein_block.o -obj-$(CONFIG_CRYPTO_THREEFISH) += threefish_1024_block.o \ - threefish_256_block.o \ - threefish_512_block.o \ +obj-$(CONFIG_CRYPTO_THREEFISH) += threefish_block.o \ threefish_api.o
drivers/staging/skein/threefish_1024_block.c deleted +0 -4902
2,992 lines not on this page · raw message
drivers/staging/skein/threefish_256_block.c deleted +0 -1139
1,139 lines not on this page · raw message
drivers/staging/skein/threefish_512_block.c deleted +0 -2225
2,225 lines not on this page · raw message
drivers/staging/skein/threefish_block.c new file +8258 -0
8,258 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 6 lines
1.9.0 -- Jake Edge - LWN - [email protected] - http://lwn.net
Part of the diff is not shown here. View the raw message.
PATCH 2/3 staging/skein: comment typos
In reply to Jake Edgefix some comment typos
---
against staging-next branch of staging tree
drivers/staging/skein/threefish_api.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
drivers/staging/skein/threefish_api.h +9 -9
@@ -12,7 +12,7 @@* follow the openSSL design but at the same time take care of some Threefish * specific behaviour and possibilities. * -* These are the low level functions that deal with Threefisch blocks only. +* These are the low level functions that deal with Threefish blocks only. * Implementations for cipher modes such as ECB, CFB, or CBC may use these * functions. *
@@ -77,9 +77,9 @@ void threefish_set_key(struct threefish_key *key_ctx, u64 *key_data, u64 *tweak);/** -* Encrypt Threefisch block (bytes). +* Encrypt Threefish block (bytes). * -* The buffer must have at least the same length (number of bits) aas the +* The buffer must have at least the same length (number of bits) as the * state size for this key. The function uses the first @c state_size bits * of the input buffer, encrypts them and stores the result in the output * buffer.
@@ -95,9 +95,9 @@ void threefish_encrypt_block_bytes(struct threefish_key *key_ctx, u8 *in, u8 *out);/** -* Encrypt Threefisch block (words). +* Encrypt Threefish block (words). * -* The buffer must have at least the same length (number of bits) aas the +* The buffer must have at least the same length (number of bits) as the * state size for this key. The function uses the first @c state_size bits * of the input buffer, encrypts them and stores the result in the output * buffer.
@@ -115,9 +115,9 @@ void threefish_encrypt_block_words(struct threefish_key *key_ctx, u64 *in, u64 *out);/** -* Decrypt Threefisch block (bytes). +* Decrypt Threefish block (bytes). * -* The buffer must have at least the same length (number of bits) aas the +* The buffer must have at least the same length (number of bits) as the * state size for this key. The function uses the first @c state_size bits * of the input buffer, decrypts them and stores the result in the output * buffer
@@ -133,9 +133,9 @@ void threefish_decrypt_block_bytes(struct threefish_key *key_ctx, u8 *in, u8 *out);/** -* Decrypt Threefisch block (words). +* Decrypt Threefish block (words). * -* The buffer must have at least the same length (number of bits) aas the +* The buffer must have at least the same length (number of bits) as the * state size for this key. The function uses the first @c state_size bits * of the input buffer, encrypts them and stores the result in the output * buffer.
Signature · 6 lines
1.9.0 -- Jake Edge - LWN - [email protected] - http://lwn.net
PATCH 3/3 staging/skein: variable/member name cleanup
In reply to Jake EdgeRename a few more variables and structure member names to lower case.
---
against staging-next branch of staging tree
drivers/staging/skein/skein.c | 148 +++++++++++++++++----------------- drivers/staging/skein/skein.h | 34 ++++---- drivers/staging/skein/skein_api.c | 32 ++++---- drivers/staging/skein/skein_api.h | 2 +- drivers/staging/skein/skein_block.c | 155 ++++++++++++++++++------------------ 5 files changed, 186 insertions(+), 185 deletions(-)
drivers/staging/skein/skein.c +74 -74
@@ -33,16 +33,16 @@ int skein_256_init(struct skein_256_ctx *ctx, size_t hash_bit_len)switch (hash_bit_len) {/* use pre-computed values, where available */ case 256 : -memcpy (ctx->X,SKEIN_256_IV_256 ,sizeof (ctx->X)); +memcpy (ctx->x,SKEIN_256_IV_256 ,sizeof (ctx->x));break ;case 224 : -memcpy (ctx->X,SKEIN_256_IV_224 ,sizeof (ctx->X)); +memcpy (ctx->x,SKEIN_256_IV_224 ,sizeof (ctx->x));break ;case 160 : -memcpy (ctx->X,SKEIN_256_IV_160 ,sizeof (ctx->X)); +memcpy (ctx->x,SKEIN_256_IV_160 ,sizeof (ctx->x));break ;case 128 : -memcpy (ctx->X,SKEIN_256_IV_128 ,sizeof (ctx->X)); +memcpy (ctx->x,SKEIN_256_IV_128 ,sizeof (ctx->x));break ;default :/* here if there is no precomputed IV value available */
@@ -63,11 +63,11 @@ int skein_256_init(struct skein_256_ctx *ctx, size_t hash_bit_len)/* compute the initial chaining values from config block */ /* zero the chaining variables */ -memset (ctx->X,0 ,sizeof (ctx->X)); +memset (ctx->x,0 ,sizeof (ctx->x));skein_256_process_block (ctx, cfg.b,1 ,SKEIN_CFG_STR_LEN );break ; } -/* The chaining vars ctx->X are now initialized for hash_bit_len. */ +/* The chaining vars ctx->x are now initialized for hash_bit_len. */ /* Set up to process the data message portion of the hash (default) */ skein_start_new_type (ctx,MSG );/* T0=0, T1= MSG type */
@@ -89,25 +89,25 @@ int skein_256_init_ext(struct skein_256_ctx *ctx, size_t hash_bit_len,skein_assert_ret (hash_bit_len >0 ,SKEIN_BAD_HASHLEN );skein_assert_ret (key_bytes ==0 || key !=NULL ,SKEIN_FAIL ); -/* compute the initial chaining values ctx->X[], based on key */ +/* compute the initial chaining values ctx->x[], based on key */ if (key_bytes ==0 ) {/* is there a key? */ /* no key: use all zeroes as key for config block */ -memset (ctx->X,0 ,sizeof (ctx->X)); +memset (ctx->x,0 ,sizeof (ctx->x)); }else {/* here to pre-process a key */ -skein_assert (sizeof (cfg.b) >=sizeof (ctx->X)); +skein_assert (sizeof (cfg.b) >=sizeof (ctx->x));/* do a mini-Init right here */ /* set output hash bit count = state size */ - ctx->h.hash_bit_len =8 *sizeof (ctx->X); + ctx->h.hash_bit_len =8 *sizeof (ctx->x);/* set tweaks: T0 = 0; T1 = KEY type */ skein_start_new_type (ctx,KEY );/* zero the initial chaining variables */ -memset (ctx->X,0 ,sizeof (ctx->X)); +memset (ctx->x,0 ,sizeof (ctx->x));/* hash the key */ skein_256_update (ctx, key, key_bytes);/* put result into cfg.b[] */ skein_256_final_pad (ctx, cfg.b); -/* copy over into ctx->X[] */ -memcpy (ctx->X, cfg.b,sizeof (cfg.b)); +/* copy over into ctx->x[] */ +memcpy (ctx->x, cfg.b,sizeof (cfg.b)); }/* * build/process the config block, type == CONFIG (could be
@@ -130,7 +130,7 @@ int skein_256_init_ext(struct skein_256_ctx *ctx, size_t hash_bit_len,/* compute the initial chaining values from config block */ skein_256_process_block (ctx, cfg.b,1 ,SKEIN_CFG_STR_LEN ); -/* The chaining vars ctx->X are now initialized */ +/* The chaining vars ctx->x are now initialized */ /* Set up to process the data message portion of the hash (default) */ skein_start_new_type (ctx,MSG );
@@ -197,12 +197,12 @@ int skein_256_update(struct skein_256_ctx *ctx, const u8 *msg,int skein_256_final (struct skein_256_ctx *ctx,u8 *hash_val) {size_t i, n, byte_cnt; -u64 X [SKEIN_256_STATE_WORDS ]; +u64 x[SKEIN_256_STATE_WORDS ];/* catch uninitialized context */ skein_assert_ret (ctx->h.b_cnt <=SKEIN_256_BLOCK_BYTES ,SKEIN_FAIL );/* tag as the final block */ - ctx->h.T[1 ] |=SKEIN_T1_FLAG_FINAL ; + ctx->h.tweak[1 ] |=SKEIN_T1_FLAG_FINAL ;/* zero pad b[] if necessary */ if (ctx->h.b_cnt <SKEIN_256_BLOCK_BYTES ) memset(&ctx->b[ctx->h.b_cnt], 0,
@@ -219,7 +219,7 @@ int skein_256_final(struct skein_256_ctx *ctx, u8 *hash_val)/* zero out b[], so it can hold the counter */ memset (ctx->b,0 ,sizeof (ctx->b));/* keep a local copy of counter mode "key" */ -memcpy (X , ctx->X,sizeof (X )); +memcpy (x, ctx->x,sizeof (x));for (i =0 ; i*SKEIN_256_BLOCK_BYTES < byte_cnt; i++) {/* build the counter block */ ((u64 *)ctx->b)[0 ] =skein_swap64 ((u64 ) i);
@@ -231,12 +231,12 @@ int skein_256_final(struct skein_256_ctx *ctx, u8 *hash_val)if (n >=SKEIN_256_BLOCK_BYTES ) n =SKEIN_256_BLOCK_BYTES ;/* "output" the ctr mode bytes */ -skein_put64_lsb_first (hash_val+i*SKEIN_256_BLOCK_BYTES , ctx->X, +skein_put64_lsb_first (hash_val+i*SKEIN_256_BLOCK_BYTES , ctx->x, n);skein_show_final (256 , &ctx->h, n, hash_val+i*SKEIN_256_BLOCK_BYTES );/* restore the counter mode key for next time */ -memcpy (ctx->X,X ,sizeof (X )); +memcpy (ctx->x, x,sizeof (x)); }return SKEIN_SUCCESS ; }
@@ -259,16 +259,16 @@ int skein_512_init(struct skein_512_ctx *ctx, size_t hash_bit_len)switch (hash_bit_len) {/* use pre-computed values, where available */ case 512 : -memcpy (ctx->X,SKEIN_512_IV_512 ,sizeof (ctx->X)); +memcpy (ctx->x,SKEIN_512_IV_512 ,sizeof (ctx->x));break ;case 384 : -memcpy (ctx->X,SKEIN_512_IV_384 ,sizeof (ctx->X)); +memcpy (ctx->x,SKEIN_512_IV_384 ,sizeof (ctx->x));break ;case 256 : -memcpy (ctx->X,SKEIN_512_IV_256 ,sizeof (ctx->X)); +memcpy (ctx->x,SKEIN_512_IV_256 ,sizeof (ctx->x));break ;case 224 : -memcpy (ctx->X,SKEIN_512_IV_224 ,sizeof (ctx->X)); +memcpy (ctx->x,SKEIN_512_IV_224 ,sizeof (ctx->x));break ;default :/* here if there is no precomputed IV value available */
@@ -289,13 +289,13 @@ int skein_512_init(struct skein_512_ctx *ctx, size_t hash_bit_len)/* compute the initial chaining values from config block */ /* zero the chaining variables */ -memset (ctx->X,0 ,sizeof (ctx->X)); +memset (ctx->x,0 ,sizeof (ctx->x));skein_512_process_block (ctx, cfg.b,1 ,SKEIN_CFG_STR_LEN );break ; }/* -* The chaining vars ctx->X are now initialized for the given +* The chaining vars ctx->x are now initialized for the given * hash_bit_len. */ /* Set up to process the data message portion of the hash (default) */
@@ -319,25 +319,25 @@ int skein_512_init_ext(struct skein_512_ctx *ctx, size_t hash_bit_len,skein_assert_ret (hash_bit_len >0 ,SKEIN_BAD_HASHLEN );skein_assert_ret (key_bytes ==0 || key !=NULL ,SKEIN_FAIL ); -/* compute the initial chaining values ctx->X[], based on key */ +/* compute the initial chaining values ctx->x[], based on key */ if (key_bytes ==0 ) {/* is there a key? */ /* no key: use all zeroes as key for config block */ -memset (ctx->X,0 ,sizeof (ctx->X)); +memset (ctx->x,0 ,sizeof (ctx->x)); }else {/* here to pre-process a key */ -skein_assert (sizeof (cfg.b) >=sizeof (ctx->X)); +skein_assert (sizeof (cfg.b) >=sizeof (ctx->x));/* do a mini-Init right here */ /* set output hash bit count = state size */ - ctx->h.hash_bit_len =8 *sizeof (ctx->X); + ctx->h.hash_bit_len =8 *sizeof (ctx->x);/* set tweaks: T0 = 0; T1 = KEY type */ skein_start_new_type (ctx,KEY );/* zero the initial chaining variables */ -memset (ctx->X,0 ,sizeof (ctx->X)); +memset (ctx->x,0 ,sizeof (ctx->x));/* hash the key */ skein_512_update (ctx, key, key_bytes);/* put result into cfg.b[] */ skein_512_final_pad (ctx, cfg.b); -/* copy over into ctx->X[] */ -memcpy (ctx->X, cfg.b,sizeof (cfg.b)); +/* copy over into ctx->x[] */ +memcpy (ctx->x, cfg.b,sizeof (cfg.b)); }/* * build/process the config block, type == CONFIG (could be
@@ -359,7 +359,7 @@ int skein_512_init_ext(struct skein_512_ctx *ctx, size_t hash_bit_len,/* compute the initial chaining values from config block */ skein_512_process_block (ctx, cfg.b,1 ,SKEIN_CFG_STR_LEN ); -/* The chaining vars ctx->X are now initialized */ +/* The chaining vars ctx->x are now initialized */ /* Set up to process the data message portion of the hash (default) */ skein_start_new_type (ctx,MSG );
@@ -426,12 +426,12 @@ int skein_512_update(struct skein_512_ctx *ctx, const u8 *msg,int skein_512_final (struct skein_512_ctx *ctx,u8 *hash_val) {size_t i, n, byte_cnt; -u64 X [SKEIN_512_STATE_WORDS ]; +u64 x[SKEIN_512_STATE_WORDS ];/* catch uninitialized context */ skein_assert_ret (ctx->h.b_cnt <=SKEIN_512_BLOCK_BYTES ,SKEIN_FAIL );/* tag as the final block */ - ctx->h.T[1 ] |=SKEIN_T1_FLAG_FINAL ; + ctx->h.tweak[1 ] |=SKEIN_T1_FLAG_FINAL ;/* zero pad b[] if necessary */ if (ctx->h.b_cnt <SKEIN_512_BLOCK_BYTES ) memset(&ctx->b[ctx->h.b_cnt], 0,
@@ -448,7 +448,7 @@ int skein_512_final(struct skein_512_ctx *ctx, u8 *hash_val)/* zero out b[], so it can hold the counter */ memset (ctx->b,0 ,sizeof (ctx->b));/* keep a local copy of counter mode "key" */ -memcpy (X , ctx->X,sizeof (X )); +memcpy (x, ctx->x,sizeof (x));for (i =0 ; i*SKEIN_512_BLOCK_BYTES < byte_cnt; i++) {/* build the counter block */ ((u64 *)ctx->b)[0 ] =skein_swap64 ((u64 ) i);
@@ -460,12 +460,12 @@ int skein_512_final(struct skein_512_ctx *ctx, u8 *hash_val)if (n >=SKEIN_512_BLOCK_BYTES ) n =SKEIN_512_BLOCK_BYTES ;/* "output" the ctr mode bytes */ -skein_put64_lsb_first (hash_val+i*SKEIN_512_BLOCK_BYTES , ctx->X, +skein_put64_lsb_first (hash_val+i*SKEIN_512_BLOCK_BYTES , ctx->x, n);skein_show_final (512 , &ctx->h, n, hash_val+i*SKEIN_512_BLOCK_BYTES );/* restore the counter mode key for next time */ -memcpy (ctx->X,X ,sizeof (X )); +memcpy (ctx->x, x,sizeof (x)); }return SKEIN_SUCCESS ; }
@@ -488,13 +488,13 @@ int skein_1024_init(struct skein_1024_ctx *ctx, size_t hash_bit_len)switch (hash_bit_len) {/* use pre-computed values, where available */ case 512 : -memcpy (ctx->X,SKEIN_1024_IV_512 ,sizeof (ctx->X)); +memcpy (ctx->x,SKEIN_1024_IV_512 ,sizeof (ctx->x));break ;case 384 : -memcpy (ctx->X,SKEIN_1024_IV_384 ,sizeof (ctx->X)); +memcpy (ctx->x,SKEIN_1024_IV_384 ,sizeof (ctx->x));break ;case 1024 : -memcpy (ctx->X,SKEIN_1024_IV_1024 ,sizeof (ctx->X)); +memcpy (ctx->x,SKEIN_1024_IV_1024 ,sizeof (ctx->x));break ;default :/* here if there is no precomputed IV value available */
@@ -515,12 +515,12 @@ int skein_1024_init(struct skein_1024_ctx *ctx, size_t hash_bit_len)/* compute the initial chaining values from config block */ /* zero the chaining variables */ -memset (ctx->X,0 ,sizeof (ctx->X)); +memset (ctx->x,0 ,sizeof (ctx->x));skein_1024_process_block (ctx, cfg.b,1 ,SKEIN_CFG_STR_LEN );break ; } -/* The chaining vars ctx->X are now initialized for the hash_bit_len. */ +/* The chaining vars ctx->x are now initialized for the hash_bit_len. */ /* Set up to process the data message portion of the hash (default) */ skein_start_new_type (ctx,MSG );/* T0=0, T1= MSG type */
@@ -542,25 +542,25 @@ int skein_1024_init_ext(struct skein_1024_ctx *ctx, size_t hash_bit_len,skein_assert_ret (hash_bit_len >0 ,SKEIN_BAD_HASHLEN );skein_assert_ret (key_bytes ==0 || key !=NULL ,SKEIN_FAIL ); -/* compute the initial chaining values ctx->X[], based on key */ +/* compute the initial chaining values ctx->x[], based on key */ if (key_bytes ==0 ) {/* is there a key? */ /* no key: use all zeroes as key for config block */ -memset (ctx->X,0 ,sizeof (ctx->X)); +memset (ctx->x,0 ,sizeof (ctx->x)); }else {/* here to pre-process a key */ -skein_assert (sizeof (cfg.b) >=sizeof (ctx->X)); +skein_assert (sizeof (cfg.b) >=sizeof (ctx->x));/* do a mini-Init right here */ /* set output hash bit count = state size */ - ctx->h.hash_bit_len =8 *sizeof (ctx->X); + ctx->h.hash_bit_len =8 *sizeof (ctx->x);/* set tweaks: T0 = 0; T1 = KEY type */ skein_start_new_type (ctx,KEY );/* zero the initial chaining variables */ -memset (ctx->X,0 ,sizeof (ctx->X)); +memset (ctx->x,0 ,sizeof (ctx->x));/* hash the key */ skein_1024_update (ctx, key, key_bytes);/* put result into cfg.b[] */ skein_1024_final_pad (ctx, cfg.b); -/* copy over into ctx->X[] */ -memcpy (ctx->X, cfg.b,sizeof (cfg.b)); +/* copy over into ctx->x[] */ +memcpy (ctx->x, cfg.b,sizeof (cfg.b)); }/* * build/process the config block, type == CONFIG (could be
@@ -583,7 +583,7 @@ int skein_1024_init_ext(struct skein_1024_ctx *ctx, size_t hash_bit_len,/* compute the initial chaining values from config block */ skein_1024_process_block (ctx, cfg.b,1 ,SKEIN_CFG_STR_LEN ); -/* The chaining vars ctx->X are now initialized */ +/* The chaining vars ctx->x are now initialized */ /* Set up to process the data message portion of the hash (default) */ skein_start_new_type (ctx,MSG );
@@ -650,12 +650,12 @@ int skein_1024_update(struct skein_1024_ctx *ctx, const u8 *msg,int skein_1024_final (struct skein_1024_ctx *ctx,u8 *hash_val) {size_t i, n, byte_cnt; -u64 X [SKEIN_1024_STATE_WORDS ]; +u64 x[SKEIN_1024_STATE_WORDS ];/* catch uninitialized context */ skein_assert_ret (ctx->h.b_cnt <=SKEIN_1024_BLOCK_BYTES ,SKEIN_FAIL );/* tag as the final block */ - ctx->h.T[1 ] |=SKEIN_T1_FLAG_FINAL ; + ctx->h.tweak[1 ] |=SKEIN_T1_FLAG_FINAL ;/* zero pad b[] if necessary */ if (ctx->h.b_cnt <SKEIN_1024_BLOCK_BYTES ) memset(&ctx->b[ctx->h.b_cnt], 0,
@@ -672,7 +672,7 @@ int skein_1024_final(struct skein_1024_ctx *ctx, u8 *hash_val)/* zero out b[], so it can hold the counter */ memset (ctx->b,0 ,sizeof (ctx->b));/* keep a local copy of counter mode "key" */ -memcpy (X , ctx->X,sizeof (X )); +memcpy (x, ctx->x,sizeof (x));for (i =0 ; i*SKEIN_1024_BLOCK_BYTES < byte_cnt; i++) {/* build the counter block */ ((u64 *)ctx->b)[0 ] =skein_swap64 ((u64 ) i);
@@ -684,12 +684,12 @@ int skein_1024_final(struct skein_1024_ctx *ctx, u8 *hash_val)if (n >=SKEIN_1024_BLOCK_BYTES ) n =SKEIN_1024_BLOCK_BYTES ;/* "output" the ctr mode bytes */ -skein_put64_lsb_first (hash_val+i*SKEIN_1024_BLOCK_BYTES , ctx->X, +skein_put64_lsb_first (hash_val+i*SKEIN_1024_BLOCK_BYTES , ctx->x, n);skein_show_final (1024 , &ctx->h, n, hash_val+i*SKEIN_1024_BLOCK_BYTES );/* restore the counter mode key for next time */ -memcpy (ctx->X,X ,sizeof (X )); +memcpy (ctx->x, x,sizeof (x)); }return SKEIN_SUCCESS ; }
@@ -705,7 +705,7 @@ int skein_256_final_pad(struct skein_256_ctx *ctx, u8 *hash_val)skein_assert_ret (ctx->h.b_cnt <=SKEIN_256_BLOCK_BYTES ,SKEIN_FAIL );/* tag as the final block */ - ctx->h.T[1 ] |=SKEIN_T1_FLAG_FINAL ; + ctx->h.tweak[1 ] |=SKEIN_T1_FLAG_FINAL ;/* zero pad b[] if necessary */ if (ctx->h.b_cnt <SKEIN_256_BLOCK_BYTES ) memset(&ctx->b[ctx->h.b_cnt], 0,
@@ -714,7 +714,7 @@ int skein_256_final_pad(struct skein_256_ctx *ctx, u8 *hash_val)skein_256_process_block (ctx, ctx->b,1 , ctx->h.b_cnt);/* "output" the state bytes */ -skein_put64_lsb_first (hash_val, ctx->X,SKEIN_256_BLOCK_BYTES ); +skein_put64_lsb_first (hash_val, ctx->x,SKEIN_256_BLOCK_BYTES );return SKEIN_SUCCESS ; }
@@ -727,7 +727,7 @@ int skein_512_final_pad(struct skein_512_ctx *ctx, u8 *hash_val)skein_assert_ret (ctx->h.b_cnt <=SKEIN_512_BLOCK_BYTES ,SKEIN_FAIL );/* tag as the final block */ - ctx->h.T[1 ] |=SKEIN_T1_FLAG_FINAL ; + ctx->h.tweak[1 ] |=SKEIN_T1_FLAG_FINAL ;/* zero pad b[] if necessary */ if (ctx->h.b_cnt <SKEIN_512_BLOCK_BYTES ) memset(&ctx->b[ctx->h.b_cnt], 0,
@@ -736,7 +736,7 @@ int skein_512_final_pad(struct skein_512_ctx *ctx, u8 *hash_val)skein_512_process_block (ctx, ctx->b,1 , ctx->h.b_cnt);/* "output" the state bytes */ -skein_put64_lsb_first (hash_val, ctx->X,SKEIN_512_BLOCK_BYTES ); +skein_put64_lsb_first (hash_val, ctx->x,SKEIN_512_BLOCK_BYTES );return SKEIN_SUCCESS ; }
@@ -749,7 +749,7 @@ int skein_1024_final_pad(struct skein_1024_ctx *ctx, u8 *hash_val)skein_assert_ret (ctx->h.b_cnt <=SKEIN_1024_BLOCK_BYTES ,SKEIN_FAIL );/* tag as the final block */ - ctx->h.T[1 ] |=SKEIN_T1_FLAG_FINAL ; + ctx->h.tweak[1 ] |=SKEIN_T1_FLAG_FINAL ;/* zero pad b[] if necessary */ if (ctx->h.b_cnt <SKEIN_1024_BLOCK_BYTES ) memset(&ctx->b[ctx->h.b_cnt], 0,
@@ -758,7 +758,7 @@ int skein_1024_final_pad(struct skein_1024_ctx *ctx, u8 *hash_val)skein_1024_process_block (ctx, ctx->b,1 , ctx->h.b_cnt);/* "output" the state bytes */ -skein_put64_lsb_first (hash_val, ctx->X,SKEIN_1024_BLOCK_BYTES ); +skein_put64_lsb_first (hash_val, ctx->x,SKEIN_1024_BLOCK_BYTES );return SKEIN_SUCCESS ; }
@@ -769,7 +769,7 @@ int skein_1024_final_pad(struct skein_1024_ctx *ctx, u8 *hash_val)int skein_256_output (struct skein_256_ctx *ctx,u8 *hash_val) {size_t i, n, byte_cnt; -u64 X [SKEIN_256_STATE_WORDS ]; +u64 x[SKEIN_256_STATE_WORDS ];/* catch uninitialized context */ skein_assert_ret (ctx->h.b_cnt <=SKEIN_256_BLOCK_BYTES ,SKEIN_FAIL );
@@ -781,7 +781,7 @@ int skein_256_output(struct skein_256_ctx *ctx, u8 *hash_val)/* zero out b[], so it can hold the counter */ memset (ctx->b,0 ,sizeof (ctx->b));/* keep a local copy of counter mode "key" */ -memcpy (X , ctx->X,sizeof (X )); +memcpy (x, ctx->x,sizeof (x));for (i =0 ; i*SKEIN_256_BLOCK_BYTES < byte_cnt; i++) {/* build the counter block */ ((u64 *)ctx->b)[0 ] =skein_swap64 ((u64 ) i);
@@ -793,12 +793,12 @@ int skein_256_output(struct skein_256_ctx *ctx, u8 *hash_val)if (n >=SKEIN_256_BLOCK_BYTES ) n =SKEIN_256_BLOCK_BYTES ;/* "output" the ctr mode bytes */ -skein_put64_lsb_first (hash_val+i*SKEIN_256_BLOCK_BYTES , ctx->X, +skein_put64_lsb_first (hash_val+i*SKEIN_256_BLOCK_BYTES , ctx->x, n);skein_show_final (256 , &ctx->h, n, hash_val+i*SKEIN_256_BLOCK_BYTES );/* restore the counter mode key for next time */ -memcpy (ctx->X,X ,sizeof (X )); +memcpy (ctx->x, x,sizeof (x)); }return SKEIN_SUCCESS ; }
@@ -808,7 +808,7 @@ int skein_256_output(struct skein_256_ctx *ctx, u8 *hash_val)int skein_512_output (struct skein_512_ctx *ctx,u8 *hash_val) {size_t i, n, byte_cnt; -u64 X [SKEIN_512_STATE_WORDS ]; +u64 x[SKEIN_512_STATE_WORDS ];/* catch uninitialized context */ skein_assert_ret (ctx->h.b_cnt <=SKEIN_512_BLOCK_BYTES ,SKEIN_FAIL );
@@ -820,7 +820,7 @@ int skein_512_output(struct skein_512_ctx *ctx, u8 *hash_val)/* zero out b[], so it can hold the counter */ memset (ctx->b,0 ,sizeof (ctx->b));/* keep a local copy of counter mode "key" */ -memcpy (X , ctx->X,sizeof (X )); +memcpy (x, ctx->x,sizeof (x));for (i =0 ; i*SKEIN_512_BLOCK_BYTES < byte_cnt; i++) {/* build the counter block */ ((u64 *)ctx->b)[0 ] =skein_swap64 ((u64 ) i);
@@ -832,12 +832,12 @@ int skein_512_output(struct skein_512_ctx *ctx, u8 *hash_val)if (n >=SKEIN_512_BLOCK_BYTES ) n =SKEIN_512_BLOCK_BYTES ;/* "output" the ctr mode bytes */ -skein_put64_lsb_first (hash_val+i*SKEIN_512_BLOCK_BYTES , ctx->X, +skein_put64_lsb_first (hash_val+i*SKEIN_512_BLOCK_BYTES , ctx->x, n);skein_show_final (256 , &ctx->h, n, hash_val+i*SKEIN_512_BLOCK_BYTES );/* restore the counter mode key for next time */ -memcpy (ctx->X,X ,sizeof (X )); +memcpy (ctx->x, x,sizeof (x)); }return SKEIN_SUCCESS ; }
@@ -847,7 +847,7 @@ int skein_512_output(struct skein_512_ctx *ctx, u8 *hash_val)int skein_1024_output (struct skein_1024_ctx *ctx,u8 *hash_val) {size_t i, n, byte_cnt; -u64 X [SKEIN_1024_STATE_WORDS ]; +u64 x[SKEIN_1024_STATE_WORDS ];/* catch uninitialized context */ skein_assert_ret (ctx->h.b_cnt <=SKEIN_1024_BLOCK_BYTES ,SKEIN_FAIL );
@@ -859,7 +859,7 @@ int skein_1024_output(struct skein_1024_ctx *ctx, u8 *hash_val)/* zero out b[], so it can hold the counter */ memset (ctx->b,0 ,sizeof (ctx->b));/* keep a local copy of counter mode "key" */ -memcpy (X , ctx->X,sizeof (X )); +memcpy (x, ctx->x,sizeof (x));for (i =0 ; i*SKEIN_1024_BLOCK_BYTES < byte_cnt; i++) {/* build the counter block */ ((u64 *)ctx->b)[0 ] =skein_swap64 ((u64 ) i);
@@ -871,12 +871,12 @@ int skein_1024_output(struct skein_1024_ctx *ctx, u8 *hash_val)if (n >=SKEIN_1024_BLOCK_BYTES ) n =SKEIN_1024_BLOCK_BYTES ;/* "output" the ctr mode bytes */ -skein_put64_lsb_first (hash_val+i*SKEIN_1024_BLOCK_BYTES , ctx->X, +skein_put64_lsb_first (hash_val+i*SKEIN_1024_BLOCK_BYTES , ctx->x, n);skein_show_final (256 , &ctx->h, n, hash_val+i*SKEIN_1024_BLOCK_BYTES );/* restore the counter mode key for next time */ -memcpy (ctx->X,X ,sizeof (X )); +memcpy (ctx->x, x,sizeof (x)); }return SKEIN_SUCCESS ; }
drivers/staging/skein/skein.h +17 -17
@@ -66,24 +66,24 @@ enum {struct skein_ctx_hdr {size_t hash_bit_len;/* size of hash result, in bits */ size_t b_cnt;/* current byte count in buffer b[] */ -u64 T[SKEIN_MODIFIER_WORDS ];/* tweak: T[0]=byte cnt, T[1]=flags */ +u64 tweak[SKEIN_MODIFIER_WORDS ];/* tweak[0]=byte cnt, tweak[1]=flags */ };struct skein_256_ctx {/* 256-bit Skein hash context structure */ struct skein_ctx_hdr h;/* common header context variables */ -u64 X[SKEIN_256_STATE_WORDS ];/* chaining variables */ +u64 x[SKEIN_256_STATE_WORDS ];/* chaining variables */ u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ };struct skein_512_ctx {/* 512-bit Skein hash context structure */ struct skein_ctx_hdr h;/* common header context variables */ -u64 X[SKEIN_512_STATE_WORDS ];/* chaining variables */ +u64 x[SKEIN_512_STATE_WORDS ];/* chaining variables */ u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ };struct skein_1024_ctx {/* 1024-bit Skein hash context structure */ struct skein_ctx_hdr h;/* common header context variables */ -u64 X[SKEIN_1024_STATE_WORDS ];/* chaining variables */ +u64 x[SKEIN_1024_STATE_WORDS ];/* chaining variables */ u8 b[SKEIN_1024_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ };
@@ -150,7 +150,7 @@ int skein_1024_output(struct skein_1024_ctx *ctx, u8 *hash_val);** reference and optimized code. ******************************************************************/ -/* tweak word T[1]: bit field starting positions */ +/* tweak word tweak[1]: bit field starting positions */ #define SKEIN_T1_BIT (BIT ) ((BIT) - 64)/* second word */ #define SKEIN_T1_POS_TREE_LVL SKEIN_T1_BIT(112)/* 112..118 hash tree level */
@@ -159,16 +159,16 @@ int skein_1024_output(struct skein_1024_ctx *ctx, u8 *hash_val);#define SKEIN_T1_POS_FIRST SKEIN_T1_BIT(126)/* 126 first blk flag */ #define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* 127 final blk flag */ -/* tweak word T[1]: flag bit definition(s) */ +/* tweak word tweak[1]: flag bit definition(s) */ #define SKEIN_T1_FLAG_FIRST (((u64) 1) << SKEIN_T1_POS_FIRST)#define SKEIN_T1_FLAG_FINAL (((u64) 1) << SKEIN_T1_POS_FINAL)#define SKEIN_T1_FLAG_BIT_PAD (((u64) 1) << SKEIN_T1_POS_BIT_PAD) -/* tweak word T[1]: tree level bit field mask */ +/* tweak word tweak[1]: tree level bit field mask */ #define SKEIN_T1_TREE_LVL_MASK (((u64)0x7F) << SKEIN_T1_POS_TREE_LVL)#define SKEIN_T1_TREE_LEVEL (n) (((u64) (n)) << SKEIN_T1_POS_TREE_LVL) -/* tweak word T[1]: block type field */ +/* tweak word tweak[1]: block type field */ #define SKEIN_BLK_TYPE_KEY (0)/* key, for MAC and KDF */ #define SKEIN_BLK_TYPE_CFG (4)/* configuration block */ #define SKEIN_BLK_TYPE_PERS (8)/* personalization string */
@@ -232,9 +232,9 @@ int skein_1024_output(struct skein_1024_ctx *ctx, u8 *hash_val);** Skein macros for getting/setting tweak words, etc. ** These are useful for partial input bytes, hash tree init/update, etc. **/ -#define skein_get_tweak (ctx_ptr,TWK_NUM ) ((ctx_ptr)->h.T[TWK_NUM]) +#define skein_get_tweak (ctx_ptr,TWK_NUM ) ((ctx_ptr)->h.tweak[TWK_NUM])#define skein_set_tweak (ctx_ptr,TWK_NUM , t_val) { \ - (ctx_ptr)->h.T[TWK_NUM] = (t_val); \ + (ctx_ptr)->h.tweak[TWK_NUM] = (t_val); \ }#define skein_get_T0 (ctx_ptr) skein_get_tweak(ctx_ptr, 0)
@@ -254,7 +254,7 @@ int skein_1024_output(struct skein_1024_ctx *ctx, u8 *hash_val);/* * setup for starting with a new type: -* h.T[0]=0; h.T[1] = NEW_TYPE; h.b_cnt=0; +* h.tweak[0]=0; h.tweak[1] = NEW_TYPE; h.b_cnt=0; */ #define skein_start_new_type (ctx_ptr,BLK_TYPE ) { \ skein_set_T0_T1(ctx_ptr, 0, SKEIN_T1_FLAG_FIRST | \
@@ -263,14 +263,14 @@ int skein_1024_output(struct skein_1024_ctx *ctx, u8 *hash_val); }#define skein_clear_first_flag (hdr) { \ - (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; \ + (hdr).tweak[1] &= ~SKEIN_T1_FLAG_FIRST; \ }#define skein_set_bit_pad_flag (hdr) { \ - (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; \ + (hdr).tweak[1] |= SKEIN_T1_FLAG_BIT_PAD; \ }#define skein_set_tree_level (hdr, height) { \ - (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height); \ + (hdr).tweak[1] |= SKEIN_T1_TREE_LEVEL(height); \ }/*****************************************************************
@@ -279,9 +279,9 @@ int skein_1024_output(struct skein_1024_ctx *ctx, u8 *hash_val);#ifdef SKEIN_DEBUG /* examine/display intermediate values? */ #include "skein_debug.h" #else /* default is no callouts */ -#define skein_show_block (bits, ctx,X , blk_ptr, w_ptr, ks_event_ptr, ks_odd_ptr) -#define skein_show_round (bits, ctx, r,X ) -#define skein_show_r_ptr (bits, ctx, r, X_ptr) +#define skein_show_block (bits, ctx, x, blk_ptr, w_ptr, ks_event_ptr, ks_odd_ptr) +#define skein_show_round (bits, ctx, r, x) +#define skein_show_r_ptr (bits, ctx, r, x_ptr)#define skein_show_final (bits, ctx, cnt, out_ptr)#define skein_show_key (bits, ctx, key, key_bytes)#endif
drivers/staging/skein/skein_api.c +16 -16
@@ -40,8 +40,8 @@ int skein_ctx_prepare(struct skein_ctx *ctx, enum skein_size size)int skein_init (struct skein_ctx *ctx,size_t hash_bit_len) {int ret =SKEIN_FAIL ; -size_t X_len =0 ; -u64 *X =NULL ; +size_t x_len =0 ; +u64 *x =NULL ;u64 tree_info =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;skein_assert_ret (ctx,SKEIN_FAIL );
@@ -50,8 +50,8 @@ int skein_init(struct skein_ctx *ctx, size_t hash_bit_len)* contexts are a union in out context and thus have tha maximum * memory available. The beauty of C :-) . */ -X = ctx->m.s256.X; - X_len = ctx->skein_size/8 ; + x = ctx->m.s256.x; + x_len = ctx->skein_size/8 ;/* * If size is the same and hash bit length is zero then reuse * the save chaining variables.
@@ -76,7 +76,7 @@ int skein_init(struct skein_ctx *ctx, size_t hash_bit_len)* Save chaining variables for this combination of size and * hash_bit_len */ -memcpy (ctx->X_save,X , X_len); +memcpy (ctx->x_save, x, x_len); }return ret; }
@@ -85,14 +85,14 @@ int skein_mac_init(struct skein_ctx *ctx, const u8 *key, size_t key_len, size_t hash_bit_len) {int ret =SKEIN_FAIL ; -u64 *X =NULL ; -size_t X_len =0 ; +u64 *x =NULL ; +size_t x_len =0 ;u64 tree_info =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;skein_assert_ret (ctx,SKEIN_FAIL ); -X = ctx->m.s256.X; - X_len = ctx->skein_size/8 ; + x = ctx->m.s256.x; + x_len = ctx->skein_size/8 ;skein_assert_ret (hash_bit_len,SKEIN_BAD_HASHLEN );
@@ -120,25 +120,25 @@ int skein_mac_init(struct skein_ctx *ctx, const u8 *key, size_t key_len,* Save chaining variables for this combination of key, * key_len, hash_bit_len */ -memcpy (ctx->X_save,X , X_len); +memcpy (ctx->x_save, x, x_len); }return ret; }void skein_reset (struct skein_ctx *ctx) { -size_t X_len =0 ; -u64 *X =NULL ; +size_t x_len =0 ; +u64 *x =NULL ;/* * The following two lines rely of the fact that the real Skein * contexts are a union in out context and thus have tha maximum * memory available. The beautiy of C :-) . */ -X = ctx->m.s256.X; - X_len = ctx->skein_size/8 ; + x = ctx->m.s256.x; + x_len = ctx->skein_size/8 ;/* Restore the chaing variable, reset byte counter */ -memcpy (X , ctx->X_save, X_len); +memcpy (x, ctx->x_save, x_len);/* Setup context to process the message */ skein_start_new_type (&ctx->m,MSG );
@@ -200,7 +200,7 @@ int skein_update_bits(struct skein_ctx *ctx, const u8 *msg,* Skein's real partial block buffer. * If this layout ever changes we have to adapt this as well. */ - up = (u8 *)ctx->m.s256.X + ctx->skein_size /8 ; + up = (u8 *)ctx->m.s256.x + ctx->skein_size /8 ;/* set tweak flag for the skein_final call */ skein_set_bit_pad_flag (ctx->m.h);
drivers/staging/skein/skein_api.h +1 -1
@@ -100,7 +100,7 @@ enum skein_size {*/ struct skein_ctx {u64 skein_size; -u64 X_save[SKEIN_MAX_STATE_WORDS ];/* save area for state variables */ +u64 x_save[SKEIN_MAX_STATE_WORDS ];/* save area for state variables */ union {struct skein_ctx_hdr h;struct skein_256_ctx s256;
drivers/staging/skein/skein_block.c +78 -77
250 lines not on this page · raw message
Signature · 6 lines
1.9.0 -- Jake Edge - LWN - [email protected] - http://lwn.net
Jake,
Quoted 6 lines · Jake Edge
Clean up a few more things in skein to get it closer to mainline inclusion. The first may be questionable (so I probably should have put it last -- oh well, I can always respin), but it seemed like putting all of the threefish block functions in one file, like the skein block functions are all in one file, made sense.
Fine by me. For the whole series:
Thanks for the help!
Do you have any other series pending for this driver? I suspect Anton does and I'd like to deconflict the two efforts.
thx,
Jason.
Quoted 1 line · On Tue, 20 May 2014 10:47:57 -0400 Jason Cooper wrote:
Do you have any other series pending for this driver?
No and I won't be doing anything else for the next couple of days -- some darn weekly edition to deal with :)
It seems like most of the straightforward stuff has been dealt with at this point. That rats nest of ifdefs in skein_block.c needs attention, but some kind of tests are needed to ensure nothing breaks before digging into that ...
jake
Signature · 1 line
Jake Edge - LWN - [email protected] - http://lwn.net
Quoted 6 lines · Jake Edge
Quoted 1 line · On Tue, 20 May 2014 10:47:57 -0400 Jason Cooper wrote:
Do you have any other series pending for this driver?
No and I won't be doing anything else for the next couple of days -- some darn weekly edition to deal with :)
:)
Quoted 4 lines
It seems like most of the straightforward stuff has been dealt with at this point. That rats nest of ifdefs in
skein_block.cneeds attention, but some kind of tests are needed to ensure nothing breaks before digging into that ...
Something like objdiff [1]? It landed in v3.15-rc1, so you can use it from staging/staging-next.
I'd also like to consolidate all the macros that are declared in the middle of functions and such. After that, test vectors and crypto API integration.
thx,
Jason.
Quoted 4 lines · Jake Edge
On Tue, 20 May 2014 10:47:57 -0400 Jason Cooper wrote:
but some kind of tests are needed to ensure nothing breaks before digging into that ...
I have some test: slightly modified version of tests from
https://github.com/wernerd/Skein3Fish. It works as debugfs entry and require some modification needed for module support ("public" function must be extern). As I can understand Jason has his own tests. That would be logical to share them but I don't know where.
Quoted 6 lines · On Wed, 21 May 2014 01:52:17 +0400 Anton Saraev wrote:
Quoted 4 lines · Jake Edge
On Tue, 20 May 2014 10:47:57 -0400 Jason Cooper wrote:
but some kind of tests are needed to ensure nothing breaks before digging into that ...
Quoted 6 lines
I have some test: slightly modified version of tests from
https://github.com/wernerd/Skein3Fish. It works as debugfs entry and require some modification needed for module support ("public" function must be extern). As I can understand Jason has his own tests. That would be logical to share them but I don't know where.
well, it seems to me that we want tests that eventually can be added into the crypto test framework once skein moves out of staging and into crypto ... Jason's objdiff seems like it would be used as another development tool ...
so do you have your tests anywhere that we can look at them? or, failing that, maybe you can just email me a copy off-list or something?
do you have patches pending for skein? i might get a chance to hack on this some over the weekend, and we may as well try to avoid duplicating each other's efforts ...
jake
Signature · 1 line
Jake Edge - LWN - [email protected] - http://lwn.net
Quoted 14 lines · Jake Edge
Quoted 6 lines · On Wed, 21 May 2014 01:52:17 +0400 Anton Saraev wrote:
Quoted 4 lines · Jake Edge
On Tue, 20 May 2014 10:47:57 -0400 Jason Cooper wrote:
but some kind of tests are needed to ensure nothing breaks before digging into that ...
Quoted 6 lines
I have some test: slightly modified version of tests from
https://github.com/wernerd/Skein3Fish. It works as debugfs entry and require some modification needed for module support ("public" function must be extern). As I can understand Jason has his own tests. That would be logical to share them but I don't know where.
Quoted 7 lines
well, it seems to me that we want tests that eventually can be added into the crypto test framework once skein moves out of staging and into crypto ... Jason's objdiff seems like it would be used as another development tool ...
so do you have your tests anywhere that we can look at them? or, failing that, maybe you can just email me a copy off-list or something?
https://github.com/wernerd/Skein3Fish/tree/master/c/test
This is the same repo I pulled the original source files from. I looked at integrating into the crypto test framework a few months back and realized the crypto API needed to be modified to handle tweakable block ciphers.
Quoted 3 lines
do you have patches pending for skein? i might get a chance to hack on this some over the weekend, and we may as well try to avoid duplicating each other's efforts ...
I do not, I'm unsure if Anton has anything pending capable of upstreaming.
thx,
Jason.
Quoted 2 lines · Jason Cooper
I do not, I'm unsure if Anton has anything pending capable of upstreaming.
I have two simple patches. But I don't know is it necessary to send this patches. First is export of functions in *api.c files. But it is trivial part of api cleanup. Second is fixing of remaining uppercase X in skein_block.c. But this variables lie on SKEIN_DEBUG compile path and maybe will be completely removed (or we need add some output in the appropriate functions).