Skip to contentSkip to conversation

staging/skein: more cleanup

PATCH In review Jake Edge 3 participants 11 messages May 20, 2014 – May 24, 2014 Staging

lore
Share & tools
lore

Jake Edge

author
#0 lore raw

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
author
#1 lore raw

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
index 395454c..a14aadd 100644
@@ -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.

author
#2 lore raw

PATCH 2/3 staging/skein: comment typos

In reply to Jake Edge

fix 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
index 2fce154..8d5ddf8 100644
@@ -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
author
#3 lore raw

PATCH 3/3 staging/skein: variable/member name cleanup

In reply to Jake Edge

Rename 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
index f76d585..8cc8358 100644
@@ -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
index 2c87ff7..e6669f1 100644
@@ -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
index eaf7af4..6e700ee 100644
@@ -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
index db808ae..e02fa19 100644
@@ -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
Acked-by on the v1 series
#4 lore raw
In reply to Jake Edge

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.

author
#5 lore raw
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
#6 lore raw
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.c needs 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.

[1] https://git.kernel.org/cgit/linux/kernel/git/gregkh/staging.git/commit/scripts/objdiff?id=79192ca8ebd9a25c583aa46024a250fef1e7766f

#7 lore raw
In reply to Jake Edge
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.

author
#8 lore raw
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
#9 lore raw
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.

#10 lore raw
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).