staging: add skein/threefish crypto algos
Subsystems (2)
RFC PATCH 2/22 staging: crypto: skein: import code from Skein3Fish.git
In reply to Jason CooperThis is a byte-for-byte copy of the skein implementation found at:
https://github.com/wernerd/Skein3Fish.git
Specifically, from the master branch at commit:
00e925444c2c Merge pull request #4 from csm/master
The next commit will do the minimum necessary to build this code as a module.
I've generated the sha256 sums of the files by:
$ (cd drivers/staging/skein; find . -type f | sort | xargs sha256sum) bcd73168e5805b1b157dbf08863e6a8c217a7b270b6be1a361540591b00624e3 ./CMakeLists.txt e1adb97dd9e87bc7c05892ed7863a66d1d9fde6728a97a8b7b092709da664d29 ./include/brg_endian.h 240329b4ca4d829ac4d1490e96e83118e161e719e448c7e8dbf15735ab8a8e87 ./include/brg_types.h 0d8f16438f641fa365844a5991220eb04969f0a19c60dff08e10f521e74db5c3 ./include/skein.h 8f7362796e9e43f7619d51020d6faeedce786492b65bebd2ff6a833b621051cb ./include/skeinApi.h 90510d8a9f686c3bfbf6cf7737237e3fa263c1ed5046b0f19727ba55b9bffeb9 ./include/skein_iv.h 42c6c8eff8f364ee2f0de3177d468dbceba9c6a73222fea473fe6d603213806a ./include/skein_port.h 0154a4b8d54f5aa424b39a7ee668b31f2522b907bf3a8536fe46440b584531a1 ./include/threefishApi.h ac0fc0f95a48a716d30cf02e5adad77af17725a938f939cf94f6dfba42badeca ./skein.c 7af70b177bc63690f68eebceca2dbfef8a4473dcc847ae3525508c65c7d7bcc1 ./skeinApi.c d7ef7330be8253f7f061de3c36880dbc83b0f5d90c8f2b72d3478766f54fbff0 ./skeinBlockNo3F.c 8bb3d7864afc9eab5569949fb2799cb6f14e583ba00641313cf877a5aea1c763 ./skein_block.c 438e6cb59a0090166e8f1e39418c0a2d0036737a32c5e2822c2ed8b803e2132f ./threefish1024Block.c e812ec6f2881300e90c803cfd9d044e954f1ca64faa2fc17a709f56a2f122ff8 ./threefish256Block.c 926f680057e128cdd1feba4a8544c177a74420137af480267b949ae79f3d02b8 ./threefish512Block.c 19357f5d47e7183bc8558a8d0949a3f5a80a931848917d26f36eebb7d205f003 ./threefishApi.c
--- drivers/staging/skein/CMakeLists.txt | 27 + drivers/staging/skein/include/brg_endian.h | 148 +++ drivers/staging/skein/include/brg_types.h | 188 ++++ drivers/staging/skein/include/skein.h | 327 ++++++ drivers/staging/skein/include/skeinApi.h | 239 +++++ drivers/staging/skein/include/skein_iv.h | 199 ++++ drivers/staging/skein/include/skein_port.h | 124 +++ drivers/staging/skein/include/threefishApi.h | 167 ++++ drivers/staging/skein/skein.c | 742 ++++++++++++++ drivers/staging/skein/skeinApi.c | 221 ++++ drivers/staging/skein/skeinBlockNo3F.c | 172 ++++ drivers/staging/skein/skein_block.c | 689 +++++++++++++ drivers/staging/skein/threefish1024Block.c | 1385 ++++++++++++++++++++++++++ drivers/staging/skein/threefish256Block.c | 349 +++++++ drivers/staging/skein/threefish512Block.c | 643 ++++++++++++ drivers/staging/skein/threefishApi.c | 79 ++ 16 files changed, 5699 insertions(+) create mode 100755 drivers/staging/skein/CMakeLists.txt create mode 100644 drivers/staging/skein/include/brg_endian.h create mode 100644 drivers/staging/skein/include/brg_types.h create mode 100644 drivers/staging/skein/include/skein.h create mode 100755 drivers/staging/skein/include/skeinApi.h create mode 100644 drivers/staging/skein/include/skein_iv.h create mode 100644 drivers/staging/skein/include/skein_port.h create mode 100644 drivers/staging/skein/include/threefishApi.h create mode 100644 drivers/staging/skein/skein.c create mode 100755 drivers/staging/skein/skeinApi.c create mode 100644 drivers/staging/skein/skeinBlockNo3F.c create mode 100644 drivers/staging/skein/skein_block.c create mode 100644 drivers/staging/skein/threefish1024Block.c create mode 100644 drivers/staging/skein/threefish256Block.c create mode 100644 drivers/staging/skein/threefish512Block.c create mode 100644 drivers/staging/skein/threefishApi.c
drivers/staging/skein/CMakeLists.txt new file +27 -0
@@ -0,0 +1,27 @@ +cmake_minimum_required (VERSION 2.6) + +include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include) + +# set(skeinBlock_src skein_block.c) +set(skeinBlock_src skeinBlockNo3F.c) + +set(skein_src + ${skeinBlock_src} + skein.c + skeinApi.c + ) + +set(threefish_src + threefishApi.c + threefish256Block.c + threefish512Block.c + threefish1024Block.c + ) +set(s3f_src ${skein_src} ${threefish_src}) + +add_library(skein3fish SHARED ${s3f_src}) +set_target_properties(skein3fish PROPERTIES VERSION ${VERSION} SOVERSION ${SOVERSION}) +target_link_libraries(skein3fish ${LIBS}) + +install(TARGETS skein3fish DESTINATION ${LIBDIRNAME}) +
drivers/staging/skein/include/brg_endian.h new file +148 -0
148 lines not on this page · raw message
drivers/staging/skein/include/brg_types.h new file +188 -0
188 lines not on this page · raw message
drivers/staging/skein/include/skein.h new file +327 -0
327 lines not on this page · raw message
drivers/staging/skein/include/skeinApi.h new file +239 -0
239 lines not on this page · raw message
drivers/staging/skein/include/skein_iv.h new file +199 -0
199 lines not on this page · raw message
drivers/staging/skein/include/skein_port.h new file +124 -0
124 lines not on this page · raw message
drivers/staging/skein/include/threefishApi.h new file +167 -0
167 lines not on this page · raw message
drivers/staging/skein/skein.c new file +742 -0
742 lines not on this page · raw message
drivers/staging/skein/skeinApi.c new file +221 -0
221 lines not on this page · raw message
drivers/staging/skein/skeinBlockNo3F.c new file +172 -0
172 lines not on this page · raw message
drivers/staging/skein/skein_block.c new file +689 -0
446 lines not on this page · raw message
drivers/staging/skein/threefish1024Block.c new file +1385 -0
1,385 lines not on this page · raw message
drivers/staging/skein/threefish256Block.c new file +349 -0
349 lines not on this page · raw message
drivers/staging/skein/threefish512Block.c new file +643 -0
643 lines not on this page · raw message
drivers/staging/skein/threefishApi.c new file +79 -0
79 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
1.9.0
Part of the diff is not shown here. View the raw message.
RFC PATCH 11/22 staging: crypto: skein: cleanup whitespace around operators/punc.
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 168 +++++----- drivers/staging/skein/include/skein_iv.h | 224 +++++++------- drivers/staging/skein/skein.c | 352 ++++++++++----------- drivers/staging/skein/skeinApi.c | 22 +- drivers/staging/skein/skeinBlockNo3F.c | 20 +- drivers/staging/skein/skein_block.c | 513 +++++++++++++++---------------- 6 files changed, 648 insertions(+), 651 deletions(-)
drivers/staging/skein/include/skein.h +84 -84
@@ -29,12 +29,12 @@***************************************************************************/ #ifndef RotL_64 -#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N)))) +#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N))))#endif /* below two prototype assume we are handed aligned data */ -#define Skein_Put64_LSB_First (dst08,src64,bCnt) memcpy(dst08,src64,bCnt) -#define Skein_Get64_LSB_First (dst64,src08,wCnt) memcpy(dst64,src08,8*(wCnt)) +#define Skein_Put64_LSB_First (dst08, src64, bCnt) memcpy(dst08, src64, bCnt) +#define Skein_Get64_LSB_First (dst64, src08, wCnt) memcpy(dst64, src08, 8*(wCnt))#define Skein_Swap64 (w64) (w64) enum
@@ -44,24 +44,24 @@ enumSKEIN_BAD_HASHLEN =2 }; -#define SKEIN_MODIFIER_WORDS ( 2)/* number of modifier (tweak) words */ +#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */ -#define SKEIN_256_STATE_WORDS ( 4) -#define SKEIN_512_STATE_WORDS ( 8) +#define SKEIN_256_STATE_WORDS (4) +#define SKEIN_512_STATE_WORDS (8)#define SKEIN1024_STATE_WORDS (16)#define SKEIN_MAX_STATE_WORDS (16) -#define SKEIN_256_STATE_BYTES ( 8*SKEIN_256_STATE_WORDS) -#define SKEIN_512_STATE_BYTES ( 8*SKEIN_512_STATE_WORDS) -#define SKEIN1024_STATE_BYTES ( 8*SKEIN1024_STATE_WORDS) +#define SKEIN_256_STATE_BYTES (8*SKEIN_256_STATE_WORDS) +#define SKEIN_512_STATE_BYTES (8*SKEIN_512_STATE_WORDS) +#define SKEIN1024_STATE_BYTES (8*SKEIN1024_STATE_WORDS)#define SKEIN_256_STATE_BITS (64*SKEIN_256_STATE_WORDS)#define SKEIN_512_STATE_BITS (64*SKEIN_512_STATE_WORDS)#define SKEIN1024_STATE_BITS (64*SKEIN1024_STATE_WORDS) -#define SKEIN_256_BLOCK_BYTES ( 8*SKEIN_256_STATE_WORDS) -#define SKEIN_512_BLOCK_BYTES ( 8*SKEIN_512_STATE_WORDS) -#define SKEIN1024_BLOCK_BYTES ( 8*SKEIN1024_STATE_WORDS) +#define SKEIN_256_BLOCK_BYTES (8*SKEIN_256_STATE_WORDS) +#define SKEIN_512_BLOCK_BYTES (8*SKEIN_512_STATE_WORDS) +#define SKEIN1024_BLOCK_BYTES (8*SKEIN1024_STATE_WORDS)struct skein_ctx_hdr {
@@ -92,17 +92,17 @@ struct skein1024_ctx /* 1024-bit Skein hash context };/* Skein APIs for (incremental) "straight hashing" */ -int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen); -int Skein_512_Init (struct skein_512_ctx *ctx,size_t hashBitLen); -int Skein1024_Init (struct skein1024_ctx *ctx,size_t hashBitLen); +int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen); +int Skein_512_Init (struct skein_512_ctx *ctx,size_t hashBitLen); +int Skein1024_Init (struct skein1024_ctx *ctx,size_t hashBitLen);int Skein_256_Update (struct skein_256_ctx *ctx,const u8 *msg,size_t msgByteCnt);int Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg,size_t msgByteCnt);int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_256_Final (struct skein_256_ctx *ctx,u8 *hashVal); -int Skein_512_Final (struct skein_512_ctx *ctx,u8 *hashVal); -int Skein1024_Final (struct skein1024_ctx *ctx,u8 *hashVal); +int Skein_256_Final (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Final (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Final (struct skein1024_ctx *ctx,u8 *hashVal);/* ** Skein APIs for "extended" initialization: MAC keys, tree hashing.
@@ -135,9 +135,9 @@ int Skein1024_Final_Pad(struct skein1024_ctx *ctx, u8 *hashVal);#define SKEIN_TREE_HASH (1)#endif #if SKEIN_TREE_HASH -int Skein_256_Output (struct skein_256_ctx *ctx,u8 *hashVal); -int Skein_512_Output (struct skein_512_ctx *ctx,u8 *hashVal); -int Skein1024_Output (struct skein1024_ctx *ctx,u8 *hashVal); +int Skein_256_Output (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Output (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Output (struct skein1024_ctx *ctx,u8 *hashVal);#endif /*****************************************************************
@@ -158,18 +158,18 @@ int Skein1024_Output (struct skein1024_ctx *ctx, u8 *hashVal);#define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* bit 127 : final block flag */ /* tweak word T[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) +#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 */ #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 */ -#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 */ +#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 */ #define SKEIN_BLK_TYPE_PK (12)/* public key (for digital signature hashing) */ #define SKEIN_BLK_TYPE_KDF (16)/* key identifier for KDF */ #define SKEIN_BLK_TYPE_NONCE (20)/* nonce for PRNG */
@@ -197,73 +197,73 @@ int Skein1024_Output (struct skein1024_ctx *ctx, u8 *hashVal);#define SKEIN_ID_STRING_LE (0x33414853)/* "SHA3" (little-endian)*/ #endif -#define SKEIN_MK_64 (hi32,lo32) ((lo32) + (((u64) (hi32)) << 32)) -#define SKEIN_SCHEMA_VER SKEIN_MK_64(SKEIN_VERSION,SKEIN_ID_STRING_LE) -#define SKEIN_KS_PARITY SKEIN_MK_64(0x1BD11BDA,0xA9FC1A22) +#define SKEIN_MK_64 (hi32, lo32) ((lo32) + (((u64) (hi32)) << 32)) +#define SKEIN_SCHEMA_VER SKEIN_MK_64(SKEIN_VERSION, SKEIN_ID_STRING_LE) +#define SKEIN_KS_PARITY SKEIN_MK_64(0x1BD11BDA, 0xA9FC1A22)#define SKEIN_CFG_STR_LEN (4*8)/* bit field definitions in config block treeInfo word */ -#define SKEIN_CFG_TREE_LEAF_SIZE_POS ( 0) -#define SKEIN_CFG_TREE_NODE_SIZE_POS ( 8) +#define SKEIN_CFG_TREE_LEAF_SIZE_POS (0) +#define SKEIN_CFG_TREE_NODE_SIZE_POS (8)#define SKEIN_CFG_TREE_MAX_LEVEL_POS (16)#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS)#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS)#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS) -#define SKEIN_CFG_TREE_INFO (leaf,node,maxLvl) \ - ( (((u64)(leaf )) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ - (((u64)(node )) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ - (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS) ) +#define SKEIN_CFG_TREE_INFO (leaf, node, maxLvl) \ + ((((u64)(leaf)) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ + (((u64)(node)) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ + (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS)) -#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0,0,0)/* use as treeInfo in InitExt() call for sequential processing */ +#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0, 0, 0)/* use as treeInfo in InitExt() call for sequential processing */ /* ** Skein macros for getting/setting tweak words, etc. ** These are useful for partial input bytes, hash tree init/update, etc. **/ -#define Skein_Get_Tweak (ctxPtr,TWK_NUM ) ((ctxPtr)->h.T[TWK_NUM]) -#define Skein_Set_Tweak (ctxPtr,TWK_NUM ,tVal) {(ctxPtr)->h.T[TWK_NUM] = (tVal);} +#define Skein_Get_Tweak (ctxPtr,TWK_NUM ) ((ctxPtr)->h.T[TWK_NUM]) +#define Skein_Set_Tweak (ctxPtr,TWK_NUM , tVal) {(ctxPtr)->h.T[TWK_NUM] = (tVal); } -#define Skein_Get_T0 (ctxPtr) Skein_Get_Tweak(ctxPtr,0) -#define Skein_Get_T1 (ctxPtr) Skein_Get_Tweak(ctxPtr,1) -#define Skein_Set_T0 (ctxPtr,T0 ) Skein_Set_Tweak(ctxPtr,0,T0) -#define Skein_Set_T1 (ctxPtr,T1 ) Skein_Set_Tweak(ctxPtr,1,T1) +#define Skein_Get_T0 (ctxPtr) Skein_Get_Tweak(ctxPtr, 0) +#define Skein_Get_T1 (ctxPtr) Skein_Get_Tweak(ctxPtr, 1) +#define Skein_Set_T0 (ctxPtr,T0 ) Skein_Set_Tweak(ctxPtr, 0, T0) +#define Skein_Set_T1 (ctxPtr,T1 ) Skein_Set_Tweak(ctxPtr, 1, T1)/* set both tweak words at once */ -#define Skein_Set_T0_T1 (ctxPtr,T0 ,T1 ) \ +#define Skein_Set_T0_T1 (ctxPtr,T0 ,T1 ) \ { \ - Skein_Set_T0(ctxPtr,(T0)); \ - Skein_Set_T1(ctxPtr,(T1)); \ + Skein_Set_T0(ctxPtr, (T0)); \ + Skein_Set_T1(ctxPtr, (T1)); \ } -#define Skein_Set_Type (ctxPtr,BLK_TYPE ) \ - Skein_Set_T1(ctxPtr,SKEIN_T1_BLK_TYPE_##BLK_TYPE) +#define Skein_Set_Type (ctxPtr,BLK_TYPE ) \ + Skein_Set_T1(ctxPtr, SKEIN_T1_BLK_TYPE_##BLK_TYPE)/* set up for starting with a new type: h.T[0]=0; h.T[1] = NEW_TYPE; h.bCnt=0; */ -#define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) \ - { Skein_Set_T0_T1(ctxPtr,0,SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt=0; } +#define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) \ + { Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt = 0; }#define Skein_Clear_First_Flag (hdr) { (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; }#define Skein_Set_Bit_Pad_Flag (hdr) { (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; } -#define Skein_Set_Tree_Level (hdr,height) { (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height);} +#define Skein_Set_Tree_Level (hdr, height) { (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height); }/***************************************************************** ** "Internal" Skein definitions for debugging and error checking ******************************************************************/ -#ifdef SKEIN_DEBUG /* examine/display intermediate values? */ +#ifdef SKEIN_DEBUG /* examine/display intermediate values? */ #include "skein_debug.h" #else /* default is no callouts */ -#define Skein_Show_Block (bits,ctx,X ,blkPtr,wPtr,ksEvenPtr,ksOddPtr) -#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,outPtr) -#define Skein_Show_Key (bits,ctx,key,keyBytes) +#define Skein_Show_Block (bits, ctx,X , blkPtr, wPtr, ksEvenPtr, ksOddPtr) +#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, outPtr) +#define Skein_Show_Key (bits, ctx, key, keyBytes)#endif -#define Skein_Assert (x,retCode)/* default: ignore all Asserts, for performance */ +#define Skein_Assert (x, retCode)/* default: ignore all Asserts, for performance */ #define Skein_assert (x)/*****************************************************************
@@ -272,34 +272,34 @@ int Skein1024_Output (struct skein1024_ctx *ctx, u8 *hashVal);enum {/* Skein_256 round rotation constants */ -R_256_0_0 =14 ,R_256_0_1 =16 , -R_256_1_0 =52 ,R_256_1_1 =57 , -R_256_2_0 =23 ,R_256_2_1 =40 , -R_256_3_0 =5 ,R_256_3_1 =37 , -R_256_4_0 =25 ,R_256_4_1 =33 , -R_256_5_0 =46 ,R_256_5_1 =12 , -R_256_6_0 =58 ,R_256_6_1 =22 , -R_256_7_0 =32 ,R_256_7_1 =32 , +R_256_0_0 =14 ,R_256_0_1 =16 , +R_256_1_0 =52 ,R_256_1_1 =57 , +R_256_2_0 =23 ,R_256_2_1 =40 , +R_256_3_0 =5 ,R_256_3_1 =37 , +R_256_4_0 =25 ,R_256_4_1 =33 , +R_256_5_0 =46 ,R_256_5_1 =12 , +R_256_6_0 =58 ,R_256_6_1 =22 , +R_256_7_0 =32 ,R_256_7_1 =32 ,/* Skein_512 round rotation constants */ -R_512_0_0 =46 ,R_512_0_1 =36 ,R_512_0_2 =19 ,R_512_0_3 =37 , -R_512_1_0 =33 ,R_512_1_1 =27 ,R_512_1_2 =14 ,R_512_1_3 =42 , -R_512_2_0 =17 ,R_512_2_1 =49 ,R_512_2_2 =36 ,R_512_2_3 =39 , -R_512_3_0 =44 ,R_512_3_1 =9 ,R_512_3_2 =54 ,R_512_3_3 =56 , -R_512_4_0 =39 ,R_512_4_1 =30 ,R_512_4_2 =34 ,R_512_4_3 =24 , -R_512_5_0 =13 ,R_512_5_1 =50 ,R_512_5_2 =10 ,R_512_5_3 =17 , -R_512_6_0 =25 ,R_512_6_1 =29 ,R_512_6_2 =39 ,R_512_6_3 =43 , -R_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 , +R_512_0_0 =46 ,R_512_0_1 =36 ,R_512_0_2 =19 ,R_512_0_3 =37 , +R_512_1_0 =33 ,R_512_1_1 =27 ,R_512_1_2 =14 ,R_512_1_3 =42 , +R_512_2_0 =17 ,R_512_2_1 =49 ,R_512_2_2 =36 ,R_512_2_3 =39 , +R_512_3_0 =44 ,R_512_3_1 =9 ,R_512_3_2 =54 ,R_512_3_3 =56 , +R_512_4_0 =39 ,R_512_4_1 =30 ,R_512_4_2 =34 ,R_512_4_3 =24 , +R_512_5_0 =13 ,R_512_5_1 =50 ,R_512_5_2 =10 ,R_512_5_3 =17 , +R_512_6_0 =25 ,R_512_6_1 =29 ,R_512_6_2 =39 ,R_512_6_3 =43 , +R_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 ,/* Skein1024 round rotation constants */ -R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , -R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , -R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , -R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , -R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , -R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , -R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , -R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 +R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , +R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , +R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , +R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , +R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , +R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , +R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , +R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 };#ifndef SKEIN_ROUNDS
@@ -308,8 +308,8 @@ enum#define SKEIN1024_ROUNDS_TOTAL (80)#else /* allow command-line define in range 8*(5..14) */ #define SKEIN_256_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/100) + 5) % 10) + 5)) -#define SKEIN_512_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/ 10) + 5) % 10) + 5)) -#define SKEIN1024_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS ) + 5) % 10) + 5)) +#define SKEIN_512_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/10) + 5) % 10) + 5)) +#define SKEIN1024_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS) + 5) % 10) + 5))#endif #endif /* ifndef _SKEIN_H_ */
drivers/staging/skein/include/skein_iv.h +112 -112
290 lines not on this page · raw message
drivers/staging/skein/skein.c +176 -176
778 lines not on this page · raw message
drivers/staging/skein/skeinApi.c +11 -11
@@ -31,7 +31,7 @@ int skeinCtxPrepare(struct skein_ctx *ctx, enum skein_size size) {Skein_Assert (ctx && size,SKEIN_FAIL ); -memset (ctx ,0 ,sizeof (struct skein_ctx )); +memset (ctx ,0 ,sizeof (struct skein_ctx )); ctx->skeinSize = size;return SKEIN_SUCCESS ;
@@ -97,18 +97,18 @@ int skeinMacInit(struct skein_ctx *ctx, const u8 *key, size_t keyLen,case Skein256: ret =Skein_256_InitExt (&ctx->m.s256, hashBitLen, treeInfo, - (const u8 *)key, keyLen); + (const u8 *)key, keyLen);break ;case Skein512: ret =Skein_512_InitExt (&ctx->m.s512, hashBitLen, treeInfo, - (const u8 *)key, keyLen); + (const u8 *)key, keyLen);break ;case Skein1024: ret =Skein1024_InitExt (&ctx->m.s1024, hashBitLen, treeInfo, - (const u8 *)key, keyLen); + (const u8 *)key, keyLen);break ; }
@@ -146,13 +146,13 @@ int skeinUpdate(struct skein_ctx *ctx, const u8 *msg,switch (ctx->skeinSize) {case Skein256: - ret =Skein_256_Update (&ctx->m.s256, (const u8 *)msg, msgByteCnt); + ret =Skein_256_Update (&ctx->m.s256, (const u8 *)msg, msgByteCnt);break ;case Skein512: - ret =Skein_512_Update (&ctx->m.s512, (const u8 *)msg, msgByteCnt); + ret =Skein_512_Update (&ctx->m.s512, (const u8 *)msg, msgByteCnt);break ;case Skein1024: - ret =Skein1024_Update (&ctx->m.s1024, (const u8 *)msg, msgByteCnt); + ret =Skein1024_Update (&ctx->m.s1024, (const u8 *)msg, msgByteCnt);break ; }return ret;
@@ -186,7 +186,7 @@ int skeinUpdateBits(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->skeinSize /8 ; + up = (u8 *)ctx->m.s256.X + ctx->skeinSize /8 ;Skein_Set_Bit_Pad_Flag (ctx->m.h);/* set tweak flag for the skeinFinal call */
@@ -206,13 +206,13 @@ int skeinFinal(struct skein_ctx *ctx, u8 *hash)switch (ctx->skeinSize) {case Skein256: - ret =Skein_256_Final (&ctx->m.s256, (u8 *)hash); + ret =Skein_256_Final (&ctx->m.s256, (u8 *)hash);break ;case Skein512: - ret =Skein_512_Final (&ctx->m.s512, (u8 *)hash); + ret =Skein_512_Final (&ctx->m.s512, (u8 *)hash);break ;case Skein1024: - ret =Skein1024_Final (&ctx->m.s1024, (u8 *)hash); + ret =Skein1024_Final (&ctx->m.s1024, (u8 *)hash);break ; }return ret;
drivers/staging/skein/skeinBlockNo3F.c +10 -10
@@ -147,16 +147,16 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, blkPtr +=SKEIN1024_BLOCK_BYTES ;/* do the final "feedforward" xor, update context chaining vars */ - ctx->X[0 ] = ctx->X[0 ] ^ w[0 ]; - ctx->X[1 ] = ctx->X[1 ] ^ w[1 ]; - ctx->X[2 ] = ctx->X[2 ] ^ w[2 ]; - ctx->X[3 ] = ctx->X[3 ] ^ w[3 ]; - ctx->X[4 ] = ctx->X[4 ] ^ w[4 ]; - ctx->X[5 ] = ctx->X[5 ] ^ w[5 ]; - ctx->X[6 ] = ctx->X[6 ] ^ w[6 ]; - ctx->X[7 ] = ctx->X[7 ] ^ w[7 ]; - ctx->X[8 ] = ctx->X[8 ] ^ w[8 ]; - ctx->X[9 ] = ctx->X[9 ] ^ w[9 ]; + ctx->X[0 ] = ctx->X[0 ] ^ w[0 ]; + ctx->X[1 ] = ctx->X[1 ] ^ w[1 ]; + ctx->X[2 ] = ctx->X[2 ] ^ w[2 ]; + ctx->X[3 ] = ctx->X[3 ] ^ w[3 ]; + ctx->X[4 ] = ctx->X[4 ] ^ w[4 ]; + ctx->X[5 ] = ctx->X[5 ] ^ w[5 ]; + ctx->X[6 ] = ctx->X[6 ] ^ w[6 ]; + ctx->X[7 ] = ctx->X[7 ] ^ w[7 ]; + ctx->X[8 ] = ctx->X[8 ] ^ w[8 ]; + ctx->X[9 ] = ctx->X[9 ] ^ w[9 ]; ctx->X[10 ] = ctx->X[10 ] ^ w[10 ]; ctx->X[11 ] = ctx->X[11 ] ^ w[11 ]; ctx->X[12 ] = ctx->X[12 ] ^ w[12 ];
drivers/staging/skein/skein_block.c +255 -258
721 lines not on this page · raw message
Signature · 1 line
1.9.0
RFC PATCH 12/22 staging: crypto: skein: dos2unix, remove executable perms
In reply to Jason Cooper$ find drivers/staging/skein -type f | xargs todos -d $ chmod -x drivers/staging/skein/skeinApi.c $ chmod -x drivers/staging/skein/include/skeinApi.h
--- drivers/staging/skein/include/skein.h | 630 ++++++------- drivers/staging/skein/include/skeinApi.h | 0 drivers/staging/skein/include/skein_iv.h | 398 ++++----- drivers/staging/skein/skein.c | 1442 +++++++++++++++--------------- drivers/staging/skein/skeinApi.c | 0 drivers/staging/skein/skeinBlockNo3F.c | 344 +++---- drivers/staging/skein/skein_block.c | 1372 ++++++++++++++-------------- 7 files changed, 2093 insertions(+), 2093 deletions(-) mode change 100755 => 100644 drivers/staging/skein/include/skeinApi.h mode change 100755 => 100644 drivers/staging/skein/skeinApi.c
drivers/staging/skein/include/skein.h +315 -315
@@ -1,315 +1,315 @@ -#ifndef _SKEIN_H_ -#define _SKEIN_H_ 1 -/************************************************************************** -** -** Interface declarations and internal definitions for Skein hashing. -** -** Source code author: Doug Whiting, 2008. -** -** This algorithm and source code is released to the public domain. -** -*************************************************************************** -** -** The following compile-time switches may be defined to control some -** tradeoffs between speed, code size, error checking, and security. -** -** The "default" note explains what happens when the switch is not defined. -** -** SKEIN_DEBUG -- make callouts from inside Skein code -** to examine/display intermediate values. -** [default: no callouts (no overhead)] -** -** SKEIN_ERR_CHECK -- how error checking is handled inside Skein -** code. If not defined, most error checking -** is disabled (for performance). Otherwise, -** the switch value is interpreted as: -** 0: use assert() to flag errors -** 1: return SKEIN_FAIL to flag errors -** -***************************************************************************/ - -#ifndef RotL_64 -#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N)))) -#endif - -/* below two prototype assume we are handed aligned data */ -#define Skein_Put64_LSB_First (dst08, src64, bCnt) memcpy(dst08, src64, bCnt) -#define Skein_Get64_LSB_First (dst64, src08, wCnt) memcpy(dst64, src08, 8*(wCnt)) -#define Skein_Swap64 (w64) (w64) - -enum - { -SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ -SKEIN_FAIL =1 , -SKEIN_BAD_HASHLEN =2 - }; - -#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */ - -#define SKEIN_256_STATE_WORDS (4) -#define SKEIN_512_STATE_WORDS (8) -#define SKEIN1024_STATE_WORDS (16) -#define SKEIN_MAX_STATE_WORDS (16) - -#define SKEIN_256_STATE_BYTES (8*SKEIN_256_STATE_WORDS) -#define SKEIN_512_STATE_BYTES (8*SKEIN_512_STATE_WORDS) -#define SKEIN1024_STATE_BYTES (8*SKEIN1024_STATE_WORDS) - -#define SKEIN_256_STATE_BITS (64*SKEIN_256_STATE_WORDS) -#define SKEIN_512_STATE_BITS (64*SKEIN_512_STATE_WORDS) -#define SKEIN1024_STATE_BITS (64*SKEIN1024_STATE_WORDS) - -#define SKEIN_256_BLOCK_BYTES (8*SKEIN_256_STATE_WORDS) -#define SKEIN_512_BLOCK_BYTES (8*SKEIN_512_STATE_WORDS) -#define SKEIN1024_BLOCK_BYTES (8*SKEIN1024_STATE_WORDS) - -struct skein_ctx_hdr - { -size_t hashBitLen;/* size of hash result, in bits */ -size_t bCnt;/* current byte count in buffer b[] */ -u64 T[SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[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 */ -u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (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 */ -u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }; - -struct skein1024_ctx /* 1024-bit Skein hash context structure */ - { -struct skein_ctx_hdr h;/* common header context variables */ -u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ -u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }; - -/* Skein APIs for (incremental) "straight hashing" */ -int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen); -int Skein_512_Init (struct skein_512_ctx *ctx,size_t hashBitLen); -int Skein1024_Init (struct skein1024_ctx *ctx,size_t hashBitLen); - -int Skein_256_Update (struct skein_256_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg,size_t msgByteCnt); - -int Skein_256_Final (struct skein_256_ctx *ctx,u8 *hashVal); -int Skein_512_Final (struct skein_512_ctx *ctx,u8 *hashVal); -int Skein1024_Final (struct skein1024_ctx *ctx,u8 *hashVal); - -/* -** Skein APIs for "extended" initialization: MAC keys, tree hashing. -** After an InitExt() call, just use Update/Final calls as with Init(). -** -** Notes: Same parameters as _Init() calls, plus treeInfo/key/keyBytes. -** When keyBytes == 0 and treeInfo == SKEIN_SEQUENTIAL, -** the results of InitExt() are identical to calling Init(). -** The function Init() may be called once to "precompute" the IV for -** a given hashBitLen value, then by saving a copy of the context -** the IV computation may be avoided in later calls. -** Similarly, the function InitExt() may be called once per MAC key -** to precompute the MAC IV, then a copy of the context saved and -** reused for each new MAC computation. -**/ -int Skein_256_InitExt (struct skein_256_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); -int Skein_512_InitExt (struct skein_512_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); -int Skein1024_InitExt (struct skein1024_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); - -/* -** Skein APIs for MAC and tree hash: -** Final_Pad: pad, do final block, but no OUTPUT type -** Output: do just the output stage -*/ -int Skein_256_Final_Pad (struct skein_256_ctx *ctx,u8 *hashVal); -int Skein_512_Final_Pad (struct skein_512_ctx *ctx,u8 *hashVal); -int Skein1024_Final_Pad (struct skein1024_ctx *ctx,u8 *hashVal); - -#ifndef SKEIN_TREE_HASH -#define SKEIN_TREE_HASH (1) -#endif -#if SKEIN_TREE_HASH -int Skein_256_Output (struct skein_256_ctx *ctx,u8 *hashVal); -int Skein_512_Output (struct skein_512_ctx *ctx,u8 *hashVal); -int Skein1024_Output (struct skein1024_ctx *ctx,u8 *hashVal); -#endif - -/***************************************************************** -** "Internal" Skein definitions -** -- not needed for sequential hashing API, but will be -** helpful for other uses of Skein (e.g., tree hash mode). -** -- included here so that they can be shared between -** reference and optimized code. -******************************************************************/ - -/* tweak word T[1]: bit field starting positions */ -#define SKEIN_T1_BIT (BIT ) ((BIT) - 64)/* offset 64 because it's the second word */ - -#define SKEIN_T1_POS_TREE_LVL SKEIN_T1_BIT(112)/* bits 112..118: level in hash tree */ -#define SKEIN_T1_POS_BIT_PAD SKEIN_T1_BIT(119)/* bit 119 : partial final input byte */ -#define SKEIN_T1_POS_BLK_TYPE SKEIN_T1_BIT(120)/* bits 120..125: type field */ -#define SKEIN_T1_POS_FIRST SKEIN_T1_BIT(126)/* bits 126 : first block flag */ -#define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* bit 127 : final block flag */ - -/* tweak word T[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 */ -#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 */ -#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 */ -#define SKEIN_BLK_TYPE_PK (12)/* public key (for digital signature hashing) */ -#define SKEIN_BLK_TYPE_KDF (16)/* key identifier for KDF */ -#define SKEIN_BLK_TYPE_NONCE (20)/* nonce for PRNG */ -#define SKEIN_BLK_TYPE_MSG (48)/* message processing */ -#define SKEIN_BLK_TYPE_OUT (63)/* output stage */ -#define SKEIN_BLK_TYPE_MASK (63)/* bit field mask */ - -#define SKEIN_T1_BLK_TYPE (T ) (((u64) (SKEIN_BLK_TYPE_##T)) << SKEIN_T1_POS_BLK_TYPE) -#define SKEIN_T1_BLK_TYPE_KEY SKEIN_T1_BLK_TYPE(KEY)/* key, for MAC and KDF */ -#define SKEIN_T1_BLK_TYPE_CFG SKEIN_T1_BLK_TYPE(CFG)/* configuration block */ -#define SKEIN_T1_BLK_TYPE_PERS SKEIN_T1_BLK_TYPE(PERS)/* personalization string */ -#define SKEIN_T1_BLK_TYPE_PK SKEIN_T1_BLK_TYPE(PK)/* public key (for digital signature hashing) */ -#define SKEIN_T1_BLK_TYPE_KDF SKEIN_T1_BLK_TYPE(KDF)/* key identifier for KDF */ -#define SKEIN_T1_BLK_TYPE_NONCE SKEIN_T1_BLK_TYPE(NONCE)/* nonce for PRNG */ -#define SKEIN_T1_BLK_TYPE_MSG SKEIN_T1_BLK_TYPE(MSG)/* message processing */ -#define SKEIN_T1_BLK_TYPE_OUT SKEIN_T1_BLK_TYPE(OUT)/* output stage */ -#define SKEIN_T1_BLK_TYPE_MASK SKEIN_T1_BLK_TYPE(MASK)/* field bit mask */ - -#define SKEIN_T1_BLK_TYPE_CFG_FINAL (SKEIN_T1_BLK_TYPE_CFG | SKEIN_T1_FLAG_FINAL) -#define SKEIN_T1_BLK_TYPE_OUT_FINAL (SKEIN_T1_BLK_TYPE_OUT | SKEIN_T1_FLAG_FINAL) - -#define SKEIN_VERSION (1) - -#ifndef SKEIN_ID_STRING_LE /* allow compile-time personalization */ -#define SKEIN_ID_STRING_LE (0x33414853)/* "SHA3" (little-endian)*/ -#endif - -#define SKEIN_MK_64 (hi32, lo32) ((lo32) + (((u64) (hi32)) << 32)) -#define SKEIN_SCHEMA_VER SKEIN_MK_64(SKEIN_VERSION, SKEIN_ID_STRING_LE) -#define SKEIN_KS_PARITY SKEIN_MK_64(0x1BD11BDA, 0xA9FC1A22) - -#define SKEIN_CFG_STR_LEN (4*8) - -/* bit field definitions in config block treeInfo word */ -#define SKEIN_CFG_TREE_LEAF_SIZE_POS (0) -#define SKEIN_CFG_TREE_NODE_SIZE_POS (8) -#define SKEIN_CFG_TREE_MAX_LEVEL_POS (16) - -#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS) -#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS) -#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS) - -#define SKEIN_CFG_TREE_INFO (leaf, node, maxLvl) \ - ((((u64)(leaf)) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ - (((u64)(node)) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ - (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS)) - -#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0, 0, 0)/* use as treeInfo in InitExt() call for sequential processing */ - -/* -** Skein macros for getting/setting tweak words, etc. -** These are useful for partial input bytes, hash tree init/update, etc. -**/ -#define Skein_Get_Tweak (ctxPtr,TWK_NUM ) ((ctxPtr)->h.T[TWK_NUM]) -#define Skein_Set_Tweak (ctxPtr,TWK_NUM , tVal) {(ctxPtr)->h.T[TWK_NUM] = (tVal); } - -#define Skein_Get_T0 (ctxPtr) Skein_Get_Tweak(ctxPtr, 0) -#define Skein_Get_T1 (ctxPtr) Skein_Get_Tweak(ctxPtr, 1) -#define Skein_Set_T0 (ctxPtr,T0 ) Skein_Set_Tweak(ctxPtr, 0, T0) -#define Skein_Set_T1 (ctxPtr,T1 ) Skein_Set_Tweak(ctxPtr, 1, T1) - -/* set both tweak words at once */ -#define Skein_Set_T0_T1 (ctxPtr,T0 ,T1 ) \ - { \ - Skein_Set_T0(ctxPtr, (T0)); \ - Skein_Set_T1(ctxPtr, (T1)); \ - } - -#define Skein_Set_Type (ctxPtr,BLK_TYPE ) \ - Skein_Set_T1(ctxPtr, SKEIN_T1_BLK_TYPE_##BLK_TYPE) - -/* set up for starting with a new type: h.T[0]=0; h.T[1] = NEW_TYPE; h.bCnt=0; */ -#define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) \ - { Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt = 0; } - -#define Skein_Clear_First_Flag (hdr) { (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; } -#define Skein_Set_Bit_Pad_Flag (hdr) { (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; } - -#define Skein_Set_Tree_Level (hdr, height) { (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height); } - -/***************************************************************** -** "Internal" Skein definitions for debugging and error checking -******************************************************************/ -#ifdef SKEIN_DEBUG /* examine/display intermediate values? */ -#include "skein_debug.h" -#else /* default is no callouts */ -#define Skein_Show_Block (bits, ctx,X , blkPtr, wPtr, ksEvenPtr, ksOddPtr) -#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, outPtr) -#define Skein_Show_Key (bits, ctx, key, keyBytes) -#endif - -#define Skein_Assert (x, retCode)/* default: ignore all Asserts, for performance */ -#define Skein_assert (x) - -/***************************************************************** -** Skein block function constants (shared across Ref and Opt code) -******************************************************************/ -enum - { -/* Skein_256 round rotation constants */ -R_256_0_0 =14 ,R_256_0_1 =16 , -R_256_1_0 =52 ,R_256_1_1 =57 , -R_256_2_0 =23 ,R_256_2_1 =40 , -R_256_3_0 =5 ,R_256_3_1 =37 , -R_256_4_0 =25 ,R_256_4_1 =33 , -R_256_5_0 =46 ,R_256_5_1 =12 , -R_256_6_0 =58 ,R_256_6_1 =22 , -R_256_7_0 =32 ,R_256_7_1 =32 , - -/* Skein_512 round rotation constants */ -R_512_0_0 =46 ,R_512_0_1 =36 ,R_512_0_2 =19 ,R_512_0_3 =37 , -R_512_1_0 =33 ,R_512_1_1 =27 ,R_512_1_2 =14 ,R_512_1_3 =42 , -R_512_2_0 =17 ,R_512_2_1 =49 ,R_512_2_2 =36 ,R_512_2_3 =39 , -R_512_3_0 =44 ,R_512_3_1 =9 ,R_512_3_2 =54 ,R_512_3_3 =56 , -R_512_4_0 =39 ,R_512_4_1 =30 ,R_512_4_2 =34 ,R_512_4_3 =24 , -R_512_5_0 =13 ,R_512_5_1 =50 ,R_512_5_2 =10 ,R_512_5_3 =17 , -R_512_6_0 =25 ,R_512_6_1 =29 ,R_512_6_2 =39 ,R_512_6_3 =43 , -R_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 , - -/* Skein1024 round rotation constants */ -R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , -R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , -R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , -R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , -R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , -R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , -R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , -R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 - }; - -#ifndef SKEIN_ROUNDS -#define SKEIN_256_ROUNDS_TOTAL (72)/* number of rounds for the different block sizes */ -#define SKEIN_512_ROUNDS_TOTAL (72) -#define SKEIN1024_ROUNDS_TOTAL (80) -#else /* allow command-line define in range 8*(5..14) */ -#define SKEIN_256_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/100) + 5) % 10) + 5)) -#define SKEIN_512_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/10) + 5) % 10) + 5)) -#define SKEIN1024_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS) + 5) % 10) + 5)) -#endif - -#endif /* ifndef _SKEIN_H_ */ +#ifndef _SKEIN_H_ +#define _SKEIN_H_ 1 +/************************************************************************** +** +** Interface declarations and internal definitions for Skein hashing. +** +** Source code author: Doug Whiting, 2008. +** +** This algorithm and source code is released to the public domain. +** +*************************************************************************** +** +** The following compile-time switches may be defined to control some +** tradeoffs between speed, code size, error checking, and security. +** +** The "default" note explains what happens when the switch is not defined. +** +** SKEIN_DEBUG -- make callouts from inside Skein code +** to examine/display intermediate values. +** [default: no callouts (no overhead)] +** +** SKEIN_ERR_CHECK -- how error checking is handled inside Skein +** code. If not defined, most error checking +** is disabled (for performance). Otherwise, +** the switch value is interpreted as: +** 0: use assert() to flag errors +** 1: return SKEIN_FAIL to flag errors +** +***************************************************************************/ + +#ifndef RotL_64 +#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N)))) +#endif + +/* below two prototype assume we are handed aligned data */ +#define Skein_Put64_LSB_First (dst08, src64, bCnt) memcpy(dst08, src64, bCnt) +#define Skein_Get64_LSB_First (dst64, src08, wCnt) memcpy(dst64, src08, 8*(wCnt)) +#define Skein_Swap64 (w64) (w64) + +enum + { +SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ +SKEIN_FAIL =1 , +SKEIN_BAD_HASHLEN =2 + }; + +#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */ + +#define SKEIN_256_STATE_WORDS (4) +#define SKEIN_512_STATE_WORDS (8) +#define SKEIN1024_STATE_WORDS (16) +#define SKEIN_MAX_STATE_WORDS (16) + +#define SKEIN_256_STATE_BYTES (8*SKEIN_256_STATE_WORDS) +#define SKEIN_512_STATE_BYTES (8*SKEIN_512_STATE_WORDS) +#define SKEIN1024_STATE_BYTES (8*SKEIN1024_STATE_WORDS) + +#define SKEIN_256_STATE_BITS (64*SKEIN_256_STATE_WORDS) +#define SKEIN_512_STATE_BITS (64*SKEIN_512_STATE_WORDS) +#define SKEIN1024_STATE_BITS (64*SKEIN1024_STATE_WORDS) + +#define SKEIN_256_BLOCK_BYTES (8*SKEIN_256_STATE_WORDS) +#define SKEIN_512_BLOCK_BYTES (8*SKEIN_512_STATE_WORDS) +#define SKEIN1024_BLOCK_BYTES (8*SKEIN1024_STATE_WORDS) + +struct skein_ctx_hdr + { +size_t hashBitLen;/* size of hash result, in bits */ +size_t bCnt;/* current byte count in buffer b[] */ +u64 T[SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[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 */ +u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (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 */ +u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ + }; + +struct skein1024_ctx /* 1024-bit Skein hash context structure */ + { +struct skein_ctx_hdr h;/* common header context variables */ +u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ + }; + +/* Skein APIs for (incremental) "straight hashing" */ +int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen); +int Skein_512_Init (struct skein_512_ctx *ctx,size_t hashBitLen); +int Skein1024_Init (struct skein1024_ctx *ctx,size_t hashBitLen); + +int Skein_256_Update (struct skein_256_ctx *ctx,const u8 *msg,size_t msgByteCnt); +int Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg,size_t msgByteCnt); +int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg,size_t msgByteCnt); + +int Skein_256_Final (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Final (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Final (struct skein1024_ctx *ctx,u8 *hashVal); + +/* +** Skein APIs for "extended" initialization: MAC keys, tree hashing. +** After an InitExt() call, just use Update/Final calls as with Init(). +** +** Notes: Same parameters as _Init() calls, plus treeInfo/key/keyBytes. +** When keyBytes == 0 and treeInfo == SKEIN_SEQUENTIAL, +** the results of InitExt() are identical to calling Init(). +** The function Init() may be called once to "precompute" the IV for +** a given hashBitLen value, then by saving a copy of the context +** the IV computation may be avoided in later calls. +** Similarly, the function InitExt() may be called once per MAC key +** to precompute the MAC IV, then a copy of the context saved and +** reused for each new MAC computation. +**/ +int Skein_256_InitExt (struct skein_256_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein_512_InitExt (struct skein_512_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein1024_InitExt (struct skein1024_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); + +/* +** Skein APIs for MAC and tree hash: +** Final_Pad: pad, do final block, but no OUTPUT type +** Output: do just the output stage +*/ +int Skein_256_Final_Pad (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Final_Pad (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Final_Pad (struct skein1024_ctx *ctx,u8 *hashVal); + +#ifndef SKEIN_TREE_HASH +#define SKEIN_TREE_HASH (1) +#endif +#if SKEIN_TREE_HASH +int Skein_256_Output (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Output (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Output (struct skein1024_ctx *ctx,u8 *hashVal); +#endif + +/***************************************************************** +** "Internal" Skein definitions +** -- not needed for sequential hashing API, but will be +** helpful for other uses of Skein (e.g., tree hash mode). +** -- included here so that they can be shared between +** reference and optimized code. +******************************************************************/ + +/* tweak word T[1]: bit field starting positions */ +#define SKEIN_T1_BIT (BIT ) ((BIT) - 64)/* offset 64 because it's the second word */ + +#define SKEIN_T1_POS_TREE_LVL SKEIN_T1_BIT(112)/* bits 112..118: level in hash tree */ +#define SKEIN_T1_POS_BIT_PAD SKEIN_T1_BIT(119)/* bit 119 : partial final input byte */ +#define SKEIN_T1_POS_BLK_TYPE SKEIN_T1_BIT(120)/* bits 120..125: type field */ +#define SKEIN_T1_POS_FIRST SKEIN_T1_BIT(126)/* bits 126 : first block flag */ +#define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* bit 127 : final block flag */ + +/* tweak word T[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 */ +#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 */ +#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 */ +#define SKEIN_BLK_TYPE_PK (12)/* public key (for digital signature hashing) */ +#define SKEIN_BLK_TYPE_KDF (16)/* key identifier for KDF */ +#define SKEIN_BLK_TYPE_NONCE (20)/* nonce for PRNG */ +#define SKEIN_BLK_TYPE_MSG (48)/* message processing */ +#define SKEIN_BLK_TYPE_OUT (63)/* output stage */ +#define SKEIN_BLK_TYPE_MASK (63)/* bit field mask */ + +#define SKEIN_T1_BLK_TYPE (T ) (((u64) (SKEIN_BLK_TYPE_##T)) << SKEIN_T1_POS_BLK_TYPE) +#define SKEIN_T1_BLK_TYPE_KEY SKEIN_T1_BLK_TYPE(KEY)/* key, for MAC and KDF */ +#define SKEIN_T1_BLK_TYPE_CFG SKEIN_T1_BLK_TYPE(CFG)/* configuration block */ +#define SKEIN_T1_BLK_TYPE_PERS SKEIN_T1_BLK_TYPE(PERS)/* personalization string */ +#define SKEIN_T1_BLK_TYPE_PK SKEIN_T1_BLK_TYPE(PK)/* public key (for digital signature hashing) */ +#define SKEIN_T1_BLK_TYPE_KDF SKEIN_T1_BLK_TYPE(KDF)/* key identifier for KDF */ +#define SKEIN_T1_BLK_TYPE_NONCE SKEIN_T1_BLK_TYPE(NONCE)/* nonce for PRNG */ +#define SKEIN_T1_BLK_TYPE_MSG SKEIN_T1_BLK_TYPE(MSG)/* message processing */ +#define SKEIN_T1_BLK_TYPE_OUT SKEIN_T1_BLK_TYPE(OUT)/* output stage */ +#define SKEIN_T1_BLK_TYPE_MASK SKEIN_T1_BLK_TYPE(MASK)/* field bit mask */ + +#define SKEIN_T1_BLK_TYPE_CFG_FINAL (SKEIN_T1_BLK_TYPE_CFG | SKEIN_T1_FLAG_FINAL) +#define SKEIN_T1_BLK_TYPE_OUT_FINAL (SKEIN_T1_BLK_TYPE_OUT | SKEIN_T1_FLAG_FINAL) + +#define SKEIN_VERSION (1) + +#ifndef SKEIN_ID_STRING_LE /* allow compile-time personalization */ +#define SKEIN_ID_STRING_LE (0x33414853)/* "SHA3" (little-endian)*/ +#endif + +#define SKEIN_MK_64 (hi32, lo32) ((lo32) + (((u64) (hi32)) << 32)) +#define SKEIN_SCHEMA_VER SKEIN_MK_64(SKEIN_VERSION, SKEIN_ID_STRING_LE) +#define SKEIN_KS_PARITY SKEIN_MK_64(0x1BD11BDA, 0xA9FC1A22) + +#define SKEIN_CFG_STR_LEN (4*8) + +/* bit field definitions in config block treeInfo word */ +#define SKEIN_CFG_TREE_LEAF_SIZE_POS (0) +#define SKEIN_CFG_TREE_NODE_SIZE_POS (8) +#define SKEIN_CFG_TREE_MAX_LEVEL_POS (16) + +#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS) +#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS) +#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS) + +#define SKEIN_CFG_TREE_INFO (leaf, node, maxLvl) \ + ((((u64)(leaf)) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ + (((u64)(node)) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ + (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS)) + +#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0, 0, 0)/* use as treeInfo in InitExt() call for sequential processing */ + +/* +** Skein macros for getting/setting tweak words, etc. +** These are useful for partial input bytes, hash tree init/update, etc. +**/ +#define Skein_Get_Tweak (ctxPtr,TWK_NUM ) ((ctxPtr)->h.T[TWK_NUM]) +#define Skein_Set_Tweak (ctxPtr,TWK_NUM , tVal) {(ctxPtr)->h.T[TWK_NUM] = (tVal); } + +#define Skein_Get_T0 (ctxPtr) Skein_Get_Tweak(ctxPtr, 0) +#define Skein_Get_T1 (ctxPtr) Skein_Get_Tweak(ctxPtr, 1) +#define Skein_Set_T0 (ctxPtr,T0 ) Skein_Set_Tweak(ctxPtr, 0, T0) +#define Skein_Set_T1 (ctxPtr,T1 ) Skein_Set_Tweak(ctxPtr, 1, T1) + +/* set both tweak words at once */ +#define Skein_Set_T0_T1 (ctxPtr,T0 ,T1 ) \ + { \ + Skein_Set_T0(ctxPtr, (T0)); \ + Skein_Set_T1(ctxPtr, (T1)); \ + } + +#define Skein_Set_Type (ctxPtr,BLK_TYPE ) \ + Skein_Set_T1(ctxPtr, SKEIN_T1_BLK_TYPE_##BLK_TYPE) + +/* set up for starting with a new type: h.T[0]=0; h.T[1] = NEW_TYPE; h.bCnt=0; */ +#define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) \ + { Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt = 0; } + +#define Skein_Clear_First_Flag (hdr) { (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; } +#define Skein_Set_Bit_Pad_Flag (hdr) { (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; } + +#define Skein_Set_Tree_Level (hdr, height) { (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height); } + +/***************************************************************** +** "Internal" Skein definitions for debugging and error checking +******************************************************************/ +#ifdef SKEIN_DEBUG /* examine/display intermediate values? */ +#include "skein_debug.h" +#else /* default is no callouts */ +#define Skein_Show_Block (bits, ctx,X , blkPtr, wPtr, ksEvenPtr, ksOddPtr) +#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, outPtr) +#define Skein_Show_Key (bits, ctx, key, keyBytes) +#endif + +#define Skein_Assert (x, retCode)/* default: ignore all Asserts, for performance */ +#define Skein_assert (x) + +/***************************************************************** +** Skein block function constants (shared across Ref and Opt code) +******************************************************************/ +enum + { +/* Skein_256 round rotation constants */ +R_256_0_0 =14 ,R_256_0_1 =16 , +R_256_1_0 =52 ,R_256_1_1 =57 , +R_256_2_0 =23 ,R_256_2_1 =40 , +R_256_3_0 =5 ,R_256_3_1 =37 , +R_256_4_0 =25 ,R_256_4_1 =33 , +R_256_5_0 =46 ,R_256_5_1 =12 , +R_256_6_0 =58 ,R_256_6_1 =22 , +R_256_7_0 =32 ,R_256_7_1 =32 , + +/* Skein_512 round rotation constants */ +R_512_0_0 =46 ,R_512_0_1 =36 ,R_512_0_2 =19 ,R_512_0_3 =37 , +R_512_1_0 =33 ,R_512_1_1 =27 ,R_512_1_2 =14 ,R_512_1_3 =42 , +R_512_2_0 =17 ,R_512_2_1 =49 ,R_512_2_2 =36 ,R_512_2_3 =39 , +R_512_3_0 =44 ,R_512_3_1 =9 ,R_512_3_2 =54 ,R_512_3_3 =56 , +R_512_4_0 =39 ,R_512_4_1 =30 ,R_512_4_2 =34 ,R_512_4_3 =24 , +R_512_5_0 =13 ,R_512_5_1 =50 ,R_512_5_2 =10 ,R_512_5_3 =17 , +R_512_6_0 =25 ,R_512_6_1 =29 ,R_512_6_2 =39 ,R_512_6_3 =43 , +R_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 , + +/* Skein1024 round rotation constants */ +R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , +R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , +R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , +R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , +R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , +R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , +R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , +R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 + }; + +#ifndef SKEIN_ROUNDS +#define SKEIN_256_ROUNDS_TOTAL (72)/* number of rounds for the different block sizes */ +#define SKEIN_512_ROUNDS_TOTAL (72) +#define SKEIN1024_ROUNDS_TOTAL (80) +#else /* allow command-line define in range 8*(5..14) */ +#define SKEIN_256_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/100) + 5) % 10) + 5)) +#define SKEIN_512_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/10) + 5) % 10) + 5)) +#define SKEIN1024_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS) + 5) % 10) + 5)) +#endif + +#endif /* ifndef _SKEIN_H_ */
drivers/staging/skein/include/skeinApi.h +0 -0
drivers/staging/skein/include/skein_iv.h +199 -199
398 lines not on this page · raw message
drivers/staging/skein/skein.c +721 -721
1,442 lines not on this page · raw message
drivers/staging/skein/skeinApi.c +0 -0
drivers/staging/skein/skeinBlockNo3F.c +172 -172
344 lines not on this page · raw message
drivers/staging/skein/skein_block.c +686 -686
186 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
1.9.0
Part of the diff is not shown here. View the raw message.
RFC PATCH 13/22 staging: crypto: skein: fix leading whitespace
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 136 +- drivers/staging/skein/include/skeinApi.h | 284 +-- drivers/staging/skein/include/skein_iv.h | 276 +-- drivers/staging/skein/include/threefishApi.h | 230 +-- drivers/staging/skein/skein.c | 1126 +++++------ drivers/staging/skein/skeinApi.c | 320 +-- drivers/staging/skein/skeinBlockNo3F.c | 286 +-- drivers/staging/skein/skein_block.c | 1012 +++++----- drivers/staging/skein/threefish1024Block.c | 2740 +++++++++++++------------- drivers/staging/skein/threefish256Block.c | 639 +++--- drivers/staging/skein/threefish512Block.c | 1254 ++++++------ drivers/staging/skein/threefishApi.c | 102 +- 12 files changed, 4200 insertions(+), 4205 deletions(-)
drivers/staging/skein/include/skein.h +68 -68
@@ -38,11 +38,11 @@#define Skein_Swap64 (w64) (w64)enum - { -SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ -SKEIN_FAIL =1 , -SKEIN_BAD_HASHLEN =2 - }; + { +SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ +SKEIN_FAIL =1 , +SKEIN_BAD_HASHLEN =2 + };#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */
@@ -64,32 +64,32 @@ enum#define SKEIN1024_BLOCK_BYTES (8*SKEIN1024_STATE_WORDS)struct skein_ctx_hdr - { -size_t hashBitLen;/* size of hash result, in bits */ -size_t bCnt;/* current byte count in buffer b[] */ -u64 T[SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[1]=flags */ - }; + { +size_t hashBitLen;/* size of hash result, in bits */ +size_t bCnt;/* current byte count in buffer b[] */ +u64 T[SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[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 */ -u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }; + { +struct skein_ctx_hdr h;/* common header context variables */ +u64 X[SKEIN_256_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (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 */ -u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }; + { +struct skein_ctx_hdr h;/* common header context variables */ +u64 X[SKEIN_512_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ + };struct skein1024_ctx /* 1024-bit Skein hash context structure */ - { -struct skein_ctx_hdr h;/* common header context variables */ -u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ -u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }; + { +struct skein_ctx_hdr h;/* common header context variables */ +u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ + };/* Skein APIs for (incremental) "straight hashing" */ int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen);
@@ -150,18 +150,18 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);/* tweak word T[1]: bit field starting positions */ #define SKEIN_T1_BIT (BIT ) ((BIT) - 64)/* offset 64 because it's the second word */ - +#define SKEIN_T1_POS_TREE_LVL SKEIN_T1_BIT(112)/* bits 112..118: level in hash tree */ #define SKEIN_T1_POS_BIT_PAD SKEIN_T1_BIT(119)/* bit 119 : partial final input byte */ #define SKEIN_T1_POS_BLK_TYPE SKEIN_T1_BIT(120)/* bits 120..125: type field */ #define SKEIN_T1_POS_FIRST SKEIN_T1_BIT(126)/* bits 126 : first block flag */ #define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* bit 127 : final block flag */ - +/* tweak word T[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 */ #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)
@@ -213,9 +213,9 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS)#define SKEIN_CFG_TREE_INFO (leaf, node, maxLvl) \ - ((((u64)(leaf)) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ - (((u64)(node)) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ - (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS)) + ((((u64)(leaf)) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ + (((u64)(node)) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ + (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS))#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0, 0, 0)/* use as treeInfo in InitExt() call for sequential processing */
@@ -233,17 +233,17 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);/* set both tweak words at once */ #define Skein_Set_T0_T1 (ctxPtr,T0 ,T1 ) \ - { \ - Skein_Set_T0(ctxPtr, (T0)); \ - Skein_Set_T1(ctxPtr, (T1)); \ - } + { \ + Skein_Set_T0(ctxPtr, (T0)); \ + Skein_Set_T1(ctxPtr, (T1)); \ + }#define Skein_Set_Type (ctxPtr,BLK_TYPE ) \ - Skein_Set_T1(ctxPtr, SKEIN_T1_BLK_TYPE_##BLK_TYPE) + Skein_Set_T1(ctxPtr, SKEIN_T1_BLK_TYPE_##BLK_TYPE)/* set up for starting with a new type: h.T[0]=0; h.T[1] = NEW_TYPE; h.bCnt=0; */ #define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) \ - { Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt = 0; } + { Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt = 0; }#define Skein_Clear_First_Flag (hdr) { (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; }#define Skein_Set_Bit_Pad_Flag (hdr) { (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; }
@@ -270,37 +270,37 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);** Skein block function constants (shared across Ref and Opt code) ******************************************************************/ enum - { -/* Skein_256 round rotation constants */ -R_256_0_0 =14 ,R_256_0_1 =16 , -R_256_1_0 =52 ,R_256_1_1 =57 , -R_256_2_0 =23 ,R_256_2_1 =40 , -R_256_3_0 =5 ,R_256_3_1 =37 , -R_256_4_0 =25 ,R_256_4_1 =33 , -R_256_5_0 =46 ,R_256_5_1 =12 , -R_256_6_0 =58 ,R_256_6_1 =22 , -R_256_7_0 =32 ,R_256_7_1 =32 , - -/* Skein_512 round rotation constants */ -R_512_0_0 =46 ,R_512_0_1 =36 ,R_512_0_2 =19 ,R_512_0_3 =37 , -R_512_1_0 =33 ,R_512_1_1 =27 ,R_512_1_2 =14 ,R_512_1_3 =42 , -R_512_2_0 =17 ,R_512_2_1 =49 ,R_512_2_2 =36 ,R_512_2_3 =39 , -R_512_3_0 =44 ,R_512_3_1 =9 ,R_512_3_2 =54 ,R_512_3_3 =56 , -R_512_4_0 =39 ,R_512_4_1 =30 ,R_512_4_2 =34 ,R_512_4_3 =24 , -R_512_5_0 =13 ,R_512_5_1 =50 ,R_512_5_2 =10 ,R_512_5_3 =17 , -R_512_6_0 =25 ,R_512_6_1 =29 ,R_512_6_2 =39 ,R_512_6_3 =43 , -R_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 , - -/* Skein1024 round rotation constants */ -R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , -R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , -R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , -R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , -R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , -R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , -R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , -R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 - }; + { +/* Skein_256 round rotation constants */ +R_256_0_0 =14 ,R_256_0_1 =16 , +R_256_1_0 =52 ,R_256_1_1 =57 , +R_256_2_0 =23 ,R_256_2_1 =40 , +R_256_3_0 =5 ,R_256_3_1 =37 , +R_256_4_0 =25 ,R_256_4_1 =33 , +R_256_5_0 =46 ,R_256_5_1 =12 , +R_256_6_0 =58 ,R_256_6_1 =22 , +R_256_7_0 =32 ,R_256_7_1 =32 , + +/* Skein_512 round rotation constants */ +R_512_0_0 =46 ,R_512_0_1 =36 ,R_512_0_2 =19 ,R_512_0_3 =37 , +R_512_1_0 =33 ,R_512_1_1 =27 ,R_512_1_2 =14 ,R_512_1_3 =42 , +R_512_2_0 =17 ,R_512_2_1 =49 ,R_512_2_2 =36 ,R_512_2_3 =39 , +R_512_3_0 =44 ,R_512_3_1 =9 ,R_512_3_2 =54 ,R_512_3_3 =56 , +R_512_4_0 =39 ,R_512_4_1 =30 ,R_512_4_2 =34 ,R_512_4_3 =24 , +R_512_5_0 =13 ,R_512_5_1 =50 ,R_512_5_2 =10 ,R_512_5_3 =17 , +R_512_6_0 =25 ,R_512_6_1 =29 ,R_512_6_2 =39 ,R_512_6_3 =43 , +R_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 , + +/* Skein1024 round rotation constants */ +R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , +R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , +R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , +R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , +R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , +R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , +R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , +R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 + };#ifndef SKEIN_ROUNDS #define SKEIN_256_ROUNDS_TOTAL (72)/* number of rounds for the different block sizes */
drivers/staging/skein/include/skeinApi.h +142 -142
290 lines not on this page · raw message
drivers/staging/skein/include/skein_iv.h +138 -138
317 lines not on this page · raw message
drivers/staging/skein/include/threefishApi.h +115 -115
240 lines not on this page · raw message
drivers/staging/skein/skein.c +563 -563
1,242 lines not on this page · raw message
drivers/staging/skein/skeinApi.c +160 -160
351 lines not on this page · raw message
drivers/staging/skein/skeinBlockNo3F.c +143 -143
310 lines not on this page · raw message
drivers/staging/skein/skein_block.c +506 -506
58 lines not on this page · raw message
drivers/staging/skein/threefish1024Block.c +1369 -1371
2,740 lines not on this page · raw message
drivers/staging/skein/threefish256Block.c +319 -320
639 lines not on this page · raw message
drivers/staging/skein/threefish512Block.c +626 -628
1,254 lines not on this page · raw message
drivers/staging/skein/threefishApi.c +51 -51
102 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
1.9.0
Part of the diff is not shown here. View the raw message.
RFC PATCH 15/22 staging: crypto: skein: cleanup >80 character lines
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 175 +- drivers/staging/skein/include/threefishApi.h | 16 +- drivers/staging/skein/skein.c | 586 ++- drivers/staging/skein/skeinApi.c | 58 +- drivers/staging/skein/skeinBlockNo3F.c | 27 +- drivers/staging/skein/skein_block.c | 427 +- drivers/staging/skein/threefish1024Block.c | 6152 ++++++++++++++++++++------ drivers/staging/skein/threefish256Block.c | 1398 ++++-- drivers/staging/skein/threefish512Block.c | 2775 +++++++++--- drivers/staging/skein/threefishApi.c | 13 +- 10 files changed, 8919 insertions(+), 2708 deletions(-)
drivers/staging/skein/include/skein.h +105 -70
@@ -39,12 +39,12 @@enum { -SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ +SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ SKEIN_FAIL =1 ,SKEIN_BAD_HASHLEN =2 }; -#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */ +#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */ #define SKEIN_256_STATE_WORDS (4)#define SKEIN_512_STATE_WORDS (8)
@@ -65,30 +65,30 @@ enumstruct skein_ctx_hdr { -size_t hashBitLen;/* size of hash result, in bits */ -size_t bCnt;/* current byte count in buffer b[] */ -u64 T[SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[1]=flags */ +size_t hashBitLen;/* size of hash result, in bits */ +size_t bCnt;/* current byte count in buffer b[] */ +u64 T[SKEIN_MODIFIER_WORDS ];/* tweak: T[0]=byte cnt, T[1]=flags */ }; -struct skein_256_ctx /* 256-bit Skein hash context structure */ +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 */ -u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ +struct skein_ctx_hdr h;/* common header context 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_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 */ -u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ +struct skein_ctx_hdr h;/* common header context variables */ +u64 X[SKEIN_512_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ }; -struct skein1024_ctx /* 1024-bit Skein hash context structure */ +struct skein1024_ctx /* 1024-bit Skein hash context structure */ { -struct skein_ctx_hdr h;/* common header context variables */ -u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ -u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ +struct skein_ctx_hdr h;/* common header context variables */ +u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ };/* Skein APIs for (incremental) "straight hashing" */
@@ -96,9 +96,12 @@ int Skein_256_Init(struct skein_256_ctx *ctx, size_t hashBitLen);int Skein_512_Init (struct skein_512_ctx *ctx,size_t hashBitLen);int Skein1024_Init (struct skein1024_ctx *ctx,size_t hashBitLen); -int Skein_256_Update (struct skein_256_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg,size_t msgByteCnt); +int Skein_256_Update (struct skein_256_ctx *ctx,const u8 *msg, +size_t msgByteCnt); +int Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg, +size_t msgByteCnt); +int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg, +size_t msgByteCnt);int Skein_256_Final (struct skein_256_ctx *ctx,u8 *hashVal);int Skein_512_Final (struct skein_512_ctx *ctx,u8 *hashVal);
@@ -118,9 +121,12 @@ int Skein1024_Final(struct skein1024_ctx *ctx, u8 *hashVal);** to precompute the MAC IV, then a copy of the context saved and ** reused for each new MAC computation. **/ -int Skein_256_InitExt (struct skein_256_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); -int Skein_512_InitExt (struct skein_512_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); -int Skein1024_InitExt (struct skein1024_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein_256_InitExt (struct skein_256_ctx *ctx,size_t hashBitLen, +u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein_512_InitExt (struct skein_512_ctx *ctx,size_t hashBitLen, +u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein1024_InitExt (struct skein1024_ctx *ctx,size_t hashBitLen, +u64 treeInfo,const u8 *key,size_t keyBytes);/* ** Skein APIs for MAC and tree hash:
@@ -149,13 +155,13 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);******************************************************************/ /* tweak word T[1]: bit field starting positions */ -#define SKEIN_T1_BIT (BIT ) ((BIT) - 64)/* offset 64 because it's the second word */ +#define SKEIN_T1_BIT (BIT ) ((BIT) - 64)/* second word */ -#define SKEIN_T1_POS_TREE_LVL SKEIN_T1_BIT(112)/* bits 112..118: level in hash tree */ -#define SKEIN_T1_POS_BIT_PAD SKEIN_T1_BIT(119)/* bit 119 : partial final input byte */ -#define SKEIN_T1_POS_BLK_TYPE SKEIN_T1_BIT(120)/* bits 120..125: type field */ -#define SKEIN_T1_POS_FIRST SKEIN_T1_BIT(126)/* bits 126 : first block flag */ -#define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* bit 127 : final block flag */ +#define SKEIN_T1_POS_TREE_LVL SKEIN_T1_BIT(112)/* 112..118 hash tree level */ +#define SKEIN_T1_POS_BIT_PAD SKEIN_T1_BIT(119)/* 119 part. final in byte */ +#define SKEIN_T1_POS_BLK_TYPE SKEIN_T1_BIT(120)/* 120..125 type field `*/ +#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) */ #define SKEIN_T1_FLAG_FIRST (((u64) 1) << SKEIN_T1_POS_FIRST)
@@ -167,34 +173,37 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);#define SKEIN_T1_TREE_LEVEL (n) (((u64) (n)) << SKEIN_T1_POS_TREE_LVL)/* tweak word T[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 */ -#define SKEIN_BLK_TYPE_PK (12)/* public key (for digital signature hashing) */ -#define SKEIN_BLK_TYPE_KDF (16)/* key identifier for KDF */ -#define SKEIN_BLK_TYPE_NONCE (20)/* nonce for PRNG */ -#define SKEIN_BLK_TYPE_MSG (48)/* message processing */ -#define SKEIN_BLK_TYPE_OUT (63)/* output stage */ -#define SKEIN_BLK_TYPE_MASK (63)/* bit field mask */ - -#define SKEIN_T1_BLK_TYPE (T ) (((u64) (SKEIN_BLK_TYPE_##T)) << SKEIN_T1_POS_BLK_TYPE) -#define SKEIN_T1_BLK_TYPE_KEY SKEIN_T1_BLK_TYPE(KEY)/* key, for MAC and KDF */ -#define SKEIN_T1_BLK_TYPE_CFG SKEIN_T1_BLK_TYPE(CFG)/* configuration block */ -#define SKEIN_T1_BLK_TYPE_PERS SKEIN_T1_BLK_TYPE(PERS)/* personalization string */ -#define SKEIN_T1_BLK_TYPE_PK SKEIN_T1_BLK_TYPE(PK)/* public key (for digital signature hashing) */ -#define SKEIN_T1_BLK_TYPE_KDF SKEIN_T1_BLK_TYPE(KDF)/* key identifier for KDF */ +#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 */ +#define SKEIN_BLK_TYPE_PK (12)/* pubkey (for digital sigs) */ +#define SKEIN_BLK_TYPE_KDF (16)/* key identifier for KDF */ +#define SKEIN_BLK_TYPE_NONCE (20)/* nonce for PRNG */ +#define SKEIN_BLK_TYPE_MSG (48)/* message processing */ +#define SKEIN_BLK_TYPE_OUT (63)/* output stage */ +#define SKEIN_BLK_TYPE_MASK (63)/* bit field mask */ + +#define SKEIN_T1_BLK_TYPE (T ) (((u64) (SKEIN_BLK_TYPE_##T)) << \ + SKEIN_T1_POS_BLK_TYPE) +#define SKEIN_T1_BLK_TYPE_KEY SKEIN_T1_BLK_TYPE(KEY)/* for MAC and KDF */ +#define SKEIN_T1_BLK_TYPE_CFG SKEIN_T1_BLK_TYPE(CFG)/* config block */ +#define SKEIN_T1_BLK_TYPE_PERS SKEIN_T1_BLK_TYPE(PERS)/* personalization */ +#define SKEIN_T1_BLK_TYPE_PK SKEIN_T1_BLK_TYPE(PK)/* pubkey (for sigs) */ +#define SKEIN_T1_BLK_TYPE_KDF SKEIN_T1_BLK_TYPE(KDF)/* key ident for KDF */ #define SKEIN_T1_BLK_TYPE_NONCE SKEIN_T1_BLK_TYPE(NONCE)/* nonce for PRNG */ #define SKEIN_T1_BLK_TYPE_MSG SKEIN_T1_BLK_TYPE(MSG)/* message processing */ #define SKEIN_T1_BLK_TYPE_OUT SKEIN_T1_BLK_TYPE(OUT)/* output stage */ #define SKEIN_T1_BLK_TYPE_MASK SKEIN_T1_BLK_TYPE(MASK)/* field bit mask */ -#define SKEIN_T1_BLK_TYPE_CFG_FINAL (SKEIN_T1_BLK_TYPE_CFG | SKEIN_T1_FLAG_FINAL) -#define SKEIN_T1_BLK_TYPE_OUT_FINAL (SKEIN_T1_BLK_TYPE_OUT | SKEIN_T1_FLAG_FINAL) +#define SKEIN_T1_BLK_TYPE_CFG_FINAL (SKEIN_T1_BLK_TYPE_CFG | \ + SKEIN_T1_FLAG_FINAL) +#define SKEIN_T1_BLK_TYPE_OUT_FINAL (SKEIN_T1_BLK_TYPE_OUT | \ + SKEIN_T1_FLAG_FINAL)#define SKEIN_VERSION (1)#ifndef SKEIN_ID_STRING_LE /* allow compile-time personalization */ -#define SKEIN_ID_STRING_LE (0x33414853)/* "SHA3" (little-endian)*/ +#define SKEIN_ID_STRING_LE (0x33414853)/* "SHA3" (little-endian)*/ #endif #define SKEIN_MK_64 (hi32, lo32) ((lo32) + (((u64) (hi32)) << 32))
@@ -208,23 +217,29 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);#define SKEIN_CFG_TREE_NODE_SIZE_POS (8)#define SKEIN_CFG_TREE_MAX_LEVEL_POS (16) -#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS) -#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS) -#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS) +#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64)0xFF) << \ + SKEIN_CFG_TREE_LEAF_SIZE_POS) +#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64)0xFF) << \ + SKEIN_CFG_TREE_NODE_SIZE_POS) +#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64)0xFF) << \ + SKEIN_CFG_TREE_MAX_LEVEL_POS)#define SKEIN_CFG_TREE_INFO (leaf, node, maxLvl) \ ((((u64)(leaf)) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ (((u64)(node)) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS)) -#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0, 0, 0)/* use as treeInfo in InitExt() call for sequential processing */ +/* use as treeInfo in InitExt() call for sequential processing */ +#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0, 0, 0)/* ** Skein macros for getting/setting tweak words, etc. ** These are useful for partial input bytes, hash tree init/update, etc. **/ #define Skein_Get_Tweak (ctxPtr,TWK_NUM ) ((ctxPtr)->h.T[TWK_NUM]) -#define Skein_Set_Tweak (ctxPtr,TWK_NUM , tVal) {(ctxPtr)->h.T[TWK_NUM] = (tVal); } +#define Skein_Set_Tweak (ctxPtr,TWK_NUM , tVal) { \ + (ctxPtr)->h.T[TWK_NUM] = (tVal); \ + }#define Skein_Get_T0 (ctxPtr) Skein_Get_Tweak(ctxPtr, 0)#define Skein_Get_T1 (ctxPtr) Skein_Get_Tweak(ctxPtr, 1)
@@ -241,14 +256,26 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);#define Skein_Set_Type (ctxPtr,BLK_TYPE ) \ Skein_Set_T1(ctxPtr, SKEIN_T1_BLK_TYPE_##BLK_TYPE) -/* set up for starting with a new type: h.T[0]=0; h.T[1] = NEW_TYPE; h.bCnt=0; */ -#define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) \ - { Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt = 0; } +/* +* setup for starting with a new type: +* h.T[0]=0; h.T[1] = NEW_TYPE; h.bCnt=0; +*/ +#define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) { \ + Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | \ + SKEIN_T1_BLK_TYPE_##BLK_TYPE); \ + (ctxPtr)->h.bCnt = 0; \ + } -#define Skein_Clear_First_Flag (hdr) { (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; } -#define Skein_Set_Bit_Pad_Flag (hdr) { (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; } +#define Skein_Clear_First_Flag (hdr) { \ + (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; \ + } +#define Skein_Set_Bit_Pad_Flag (hdr) { \ + (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; \ + } -#define Skein_Set_Tree_Level (hdr, height) { (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height); } +#define Skein_Set_Tree_Level (hdr, height) { \ + (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height); \ + }/***************************************************************** ** "Internal" Skein definitions for debugging and error checking
@@ -263,7 +290,7 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);#define Skein_Show_Key (bits, ctx, key, keyBytes)#endif -#define Skein_Assert (x, retCode)/* default: ignore all Asserts, for performance */ +#define Skein_Assert (x, retCode)/* ignore all Asserts, for performance */ #define Skein_assert (x)/*****************************************************************
@@ -292,21 +319,29 @@ enumR_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 ,/* Skein1024 round rotation constants */ -R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , -R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , -R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , -R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , -R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , -R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , -R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , -R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 +R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 , +R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , +R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 , +R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , +R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 , +R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , +R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 , +R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , +R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 , +R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , +R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 , +R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , +R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 , +R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , +R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 , +R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 };#ifndef SKEIN_ROUNDS -#define SKEIN_256_ROUNDS_TOTAL (72)/* number of rounds for the different block sizes */ +#define SKEIN_256_ROUNDS_TOTAL (72)/* # rounds for diff block sizes */ #define SKEIN_512_ROUNDS_TOTAL (72)#define SKEIN1024_ROUNDS_TOTAL (80) -#else /* allow command-line define in range 8*(5..14) */ +#else /* allow command-line define in range 8*(5..14) */ #define SKEIN_256_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/100) + 5) % 10) + 5))#define SKEIN_512_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/10) + 5) % 10) + 5))#define SKEIN1024_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS) + 5) % 10) + 5))
drivers/staging/skein/include/threefishApi.h +11 -5
@@ -72,7 +72,9 @@ struct threefish_key {* @param tweak * Pointer to the two tweak words (word has 64 bits). */ -void threefishSetKey (struct threefish_key *keyCtx,enum threefish_size stateSize,u64 *keyData,u64 *tweak); +void threefishSetKey (struct threefish_key *keyCtx, +enum threefish_size stateSize, +u64 *keyData,u64 *tweak);/** * Encrypt Threefisch block (bytes).
@@ -108,7 +110,8 @@ void threefishEncryptBlockBytes(struct threefish_key *keyCtx, u8 *in, u8 *out);* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockWords (struct threefish_key *keyCtx,u64 *in,u64 *out); +void threefishEncryptBlockWords (struct threefish_key *keyCtx,u64 *in, +u64 *out);/** * Decrypt Threefisch block (bytes).
@@ -144,14 +147,17 @@ void threefishDecryptBlockBytes(struct threefish_key *keyCtx, u8 *in, u8 *out);* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockWords (struct threefish_key *keyCtx,u64 *in,u64 *out); +void threefishDecryptBlockWords (struct threefish_key *keyCtx,u64 *in, +u64 *out);void threefishEncrypt256 (struct threefish_key *keyCtx,u64 *input,u64 *output);void threefishEncrypt512 (struct threefish_key *keyCtx,u64 *input,u64 *output); -void threefishEncrypt1024 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishEncrypt1024 (struct threefish_key *keyCtx,u64 *input, +u64 *output);void threefishDecrypt256 (struct threefish_key *keyCtx,u64 *input,u64 *output);void threefishDecrypt512 (struct threefish_key *keyCtx,u64 *input,u64 *output); -void threefishDecrypt1024 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishDecrypt1024 (struct threefish_key *keyCtx,u64 *input, +u64 *output);/** * @} */
drivers/staging/skein/skein.c +396 -190
894 lines not on this page · raw message
drivers/staging/skein/skeinApi.c +38 -20
111 lines not on this page · raw message
drivers/staging/skein/skeinBlockNo3F.c +15 -12
@@ -11,10 +11,10 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr,struct threefish_key key;u64 tweak[2 ];int i; -u64 w[SKEIN_256_STATE_WORDS ];/* local copy of input block */ +u64 w[SKEIN_256_STATE_WORDS ];/* local copy of input block */ u64 words[3 ]; -Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ +Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ tweak[0 ] = ctx->h.T[0 ]; tweak[1 ] = ctx->h.T[1 ];
@@ -36,13 +36,14 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr,threefishSetKey (&key, Threefish256, ctx->X, tweak); -Skein_Get64_LSB_First (w, blkPtr,SKEIN_256_STATE_WORDS );/* get input block in little-endian format */ +/* get input block in little-endian format */ +Skein_Get64_LSB_First (w, blkPtr,SKEIN_256_STATE_WORDS );threefishEncryptBlockWords (&key, w, ctx->X); blkPtr +=SKEIN_256_BLOCK_BYTES ; -/* do the final "feedforward" xor, update context chaining vars */ +/* do the final "feedforward" xor, update ctx chaining vars */ ctx->X[0 ] = ctx->X[0 ] ^ w[0 ]; ctx->X[1 ] = ctx->X[1 ] ^ w[1 ]; ctx->X[2 ] = ctx->X[2 ] ^ w[2 ];
@@ -62,9 +63,9 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr,u64 tweak[2 ];int i;u64 words[3 ]; -u64 w[SKEIN_512_STATE_WORDS ];/* local copy of input block */ +u64 w[SKEIN_512_STATE_WORDS ];/* local copy of input block */ -Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ +Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ tweak[0 ] = ctx->h.T[0 ]; tweak[1 ] = ctx->h.T[1 ];
@@ -86,13 +87,14 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr,threefishSetKey (&key, Threefish512, ctx->X, tweak); -Skein_Get64_LSB_First (w, blkPtr,SKEIN_512_STATE_WORDS );/* get input block in little-endian format */ +/* get input block in little-endian format */ +Skein_Get64_LSB_First (w, blkPtr,SKEIN_512_STATE_WORDS );threefishEncryptBlockWords (&key, w, ctx->X); blkPtr +=SKEIN_512_BLOCK_BYTES ; -/* do the final "feedforward" xor, update context chaining vars */ +/* do the final "feedforward" xor, update ctx chaining vars */ ctx->X[0 ] = ctx->X[0 ] ^ w[0 ]; ctx->X[1 ] = ctx->X[1 ] ^ w[1 ]; ctx->X[2 ] = ctx->X[2 ] ^ w[2 ];
@@ -116,9 +118,9 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr,u64 tweak[2 ];int i;u64 words[3 ]; -u64 w[SKEIN1024_STATE_WORDS ];/* local copy of input block */ +u64 w[SKEIN1024_STATE_WORDS ];/* local copy of input block */ -Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ +Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ tweak[0 ] = ctx->h.T[0 ]; tweak[1 ] = ctx->h.T[1 ];
@@ -140,13 +142,14 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr,threefishSetKey (&key, Threefish1024, ctx->X, tweak); -Skein_Get64_LSB_First (w, blkPtr,SKEIN1024_STATE_WORDS );/* get input block in little-endian format */ +/* get input block in little-endian format */ +Skein_Get64_LSB_First (w, blkPtr,SKEIN1024_STATE_WORDS );threefishEncryptBlockWords (&key, w, ctx->X); blkPtr +=SKEIN1024_BLOCK_BYTES ; -/* do the final "feedforward" xor, update context chaining vars */ +/* do the final "feedforward" xor, update ctx chaining vars */ ctx->X[0 ] = ctx->X[0 ] ^ w[0 ]; ctx->X[1 ] = ctx->X[1 ] ^ w[1 ]; ctx->X[2 ] = ctx->X[2 ] ^ w[2 ];
drivers/staging/skein/skein_block.c +239 -188
625 lines not on this page · raw message
drivers/staging/skein/threefish1024Block.c +4835 -1317
972 lines not on this page · raw message
drivers/staging/skein/threefish256Block.c +1094 -304
1,398 lines not on this page · raw message
drivers/staging/skein/threefish512Block.c +2179 -596
2,775 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
1.9.0
Part of the diff is not shown here. View the raw message.
RFC PATCH 1/22 scripts: objdiff: detect object code changes between two commits
In reply to Jason Cooperobjdiff is useful when doing large code cleanups. For example, when removing checkpatch warnings and errors from new drivers in the staging tree.
objdiff can be used in conjunction with a git rebase to confirm that each commit made no changes to the resulting object code. It has the same return values as diff(1).
This was written specifically to support adding the skein and threefish cryto drivers to the staging tree. I needed a programmatic way to confirm that commits changing >90% of the lines didn't inadvertently change the code.
--- scripts/objdiff | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100755 scripts/objdiff
scripts/objdiff new file +126 -0
@@ -0,0 +1,126 @@ +#!/bin/bash + +# objdiff - a small script for validating that a commit or series of commits +# didn't change object code. +# +# Copyright 2014, Jason Cooper <[email protected]> +# +# Licensed under the terms of the GNU GPL version 2 + +# usage example: +# +# $ git checkout COMMIT_A +# $ <your fancy build command here> +# $ ./scripts/objdiff record path/to/*.o +# +# $ git checkout COMMIT_B +# $ <your fancy build command here> +# $ ./scripts/objdiff record path/to/*.o +# +# $ ./scripts/objdiff diff COMMIT_A COMMIT_B +# $ + +# And to clean up (everything is in /tmp/objdiff-*) +# $ ./scripts/objdiff clean all + +usage() { + echo "Usage: $0 <command> <args>" + echo " record <list of object files>" + echo " diff <commitA> <commitB>" + echo " clean all | <commit>" + exit 1 +} + +dorecord() { + [ $# -eq 0 ] && usage + + FILES="$*" + + CMT="`git rev-parse --short HEAD`" + + OBJDUMP="${CROSS_COMPILE}objdump" + OBJDIFFD="/tmp/objdiff-$CMT" + + [ ! -d "$OBJDIFFD" ] && mkdir -p "$OBJDIFFD" + + for f in $FILES; do + dn="${f%/*}" + bn="${f##*/}" + + [ ! -d "$OBJDIFFD/$dn" ] && mkdir -p "$OBJDIFFD/$dn" + + # remove addresses for a more clear diff + # http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and + $OBJDUMP -D "$f" | sed "s/^[[:space:]]\+[0-9a-f]\+//" \ + >"$OBJDIFFD/$dn/$bn" + + # force rebuild + rm -f "$f" + done +} + +dodiff() { + [ $# -ne 2 ] && usage + + SRC="`git rev-parse --short $1`" + DST="`git rev-parse --short $2`" + + DIFF="`which colordiff`" + + if [ ${#DIFF} -eq 0 ] || [ ! -x "$DIFF" ]; then + DIFF="`which diff`" + fi + + SRCD="/tmp/objdiff-$SRC" + DSTD="/tmp/objdiff-$DST" + + if [ ! -d "$SRCD" ]; then + echo "ERROR: $SRCD doesn't exist" + exit 1 + fi + + if [ ! -d "$DSTD" ]; then + echo "ERROR: $DSTD doesn't exist" + exit 1 + fi + + $DIFF -Nurd $SRCD $DSTD +} + +doclean() { + [ $# -eq 0 ] && usage + [ $# -gt 1 ] && usage + + if [ "x$1" = "xall" ]; then + rm -rf /tmp/objdiff-* + else + CMT="`git rev-parse --short $1`" + + if [ -d "/tmp/objdiff-$CMT" ]; then + rm -rf /tmp/objdiff-$CMT + else + echo "$CMT not found" + fi + fi +} + +[ $# -eq 0 ] && usage + +case "$1" in + record) + shift + dorecord $* + ;; + diff) + shift + dodiff $* + ;; + clean) + shift + doclean $* + ;; + *) + echo "Unrecognized command '$1'" + exit 1 + ;; +esac
Signature · 1 line
1.9.0
cover staging: add skein/threefish crypto algos
Greg, all,
Attached is a series I've sat on for the past month and a half.
I'm hoping that by posting it in it's incomplete state, it will either a) motivate me to finish hooking into the crypto API, or b) motivate someone else to pitch in. ;-)
Quoted 1 line
From patch 3, all commits build successfully. In addition, using the script I
added in patch 1, I can confirm that no object code was harmed in this process.
I'm under no time crunch with this, and I add to it as I find time. If Greg wants to take it for v3.15, great. Otherwise is fine as well. It's been a while since I watched the inner workings of the staging tree, so I'm not familiar with how strict it is recently.
Barring a few false-positives, this series makes the code checkpatch-clean, but it is not ready for mainline as yet. In particular, I really don't like the adhoc macro definitions, nor the camelCase.
The plan is to get skein and threefish registered into the crypto API, build as modules, and then move it to crypto/.
To facilitate tinkering with this, One can pull from the following:
git://git.infradead.org/users/jcooper/linux.git tags/staging-skein-3.14-rc1
This is based on v3.14-rc1, and is prone to rebasing based on comments.
thx,
Jason.
Jason Cooper (22):
scripts: objdiff: detect object code changes between two commits
staging: crypto: skein: import code from Skein3Fish.git
staging: crypto: skein: allow building statically
staging: crypto: skein: remove brg_*.h includes
staging: crypto: skein: remove skein_port.h
staging: crypto: skein: remove __cplusplus and an unneeded stddef.h
staging: crypto: skein: remove unneeded typedefs
staging: crypto: skein: remove all typedef {struct,enum}
staging: crypto: skein: use u8, u64 vice uint*_t
staging: crypto: skein: fixup pointer whitespace
staging: crypto: skein: cleanup whitespace around operators/punc.
staging: crypto: skein: dos2unix, remove executable perms
staging: crypto: skein: fix leading whitespace
staging: crypto: skein: remove trailing whitespace
staging: crypto: skein: cleanup >80 character lines
staging: crypto: skein: fix do/while brace formatting
staging: crypto: skein: fix brace placement errors
staging: crypto: skein: wrap multi-line macros in do-while loops
staging: crypto: skein: remove externs from .c files
staging: crypto: skein: remove braces from single-statement block
staging: crypto: skein: remove unnecessary line continuation
staging: crypto: skein: add TODO file
drivers/staging/Kconfig | 2 + drivers/staging/Makefile | 1 + drivers/staging/skein/Kconfig | 32 + drivers/staging/skein/Makefile | 13 + drivers/staging/skein/TODO | 11 + drivers/staging/skein/include/skein.h | 344 ++ drivers/staging/skein/include/skeinApi.h | 230 ++ drivers/staging/skein/include/skein_block.h | 22 + drivers/staging/skein/include/skein_iv.h | 186 + drivers/staging/skein/include/threefishApi.h | 164 + drivers/staging/skein/skein.c | 880 +++++ drivers/staging/skein/skeinApi.c | 237 ++ drivers/staging/skein/skeinBlockNo3F.c | 175 + drivers/staging/skein/skein_block.c | 770 ++++ drivers/staging/skein/threefish1024Block.c | 4900 ++++++++++++++++++++++++++ drivers/staging/skein/threefish256Block.c | 1137 ++++++ drivers/staging/skein/threefish512Block.c | 2223 ++++++++++++ drivers/staging/skein/threefishApi.c | 79 + scripts/objdiff | 126 + 19 files changed, 11532 insertions(+) create mode 100644 drivers/staging/skein/Kconfig create mode 100644 drivers/staging/skein/Makefile create mode 100644 drivers/staging/skein/TODO create mode 100644 drivers/staging/skein/include/skein.h create mode 100644 drivers/staging/skein/include/skeinApi.h create mode 100644 drivers/staging/skein/include/skein_block.h create mode 100644 drivers/staging/skein/include/skein_iv.h create mode 100644 drivers/staging/skein/include/threefishApi.h create mode 100644 drivers/staging/skein/skein.c create mode 100644 drivers/staging/skein/skeinApi.c create mode 100644 drivers/staging/skein/skeinBlockNo3F.c create mode 100644 drivers/staging/skein/skein_block.c create mode 100644 drivers/staging/skein/threefish1024Block.c create mode 100644 drivers/staging/skein/threefish256Block.c create mode 100644 drivers/staging/skein/threefish512Block.c create mode 100644 drivers/staging/skein/threefishApi.c create mode 100755 scripts/objdiff
Signature · 1 line
1.9.0
RFC PATCH 3/22 staging: crypto: skein: allow building statically
These are the minimum changes required to get the code to build statically in the kernel. It's necessary to do this first so that we can empirically determine that future cleanup patches aren't changing the generated object code.
--- drivers/staging/Kconfig | 2 + drivers/staging/Makefile | 1 + drivers/staging/skein/CMakeLists.txt | 27 ------------- drivers/staging/skein/Kconfig | 32 ++++++++++++++++ drivers/staging/skein/Makefile | 13 +++++++ drivers/staging/skein/include/brg_types.h | 57 ---------------------------- drivers/staging/skein/include/skein.h | 10 ----- drivers/staging/skein/include/skeinApi.h | 2 +- drivers/staging/skein/include/skein_port.h | 16 +------- drivers/staging/skein/include/threefishApi.h | 2 +- drivers/staging/skein/skein.c | 2 +- drivers/staging/skein/skeinApi.c | 4 +- drivers/staging/skein/skeinBlockNo3F.c | 2 +- drivers/staging/skein/skein_block.c | 2 +- drivers/staging/skein/threefish1024Block.c | 3 +- drivers/staging/skein/threefish256Block.c | 3 +- drivers/staging/skein/threefish512Block.c | 3 +- drivers/staging/skein/threefishApi.c | 3 +- 18 files changed, 59 insertions(+), 125 deletions(-) delete mode 100755 drivers/staging/skein/CMakeLists.txt create mode 100644 drivers/staging/skein/Kconfig create mode 100644 drivers/staging/skein/Makefile
drivers/staging/Kconfig +2 -0
@@ -146,4 +146,6 @@ source "drivers/staging/dgnc/Kconfig" source "drivers/staging/dgap/Kconfig" +source "drivers/staging/skein/Kconfig" + endif # STAGING
drivers/staging/Makefile +1 -0
@@ -65,3 +65,4 @@ obj-$(CONFIG_XILLYBUS) += xillybus/ obj-$(CONFIG_DGNC) += dgnc/ obj-$(CONFIG_DGAP) += dgap/ obj-$(CONFIG_MTD_SPINAND_MT29F) += mt29f_spinand/ +obj-$(CONFIG_CRYPTO_SKEIN) += skein/
drivers/staging/skein/CMakeLists.txt deleted +0 -27
@@ -1,27 +0,0 @@ -cmake_minimum_required (VERSION 2.6) - -include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include) - -# set(skeinBlock_src skein_block.c) -set(skeinBlock_src skeinBlockNo3F.c) - -set(skein_src - ${skeinBlock_src} - skein.c - skeinApi.c - ) - -set(threefish_src - threefishApi.c - threefish256Block.c - threefish512Block.c - threefish1024Block.c - ) -set(s3f_src ${skein_src} ${threefish_src}) - -add_library(skein3fish SHARED ${s3f_src}) -set_target_properties(skein3fish PROPERTIES VERSION ${VERSION} SOVERSION ${SOVERSION}) -target_link_libraries(skein3fish ${LIBS}) - -install(TARGETS skein3fish DESTINATION ${LIBDIRNAME}) -
drivers/staging/skein/Kconfig new file +32 -0
@@ -0,0 +1,32 @@ +config CRYPTO_SKEIN + bool "Skein digest algorithm" + depends on (X86 || UML_X86) && 64BIT + select CRYPTO_THREEFISH + select CRYPTO_HASH + help + Skein secure hash algorithm is one of 5 finalists from the NIST SHA3 + competition. + + Skein is optimized for modern, 64bit processors and is highly + customizable. See: + + http://www.skein-hash.info/sites/default/files/skein1.3.pdf + + for more information. This module depends on the threefish block + cipher module. + +config CRYPTO_THREEFISH + bool "Threefish tweakable block cipher" + depends on (X86 || UML_X86) && 64BIT + select CRYPTO_ALGAPI + help + Threefish cipher algorithm is the tweakable block cipher underneath + the Skein family of secure hash algorithms. Skein is one of 5 + finalists from the NIST SHA3 competition. + + Skein is optimized for modern, 64bit processors and is highly + customizable. See: + + http://www.skein-hash.info/sites/default/files/skein1.3.pdf + + for more information.
drivers/staging/skein/Makefile new file +13 -0
@@ -0,0 +1,13 @@ +# +# Makefile for the skein secure hash algorithm +# +subdir-ccflags-y := -I$(src)/include/ + +obj-$(CONFIG_CRYPTO_SKEIN) += skein.o \ + skeinApi.o \ + skein_block.o + +obj-$(CONFIG_CRYPTO_THREEFISH) += threefish1024Block.o \ + threefish256Block.o \ + threefish512Block.o \ + threefishApi.o
drivers/staging/skein/include/brg_types.h +0 -57
83 lines not on this page · raw message
drivers/staging/skein/include/skein.h +0 -10
@@ -261,18 +261,8 @@ int Skein1024_Output (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);#define Skein_Show_Key (bits,ctx,key,keyBytes)#endif -#ifndef SKEIN_ERR_CHECK /* run-time checks (e.g., bad params, uninitialized context)? */ #define Skein_Assert (x,retCode)/* default: ignore all Asserts, for performance */ #define Skein_assert (x) -#elif defined(SKEIN_ASSERT ) -#include <assert.h> -#define Skein_Assert (x,retCode) assert(x) -#define Skein_assert (x) assert(x) -#else -#include <assert.h> -#define Skein_Assert (x,retCode) { if (!(x)) return retCode; }/* caller error */ -#define Skein_assert (x) assert(x)/* internal error */ -#endif /***************************************************************** ** Skein block function constants (shared across Ref and Opt code)
drivers/staging/skein/include/skeinApi.h +1 -1
@@ -78,8 +78,8 @@ OTHER DEALINGS IN THE SOFTWARE.* */ +#include <linux/types.h> #include <skein.h> -#include <stdint.h> #ifdef __cplusplus extern "C"
drivers/staging/skein/include/skein_port.h +1 -15
@@ -44,24 +44,10 @@ typedef uint_64t u64b_t; /* 64-bit unsigned integer */* platform-specific code instead (e.g., for big-endian CPUs). * */ -#ifndef SKEIN_NEED_SWAP /* compile-time "override" for endianness? */ - -#include <brg_endian.h> /* get endianness selection */ -#if PLATFORM_BYTE_ORDER ==IS_BIG_ENDIAN -/* here for big-endian CPUs */ -#define SKEIN_NEED_SWAP (1) -#elif PLATFORM_BYTE_ORDER ==IS_LITTLE_ENDIAN -/* here for x86 and x86-64 CPUs (and other detected little-endian CPUs) */ #define SKEIN_NEED_SWAP (0) -#if PLATFORM_MUST_ALIGN ==0 /* ok to use "fast" versions? */ +/* below two prototype assume we are handed aligned data */ #define Skein_Put64_LSB_First (dst08,src64,bCnt) memcpy(dst08,src64,bCnt)#define Skein_Get64_LSB_First (dst64,src08,wCnt) memcpy(dst64,src08,8*(wCnt)) -#endif -#else -#error "Skein needs endianness setting!" -#endif - -#endif /* ifndef SKEIN_NEED_SWAP */ /* ******************************************************************
drivers/staging/skein/include/threefishApi.h +1 -1
@@ -28,8 +28,8 @@@endcode */ +#include <linux/types.h> #include <skein.h> -#include <stdint.h> #define KeyScheduleConst 0x1BD11BDAA9FC1A22L
drivers/staging/skein/skein.c +1 -1
@@ -10,7 +10,7 @@#define SKEIN_PORT_CODE /* instantiate any code in skein_port.h */ -#include <string.h> /* get the memcpy/memset functions */ +#include <linux/string.h> /* get the memcpy/memset functions */ #include <skein.h> /* get the Skein API definitions */ #include <skein_iv.h> /* get precomputed IVs */
drivers/staging/skein/skeinApi.c +1 -3
@@ -24,10 +24,8 @@ OTHER DEALINGS IN THE SOFTWARE.*/ -#define SKEIN_ERR_CHECK 1 +#include <linux/string.h> #include <skeinApi.h> -#include <string.h> -#include <stdio.h> int skeinCtxPrepare (SkeinCtx_t * ctx,SkeinSize_t size) {
drivers/staging/skein/skeinBlockNo3F.c +1 -1
@@ -1,5 +1,5 @@ -#include <string.h> +#include <linux/string.h> #include <skein.h> #include <threefishApi.h>
drivers/staging/skein/skein_block.c +1 -1
@@ -14,7 +14,7 @@** ************************************************************************/ -#include <string.h> +#include <linux/string.h> #include <skein.h> #ifndef SKEIN_USE_ASM
drivers/staging/skein/threefish1024Block.c +1 -2
@@ -1,6 +1,5 @@ +#include <linux/string.h> #include <threefishApi.h> -#include <stdint.h> -#include <string.h> void threefishEncrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output)
drivers/staging/skein/threefish256Block.c +1 -2
@@ -1,6 +1,5 @@ +#include <linux/string.h> #include <threefishApi.h> -#include <stdint.h> -#include <string.h> void threefishEncrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output)
drivers/staging/skein/threefish512Block.c +1 -2
@@ -1,6 +1,5 @@ +#include <linux/string.h> #include <threefishApi.h> -#include <stdint.h> -#include <string.h> void threefishEncrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output)
drivers/staging/skein/threefishApi.c +1 -2
@@ -1,8 +1,7 @@ +#include <linux/string.h> #include <threefishApi.h> -#include <stdlib.h> -#include <string.h> void threefishSetKey (ThreefishKey_t * keyCtx,ThreefishSize_t stateSize,uint64_t * keyData,uint64_t * tweak)
Signature · 1 line
1.9.0
RFC PATCH 4/22 staging: crypto: skein: remove brg_*.h includes
In reply to Jason Cooper--- drivers/staging/skein/include/brg_endian.h | 148 ----------------------------- drivers/staging/skein/include/brg_types.h | 131 ------------------------- drivers/staging/skein/include/skein_port.h | 6 +- 3 files changed, 2 insertions(+), 283 deletions(-) delete mode 100644 drivers/staging/skein/include/brg_endian.h delete mode 100644 drivers/staging/skein/include/brg_types.h
drivers/staging/skein/include/brg_endian.h deleted +0 -148
@@ -1,148 +0,0 @@ -/* ---------------------------------------------------------------------------- -Copyright (c) 2003, Dr Brian Gladman, Worcester, UK. All rights reserved. - -LICENSE TERMS - -The free distribution and use of this software in both source and binary -form is allowed (with or without changes) provided that: - -1. distributions of this source code include the above copyright -notice, this list of conditions and the following disclaimer; - -2. distributions in binary form include the above copyright -notice, this list of conditions and the following disclaimer -in the documentation and/or other associated materials; - -3. the copyright holder's name is not used to endorse products -built using this software without specific written permission. - -ALTERNATIVELY, provided that this notice is retained in full, this product -may be distributed under the terms of the GNU General Public License (GPL), -in which case the provisions of the GPL apply INSTEAD OF those given above. - -DISCLAIMER - -This software is provided 'as is' with no explicit or implied warranties -in respect of its properties, including, but not limited to, correctness -and/or fitness for purpose. ---------------------------------------------------------------------------- -Issue 20/10/2006 -*/ - -#ifndef BRG_ENDIAN_H -#define BRG_ENDIAN_H - -#define IS_BIG_ENDIAN 4321/* byte 0 is most significant (mc68k) */ -#define IS_LITTLE_ENDIAN 1234/* byte 0 is least significant (i386) */ - -/* Include files where endian defines and byteswap functions may reside */ -#if defined( __FreeBSD__ ) || defined( __OpenBSD__ ) || defined( __NetBSD__ ) -# include <sys/endian.h> -#elif defined(BSD ) && (BSD >=199103 ) || defined( __APPLE__ ) || \ - defined( __CYGWIN32__ ) || defined( __DJGPP__ ) || defined( __osf__ ) -# include <machine/endian.h> -#elif defined( __linux__ ) || defined( __GNUC__ ) || defined( __GNU_LIBRARY__ ) -# if !defined( __MINGW32__ ) && !defined(AVR ) -# include <endian.h> -# if !defined( __BEOS__ ) -# include <byteswap.h> -# endif -# endif -#endif - -/* Now attempt to set the define for platform byte order using any */ -/* of the four forms SYMBOL, _SYMBOL, __SYMBOL & __SYMBOL__, which */ -/* seem to encompass most endian symbol definitions */ - -#if defined(BIG_ENDIAN ) && defined(LITTLE_ENDIAN ) -# if defined(BYTE_ORDER ) &&BYTE_ORDER ==BIG_ENDIAN -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -# elif defined(BYTE_ORDER ) &&BYTE_ORDER ==LITTLE_ENDIAN -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -# endif -#elif defined(BIG_ENDIAN ) -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -#elif defined(LITTLE_ENDIAN ) -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -#endif - -#if defined( _BIG_ENDIAN ) && defined( _LITTLE_ENDIAN ) -# if defined( _BYTE_ORDER ) && _BYTE_ORDER == _BIG_ENDIAN -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -# elif defined( _BYTE_ORDER ) && _BYTE_ORDER == _LITTLE_ENDIAN -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -# endif -#elif defined( _BIG_ENDIAN ) -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -#elif defined( _LITTLE_ENDIAN ) -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -#endif - -#if defined( __BIG_ENDIAN ) && defined( __LITTLE_ENDIAN ) -# if defined( __BYTE_ORDER ) && __BYTE_ORDER == __BIG_ENDIAN -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -# elif defined( __BYTE_ORDER ) && __BYTE_ORDER == __LITTLE_ENDIAN -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -# endif -#elif defined( __BIG_ENDIAN ) -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -#elif defined( __LITTLE_ENDIAN ) -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -#endif - -#if defined( __BIG_ENDIAN__ ) && defined( __LITTLE_ENDIAN__ ) -# if defined( __BYTE_ORDER__ ) && __BYTE_ORDER__ == __BIG_ENDIAN__ -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -# elif defined( __BYTE_ORDER__ ) && __BYTE_ORDER__ == __LITTLE_ENDIAN__ -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -# endif -#elif defined( __BIG_ENDIAN__ ) -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -#elif defined( __LITTLE_ENDIAN__ ) -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -#endif - -/* if the platform byte order could not be determined, then try to */ -/* set this define using common machine defines */ -#if !defined(PLATFORM_BYTE_ORDER ) - -#if defined( __alpha__ ) || defined( __alpha ) || defined( i386 ) || \ - defined( __i386__ ) || defined( _M_I86 ) || defined( _M_IX86 ) || \ - defined( __OS2__ ) || defined( sun386 ) || defined( __TURBOC__ ) || \ - defined( vax ) || defined( vms ) || defined(VMS ) || \ - defined( __VMS ) || defined( _M_X64 ) || defined(AVR ) -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN - -#elif defined(AMIGA ) || defined( applec ) || defined( __AS400__ ) || \ - defined( _CRAY ) || defined( __hppa ) || defined( __hp9000 ) || \ - defined( ibm370 ) || defined( mc68000 ) || defined( m68k ) || \ - defined( __MRC__ ) || defined( __MVS__ ) || defined( __MWERKS__ ) || \ - defined( sparc ) || defined( __sparc) || defined(SYMANTEC_C ) || \ - defined( __VOS__ ) || defined( __TIGCC__ ) || defined( __TANDEM ) || \ - defined(THINK_C ) || defined( __VMCMS__ ) -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN - -#elif 0 /* **** EDIT HERE IF NECESSARY **** */ -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -#elif 0 /* **** EDIT HERE IF NECESSARY **** */ -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -#else -# error Please edit lines 126 or 128 in brg_endian.h to set the platform byte order -#endif -#endif - -/* special handler for IA64, which may be either endianness (?) */ -/* here we assume little-endian, but this may need to be changed */ -#if defined(__ia64) || defined(__ia64__) || defined(_M_IA64) -# define PLATFORM_MUST_ALIGN (1) -#ifndef PLATFORM_BYTE_ORDER -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -#endif -#endif - -#ifndef PLATFORM_MUST_ALIGN -# define PLATFORM_MUST_ALIGN (0) -#endif - -#endif /* ifndef BRG_ENDIAN_H */
drivers/staging/skein/include/brg_types.h deleted +0 -131
131 lines not on this page · raw message
drivers/staging/skein/include/skein_port.h +2 -4
@@ -15,11 +15,9 @@** ********************************************************************/ -#include <brg_types.h> /* get integer type definitions */ -typedef unsigned int uint_t ;/* native unsigned integer */ -typedef uint_8t u08b_t ;/* 8-bit unsigned integer */ -typedef uint_64t u64b_t ;/* 64-bit unsigned integer */ +typedef uint8_t u08b_t ;/* 8-bit unsigned integer */ +typedef uint64_t u64b_t ;/* 64-bit unsigned integer */ #ifndef RotL_64#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N))))
Signature · 1 line
1.9.0
RFC PATCH 5/22 staging: crypto: skein: remove skein_port.h
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 14 +++- drivers/staging/skein/include/skein_port.h | 108 ----------------------------- drivers/staging/skein/skein.c | 21 ------ 3 files changed, 13 insertions(+), 130 deletions(-) delete mode 100644 drivers/staging/skein/include/skein_port.h
drivers/staging/skein/include/skein.h +13 -1
@@ -33,7 +33,19 @@ extern "C"#endif #include <stddef.h> /* get size_t definition */ -#include <skein_port.h> /* get platform-specific definitions */ + +typedef unsigned int uint_t ;/* native unsigned integer */ +typedef uint8_t u08b_t ;/* 8-bit unsigned integer */ +typedef uint64_t u64b_t ;/* 64-bit unsigned integer */ + +#ifndef RotL_64 +#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N)))) +#endif + +/* below two prototype assume we are handed aligned data */ +#define Skein_Put64_LSB_First (dst08,src64,bCnt) memcpy(dst08,src64,bCnt) +#define Skein_Get64_LSB_First (dst64,src08,wCnt) memcpy(dst64,src08,8*(wCnt)) +#define Skein_Swap64 (w64) (w64)enum {
drivers/staging/skein/include/skein_port.h deleted +0 -108
108 lines not on this page · raw message
drivers/staging/skein/skein.c +0 -21
@@ -102,13 +102,6 @@ int Skein_256_InitExt(Skein_256_Ctxt_t *ctx,size_t hashBitLen,u64b_t treeInfo, cSkein_256_Update (ctx,key,keyBytes);/* hash the key */ Skein_256_Final_Pad (ctx,cfg.b);/* put result into cfg.b[] */ memcpy (ctx->X,cfg.b,sizeof (cfg.b));/* copy over into ctx->X[] */ -#if SKEIN_NEED_SWAP - { -uint_t i; -for (i=0 ;i<SKEIN_256_STATE_WORDS ;i++)/* convert key bytes to context words */ - ctx->X[i] =Skein_Swap64 (ctx->X[i]); - } -#endif }/* build/process the config block, type == CONFIG (could be precomputed for each key) */ ctx->h.hashBitLen = hashBitLen;/* output hash bit count */
@@ -297,13 +290,6 @@ int Skein_512_InitExt(Skein_512_Ctxt_t *ctx,size_t hashBitLen,u64b_t treeInfo, cSkein_512_Update (ctx,key,keyBytes);/* hash the key */ Skein_512_Final_Pad (ctx,cfg.b);/* put result into cfg.b[] */ memcpy (ctx->X,cfg.b,sizeof (cfg.b));/* copy over into ctx->X[] */ -#if SKEIN_NEED_SWAP - { -uint_t i; -for (i=0 ;i<SKEIN_512_STATE_WORDS ;i++)/* convert key bytes to context words */ - ctx->X[i] =Skein_Swap64 (ctx->X[i]); - } -#endif }/* build/process the config block, type == CONFIG (could be precomputed for each key) */ ctx->h.hashBitLen = hashBitLen;/* output hash bit count */
@@ -489,13 +475,6 @@ int Skein1024_InitExt(Skein1024_Ctxt_t *ctx,size_t hashBitLen,u64b_t treeInfo, cSkein1024_Update (ctx,key,keyBytes);/* hash the key */ Skein1024_Final_Pad (ctx,cfg.b);/* put result into cfg.b[] */ memcpy (ctx->X,cfg.b,sizeof (cfg.b));/* copy over into ctx->X[] */ -#if SKEIN_NEED_SWAP - { -uint_t i; -for (i=0 ;i<SKEIN1024_STATE_WORDS ;i++)/* convert key bytes to context words */ - ctx->X[i] =Skein_Swap64 (ctx->X[i]); - } -#endif }/* build/process the config block, type == CONFIG (could be precomputed for each key) */ ctx->h.hashBitLen = hashBitLen;/* output hash bit count */
Signature · 1 line
1.9.0
RFC PATCH 6/22 staging: crypto: skein: remove __cplusplus and an unneeded stddef.h
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 11 ----------- drivers/staging/skein/include/skeinApi.h | 9 --------- drivers/staging/skein/include/threefishApi.h | 9 --------- 3 files changed, 29 deletions(-)
drivers/staging/skein/include/skein.h +0 -11
@@ -27,13 +27,6 @@** 1: return SKEIN_FAIL to flag errors ** ***************************************************************************/ -#ifdef __cplusplus -extern "C" -{ -#endif - -#include <stddef.h> /* get size_t definition */ -typedef unsigned int uint_t ;/* native unsigned integer */ typedef uint8_t u08b_t ;/* 8-bit unsigned integer */ typedef uint64_t u64b_t ;/* 64-bit unsigned integer */
@@ -322,8 +315,4 @@ enum#define SKEIN1024_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS ) + 5) % 10) + 5))#endif -#ifdef __cplusplus -} -#endif -#endif /* ifndef _SKEIN_H_ */
drivers/staging/skein/include/skeinApi.h +0 -9
@@ -81,11 +81,6 @@ OTHER DEALINGS IN THE SOFTWARE.#include <linux/types.h> #include <skein.h> -#ifdef __cplusplus -extern "C" -{ -#endif -/** * Which Skein size to use */
@@ -229,10 +224,6 @@ extern "C"*/ int skeinFinal (SkeinCtx_t * ctx,uint8_t * hash); -#ifdef __cplusplus -} -#endif -/** * @} */
drivers/staging/skein/include/threefishApi.h +0 -9
@@ -33,11 +33,6 @@#define KeyScheduleConst 0x1BD11BDAA9FC1A22L -#ifdef __cplusplus -extern "C" -{ -#endif -/** * Which Threefish size to use */
@@ -157,10 +152,6 @@ extern "C"void threefishDecrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output);void threefishDecrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output);void threefishDecrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); -#ifdef __cplusplus -} -#endif -/** * @} */
Signature · 1 line
1.9.0
RFC PATCH 7/22 staging: crypto: skein: remove unneeded typedefs
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 73 ++++++++++----------- drivers/staging/skein/include/skeinApi.h | 4 +- drivers/staging/skein/include/skein_iv.h | 26 ++++---- drivers/staging/skein/include/threefishApi.h | 6 +- drivers/staging/skein/skein.c | 96 ++++++++++++++-------------- drivers/staging/skein/skeinApi.c | 24 +++---- drivers/staging/skein/skeinBlockNo3F.c | 30 ++++----- drivers/staging/skein/skein_block.c | 54 ++++++++-------- drivers/staging/skein/threefishApi.c | 8 +-- 9 files changed, 159 insertions(+), 162 deletions(-)
drivers/staging/skein/include/skein.h +35 -38
@@ -27,9 +27,6 @@** 1: return SKEIN_FAIL to flag errors ** ***************************************************************************/ -typedef unsigned int uint_t ;/* native unsigned integer */ -typedef uint8_t u08b_t ;/* 8-bit unsigned integer */ -typedef uint64_t u64b_t ;/* 64-bit unsigned integer */ #ifndef RotL_64#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N))))
@@ -70,28 +67,28 @@ typedef struct {size_t hashBitLen;/* size of hash result, in bits */ size_t bCnt;/* current byte count in buffer b[] */ -u64b_t T [SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[1]=flags */ +u64 T [SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[1]=flags */ } Skein_Ctxt_Hdr_t;typedef struct /* 256-bit Skein hash context structure */ {Skein_Ctxt_Hdr_t h;/* common header context variables */ -u64b_t X[SKEIN_256_STATE_WORDS ];/* chaining variables */ -u08b_t b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ +u64 X[SKEIN_256_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ }Skein_256_Ctxt_t ;typedef struct /* 512-bit Skein hash context structure */ {Skein_Ctxt_Hdr_t h;/* common header context variables */ -u64b_t X[SKEIN_512_STATE_WORDS ];/* chaining variables */ -u08b_t b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ +u64 X[SKEIN_512_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ }Skein_512_Ctxt_t ;typedef struct /* 1024-bit Skein hash context structure */ {Skein_Ctxt_Hdr_t h;/* common header context variables */ -u64b_t X[SKEIN1024_STATE_WORDS ];/* chaining variables */ -u08b_t b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ +u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ }Skein1024_Ctxt_t ;/* Skein APIs for (incremental) "straight hashing" */
@@ -99,13 +96,13 @@ int Skein_256_Init (Skein_256_Ctxt_t *ctx, size_t hashBitLen);int Skein_512_Init (Skein_512_Ctxt_t *ctx,size_t hashBitLen);int Skein1024_Init (Skein1024_Ctxt_t *ctx,size_t hashBitLen); -int Skein_256_Update (Skein_256_Ctxt_t *ctx,const u08b_t *msg,size_t msgByteCnt); -int Skein_512_Update (Skein_512_Ctxt_t *ctx,const u08b_t *msg,size_t msgByteCnt); -int Skein1024_Update (Skein1024_Ctxt_t *ctx,const u08b_t *msg,size_t msgByteCnt); +int Skein_256_Update (Skein_256_Ctxt_t *ctx,const u8 *msg,size_t msgByteCnt); +int Skein_512_Update (Skein_512_Ctxt_t *ctx,const u8 *msg,size_t msgByteCnt); +int Skein1024_Update (Skein1024_Ctxt_t *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_256_Final (Skein_256_Ctxt_t *ctx,u08b_t * hashVal); -int Skein_512_Final (Skein_512_Ctxt_t *ctx,u08b_t * hashVal); -int Skein1024_Final (Skein1024_Ctxt_t *ctx,u08b_t * hashVal); +int Skein_256_Final (Skein_256_Ctxt_t *ctx,u8 * hashVal); +int Skein_512_Final (Skein_512_Ctxt_t *ctx,u8 * hashVal); +int Skein1024_Final (Skein1024_Ctxt_t *ctx,u8 * hashVal);/* ** Skein APIs for "extended" initialization: MAC keys, tree hashing.
@@ -121,26 +118,26 @@ int Skein1024_Final (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);** to precompute the MAC IV, then a copy of the context saved and ** reused for each new MAC computation. **/ -int Skein_256_InitExt (Skein_256_Ctxt_t *ctx,size_t hashBitLen,u64b_t treeInfo,const u08b_t *key,size_t keyBytes); -int Skein_512_InitExt (Skein_512_Ctxt_t *ctx,size_t hashBitLen,u64b_t treeInfo,const u08b_t *key,size_t keyBytes); -int Skein1024_InitExt (Skein1024_Ctxt_t *ctx,size_t hashBitLen,u64b_t treeInfo,const u08b_t *key,size_t keyBytes); +int Skein_256_InitExt (Skein_256_Ctxt_t *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein_512_InitExt (Skein_512_Ctxt_t *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein1024_InitExt (Skein1024_Ctxt_t *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes);/* ** Skein APIs for MAC and tree hash: ** Final_Pad: pad, do final block, but no OUTPUT type ** Output: do just the output stage */ -int Skein_256_Final_Pad (Skein_256_Ctxt_t *ctx,u08b_t * hashVal); -int Skein_512_Final_Pad (Skein_512_Ctxt_t *ctx,u08b_t * hashVal); -int Skein1024_Final_Pad (Skein1024_Ctxt_t *ctx,u08b_t * hashVal); +int Skein_256_Final_Pad (Skein_256_Ctxt_t *ctx,u8 * hashVal); +int Skein_512_Final_Pad (Skein_512_Ctxt_t *ctx,u8 * hashVal); +int Skein1024_Final_Pad (Skein1024_Ctxt_t *ctx,u8 * hashVal);#ifndef SKEIN_TREE_HASH #define SKEIN_TREE_HASH (1)#endif #if SKEIN_TREE_HASH -int Skein_256_Output (Skein_256_Ctxt_t *ctx,u08b_t * hashVal); -int Skein_512_Output (Skein_512_Ctxt_t *ctx,u08b_t * hashVal); -int Skein1024_Output (Skein1024_Ctxt_t *ctx,u08b_t * hashVal); +int Skein_256_Output (Skein_256_Ctxt_t *ctx,u8 * hashVal); +int Skein_512_Output (Skein_512_Ctxt_t *ctx,u8 * hashVal); +int Skein1024_Output (Skein1024_Ctxt_t *ctx,u8 * hashVal);#endif /*****************************************************************
@@ -161,13 +158,13 @@ int Skein1024_Output (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);#define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* bit 127 : final block flag */ /* tweak word T[1]: flag bit definition(s) */ -#define SKEIN_T1_FLAG_FIRST (((u64b_t) 1 ) << SKEIN_T1_POS_FIRST) -#define SKEIN_T1_FLAG_FINAL (((u64b_t) 1 ) << SKEIN_T1_POS_FINAL) -#define SKEIN_T1_FLAG_BIT_PAD (((u64b_t) 1 ) << SKEIN_T1_POS_BIT_PAD) +#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 */ -#define SKEIN_T1_TREE_LVL_MASK (((u64b_t)0x7F) << SKEIN_T1_POS_TREE_LVL) -#define SKEIN_T1_TREE_LEVEL (n) (((u64b_t) (n)) << SKEIN_T1_POS_TREE_LVL) +#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 */ #define SKEIN_BLK_TYPE_KEY ( 0)/* key, for MAC and KDF */
@@ -180,7 +177,7 @@ int Skein1024_Output (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);#define SKEIN_BLK_TYPE_OUT (63)/* output stage */ #define SKEIN_BLK_TYPE_MASK (63)/* bit field mask */ -#define SKEIN_T1_BLK_TYPE (T ) (((u64b_t) (SKEIN_BLK_TYPE_##T)) << SKEIN_T1_POS_BLK_TYPE) +#define SKEIN_T1_BLK_TYPE (T ) (((u64) (SKEIN_BLK_TYPE_##T)) << SKEIN_T1_POS_BLK_TYPE)#define SKEIN_T1_BLK_TYPE_KEY SKEIN_T1_BLK_TYPE(KEY)/* key, for MAC and KDF */ #define SKEIN_T1_BLK_TYPE_CFG SKEIN_T1_BLK_TYPE(CFG)/* configuration block */ #define SKEIN_T1_BLK_TYPE_PERS SKEIN_T1_BLK_TYPE(PERS)/* personalization string */
@@ -200,7 +197,7 @@ int Skein1024_Output (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);#define SKEIN_ID_STRING_LE (0x33414853)/* "SHA3" (little-endian)*/ #endif -#define SKEIN_MK_64 (hi32,lo32) ((lo32) + (((u64b_t) (hi32)) << 32)) +#define SKEIN_MK_64 (hi32,lo32) ((lo32) + (((u64) (hi32)) << 32))#define SKEIN_SCHEMA_VER SKEIN_MK_64(SKEIN_VERSION,SKEIN_ID_STRING_LE)#define SKEIN_KS_PARITY SKEIN_MK_64(0x1BD11BDA,0xA9FC1A22)
@@ -211,14 +208,14 @@ int Skein1024_Output (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);#define SKEIN_CFG_TREE_NODE_SIZE_POS ( 8)#define SKEIN_CFG_TREE_MAX_LEVEL_POS (16) -#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64b_t) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS) -#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64b_t) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS) -#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64b_t) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS) +#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS) +#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS) +#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS)#define SKEIN_CFG_TREE_INFO (leaf,node,maxLvl) \ - ( (((u64b_t)(leaf )) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ - (((u64b_t)(node )) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ - (((u64b_t)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS) ) + ( (((u64)(leaf )) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ + (((u64)(node )) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ + (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS) )#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0,0,0)/* use as treeInfo in InitExt() call for sequential processing */
drivers/staging/skein/include/skeinApi.h +2 -2
@@ -99,8 +99,8 @@ OTHER DEALINGS IN THE SOFTWARE.* structures as well. */ typedef struct SkeinCtx { - u64b_t skeinSize; - u64b_t XSave[SKEIN_MAX_STATE_WORDS]; /* save area for state variables */ + u64 skeinSize; + u64 XSave[SKEIN_MAX_STATE_WORDS]; /* save area for state variables */ union { Skein_Ctxt_Hdr_t h; Skein_256_Ctxt_t s256;
drivers/staging/skein/include/skein_iv.h +13 -13
@@ -20,7 +20,7 @@#define MK_64 SKEIN_MK_64/* blkSize = 256 bits. hashSize = 128 bits */ -const u64b_t SKEIN_256_IV_128 [] = +const u64 SKEIN_256_IV_128 [] = {MK_64 (0xE1111906 ,0x964D7260 ),MK_64 (0x883DAAA7 ,0x7C8D811C ),
@@ -29,7 +29,7 @@ const u64b_t SKEIN_256_IV_128[] = };/* blkSize = 256 bits. hashSize = 160 bits */ -const u64b_t SKEIN_256_IV_160 [] = +const u64 SKEIN_256_IV_160 [] = {MK_64 (0x14202314 ,0x72825E98 ),MK_64 (0x2AC4E9A2 ,0x5A77E590 ),
@@ -38,7 +38,7 @@ const u64b_t SKEIN_256_IV_160[] = };/* blkSize = 256 bits. hashSize = 224 bits */ -const u64b_t SKEIN_256_IV_224 [] = +const u64 SKEIN_256_IV_224 [] = {MK_64 (0xC6098A8C ,0x9AE5EA0B ),MK_64 (0x876D5686 ,0x08C5191C ),
@@ -47,7 +47,7 @@ const u64b_t SKEIN_256_IV_224[] = };/* blkSize = 256 bits. hashSize = 256 bits */ -const u64b_t SKEIN_256_IV_256 [] = +const u64 SKEIN_256_IV_256 [] = {MK_64 (0xFC9DA860 ,0xD048B449 ),MK_64 (0x2FCA6647 ,0x9FA7D833 ),
@@ -56,7 +56,7 @@ const u64b_t SKEIN_256_IV_256[] = };/* blkSize = 512 bits. hashSize = 128 bits */ -const u64b_t SKEIN_512_IV_128 [] = +const u64 SKEIN_512_IV_128 [] = {MK_64 (0xA8BC7BF3 ,0x6FBF9F52 ),MK_64 (0x1E9872CE ,0xBD1AF0AA ),
@@ -69,7 +69,7 @@ const u64b_t SKEIN_512_IV_128[] = };/* blkSize = 512 bits. hashSize = 160 bits */ -const u64b_t SKEIN_512_IV_160 [] = +const u64 SKEIN_512_IV_160 [] = {MK_64 (0x28B81A2A ,0xE013BD91 ),MK_64 (0xC2F11668 ,0xB5BDF78F ),
@@ -82,7 +82,7 @@ const u64b_t SKEIN_512_IV_160[] = };/* blkSize = 512 bits. hashSize = 224 bits */ -const u64b_t SKEIN_512_IV_224 [] = +const u64 SKEIN_512_IV_224 [] = {MK_64 (0xCCD06162 ,0x48677224 ),MK_64 (0xCBA65CF3 ,0xA92339EF ),
@@ -95,7 +95,7 @@ const u64b_t SKEIN_512_IV_224[] = };/* blkSize = 512 bits. hashSize = 256 bits */ -const u64b_t SKEIN_512_IV_256 [] = +const u64 SKEIN_512_IV_256 [] = {MK_64 (0xCCD044A1 ,0x2FDB3E13 ),MK_64 (0xE8359030 ,0x1A79A9EB ),
@@ -108,7 +108,7 @@ const u64b_t SKEIN_512_IV_256[] = };/* blkSize = 512 bits. hashSize = 384 bits */ -const u64b_t SKEIN_512_IV_384 [] = +const u64 SKEIN_512_IV_384 [] = {MK_64 (0xA3F6C6BF ,0x3A75EF5F ),MK_64 (0xB0FEF9CC ,0xFD84FAA4 ),
@@ -121,7 +121,7 @@ const u64b_t SKEIN_512_IV_384[] = };/* blkSize = 512 bits. hashSize = 512 bits */ -const u64b_t SKEIN_512_IV_512 [] = +const u64 SKEIN_512_IV_512 [] = {MK_64 (0x4903ADFF ,0x749C51CE ),MK_64 (0x0D95DE39 ,0x9746DF03 ),
@@ -134,7 +134,7 @@ const u64b_t SKEIN_512_IV_512[] = };/* blkSize = 1024 bits. hashSize = 384 bits */ -const u64b_t SKEIN1024_IV_384 [] = +const u64 SKEIN1024_IV_384 [] = {MK_64 (0x5102B6B8 ,0xC1894A35 ),MK_64 (0xFEEBC9E3 ,0xFE8AF11A ),
@@ -155,7 +155,7 @@ const u64b_t SKEIN1024_IV_384[] = };/* blkSize = 1024 bits. hashSize = 512 bits */ -const u64b_t SKEIN1024_IV_512 [] = +const u64 SKEIN1024_IV_512 [] = {MK_64 (0xCAEC0E5D ,0x7C1B1B18 ),MK_64 (0xA01B0E04 ,0x5F03E802 ),
@@ -176,7 +176,7 @@ const u64b_t SKEIN1024_IV_512[] = };/* blkSize = 1024 bits. hashSize = 1024 bits */ -const u64b_t SKEIN1024_IV_1024 [] = +const u64 SKEIN1024_IV_1024 [] = {MK_64 (0xD593DA07 ,0x41E72355 ),MK_64 (0x15B5E511 ,0xAC73E00C ),
drivers/staging/skein/include/threefishApi.h +3 -3
@@ -51,9 +51,9 @@* structures as well. */ typedef struct ThreefishKey { -u64b_t stateSize; -u64b_t key[SKEIN_MAX_STATE_WORDS +1 ];/* max number of key words*/ -u64b_t tweak[3 ]; +u64 stateSize; +u64 key[SKEIN_MAX_STATE_WORDS +1 ];/* max number of key words*/ +u64 tweak[3 ]; }ThreefishKey_t ;/**
drivers/staging/skein/skein.c +48 -48
273 lines not on this page · raw message
drivers/staging/skein/skeinApi.c +12 -12
@@ -41,7 +41,7 @@ int skeinInit(SkeinCtx_t* ctx, size_t hashBitLen) {int ret =SKEIN_FAIL ;size_t Xlen =0 ; -u64b_t *X =NULL ; +u64 *X =NULL ;uint64_t treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;Skein_Assert (ctx,SKEIN_FAIL );
@@ -82,7 +82,7 @@ int skeinMacInit(SkeinCtx_t* ctx, const uint8_t *key, size_t keyLen, size_t hashBitLen) {int ret =SKEIN_FAIL ; -u64b_t *X =NULL ; +u64 *X =NULL ;size_t Xlen =0 ;uint64_t treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;
@@ -97,18 +97,18 @@ int skeinMacInit(SkeinCtx_t* ctx, const uint8_t *key, size_t keyLen,case Skein256: ret =Skein_256_InitExt (&ctx->m.s256, hashBitLen, treeInfo, - (const u08b_t *)key, keyLen); + (const u8 *)key, keyLen);break ;case Skein512: ret =Skein_512_InitExt (&ctx->m.s512, hashBitLen, treeInfo, - (const u08b_t *)key, keyLen); + (const u8 *)key, keyLen);break ;case Skein1024: ret =Skein1024_InitExt (&ctx->m.s1024, hashBitLen, treeInfo, - (const u08b_t *)key, keyLen); + (const u8 *)key, keyLen);break ; }
@@ -122,7 +122,7 @@ int skeinMacInit(SkeinCtx_t* ctx, const uint8_t *key, size_t keyLen,void skeinReset (SkeinCtx_t * ctx) {size_t Xlen =0 ; -u64b_t *X =NULL ; +u64 *X =NULL ;/* * The following two lines rely of the fact that the real Skein contexts are
@@ -146,13 +146,13 @@ int skeinUpdate(SkeinCtx_t *ctx, const uint8_t *msg,switch (ctx->skeinSize) {case Skein256: - ret =Skein_256_Update (&ctx->m.s256, (const u08b_t *)msg, msgByteCnt); + ret =Skein_256_Update (&ctx->m.s256, (const u8 *)msg, msgByteCnt);break ;case Skein512: - ret =Skein_512_Update (&ctx->m.s512, (const u08b_t *)msg, msgByteCnt); + ret =Skein_512_Update (&ctx->m.s512, (const u8 *)msg, msgByteCnt);break ;case Skein1024: - ret =Skein1024_Update (&ctx->m.s1024, (const u08b_t *)msg, msgByteCnt); + ret =Skein1024_Update (&ctx->m.s1024, (const u8 *)msg, msgByteCnt);break ; }return ret;
@@ -206,13 +206,13 @@ int skeinFinal(SkeinCtx_t* ctx, uint8_t* hash)switch (ctx->skeinSize) {case Skein256: - ret =Skein_256_Final (&ctx->m.s256, (u08b_t *)hash); + ret =Skein_256_Final (&ctx->m.s256, (u8 *)hash);break ;case Skein512: - ret =Skein_512_Final (&ctx->m.s512, (u08b_t *)hash); + ret =Skein_512_Final (&ctx->m.s512, (u8 *)hash);break ;case Skein1024: - ret =Skein1024_Final (&ctx->m.s1024, (u08b_t *)hash); + ret =Skein1024_Final (&ctx->m.s1024, (u8 *)hash);break ; }return ret;
drivers/staging/skein/skeinBlockNo3F.c +15 -15
@@ -5,21 +5,21 @@/***************************** Skein_256 ******************************/ -void Skein_256_Process_Block (Skein_256_Ctxt_t *ctx,const u08b_t *blkPtr, +void Skein_256_Process_Block (Skein_256_Ctxt_t *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) {ThreefishKey_t key; -u64b_t tweak[2 ]; +u64 tweak[2 ];int i; -u64b_t w[SKEIN_256_STATE_WORDS ];/* local copy of input block */ -u64b_t words[3 ]; +u64 w[SKEIN_256_STATE_WORDS ];/* local copy of input block */ +u64 words[3 ];Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ tweak[0 ] = ctx->h.T[0 ]; tweak[1 ] = ctx->h.T[1 ]; do { - u64b_t carry = byteCntAdd; + u64 carry = byteCntAdd; words[0] = tweak[0] & 0xffffffffL; words[1] = ((tweak[0] >> 32) & 0xffffffffL);
@@ -55,21 +55,21 @@ void Skein_256_Process_Block(Skein_256_Ctxt_t *ctx, const u08b_t *blkPtr, ctx->h.T[1 ] = tweak[1 ]; } -void Skein_512_Process_Block (Skein_512_Ctxt_t *ctx,const u08b_t *blkPtr, +void Skein_512_Process_Block (Skein_512_Ctxt_t *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) {ThreefishKey_t key; -u64b_t tweak[2 ]; +u64 tweak[2 ];int i; -u64b_t words[3 ]; -u64b_t w[SKEIN_512_STATE_WORDS ];/* local copy of input block */ +u64 words[3 ]; +u64 w[SKEIN_512_STATE_WORDS ];/* local copy of input block */ Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ tweak[0 ] = ctx->h.T[0 ]; tweak[1 ] = ctx->h.T[1 ]; do { - u64b_t carry = byteCntAdd; + u64 carry = byteCntAdd; words[0] = tweak[0] & 0xffffffffL; words[1] = ((tweak[0] >> 32) & 0xffffffffL);
@@ -109,21 +109,21 @@ void Skein_512_Process_Block(Skein_512_Ctxt_t *ctx, const u08b_t *blkPtr, ctx->h.T[1 ] = tweak[1 ]; } -void Skein1024_Process_Block (Skein1024_Ctxt_t *ctx,const u08b_t *blkPtr, +void Skein1024_Process_Block (Skein1024_Ctxt_t *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) {ThreefishKey_t key; -u64b_t tweak[2 ]; +u64 tweak[2 ];int i; -u64b_t words[3 ]; -u64b_t w[SKEIN1024_STATE_WORDS ];/* local copy of input block */ +u64 words[3 ]; +u64 w[SKEIN1024_STATE_WORDS ];/* local copy of input block */ Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ tweak[0 ] = ctx->h.T[0 ]; tweak[1 ] = ctx->h.T[1 ]; do { - u64b_t carry = byteCntAdd; + u64 carry = byteCntAdd; words[0] = tweak[0] & 0xffffffffL; words[1] = ((tweak[0] >> 32) & 0xffffffffL);
drivers/staging/skein/skein_block.c +27 -27
122 lines not on this page · raw message
drivers/staging/skein/threefishApi.c +4 -4
@@ -25,8 +25,8 @@ void threefishSetKey(ThreefishKey_t* keyCtx, ThreefishSize_t stateSize,void threefishEncryptBlockBytes (ThreefishKey_t * keyCtx,uint8_t * in,uint8_t * out) { -u64b_t plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ -u64b_t cipher[SKEIN_MAX_STATE_WORDS ]; +u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ +u64 cipher[SKEIN_MAX_STATE_WORDS ];Skein_Get64_LSB_First (plain, in, keyCtx->stateSize /64 );/* bytes to words */ threefishEncryptBlockWords (keyCtx, plain, cipher);
@@ -52,8 +52,8 @@ void threefishEncryptBlockWords(ThreefishKey_t* keyCtx, uint64_t* in,void threefishDecryptBlockBytes (ThreefishKey_t * keyCtx,uint8_t * in,uint8_t * out) { -u64b_t plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ -u64b_t cipher[SKEIN_MAX_STATE_WORDS ]; +u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ +u64 cipher[SKEIN_MAX_STATE_WORDS ];Skein_Get64_LSB_First (cipher, in, keyCtx->stateSize /64 );/* bytes to words */ threefishDecryptBlockWords (keyCtx, cipher, plain);
Signature · 1 line
1.9.0
RFC PATCH 8/22 staging: crypto: skein: remove all typedef {struct,enum}
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 58 ++++++++++++++-------------- drivers/staging/skein/include/skeinApi.h | 32 +++++++-------- drivers/staging/skein/include/threefishApi.h | 32 +++++++-------- drivers/staging/skein/skein.c | 42 ++++++++++---------- drivers/staging/skein/skeinApi.c | 16 ++++---- drivers/staging/skein/skeinBlockNo3F.c | 12 +++--- drivers/staging/skein/skein_block.c | 6 +-- drivers/staging/skein/threefish1024Block.c | 4 +- drivers/staging/skein/threefish256Block.c | 4 +- drivers/staging/skein/threefish512Block.c | 4 +- drivers/staging/skein/threefishApi.c | 10 ++--- 11 files changed, 110 insertions(+), 110 deletions(-)
drivers/staging/skein/include/skein.h +29 -29
@@ -63,46 +63,46 @@ enum#define SKEIN_512_BLOCK_BYTES ( 8*SKEIN_512_STATE_WORDS)#define SKEIN1024_BLOCK_BYTES ( 8*SKEIN1024_STATE_WORDS) -typedef struct +struct skein_ctx_hdr {size_t hashBitLen;/* size of hash result, in bits */ size_t bCnt;/* current byte count in buffer b[] */ u64 T[SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[1]=flags */ - }Skein_Ctxt_Hdr_t ; + }; -typedef struct /* 256-bit Skein hash context structure */ +struct skein_256_ctx /* 256-bit Skein hash context structure */ { -Skein_Ctxt_Hdr_t h;/* common header context variables */ +struct skein_ctx_hdr h;/* common header context variables */ u64 X[SKEIN_256_STATE_WORDS ];/* chaining variables */ u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }Skein_256_Ctxt_t ; + }; -typedef struct /* 512-bit Skein hash context structure */ +struct skein_512_ctx /* 512-bit Skein hash context structure */ { -Skein_Ctxt_Hdr_t h;/* common header context variables */ +struct skein_ctx_hdr h;/* common header context variables */ u64 X[SKEIN_512_STATE_WORDS ];/* chaining variables */ u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }Skein_512_Ctxt_t ; + }; -typedef struct /* 1024-bit Skein hash context structure */ +struct skein1024_ctx /* 1024-bit Skein hash context structure */ { -Skein_Ctxt_Hdr_t h;/* common header context variables */ +struct skein_ctx_hdr h;/* common header context variables */ u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }Skein1024_Ctxt_t ; + };/* Skein APIs for (incremental) "straight hashing" */ -int Skein_256_Init (Skein_256_Ctxt_t *ctx,size_t hashBitLen); -int Skein_512_Init (Skein_512_Ctxt_t *ctx,size_t hashBitLen); -int Skein1024_Init (Skein1024_Ctxt_t *ctx,size_t hashBitLen); +int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen); +int Skein_512_Init (struct skein_512_ctx *ctx,size_t hashBitLen); +int Skein1024_Init (struct skein1024_ctx *ctx,size_t hashBitLen); -int Skein_256_Update (Skein_256_Ctxt_t *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_512_Update (Skein_512_Ctxt_t *ctx,const u8 *msg,size_t msgByteCnt); -int Skein1024_Update (Skein1024_Ctxt_t *ctx,const u8 *msg,size_t msgByteCnt); +int Skein_256_Update (struct skein_256_ctx *ctx,const u8 *msg,size_t msgByteCnt); +int Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg,size_t msgByteCnt); +int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_256_Final (Skein_256_Ctxt_t *ctx,u8 * hashVal); -int Skein_512_Final (Skein_512_Ctxt_t *ctx,u8 * hashVal); -int Skein1024_Final (Skein1024_Ctxt_t *ctx,u8 * hashVal); +int Skein_256_Final (struct skein_256_ctx *ctx,u8 * hashVal); +int Skein_512_Final (struct skein_512_ctx *ctx,u8 * hashVal); +int Skein1024_Final (struct skein1024_ctx *ctx,u8 * hashVal);/* ** Skein APIs for "extended" initialization: MAC keys, tree hashing.
@@ -118,26 +118,26 @@ int Skein1024_Final (Skein1024_Ctxt_t *ctx, u8 * hashVal);** to precompute the MAC IV, then a copy of the context saved and ** reused for each new MAC computation. **/ -int Skein_256_InitExt (Skein_256_Ctxt_t *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); -int Skein_512_InitExt (Skein_512_Ctxt_t *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); -int Skein1024_InitExt (Skein1024_Ctxt_t *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein_256_InitExt (struct skein_256_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein_512_InitExt (struct skein_512_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein1024_InitExt (struct skein1024_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes);/* ** Skein APIs for MAC and tree hash: ** Final_Pad: pad, do final block, but no OUTPUT type ** Output: do just the output stage */ -int Skein_256_Final_Pad (Skein_256_Ctxt_t *ctx,u8 * hashVal); -int Skein_512_Final_Pad (Skein_512_Ctxt_t *ctx,u8 * hashVal); -int Skein1024_Final_Pad (Skein1024_Ctxt_t *ctx,u8 * hashVal); +int Skein_256_Final_Pad (struct skein_256_ctx *ctx,u8 * hashVal); +int Skein_512_Final_Pad (struct skein_512_ctx *ctx,u8 * hashVal); +int Skein1024_Final_Pad (struct skein1024_ctx *ctx,u8 * hashVal);#ifndef SKEIN_TREE_HASH #define SKEIN_TREE_HASH (1)#endif #if SKEIN_TREE_HASH -int Skein_256_Output (Skein_256_Ctxt_t *ctx,u8 * hashVal); -int Skein_512_Output (Skein_512_Ctxt_t *ctx,u8 * hashVal); -int Skein1024_Output (Skein1024_Ctxt_t *ctx,u8 * hashVal); +int Skein_256_Output (struct skein_256_ctx *ctx,u8 * hashVal); +int Skein_512_Output (struct skein_512_ctx *ctx,u8 * hashVal); +int Skein1024_Output (struct skein1024_ctx *ctx,u8 * hashVal);#endif /*****************************************************************
drivers/staging/skein/include/skeinApi.h +16 -16
@@ -47,7 +47,7 @@ OTHER DEALINGS IN THE SOFTWARE.* #include <skeinApi.h> * * ... -* SkeinCtx_t ctx; // a Skein hash or MAC context +* struct skein_ctx ctx; // a Skein hash or MAC context * * // prepare context, here for a Skein with a state size of 512 bits. * skeinCtxPrepare(&ctx, Skein512);
@@ -84,11 +84,11 @@ OTHER DEALINGS IN THE SOFTWARE./** * Which Skein size to use */ -typedef enum SkeinSize { +enum skein_size { Skein256 =256 ,/*!< Skein with 256 bit state */ Skein512 =512 ,/*!< Skein with 512 bit state */ Skein1024 =1024 /*!< Skein with 1024 bit state */ - }SkeinSize_t ; + };/** * Context for Skein.
@@ -98,16 +98,16 @@ OTHER DEALINGS IN THE SOFTWARE.* variables. If Skein implementation changes this, then adapt these * structures as well. */ -typedef struct SkeinCtx { +struct skein_ctx {u64 skeinSize;u64 XSave[SKEIN_MAX_STATE_WORDS ];/* save area for state variables */ union { -Skein_Ctxt_Hdr_t h; -Skein_256_Ctxt_t s256; -Skein_512_Ctxt_t s512; -Skein1024_Ctxt_t s1024; +struct skein_ctx_hdr h; +struct skein_256_ctx s256; +struct skein_512_ctx s512; +struct skein1024_ctx s1024; } m; - }SkeinCtx_t ; + };/** * Prepare a Skein context.
@@ -123,7 +123,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * SKEIN_SUCESS of SKEIN_FAIL */ -int skeinCtxPrepare (SkeinCtx_t * ctx,SkeinSize_t size); +int skeinCtxPrepare (struct skein_ctx * ctx,enum skein_size size);/** * Initialize a Skein context.
@@ -139,7 +139,7 @@ OTHER DEALINGS IN THE SOFTWARE.* SKEIN_SUCESS of SKEIN_FAIL * @see skeinReset */ -int skeinInit (SkeinCtx_t * ctx,size_t hashBitLen); +int skeinInit (struct skein_ctx * ctx,size_t hashBitLen);/** * Resets a Skein context for further use.
@@ -151,7 +151,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @param ctx * Pointer to a pre-initialized Skein MAC context */ -void skeinReset (SkeinCtx_t * ctx); +void skeinReset (struct skein_ctx * ctx);/** * Initializes a Skein context for MAC usage.
@@ -173,7 +173,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * SKEIN_SUCESS of SKEIN_FAIL */ -int skeinMacInit (SkeinCtx_t * ctx,const uint8_t *key,size_t keyLen, +int skeinMacInit (struct skein_ctx * ctx,const uint8_t *key,size_t keyLen,size_t hashBitLen);/**
@@ -188,7 +188,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * Success or error code. */ -int skeinUpdate (SkeinCtx_t *ctx,const uint8_t *msg, +int skeinUpdate (struct skein_ctx *ctx,const uint8_t *msg,size_t msgByteCnt);/**
@@ -204,7 +204,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @param msgBitCnt * Length of the message in @b bits. */ -int skeinUpdateBits (SkeinCtx_t *ctx,const uint8_t *msg, +int skeinUpdateBits (struct skein_ctx *ctx,const uint8_t *msg,size_t msgBitCnt);/**
@@ -222,7 +222,7 @@ OTHER DEALINGS IN THE SOFTWARE.* Success or error code. * @see skeinReset */ -int skeinFinal (SkeinCtx_t * ctx,uint8_t * hash); +int skeinFinal (struct skein_ctx * ctx,uint8_t * hash);/** * @}
drivers/staging/skein/include/threefishApi.h +16 -16
@@ -18,7 +18,7 @@ * @code // Threefish cipher context data -ThreefishKey_t keyCtx; +struct threefish_key keyCtx;// Initialize the context threefishSetKey (&keyCtx, Threefish512, key, tweak);
@@ -36,11 +36,11 @@/** * Which Threefish size to use */ -typedef enum ThreefishSize { +enum threefish_size { Threefish256 =256 ,/*!< Skein with 256 bit state */ Threefish512 =512 ,/*!< Skein with 512 bit state */ Threefish1024 =1024 /*!< Skein with 1024 bit state */ - }ThreefishSize_t ; + };/** * Context for Threefish key and tweak words.
@@ -50,11 +50,11 @@* variables. If Skein implementation changes this, the adapt these * structures as well. */ -typedef struct ThreefishKey { +struct threefish_key {u64 stateSize;u64 key[SKEIN_MAX_STATE_WORDS +1 ];/* max number of key words*/ u64 tweak[3 ]; - }ThreefishKey_t ; + };/** * Set Threefish key and tweak data.
@@ -72,7 +72,7 @@* @param tweak * Pointer to the two tweak words (word has 64 bits). */ -void threefishSetKey (ThreefishKey_t * keyCtx,ThreefishSize_t stateSize,uint64_t * keyData,uint64_t * tweak); +void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize,uint64_t * keyData,uint64_t * tweak);/** * Encrypt Threefisch block (bytes).
@@ -89,7 +89,7 @@* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockBytes (ThreefishKey_t * keyCtx,uint8_t * in,uint8_t * out); +void threefishEncryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in,uint8_t * out);/** * Encrypt Threefisch block (words).
@@ -108,7 +108,7 @@* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockWords (ThreefishKey_t * keyCtx,uint64_t * in,uint64_t * out); +void threefishEncryptBlockWords (struct threefish_key * keyCtx,uint64_t * in,uint64_t * out);/** * Decrypt Threefisch block (bytes).
@@ -125,7 +125,7 @@* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockBytes (ThreefishKey_t * keyCtx,uint8_t * in,uint8_t * out); +void threefishDecryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in,uint8_t * out);/** * Decrypt Threefisch block (words).
@@ -144,14 +144,14 @@* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockWords (ThreefishKey_t * keyCtx,uint64_t * in,uint64_t * out); +void threefishDecryptBlockWords (struct threefish_key * keyCtx,uint64_t * in,uint64_t * out); -void threefishEncrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); -void threefishEncrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); -void threefishEncrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); -void threefishDecrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); -void threefishDecrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); -void threefishDecrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); +void threefishEncrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); +void threefishEncrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); +void threefishEncrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); +void threefishDecrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); +void threefishDecrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); +void threefishDecrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output);/** * @} */
drivers/staging/skein/skein.c +21 -21
156 lines not on this page · raw message
drivers/staging/skein/skeinApi.c +8 -8
@@ -27,17 +27,17 @@ OTHER DEALINGS IN THE SOFTWARE.#include <linux/string.h> #include <skeinApi.h> -int skeinCtxPrepare (SkeinCtx_t * ctx,SkeinSize_t size) +int skeinCtxPrepare (struct skein_ctx * ctx,enum skein_size size) {Skein_Assert (ctx && size,SKEIN_FAIL ); -memset (ctx ,0 ,sizeof (SkeinCtx_t)); +memset (ctx ,0 ,sizeof (struct skein_ctx )); ctx->skeinSize = size;return SKEIN_SUCCESS ; } -int skeinInit (SkeinCtx_t * ctx,size_t hashBitLen) +int skeinInit (struct skein_ctx * ctx,size_t hashBitLen) {int ret =SKEIN_FAIL ;size_t Xlen =0 ;
@@ -78,7 +78,7 @@ int skeinInit(SkeinCtx_t* ctx, size_t hashBitLen)return ret; } -int skeinMacInit (SkeinCtx_t * ctx,const uint8_t *key,size_t keyLen, +int skeinMacInit (struct skein_ctx * ctx,const uint8_t *key,size_t keyLen,size_t hashBitLen) {int ret =SKEIN_FAIL ;
@@ -119,7 +119,7 @@ int skeinMacInit(SkeinCtx_t* ctx, const uint8_t *key, size_t keyLen,return ret; } -void skeinReset (SkeinCtx_t * ctx) +void skeinReset (struct skein_ctx * ctx) {size_t Xlen =0 ;u64 *X =NULL ;
@@ -138,7 +138,7 @@ void skeinReset(SkeinCtx_t* ctx)Skein_Start_New_Type (&ctx->m,MSG ); } -int skeinUpdate (SkeinCtx_t *ctx,const uint8_t *msg, +int skeinUpdate (struct skein_ctx *ctx,const uint8_t *msg,size_t msgByteCnt) {int ret =SKEIN_FAIL ;
@@ -159,7 +159,7 @@ int skeinUpdate(SkeinCtx_t *ctx, const uint8_t *msg, } -int skeinUpdateBits (SkeinCtx_t *ctx,const uint8_t *msg, +int skeinUpdateBits (struct skein_ctx *ctx,const uint8_t *msg,size_t msgBitCnt) {/*
@@ -199,7 +199,7 @@ int skeinUpdateBits(SkeinCtx_t *ctx, const uint8_t *msg,return SKEIN_SUCCESS ; } -int skeinFinal (SkeinCtx_t * ctx,uint8_t * hash) +int skeinFinal (struct skein_ctx * ctx,uint8_t * hash) {int ret =SKEIN_FAIL ;Skein_Assert (ctx,SKEIN_FAIL );
drivers/staging/skein/skeinBlockNo3F.c +6 -6
@@ -5,10 +5,10 @@/***************************** Skein_256 ******************************/ -void Skein_256_Process_Block (Skein_256_Ctxt_t *ctx,const u8 *blkPtr, +void Skein_256_Process_Block (struct skein_256_ctx *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) { -ThreefishKey_t key; +struct threefish_key key;u64 tweak[2 ];int i;u64 w[SKEIN_256_STATE_WORDS ];/* local copy of input block */
@@ -55,10 +55,10 @@ void Skein_256_Process_Block(Skein_256_Ctxt_t *ctx, const u8 *blkPtr, ctx->h.T[1 ] = tweak[1 ]; } -void Skein_512_Process_Block (Skein_512_Ctxt_t *ctx,const u8 *blkPtr, +void Skein_512_Process_Block (struct skein_512_ctx *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) { -ThreefishKey_t key; +struct threefish_key key;u64 tweak[2 ];int i;u64 words[3 ];
@@ -109,10 +109,10 @@ void Skein_512_Process_Block(Skein_512_Ctxt_t *ctx, const u8 *blkPtr, ctx->h.T[1 ] = tweak[1 ]; } -void Skein1024_Process_Block (Skein1024_Ctxt_t *ctx,const u8 *blkPtr, +void Skein1024_Process_Block (struct skein1024_ctx *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) { -ThreefishKey_t key; +struct threefish_key key;u64 tweak[2 ];int i;u64 words[3 ];
drivers/staging/skein/skein_block.c +3 -3
@@ -39,7 +39,7 @@/***************************** Skein_256 ******************************/ #if !(SKEIN_USE_ASM & 256) -void Skein_256_Process_Block(Skein_256_Ctxt_t *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) +void Skein_256_Process_Block(struct skein_256_ctx *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) { /* do it in C */ enum {
@@ -224,7 +224,7 @@ unsigned int Skein_256_Unroll_Cnt(void)/***************************** Skein_512 ******************************/ #if !(SKEIN_USE_ASM & 512) -void Skein_512_Process_Block(Skein_512_Ctxt_t *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) +void Skein_512_Process_Block(struct skein_512_ctx *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) { /* do it in C */ enum {
@@ -432,7 +432,7 @@ unsigned int Skein_512_Unroll_Cnt(void)/***************************** Skein1024 ******************************/ #if !(SKEIN_USE_ASM & 1024) -void Skein1024_Process_Block(Skein1024_Ctxt_t *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) +void Skein1024_Process_Block(struct skein1024_ctx *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) { /* do it in C, always looping (unrolled is bigger AND slower!) */ enum {
drivers/staging/skein/threefish1024Block.c +2 -2
@@ -2,7 +2,7 @@#include <threefishApi.h> -void threefishEncrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output) +void threefishEncrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) { uint64_t b0 = input[0], b1 = input[1],
@@ -684,7 +684,7 @@ void threefishEncrypt1024(ThreefishKey_t* keyCtx, uint64_t* input, uint64_t* out output[15 ] = b15 + k1 +20 ; } -void threefishDecrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output) +void threefishDecrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) { uint64_t b0 = input[0], b1 = input[1],
drivers/staging/skein/threefish256Block.c +2 -2
@@ -2,7 +2,7 @@#include <threefishApi.h> -void threefishEncrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output) +void threefishEncrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) { uint64_t b0 = input[0], b1 = input[1],
@@ -172,7 +172,7 @@ void threefishEncrypt256(ThreefishKey_t* keyCtx, uint64_t* input, uint64_t* outp output[3 ] = b3 + k1 +18 ; } -void threefishDecrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output) +void threefishDecrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) {uint64_t b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ];
drivers/staging/skein/threefish512Block.c +2 -2
@@ -2,7 +2,7 @@#include <threefishApi.h> -void threefishEncrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output) +void threefishEncrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) { uint64_t b0 = input[0], b1 = input[1],
@@ -316,7 +316,7 @@ void threefishEncrypt512(ThreefishKey_t* keyCtx, uint64_t* input, uint64_t* outp output[7 ] = b7 + k7 +18 ; } -void threefishDecrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output) +void threefishDecrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) { uint64_t b0 = input[0], b1 = input[1],
drivers/staging/skein/threefishApi.c +5 -5
@@ -3,7 +3,7 @@#include <linux/string.h> #include <threefishApi.h> -void threefishSetKey (ThreefishKey_t * keyCtx,ThreefishSize_t stateSize, +void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize,uint64_t * keyData,uint64_t * tweak) {int keyWords = stateSize /64 ;
@@ -22,7 +22,7 @@ void threefishSetKey(ThreefishKey_t* keyCtx, ThreefishSize_t stateSize, keyCtx->stateSize = stateSize; } -void threefishEncryptBlockBytes (ThreefishKey_t * keyCtx,uint8_t * in, +void threefishEncryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in,uint8_t * out) {u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/
@@ -33,7 +33,7 @@ void threefishEncryptBlockBytes(ThreefishKey_t* keyCtx, uint8_t* in,Skein_Put64_LSB_First (out, cipher, keyCtx->stateSize /8 );/* words to bytes */ } -void threefishEncryptBlockWords (ThreefishKey_t * keyCtx,uint64_t * in, +void threefishEncryptBlockWords (struct threefish_key * keyCtx,uint64_t * in,uint64_t * out) {switch (keyCtx->stateSize) {
@@ -49,7 +49,7 @@ void threefishEncryptBlockWords(ThreefishKey_t* keyCtx, uint64_t* in, } } -void threefishDecryptBlockBytes (ThreefishKey_t * keyCtx,uint8_t * in, +void threefishDecryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in,uint8_t * out) {u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/
@@ -60,7 +60,7 @@ void threefishDecryptBlockBytes(ThreefishKey_t* keyCtx, uint8_t* in,Skein_Put64_LSB_First (out, plain, keyCtx->stateSize /8 );/* words to bytes */ } -void threefishDecryptBlockWords (ThreefishKey_t * keyCtx,uint64_t * in, +void threefishDecryptBlockWords (struct threefish_key * keyCtx,uint64_t * in,uint64_t * out) {switch (keyCtx->stateSize) {
Signature · 1 line
1.9.0
RFC PATCH 9/22 staging: crypto: skein: use u8, u64 vice uint*_t
In reply to Jason Cooper--- drivers/staging/skein/include/skeinApi.h | 8 ++++---- drivers/staging/skein/include/threefishApi.h | 22 +++++++++++----------- drivers/staging/skein/skeinApi.c | 22 +++++++++++----------- drivers/staging/skein/threefish1024Block.c | 18 +++++++++--------- drivers/staging/skein/threefish256Block.c | 18 +++++++++--------- drivers/staging/skein/threefish512Block.c | 18 +++++++++--------- drivers/staging/skein/threefishApi.c | 20 ++++++++++---------- 7 files changed, 63 insertions(+), 63 deletions(-)
drivers/staging/skein/include/skeinApi.h +4 -4
@@ -173,7 +173,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * SKEIN_SUCESS of SKEIN_FAIL */ -int skeinMacInit (struct skein_ctx * ctx,const uint8_t *key,size_t keyLen, +int skeinMacInit (struct skein_ctx * ctx,const u8 *key,size_t keyLen,size_t hashBitLen);/**
@@ -188,7 +188,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * Success or error code. */ -int skeinUpdate (struct skein_ctx *ctx,const uint8_t *msg, +int skeinUpdate (struct skein_ctx *ctx,const u8 *msg,size_t msgByteCnt);/**
@@ -204,7 +204,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @param msgBitCnt * Length of the message in @b bits. */ -int skeinUpdateBits (struct skein_ctx *ctx,const uint8_t *msg, +int skeinUpdateBits (struct skein_ctx *ctx,const u8 *msg,size_t msgBitCnt);/**
@@ -222,7 +222,7 @@ OTHER DEALINGS IN THE SOFTWARE.* Success or error code. * @see skeinReset */ -int skeinFinal (struct skein_ctx * ctx,uint8_t * hash); +int skeinFinal (struct skein_ctx * ctx,u8 * hash);/** * @}
drivers/staging/skein/include/threefishApi.h +11 -11
@@ -72,7 +72,7 @@* @param tweak * Pointer to the two tweak words (word has 64 bits). */ -void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize,uint64_t * keyData,uint64_t * tweak); +void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize,u64 * keyData,u64 * tweak);/** * Encrypt Threefisch block (bytes).
@@ -89,7 +89,7 @@* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in,uint8_t * out); +void threefishEncryptBlockBytes (struct threefish_key * keyCtx,u8 * in,u8 * out);/** * Encrypt Threefisch block (words).
@@ -108,7 +108,7 @@* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockWords (struct threefish_key * keyCtx,uint64_t * in,uint64_t * out); +void threefishEncryptBlockWords (struct threefish_key * keyCtx,u64 * in,u64 * out);/** * Decrypt Threefisch block (bytes).
@@ -125,7 +125,7 @@* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in,uint8_t * out); +void threefishDecryptBlockBytes (struct threefish_key * keyCtx,u8 * in,u8 * out);/** * Decrypt Threefisch block (words).
@@ -144,14 +144,14 @@* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockWords (struct threefish_key * keyCtx,uint64_t * in,uint64_t * out); +void threefishDecryptBlockWords (struct threefish_key * keyCtx,u64 * in,u64 * out); -void threefishEncrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); -void threefishEncrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); -void threefishEncrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); -void threefishDecrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); -void threefishDecrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); -void threefishDecrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); +void threefishEncrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output); +void threefishEncrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output); +void threefishEncrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output); +void threefishDecrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output); +void threefishDecrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output); +void threefishDecrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output);/** * @} */
drivers/staging/skein/skeinApi.c +11 -11
@@ -42,7 +42,7 @@ int skeinInit(struct skein_ctx* ctx, size_t hashBitLen)int ret =SKEIN_FAIL ;size_t Xlen =0 ;u64 *X =NULL ; -uint64_t treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ; +u64 treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;Skein_Assert (ctx,SKEIN_FAIL );/*
@@ -78,13 +78,13 @@ int skeinInit(struct skein_ctx* ctx, size_t hashBitLen)return ret; } -int skeinMacInit (struct skein_ctx * ctx,const uint8_t *key,size_t keyLen, +int skeinMacInit (struct skein_ctx * ctx,const u8 *key,size_t keyLen,size_t hashBitLen) {int ret =SKEIN_FAIL ;u64 *X =NULL ;size_t Xlen =0 ; -uint64_t treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ; +u64 treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;Skein_Assert (ctx,SKEIN_FAIL );
@@ -138,7 +138,7 @@ void skeinReset(struct skein_ctx* ctx)Skein_Start_New_Type (&ctx->m,MSG ); } -int skeinUpdate (struct skein_ctx *ctx,const uint8_t *msg, +int skeinUpdate (struct skein_ctx *ctx,const u8 *msg,size_t msgByteCnt) {int ret =SKEIN_FAIL ;
@@ -159,7 +159,7 @@ int skeinUpdate(struct skein_ctx *ctx, const uint8_t *msg, } -int skeinUpdateBits (struct skein_ctx *ctx,const uint8_t *msg, +int skeinUpdateBits (struct skein_ctx *ctx,const u8 *msg,size_t msgBitCnt) {/*
@@ -168,8 +168,8 @@ int skeinUpdateBits(struct skein_ctx *ctx, const uint8_t *msg,* arithmetic. */ size_t length; -uint8_t mask; -uint8_t * up; +u8 mask; +u8 * up;/* only the final Update() call is allowed do partial bytes, else assert an error */ Skein_Assert ((ctx->m.h.T[1 ] &SKEIN_T1_FLAG_BIT_PAD ) ==0 || msgBitCnt ==0 ,SKEIN_FAIL );
@@ -186,20 +186,20 @@ int skeinUpdateBits(struct skein_ctx *ctx, const uint8_t *msg,* Skein's real partial block buffer. * If this layout ever changes we have to adapt this as well. */ - up = (uint8_t *)ctx->m.s256.X + ctx->skeinSize /8 ; + up = (u8 *)ctx->m.s256.X + ctx->skeinSize /8 ;Skein_Set_Bit_Pad_Flag (ctx->m.h);/* set tweak flag for the skeinFinal call */ /* now "pad" the final partial byte the way NIST likes */ length = ctx->m.h.bCnt;/* get the bCnt value (same location for all block sizes) */ Skein_assert (length !=0 );/* internal sanity check: there IS a partial byte in the buffer! */ - mask = (uint8_t ) (1u << (7 - (msgBitCnt &7 )));/* partial byte bit mask */ - up[length-1 ] = (uint8_t )((up[length-1 ] & (0 -mask))|mask);/* apply bit padding on final byte (in the buffer) */ + mask = (u8) (1u << (7 - (msgBitCnt &7 )));/* partial byte bit mask */ + up[length-1 ] = (u8)((up[length-1 ] & (0 -mask))|mask);/* apply bit padding on final byte (in the buffer) */ return SKEIN_SUCCESS ; } -int skeinFinal (struct skein_ctx * ctx,uint8_t * hash) +int skeinFinal (struct skein_ctx * ctx,u8 * hash) {int ret =SKEIN_FAIL ;Skein_Assert (ctx,SKEIN_FAIL );
drivers/staging/skein/threefish1024Block.c +9 -9
@@ -2,10 +2,10 @@#include <threefishApi.h> -void threefishEncrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) +void threefishEncrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output) { -uint64_t b0 = input[0 ], b1 = input[1 ], +u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ], b4 = input[4 ], b5 = input[5 ], b6 = input[6], b7 = input[7],
@@ -13,7 +13,7 @@ void threefishEncrypt1024(struct threefish_key* keyCtx, uint64_t* input, uint64_ b10 = input[10 ], b11 = input[11 ], b12 = input[12 ], b13 = input[13 ], b14 = input[14 ], b15 = input[15 ]; -uint64_t k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], +u64 k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], k2 = keyCtx->key[2 ], k3 = keyCtx->key[3 ], k4 = keyCtx->key[4 ], k5 = keyCtx->key[5 ], k6 = keyCtx->key[6], k7 = keyCtx->key[7],
@@ -22,7 +22,7 @@ void threefishEncrypt1024(struct threefish_key* keyCtx, uint64_t* input, uint64_ k12 = keyCtx->key[12 ], k13 = keyCtx->key[13 ], k14 = keyCtx->key[14 ], k15 = keyCtx->key[15 ], k16 = keyCtx->key[16 ]; -uint64_t t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], +u64 t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], t2 = keyCtx->tweak[2 ]; b1 += k1; b0 += b1 + k0; b1 = ((b1 <<24 ) | (b1 >> (64 -24 ))) ^ b0;
@@ -684,10 +684,10 @@ void threefishEncrypt1024(struct threefish_key* keyCtx, uint64_t* input, uint64_ output[15 ] = b15 + k1 +20 ; } -void threefishDecrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) +void threefishDecrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output) { -uint64_t b0 = input[0 ], b1 = input[1 ], +u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ], b4 = input[4 ], b5 = input[5 ], b6 = input[6], b7 = input[7],
@@ -695,7 +695,7 @@ void threefishDecrypt1024(struct threefish_key* keyCtx, uint64_t* input, uint64_ b10 = input[10 ], b11 = input[11 ], b12 = input[12 ], b13 = input[13 ], b14 = input[14 ], b15 = input[15 ]; -uint64_t k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], +u64 k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], k2 = keyCtx->key[2 ], k3 = keyCtx->key[3 ], k4 = keyCtx->key[4 ], k5 = keyCtx->key[5 ], k6 = keyCtx->key[6], k7 = keyCtx->key[7],
@@ -704,9 +704,9 @@ void threefishDecrypt1024(struct threefish_key* keyCtx, uint64_t* input, uint64_ k12 = keyCtx->key[12 ], k13 = keyCtx->key[13 ], k14 = keyCtx->key[14 ], k15 = keyCtx->key[15 ], k16 = keyCtx->key[16 ]; -uint64_t t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], +u64 t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], t2 = keyCtx->tweak[2 ]; -uint64_t tmp; +u64 tmp; b0 -= k3; b1 -= k4;
drivers/staging/skein/threefish256Block.c +9 -9
@@ -2,15 +2,15 @@#include <threefishApi.h> -void threefishEncrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) +void threefishEncrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output) { -uint64_t b0 = input[0 ], b1 = input[1 ], +u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ]; -uint64_t k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], +u64 k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], k2 = keyCtx->key[2 ], k3 = keyCtx->key[3 ], k4 = keyCtx->key[4 ]; -uint64_t t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], +u64 t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], t2 = keyCtx->tweak[2 ]; b1 += k1 + t0; b0 += b1 + k0; b1 = ((b1 <<14 ) | (b1 >> (64 -14 ))) ^ b0;
@@ -172,17 +172,17 @@ void threefishEncrypt256(struct threefish_key* keyCtx, uint64_t* input, uint64_t output[3 ] = b3 + k1 +18 ; } -void threefishDecrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) +void threefishDecrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output) { -uint64_t b0 = input[0 ], b1 = input[1 ], +u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ]; -uint64_t k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], +u64 k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], k2 = keyCtx->key[2 ], k3 = keyCtx->key[3 ], k4 = keyCtx->key[4 ]; -uint64_t t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], +u64 t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], t2 = keyCtx->tweak[2 ]; -uint64_t tmp; +u64 tmp; b0 -= k3; b1 -= k4 + t0;
drivers/staging/skein/threefish512Block.c +9 -9
@@ -2,19 +2,19 @@#include <threefishApi.h> -void threefishEncrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) +void threefishEncrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output) { -uint64_t b0 = input[0 ], b1 = input[1 ], +u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ], b4 = input[4 ], b5 = input[5 ], b6 = input[6 ], b7 = input[7 ]; -uint64_t k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], +u64 k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], k2 = keyCtx->key[2 ], k3 = keyCtx->key[3 ], k4 = keyCtx->key[4 ], k5 = keyCtx->key[5 ], k6 = keyCtx->key[6 ], k7 = keyCtx->key[7 ], k8 = keyCtx->key[8 ]; -uint64_t t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], +u64 t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], t2 = keyCtx->tweak[2 ]; b1 += k1; b0 += b1 + k0; b1 = ((b1 <<46 ) | (b1 >> (64 -46 ))) ^ b0;
@@ -316,22 +316,22 @@ void threefishEncrypt512(struct threefish_key* keyCtx, uint64_t* input, uint64_t output[7 ] = b7 + k7 +18 ; } -void threefishDecrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) +void threefishDecrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output) { -uint64_t b0 = input[0 ], b1 = input[1 ], +u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ], b4 = input[4 ], b5 = input[5 ], b6 = input[6 ], b7 = input[7 ]; -uint64_t k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], +u64 k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], k2 = keyCtx->key[2 ], k3 = keyCtx->key[3 ], k4 = keyCtx->key[4 ], k5 = keyCtx->key[5 ], k6 = keyCtx->key[6 ], k7 = keyCtx->key[7 ], k8 = keyCtx->key[8 ]; -uint64_t t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], +u64 t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], t2 = keyCtx->tweak[2 ]; -uint64_t tmp; +u64 tmp; b0 -= k0; b1 -= k1;
drivers/staging/skein/threefishApi.c +10 -10
@@ -4,11 +4,11 @@#include <threefishApi.h> void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize, -uint64_t * keyData,uint64_t * tweak) +u64 * keyData,u64 * tweak) {int keyWords = stateSize /64 ;int i; -uint64_t parity = KeyScheduleConst; +u64 parity = KeyScheduleConst; keyCtx->tweak[0 ] = tweak[0 ]; keyCtx->tweak[1 ] = tweak[1 ];
@@ -22,8 +22,8 @@ void threefishSetKey(struct threefish_key* keyCtx, enum threefish_size stateSize keyCtx->stateSize = stateSize; } -void threefishEncryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in, -uint8_t * out) +void threefishEncryptBlockBytes (struct threefish_key * keyCtx,u8 * in, +u8 * out) {u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ u64 cipher[SKEIN_MAX_STATE_WORDS ];
@@ -33,8 +33,8 @@ void threefishEncryptBlockBytes(struct threefish_key* keyCtx, uint8_t* in,Skein_Put64_LSB_First (out, cipher, keyCtx->stateSize /8 );/* words to bytes */ } -void threefishEncryptBlockWords (struct threefish_key * keyCtx,uint64_t * in, -uint64_t * out) +void threefishEncryptBlockWords (struct threefish_key * keyCtx,u64 * in, +u64 * out) {switch (keyCtx->stateSize) {case Threefish256:
@@ -49,8 +49,8 @@ void threefishEncryptBlockWords(struct threefish_key* keyCtx, uint64_t* in, } } -void threefishDecryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in, -uint8_t * out) +void threefishDecryptBlockBytes (struct threefish_key * keyCtx,u8 * in, +u8 * out) {u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ u64 cipher[SKEIN_MAX_STATE_WORDS ];
@@ -60,8 +60,8 @@ void threefishDecryptBlockBytes(struct threefish_key* keyCtx, uint8_t* in,Skein_Put64_LSB_First (out, plain, keyCtx->stateSize /8 );/* words to bytes */ } -void threefishDecryptBlockWords (struct threefish_key * keyCtx,uint64_t * in, -uint64_t * out) +void threefishDecryptBlockWords (struct threefish_key * keyCtx,u64 * in, +u64 * out) {switch (keyCtx->stateSize) {case Threefish256:
Signature · 1 line
1.9.0
RFC PATCH 10/22 staging: crypto: skein: fixup pointer whitespace
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 18 +++++++++--------- drivers/staging/skein/include/skeinApi.h | 10 +++++----- drivers/staging/skein/include/threefishApi.h | 22 +++++++++++----------- drivers/staging/skein/skeinApi.c | 18 +++++++++--------- drivers/staging/skein/threefish1024Block.c | 4 ++-- drivers/staging/skein/threefish256Block.c | 4 ++-- drivers/staging/skein/threefish512Block.c | 4 ++-- drivers/staging/skein/threefishApi.c | 20 ++++++++++---------- 8 files changed, 50 insertions(+), 50 deletions(-)
drivers/staging/skein/include/skein.h +9 -9
@@ -100,9 +100,9 @@ int Skein_256_Update(struct skein_256_ctx *ctx, const u8 *msg, size_t msgByteCnint Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg,size_t msgByteCnt);int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_256_Final (struct skein_256_ctx *ctx,u8 * hashVal); -int Skein_512_Final (struct skein_512_ctx *ctx,u8 * hashVal); -int Skein1024_Final (struct skein1024_ctx *ctx,u8 * hashVal); +int Skein_256_Final (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Final (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Final (struct skein1024_ctx *ctx,u8 *hashVal);/* ** Skein APIs for "extended" initialization: MAC keys, tree hashing.
@@ -127,17 +127,17 @@ int Skein1024_InitExt(struct skein1024_ctx *ctx, size_t hashBitLen, u64 treeInf** Final_Pad: pad, do final block, but no OUTPUT type ** Output: do just the output stage */ -int Skein_256_Final_Pad (struct skein_256_ctx *ctx,u8 * hashVal); -int Skein_512_Final_Pad (struct skein_512_ctx *ctx,u8 * hashVal); -int Skein1024_Final_Pad (struct skein1024_ctx *ctx,u8 * hashVal); +int Skein_256_Final_Pad (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Final_Pad (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Final_Pad (struct skein1024_ctx *ctx,u8 *hashVal);#ifndef SKEIN_TREE_HASH #define SKEIN_TREE_HASH (1)#endif #if SKEIN_TREE_HASH -int Skein_256_Output (struct skein_256_ctx *ctx,u8 * hashVal); -int Skein_512_Output (struct skein_512_ctx *ctx,u8 * hashVal); -int Skein1024_Output (struct skein1024_ctx *ctx,u8 * hashVal); +int Skein_256_Output (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Output (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Output (struct skein1024_ctx *ctx,u8 *hashVal);#endif /*****************************************************************
drivers/staging/skein/include/skeinApi.h +5 -5
@@ -123,7 +123,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * SKEIN_SUCESS of SKEIN_FAIL */ -int skeinCtxPrepare (struct skein_ctx * ctx,enum skein_size size); +int skeinCtxPrepare (struct skein_ctx *ctx,enum skein_size size);/** * Initialize a Skein context.
@@ -139,7 +139,7 @@ OTHER DEALINGS IN THE SOFTWARE.* SKEIN_SUCESS of SKEIN_FAIL * @see skeinReset */ -int skeinInit (struct skein_ctx * ctx,size_t hashBitLen); +int skeinInit (struct skein_ctx *ctx,size_t hashBitLen);/** * Resets a Skein context for further use.
@@ -151,7 +151,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @param ctx * Pointer to a pre-initialized Skein MAC context */ -void skeinReset (struct skein_ctx * ctx); +void skeinReset (struct skein_ctx *ctx);/** * Initializes a Skein context for MAC usage.
@@ -173,7 +173,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * SKEIN_SUCESS of SKEIN_FAIL */ -int skeinMacInit (struct skein_ctx * ctx,const u8 *key,size_t keyLen, +int skeinMacInit (struct skein_ctx *ctx,const u8 *key,size_t keyLen,size_t hashBitLen);/**
@@ -222,7 +222,7 @@ OTHER DEALINGS IN THE SOFTWARE.* Success or error code. * @see skeinReset */ -int skeinFinal (struct skein_ctx * ctx,u8 * hash); +int skeinFinal (struct skein_ctx *ctx,u8 *hash);/** * @}
drivers/staging/skein/include/threefishApi.h +11 -11
@@ -72,7 +72,7 @@* @param tweak * Pointer to the two tweak words (word has 64 bits). */ -void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize,u64 * keyData,u64 * tweak); +void threefishSetKey (struct threefish_key *keyCtx,enum threefish_size stateSize,u64 *keyData,u64 *tweak);/** * Encrypt Threefisch block (bytes).
@@ -89,7 +89,7 @@* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockBytes (struct threefish_key * keyCtx,u8 * in,u8 * out); +void threefishEncryptBlockBytes (struct threefish_key *keyCtx,u8 *in,u8 *out);/** * Encrypt Threefisch block (words).
@@ -108,7 +108,7 @@* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockWords (struct threefish_key * keyCtx,u64 * in,u64 * out); +void threefishEncryptBlockWords (struct threefish_key *keyCtx,u64 *in,u64 *out);/** * Decrypt Threefisch block (bytes).
@@ -125,7 +125,7 @@* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockBytes (struct threefish_key * keyCtx,u8 * in,u8 * out); +void threefishDecryptBlockBytes (struct threefish_key *keyCtx,u8 *in,u8 *out);/** * Decrypt Threefisch block (words).
@@ -144,14 +144,14 @@* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockWords (struct threefish_key * keyCtx,u64 * in,u64 * out); +void threefishDecryptBlockWords (struct threefish_key *keyCtx,u64 *in,u64 *out); -void threefishEncrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output); -void threefishEncrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output); -void threefishEncrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output); -void threefishDecrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output); -void threefishDecrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output); -void threefishDecrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output); +void threefishEncrypt256 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishEncrypt512 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishEncrypt1024 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishDecrypt256 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishDecrypt512 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishDecrypt1024 (struct threefish_key *keyCtx,u64 *input,u64 *output);/** * @} */
drivers/staging/skein/skeinApi.c +9 -9
@@ -27,7 +27,7 @@ OTHER DEALINGS IN THE SOFTWARE.#include <linux/string.h> #include <skeinApi.h> -int skeinCtxPrepare (struct skein_ctx * ctx,enum skein_size size) +int skeinCtxPrepare (struct skein_ctx *ctx,enum skein_size size) {Skein_Assert (ctx && size,SKEIN_FAIL );
@@ -37,11 +37,11 @@ int skeinCtxPrepare(struct skein_ctx* ctx, enum skein_size size)return SKEIN_SUCCESS ; } -int skeinInit (struct skein_ctx * ctx,size_t hashBitLen) +int skeinInit (struct skein_ctx *ctx,size_t hashBitLen) {int ret =SKEIN_FAIL ;size_t Xlen =0 ; -u64 *X =NULL ; +u64 *X =NULL ;u64 treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;Skein_Assert (ctx,SKEIN_FAIL );
@@ -78,11 +78,11 @@ int skeinInit(struct skein_ctx* ctx, size_t hashBitLen)return ret; } -int skeinMacInit (struct skein_ctx * ctx,const u8 *key,size_t keyLen, +int skeinMacInit (struct skein_ctx *ctx,const u8 *key,size_t keyLen,size_t hashBitLen) {int ret =SKEIN_FAIL ; -u64 *X =NULL ; +u64 *X =NULL ;size_t Xlen =0 ;u64 treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;
@@ -119,10 +119,10 @@ int skeinMacInit(struct skein_ctx* ctx, const u8 *key, size_t keyLen,return ret; } -void skeinReset (struct skein_ctx * ctx) +void skeinReset (struct skein_ctx *ctx) {size_t Xlen =0 ; -u64 *X =NULL ; +u64 *X =NULL ;/* * The following two lines rely of the fact that the real Skein contexts are
@@ -169,7 +169,7 @@ int skeinUpdateBits(struct skein_ctx *ctx, const u8 *msg,*/ size_t length;u8 mask; -u8 * up; +u8 *up;/* only the final Update() call is allowed do partial bytes, else assert an error */ Skein_Assert ((ctx->m.h.T[1 ] &SKEIN_T1_FLAG_BIT_PAD ) ==0 || msgBitCnt ==0 ,SKEIN_FAIL );
@@ -199,7 +199,7 @@ int skeinUpdateBits(struct skein_ctx *ctx, const u8 *msg,return SKEIN_SUCCESS ; } -int skeinFinal (struct skein_ctx * ctx,u8 * hash) +int skeinFinal (struct skein_ctx *ctx,u8 *hash) {int ret =SKEIN_FAIL ;Skein_Assert (ctx,SKEIN_FAIL );
drivers/staging/skein/threefish1024Block.c +2 -2
@@ -2,7 +2,7 @@#include <threefishApi.h> -void threefishEncrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output) +void threefishEncrypt1024 (struct threefish_key *keyCtx,u64 *input,u64 *output) { u64 b0 = input[0], b1 = input[1],
@@ -684,7 +684,7 @@ void threefishEncrypt1024(struct threefish_key* keyCtx, u64* input, u64* output) output[15 ] = b15 + k1 +20 ; } -void threefishDecrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output) +void threefishDecrypt1024 (struct threefish_key *keyCtx,u64 *input,u64 *output) { u64 b0 = input[0], b1 = input[1],
drivers/staging/skein/threefish256Block.c +2 -2
@@ -2,7 +2,7 @@#include <threefishApi.h> -void threefishEncrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output) +void threefishEncrypt256 (struct threefish_key *keyCtx,u64 *input,u64 *output) { u64 b0 = input[0], b1 = input[1],
@@ -172,7 +172,7 @@ void threefishEncrypt256(struct threefish_key* keyCtx, u64* input, u64* output) output[3 ] = b3 + k1 +18 ; } -void threefishDecrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output) +void threefishDecrypt256 (struct threefish_key *keyCtx,u64 *input,u64 *output) {u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ];
drivers/staging/skein/threefish512Block.c +2 -2
@@ -2,7 +2,7 @@#include <threefishApi.h> -void threefishEncrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output) +void threefishEncrypt512 (struct threefish_key *keyCtx,u64 *input,u64 *output) { u64 b0 = input[0], b1 = input[1],
@@ -316,7 +316,7 @@ void threefishEncrypt512(struct threefish_key* keyCtx, u64* input, u64* output) output[7 ] = b7 + k7 +18 ; } -void threefishDecrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output) +void threefishDecrypt512 (struct threefish_key *keyCtx,u64 *input,u64 *output) { u64 b0 = input[0], b1 = input[1],
drivers/staging/skein/threefishApi.c +10 -10
@@ -3,8 +3,8 @@#include <linux/string.h> #include <threefishApi.h> -void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize, -u64 * keyData,u64 * tweak) +void threefishSetKey (struct threefish_key *keyCtx,enum threefish_size stateSize, +u64 *keyData,u64 *tweak) {int keyWords = stateSize /64 ;int i;
@@ -22,8 +22,8 @@ void threefishSetKey(struct threefish_key* keyCtx, enum threefish_size stateSize keyCtx->stateSize = stateSize; } -void threefishEncryptBlockBytes (struct threefish_key * keyCtx,u8 * in, -u8 * out) +void threefishEncryptBlockBytes (struct threefish_key *keyCtx,u8 *in, +u8 *out) {u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ u64 cipher[SKEIN_MAX_STATE_WORDS ];
@@ -33,8 +33,8 @@ void threefishEncryptBlockBytes(struct threefish_key* keyCtx, u8* in,Skein_Put64_LSB_First (out, cipher, keyCtx->stateSize /8 );/* words to bytes */ } -void threefishEncryptBlockWords (struct threefish_key * keyCtx,u64 * in, -u64 * out) +void threefishEncryptBlockWords (struct threefish_key *keyCtx,u64 *in, +u64 *out) {switch (keyCtx->stateSize) {case Threefish256:
@@ -49,8 +49,8 @@ void threefishEncryptBlockWords(struct threefish_key* keyCtx, u64* in, } } -void threefishDecryptBlockBytes (struct threefish_key * keyCtx,u8 * in, -u8 * out) +void threefishDecryptBlockBytes (struct threefish_key *keyCtx,u8 *in, +u8 *out) {u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ u64 cipher[SKEIN_MAX_STATE_WORDS ];
@@ -60,8 +60,8 @@ void threefishDecryptBlockBytes(struct threefish_key* keyCtx, u8* in,Skein_Put64_LSB_First (out, plain, keyCtx->stateSize /8 );/* words to bytes */ } -void threefishDecryptBlockWords (struct threefish_key * keyCtx,u64 * in, -u64 * out) +void threefishDecryptBlockWords (struct threefish_key *keyCtx,u64 *in, +u64 *out) {switch (keyCtx->stateSize) {case Threefish256:
Signature · 1 line
1.9.0
RFC PATCH 14/22 staging: crypto: skein: remove trailing whitespace
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 16 +++++----- drivers/staging/skein/include/skeinApi.h | 44 ++++++++++++++-------------- drivers/staging/skein/include/threefishApi.h | 40 ++++++++++++------------- drivers/staging/skein/skeinBlockNo3F.c | 6 ++-- drivers/staging/skein/skein_block.c | 20 ++++++------- 5 files changed, 63 insertions(+), 63 deletions(-)
drivers/staging/skein/include/skein.h +8 -8
@@ -9,7 +9,7 @@ ** This algorithm and source code is released to the public domain. ** *************************************************************************** -** +** ** The following compile-time switches may be defined to control some ** tradeoffs between speed, code size, error checking, and security. **
@@ -20,8 +20,8 @@ ** [default: no callouts (no overhead)] ** ** SKEIN_ERR_CHECK -- how error checking is handled inside Skein -** code. If not defined, most error checking -** is disabled (for performance). Otherwise, +** code. If not defined, most error checking +** is disabled (for performance). Otherwise, ** the switch value is interpreted as: ** 0: use assert() to flag errors ** 1: return SKEIN_FAIL to flag errors
@@ -109,12 +109,12 @@ int Skein1024_Final(struct skein1024_ctx *ctx, u8 *hashVal);** After an InitExt() call, just use Update/Final calls as with Init(). ** ** Notes: Same parameters as _Init() calls, plus treeInfo/key/keyBytes. -** When keyBytes == 0 and treeInfo == SKEIN_SEQUENTIAL, +** When keyBytes == 0 and treeInfo == SKEIN_SEQUENTIAL, ** the results of InitExt() are identical to calling Init(). ** The function Init() may be called once to "precompute" the IV for ** a given hashBitLen value, then by saving a copy of the context ** the IV computation may be avoided in later calls. -** Similarly, the function InitExt() may be called once per MAC key +** Similarly, the function InitExt() may be called once per MAC key ** to precompute the MAC IV, then a copy of the context saved and ** reused for each new MAC computation. **/
@@ -142,7 +142,7 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);/***************************************************************** ** "Internal" Skein definitions -** -- not needed for sequential hashing API, but will be +** -- not needed for sequential hashing API, but will be ** helpful for other uses of Skein (e.g., tree hash mode). ** -- included here so that they can be shared between ** reference and optimized code.
@@ -269,8 +269,8 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);/***************************************************************** ** Skein block function constants (shared across Ref and Opt code) ******************************************************************/ -enum - { +enum + {/* Skein_256 round rotation constants */ R_256_0_0 =14 ,R_256_0_1 =16 ,R_256_1_0 =52 ,R_256_1_1 =57 ,
drivers/staging/skein/include/skeinApi.h +22 -22
108 lines not on this page · raw message
drivers/staging/skein/include/threefishApi.h +20 -20
@@ -8,14 +8,14 @@* @{ * * This API and the functions that implement this API simplify the usage -* of the Threefish cipher. The design and the way to use the functions +* of the Threefish cipher. The design and the way to use the functions * 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. -* Implementations for cipher modes such as ECB, CFB, or CBC may use these +* Implementations for cipher modes such as ECB, CFB, or CBC may use these * functions. -* +* @code // Threefish cipher context data struct threefish_key keyCtx;
@@ -44,7 +44,7 @@ enum threefish_size {/** * Context for Threefish key and tweak words. -* +* * This structure was setup with some know-how of the internal * Skein structures, in particular ordering of header and size dependent * variables. If Skein implementation changes this, the adapt these
@@ -58,10 +58,10 @@ struct threefish_key {/** * Set Threefish key and tweak data. -* +* * This function sets the key and tweak data for the Threefish cipher of * the given size. The key data must have the same length (number of bits) -* as the state size +* as the state size * * @param keyCtx * Pointer to a Threefish key structure.
@@ -76,12 +76,12 @@ void threefishSetKey(struct threefish_key *keyCtx, enum threefish_size stateSize/** * Encrypt Threefisch 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) aas the * state size for this key. The function uses the first @c stateSize bits * of the input buffer, encrypts them and stores the result in the output * buffer. -* +* * @param keyCtx * Pointer to a Threefish key structure. * @param in
@@ -93,14 +93,14 @@ void threefishEncryptBlockBytes(struct threefish_key *keyCtx, u8 *in, u8 *out);/** * Encrypt Threefisch 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) aas the * state size for this key. The function uses the first @c stateSize bits * of the input buffer, encrypts them and stores the result in the output * buffer. -* +* * The wordsize ist set to 64 bits. -* +* * @param keyCtx * Pointer to a Threefish key structure. * @param in
@@ -112,12 +112,12 @@ void threefishEncryptBlockWords(struct threefish_key *keyCtx, u64 *in, u64 *out)/** * Decrypt Threefisch 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) aas the * state size for this key. The function uses the first @c stateSize bits * of the input buffer, decrypts them and stores the result in the output * buffer -* +* * @param keyCtx * Pointer to a Threefish key structure. * @param in
@@ -129,14 +129,14 @@ void threefishDecryptBlockBytes(struct threefish_key *keyCtx, u8 *in, u8 *out);/** * Decrypt Threefisch 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) aas the * state size for this key. The function uses the first @c stateSize bits * of the input buffer, encrypts them and stores the result in the output * buffer. -* +* * The wordsize ist set to 64 bits. -* +* * @param keyCtx * Pointer to a Threefish key structure. * @param in
drivers/staging/skein/skeinBlockNo3F.c +3 -3
@@ -29,7 +29,7 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr, carry += words[i]; words[i] = carry; carry >>=32 ; - } + } tweak[0 ] = words[0 ] &0xffffffffL ; tweak[0 ] |= (words[1 ] &0xffffffffL ) <<32 ; tweak[1 ] |= words[2 ] &0xffffffffL ;
@@ -79,7 +79,7 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr, carry += words[i]; words[i] = carry; carry >>=32 ; - } + } tweak[0 ] = words[0 ] &0xffffffffL ; tweak[0 ] |= (words[1 ] &0xffffffffL ) <<32 ; tweak[1 ] |= words[2 ] &0xffffffffL ;
@@ -133,7 +133,7 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, carry += words[i]; words[i] = carry; carry >>=32 ; - } + } tweak[0 ] = words[0 ] &0xffffffffL ; tweak[0 ] |= (words[1 ] &0xffffffffL ) <<32 ; tweak[1 ] |= words[2 ] &0xffffffffL ;
drivers/staging/skein/skein_block.c +10 -10
@@ -28,7 +28,7 @@#define BLK_BITS (WCNT*64)/* some useful definitions for code here */ #define KW_TWK_BASE (0)#define KW_KEY_BASE (3) -#define ks (kw + KW_KEY_BASE) +#define ks (kw + KW_KEY_BASE)#define ts (kw + KW_TWK_BASE)#ifdef SKEIN_DEBUG
@@ -76,7 +76,7 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr, size_t ts[0 ] += byteCntAdd;/* update processed length */ /* precompute the key schedule for this block */ - ks[0 ] = ctx->X[0 ]; + ks[0 ] = ctx->X[0 ]; ks[1 ] = ctx->X[1 ]; ks[2 ] = ctx->X[2 ]; ks[3 ] = ctx->X[3 ];
@@ -103,7 +103,7 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr, size_t X##p0 += X##p1; X##p1 = RotL_64(X##p1, ROT##_0); X##p1 ^= X##p0; \ X##p2 += X##p3; X##p3 = RotL_64(X##p3, ROT##_1); X##p3 ^= X##p2; \ -#if SKEIN_UNROLL_256 ==0 +#if SKEIN_UNROLL_256 ==0 #define R256 (p0, p1, p2, p3,ROT , rNum)/* fully unrolled */ \ Round256(p0, p1, p2, p3, ROT, rNum) \ Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rNum, Xptr);
@@ -129,8 +129,8 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr, size_tSkein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); for (r = 1; r < 2 * RCNT; r += 2 * SKEIN_UNROLL_256) /* loop thru it */ -#endif - { +#endif + {#define R256_8_rounds (R ) \ R256(0, 1, 2, 3, R_256_0, 8 * (R) + 1); \ R256(0, 3, 2, 1, R_256_1, 8 * (R) + 2); \
@@ -270,7 +270,7 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr, size_t ks[5 ] = ctx->X[5 ]; ks[6 ] = ctx->X[6 ]; ks[7 ] = ctx->X[7 ]; - ks[8 ] = ks[0 ] ^ ks[1 ] ^ ks[2 ] ^ ks[3 ] ^ + ks[8 ] = ks[0 ] ^ ks[1 ] ^ ks[2 ] ^ ks[3 ] ^ ks[4 ] ^ ks[5 ] ^ ks[6 ] ^ ks[7 ] ^SKEIN_KS_PARITY ; ts[2 ] = ts[0 ] ^ ts[1 ];
@@ -298,7 +298,7 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr, size_t X##p4 += X##p5; X##p5 = RotL_64(X##p5, ROT##_2); X##p5 ^= X##p4; \ X##p6 += X##p7; X##p7 = RotL_64(X##p7, ROT##_3); X##p7 ^= X##p6; \ -#if SKEIN_UNROLL_512 ==0 +#if SKEIN_UNROLL_512 ==0 #define R512 (p0, p1, p2, p3, p4, p5, p6, p7,ROT , rNum)/* unrolled */ \ Round512(p0, p1, p2, p3, p4, p5, p6, p7, ROT, rNum) \ Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rNum, Xptr);
@@ -529,7 +529,7 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, size_t X##pC += X##pD; X##pD = RotL_64(X##pD, ROT##_6); X##pD ^= X##pC; \ X##pE += X##pF; X##pF = RotL_64(X##pF, ROT##_7); X##pF ^= X##pE; \ -#if SKEIN_UNROLL_1024 ==0 +#if SKEIN_UNROLL_1024 ==0 #define R1024 (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF,ROT , rn) \ Round1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, ROT, rn) \ Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rn, Xptr);
@@ -551,7 +551,7 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, size_tX13 += ks[((R ) +14 ) %17 ] + ts[((R ) +1 ) %3 ]; \X14 += ks[((R ) +15 ) %17 ] + ts[((R ) +2 ) %3 ]; \X15 += ks[((R ) +16 ) %17 ] + (R ) +1 ; \ -Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); +Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr);#else /* looping version */ #define R1024 (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF,ROT , rn) \ Round1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, ROT, rn) \
@@ -579,7 +579,7 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, size_tSkein_Show_R_Ptr (BLK_BITSi, &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); for (r = 1; r <= 2 * RCNT; r += 2 * SKEIN_UNROLL_1024) /* loop thru it */ -#endif +#endif {#define R1024_8_rounds (R )/* do 8 full rounds */ \ R1024(00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, R1024_0, 8*(R) + 1); \
Signature · 1 line
1.9.0
RFC PATCH 16/22 staging: crypto: skein: fix do/while brace formatting
In reply to Jason Cooper--- drivers/staging/skein/skein_block.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
drivers/staging/skein/skein_block.c +3 -6
@@ -215,8 +215,7 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr,Skein_Show_Round (BLK_BITS , &ctx->h,SKEIN_RND_FEED_FWD , ctx->X); ts[1 ] &= ~SKEIN_T1_FLAG_FIRST ; - } -while (--blkCnt); + }while (--blkCnt); ctx->h.T[0 ] = ts[0 ]; ctx->h.T[1 ] = ts[1 ]; }
@@ -434,8 +433,7 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr,Skein_Show_Round (BLK_BITS , &ctx->h,SKEIN_RND_FEED_FWD , ctx->X); ts[1 ] &= ~SKEIN_T1_FLAG_FIRST ; - } -while (--blkCnt); + }while (--blkCnt); ctx->h.T[0 ] = ts[0 ]; ctx->h.T[1 ] = ts[1 ]; }
@@ -717,8 +715,7 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \ ts[1 ] &= ~SKEIN_T1_FLAG_FIRST ; blkPtr +=SKEIN1024_BLOCK_BYTES ; - } -while (--blkCnt); + }while (--blkCnt); ctx->h.T[0 ] = ts[0 ]; ctx->h.T[1 ] = ts[1 ]; }
Signature · 1 line
1.9.0
RFC PATCH 17/22 staging: crypto: skein: fix brace placement errors
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 30 ++++----- drivers/staging/skein/include/skein_iv.h | 65 ++++++++---------- drivers/staging/skein/skein.c | 111 ++++++++++--------------------- 3 files changed, 74 insertions(+), 132 deletions(-)
drivers/staging/skein/include/skein.h +12 -18
@@ -37,12 +37,11 @@#define Skein_Get64_LSB_First (dst64, src08, wCnt) memcpy(dst64, src08, 8*(wCnt))#define Skein_Swap64 (w64) (w64) -enum - { +enum {SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ SKEIN_FAIL =1 ,SKEIN_BAD_HASHLEN =2 - }; +};#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */
@@ -63,33 +62,29 @@ enum#define SKEIN_512_BLOCK_BYTES (8*SKEIN_512_STATE_WORDS)#define SKEIN1024_BLOCK_BYTES (8*SKEIN1024_STATE_WORDS) -struct skein_ctx_hdr - { +struct skein_ctx_hdr {size_t hashBitLen;/* size of hash result, in bits */ size_t bCnt;/* current byte count in buffer b[] */ u64 T[SKEIN_MODIFIER_WORDS ];/* tweak: T[0]=byte cnt, T[1]=flags */ - }; +}; -struct skein_256_ctx /* 256-bit Skein hash context structure */ - { +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 */ u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ - }; +}; -struct skein_512_ctx /* 512-bit Skein hash context structure */ - { +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 */ u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ - }; +}; -struct skein1024_ctx /* 1024-bit Skein hash context structure */ - { +struct skein1024_ctx {/* 1024-bit Skein hash context structure */ struct skein_ctx_hdr h;/* common header context variables */ u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ - }; +};/* Skein APIs for (incremental) "straight hashing" */ int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen);
@@ -296,8 +291,7 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);/***************************************************************** ** Skein block function constants (shared across Ref and Opt code) ******************************************************************/ -enum - { +enum {/* Skein_256 round rotation constants */ R_256_0_0 =14 ,R_256_0_1 =16 ,R_256_1_0 =52 ,R_256_1_1 =57 ,
@@ -335,7 +329,7 @@ enumR1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 ,R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 - }; +};#ifndef SKEIN_ROUNDS #define SKEIN_256_ROUNDS_TOTAL (72)/* # rounds for diff block sizes */
drivers/staging/skein/include/skein_iv.h +26 -39
164 lines not on this page · raw message
drivers/staging/skein/skein.c +36 -75
288 lines not on this page · raw message
Signature · 1 line
1.9.0
RFC PATCH 19/22 staging: crypto: skein: remove externs from .c files
In reply to Jason Cooper--- drivers/staging/skein/include/skein_block.h | 22 ++++++++++++++++++++++ drivers/staging/skein/skein.c | 10 +--------- 2 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 drivers/staging/skein/include/skein_block.h
drivers/staging/skein/include/skein_block.h new file +22 -0
@@ -0,0 +1,22 @@ +/*********************************************************************** +** +** Implementation of the Skein hash function. +** +** Source code author: Doug Whiting, 2008. +** +** This algorithm and source code is released to the public domain. +** +************************************************************************/ +#ifndef _SKEIN_BLOCK_H_ +#define _SKEIN_BLOCK_H_ + +#include <skein.h> /* get the Skein API definitions */ + +void Skein_256_Process_Block (struct skein_256_ctx *ctx,const u8 *blkPtr, +size_t blkCnt,size_t byteCntAdd); +void Skein_512_Process_Block (struct skein_512_ctx *ctx,const u8 *blkPtr, +size_t blkCnt,size_t byteCntAdd); +void Skein1024_Process_Block (struct skein1024_ctx *ctx,const u8 *blkPtr, +size_t blkCnt,size_t byteCntAdd); + +#endif
drivers/staging/skein/skein.c +1 -9
@@ -13,15 +13,7 @@#include <linux/string.h> /* get the memcpy/memset functions */ #include <skein.h> /* get the Skein API definitions */ #include <skein_iv.h> /* get precomputed IVs */ - -/*****************************************************************/ -/* External function to process blkCnt (nonzero) full block(s) of data. */ -void Skein_256_Process_Block (struct skein_256_ctx *ctx,const u8 *blkPtr, -size_t blkCnt,size_t byteCntAdd); -void Skein_512_Process_Block (struct skein_512_ctx *ctx,const u8 *blkPtr, -size_t blkCnt,size_t byteCntAdd); -void Skein1024_Process_Block (struct skein1024_ctx *ctx,const u8 *blkPtr, -size_t blkCnt,size_t byteCntAdd); +#include <skein_block.h> /*****************************************************************/ /* 256-bit Skein */
Signature · 1 line
1.9.0
RFC PATCH 21/22 staging: crypto: skein: remove unnecessary line continuation
In reply to Jason Cooper--- drivers/staging/skein/skein_block.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/staging/skein/skein_block.c +1 -1
@@ -477,7 +477,7 @@ unsigned int Skein_512_Unroll_Cnt(void)/***************************** Skein1024 ******************************/ #if !(SKEIN_USE_ASM & 1024) -void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \ +void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, size_t blkCnt, size_t byteCntAdd) { /* do it in C, always looping (unrolled is bigger AND slower!) */ enum {
Signature · 1 line
1.9.0
RFC PATCH 18/22 staging: crypto: skein: wrap multi-line macros in do-while loops
In reply to Jason Cooper--- drivers/staging/skein/skein_block.c | 66 ++++++++++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 15 deletions(-)
drivers/staging/skein/skein_block.c +51 -15
@@ -107,27 +107,36 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr,/* run the rounds */ #define Round256 (p0, p1, p2, p3,ROT , rNum) \ +do { \ X##p0 += X##p1; X##p1 = RotL_64(X##p1, ROT##_0); X##p1 ^= X##p0; \ X##p2 += X##p3; X##p3 = RotL_64(X##p3, ROT##_1); X##p3 ^= X##p2; \ +} while (0)#if SKEIN_UNROLL_256 ==0 #define R256 (p0, p1, p2, p3,ROT , rNum)/* fully unrolled */ \ +do { \ Round256(p0, p1, p2, p3, ROT, rNum) \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rNum, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rNum, Xptr); \ +} while (0) #define I256(R) \ +do { \ /* inject the key schedule value */ \X0 += ks[((R)+1) % 5]; \ X1 += ks[((R)+2) % 5] + ts[((R)+1) % 3]; \ X2 += ks[((R)+3) % 5] + ts[((R)+2) % 3]; \ X3 += ks[((R)+4) % 5] + (R)+1; \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, SKEIN_RND_KEY_INJECT, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, SKEIN_RND_KEY_INJECT, Xptr); \ +} while (0)#else /* looping version */ #define R256 (p0, p1, p2, p3,ROT , rNum) \ +do { \ Round256(p0, p1, p2, p3, ROT, rNum) \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, 4 * (r - 1) + rNum, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, 4 * (r - 1) + rNum, Xptr); \ +} while (0)#define I256 (R ) \ +do { \/* inject the key schedule value */ \X0 += ks[r+(R )+0 ]; \X1 += ks[r+(R )+1 ] + ts[r+(R )+0 ]; \
@@ -136,12 +145,14 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr,/* rotate key schedule */ \ ks[r + (R ) +4 ] = ks[r + (R ) -1 ]; \ ts[r + (R ) +2 ] = ts[r + (R ) -1 ]; \ -Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); +Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); \ +} while (0) for (r = 1; r < 2 * RCNT; r += 2 * SKEIN_UNROLL_256)#endif {#define R256_8_rounds (R ) \ +do { \ R256(0, 1, 2, 3, R_256_0, 8 * (R) + 1); \ R256(0, 3, 2, 1, R_256_1, 8 * (R) + 2); \ R256(0, 1, 2, 3, R_256_2, 8 * (R) + 3); \
@@ -151,7 +162,8 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr,R256 (0 ,3 ,2 ,1 ,R_256_5 ,8 * (R ) +6 ); \R256 (0 ,1 ,2 ,3 ,R_256_6 ,8 * (R ) +7 ); \R256 (0 ,3 ,2 ,1 ,R_256_7 ,8 * (R ) +8 ); \ -I256 (2 * (R ) +1 ); +I256 (2 * (R ) +1 ); \ +}while (0 )R256_8_rounds (0 );
@@ -311,17 +323,22 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr, Xptr);/* run the rounds */ #define Round512 (p0, p1, p2, p3, p4, p5, p6, p7,ROT , rNum) \ +do { \ X##p0 += X##p1; X##p1 = RotL_64(X##p1, ROT##_0); X##p1 ^= X##p0; \ X##p2 += X##p3; X##p3 = RotL_64(X##p3, ROT##_1); X##p3 ^= X##p2; \ X##p4 += X##p5; X##p5 = RotL_64(X##p5, ROT##_2); X##p5 ^= X##p4; \ X##p6 += X##p7; X##p7 = RotL_64(X##p7, ROT##_3); X##p7 ^= X##p6; \ +} while (0)#if SKEIN_UNROLL_512 ==0 #define R512 (p0, p1, p2, p3, p4, p5, p6, p7,ROT , rNum)/* unrolled */ \ +do { \ Round512(p0, p1, p2, p3, p4, p5, p6, p7, ROT, rNum) \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rNum, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rNum, Xptr); \ +} while (0)#define I512 (R ) \ +do { \/* inject the key schedule value */ \X0 += ks[((R ) +1 ) %9 ]; \X1 += ks[((R ) +2 ) %9 ]; \
@@ -331,13 +348,17 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr,X5 += ks[((R ) +6 ) %9 ] + ts[((R ) +1 ) %3 ]; \X6 += ks[((R ) +7 ) %9 ] + ts[((R ) +2 ) %3 ]; \X7 += ks[((R ) +8 ) %9 ] + (R ) +1 ; \ -Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); +Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); \ +} while (0)#else /* looping version */ #define R512 (p0, p1, p2, p3, p4, p5, p6, p7,ROT , rNum) \ +do { \ Round512(p0, p1, p2, p3, p4, p5, p6, p7, ROT, rNum) \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, 4 * (r - 1) + rNum, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, 4 * (r - 1) + rNum, Xptr); \ +} while (0)#define I512 (R ) \ +do { \/* inject the key schedule value */ \X0 += ks[r + (R ) +0 ]; \X1 += ks[r + (R ) +1 ]; \
@@ -350,12 +371,14 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr,/* rotate key schedule */ \ ks[r + (R ) +8 ] = ks[r + (R ) -1 ]; \ ts[r + (R ) +2 ] = ts[r + (R ) -1 ]; \ -Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); +Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); \ +} while (0) for (r = 1; r < 2 * RCNT; r += 2 * SKEIN_UNROLL_512)#endif /* end of looped code definitions */ {#define R512_8_rounds (R )/* do 8 full rounds */ \ +do { \ R512(0, 1, 2, 3, 4, 5, 6, 7, R_512_0, 8 * (R) + 1); \ R512(2, 1, 4, 7, 6, 5, 0, 3, R_512_1, 8 * (R) + 2); \ R512(4, 1, 6, 3, 0, 5, 2, 7, R_512_2, 8 * (R) + 3); \
@@ -365,7 +388,8 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr,R512 (2 ,1 ,4 ,7 ,6 ,5 ,0 ,3 ,R_512_5 ,8 * (R ) +6 ); \R512 (4 ,1 ,6 ,3 ,0 ,5 ,2 ,7 ,R_512_6 ,8 * (R ) +7 ); \R512 (6 ,1 ,0 ,7 ,2 ,5 ,4 ,3 ,R_512_7 ,8 * (R ) +8 ); \ -I512 (2 * (R ) +1 );/* and key injection */ +I512 (2 * (R ) +1 );/* and key injection */ \ +}while (0 )R512_8_rounds (0 );
@@ -551,6 +575,7 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \#define Round1024 (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, \ pF,ROT , rNum) \ +do { \ X##p0 += X##p1; X##p1 = RotL_64(X##p1, ROT##_0); X##p1 ^= X##p0; \ X##p2 += X##p3; X##p3 = RotL_64(X##p3, ROT##_1); X##p3 ^= X##p2; \ X##p4 += X##p5; X##p5 = RotL_64(X##p5, ROT##_2); X##p5 ^= X##p4; \
@@ -559,15 +584,19 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \ X##pA += X##pB; X##pB = RotL_64(X##pB, ROT##_5); X##pB ^= X##pA; \ X##pC += X##pD; X##pD = RotL_64(X##pD, ROT##_6); X##pD ^= X##pC; \ X##pE += X##pF; X##pF = RotL_64(X##pF, ROT##_7); X##pF ^= X##pE; \ +} while (0)#if SKEIN_UNROLL_1024 ==0 #define R1024 (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, \ROT , rn) \ +do { \ Round1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, \ pF, ROT, rn) \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rn, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rn, Xptr); \ +} while (0)#define I1024 (R ) \ +do { \/* inject the key schedule value */ \X00 += ks[((R ) +1 ) %17 ]; \X01 += ks[((R ) +2 ) %17 ]; \
@@ -585,15 +614,19 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \X13 += ks[((R ) +14 ) %17 ] + ts[((R ) +1 ) %3 ]; \X14 += ks[((R ) +15 ) %17 ] + ts[((R ) +2 ) %3 ]; \X15 += ks[((R ) +16 ) %17 ] + (R ) +1 ; \ -Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); +Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); \ +} while (0)#else /* looping version */ #define R1024 (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, \ROT , rn) \ +do { \ Round1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, \ pF, ROT, rn) \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, 4 * (r - 1) + rn, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, 4 * (r - 1) + rn, Xptr); \ +} while (0)#define I1024 (R ) \ +do { \/* inject the key schedule value */ \X00 += ks[r + (R ) +0 ]; \X01 += ks[r + (R ) +1 ]; \
@@ -614,12 +647,14 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \/* rotate key schedule */ \ ks[r + (R ) +16 ] = ks[r + (R ) -1 ]; \ ts[r + (R ) +2 ] = ts[r + (R ) -1 ]; \ -Skein_Show_R_Ptr (BLK_BITSi, &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); +Skein_Show_R_Ptr (BLK_BITSi, &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); \ +} while (0) for (r = 1; r <= 2 * RCNT; r += 2 * SKEIN_UNROLL_1024)#endif {#define R1024_8_rounds (R ) \ +do { \ R1024(00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, \ R1024_0, 8*(R) + 1); \ R1024(00, 09, 02, 13, 06, 11, 04, 15, 10, 07, 12, 03, 14, 05, 08, 01, \
@@ -637,7 +672,8 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \ R1024_6, 8*(R) + 7); \R1024 (00 ,15 ,02 ,11 ,06 ,13 ,04 ,09 ,14 ,01 ,08 ,05 ,10 ,03 ,12 ,07 , \R1024_7 ,8 *(R ) +8 ); \ -I1024 (2 *(R )+1 ); +I1024 (2 *(R )+1 ); \ +}while (0 )R1024_8_rounds (0 );
Signature · 1 line
1.9.0
RFC PATCH 22/22 staging: crypto: skein: add TODO file
In reply to Jason Cooper--- drivers/staging/skein/TODO | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 drivers/staging/skein/TODO
drivers/staging/skein/TODO new file +11 -0
@@ -0,0 +1,11 @@ +skein/threefish TODO + + - rename camelcase vars + - rename camelcase functions + - rename files + - move macros into appropriate header files + - add / pass test vectors + - module support + +Please send patches to Jason Cooper <[email protected]> in addition to the +staging tree mailinglist.
Signature · 1 line
1.9.0
RFC PATCH 20/22 staging: crypto: skein: remove braces from single-statement block
In reply to Jason Cooper--- drivers/staging/skein/skeinApi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/staging/skein/skeinApi.c +2 -2
@@ -188,9 +188,9 @@ int skeinUpdateBits(struct skein_ctx *ctx, const u8 *msg, msgBitCnt == 0, SKEIN_FAIL);/* if number of bits is a multiple of bytes - that's easy */ -if ((msgBitCnt &0x7 ) ==0 ) { +if ((msgBitCnt &0x7 ) ==0 )return skeinUpdate (ctx, msg, msgBitCnt >>3 ); - } +skeinUpdate (ctx, msg, (msgBitCnt >>3 ) +1 );/*
Signature · 1 line
1.9.0
Quoted 5 lines · Jason Cooper
To facilitate tinkering with this, One can pull from the following:
git://git.infradead.org/users/jcooper/linux.gittags/staging-skein-3.14-rc1This is based on v3.14-rc1, and is prone to rebasing based on comments.
Hmmm, apparently, I forgot to tell you *how* to tinker with this :)
Once you've pulled in the series,
$ make ARCH=x86_64 defconfig
enable CRYPTO_SKEIN (implies CRYPTO_THREEFISH) under drivers/staging.
$ git rebase -i v3.14-rc1
In the rebase config file:
#######################################
pick cc77327 scripts: objdiff: detect object code changes between two commits pick bdb4dad staging: crypto: skein: import code from Skein3Fish.git pick e3d822c staging: crypto: skein: allow building statically
x kbuild.sh none
x ./scripts/objdiff record drivers/staging/skein/*.o
pick 227c819 staging: crypto: skein: remove brg_*.h includes x kbuild.sh none
x ./scripts/objdiff record drivers/staging/skein/*.o x ./scripts/objdiff diff HEAD^ HEAD
pick c175303 staging: crypto: skein: remove skein_port.h x kbuild.sh none
x ./scripts/objdiff record drivers/staging/skein/*.o x ./scripts/objdiff diff HEAD^ HEAD
pick a612f45 staging: crypto: skein: remove __cplusplus and an unneeded stddef.h x kbuild.sh none
x ./scripts/objdiff record drivers/staging/skein/*.o
x ./scripts/objdiff diff HEAD^ HEAD
... lather, rinse, repeat ...
pick 4438372 staging: crypto: skein: remove unnecessary line continuation x kbuild.sh none
x ./scripts/objdiff record drivers/staging/skein/*.o
x ./scripts/objdiff diff HEAD^ HEAD
pick 641f05d staging: crypto: skein: add TODO file x kbuild.sh none
x ./scripts/objdiff record drivers/staging/skein/*.o x ./scripts/objdiff diff HEAD^ HEAD
...
#######################################
Save, quit, let it run (kbuild.sh is my local script for building the kernel)
If it makes it to the end, then the object code never changed. Well, it works here. ;-)
Once you're finished poking around (objdump output in is /tmp/objdiff-<commit>/):
$ ./scripts/objdiff clean all
Also, it looks like linux-crypto dropped several of the patches for being too large. Here's a link to the top of the series (choose the linuxdriverproject archive):
https://lkml.kernel.org/r/[email protected]
hth,
Jason.
Greg KH
maintainerRe: [RFC PATCH 03/22] staging: crypto: skein: allow building statically
In reply to Jason CooperQuoted 6 lines · Jason Cooper
These are the minimum changes required to get the code to build statically in the kernel. It's necessary to do this first so that we can empirically determine that future cleanup patches aren't changing the generated object code.
Signed-off-by Jason Cooper <[email protected]>
This doesn't apply to my latest tree :(
drivers/staging/Makefile obj-$(CONFIG_XILLYBUS) += xillybus/ · line 68
Quoted 7 lines
drivers/staging/Makefile +1
-0@@ -65,3 +65,4 @@ obj-$(CONFIG_XILLYBUS) += xillybus/ obj-$(CONFIG_DGNC) += dgnc/ obj-$(CONFIG_DGAP) += dgap/ obj-$(CONFIG_MTD_SPINAND_MT29F) += mt29f_spinand/ +obj-$(CONFIG_CRYPTO_SKEIN) += skein/
Care to align these up with the way this file is formatted?
And I have no objection to taking the drivers/staging/ patches, the script looks useful, but I can't take it through the staging tree, sorry.
thanks,
greg k-h
Re: [RFC PATCH 03/22] staging: crypto: skein: allow building statically
Quoted 9 lines · Greg KH
Quoted 6 lines · Jason Cooper
These are the minimum changes required to get the code to build statically in the kernel. It's necessary to do this first so that we can empirically determine that future cleanup patches aren't changing the generated object code.
Signed-off-by Jason Cooper <[email protected]>This doesn't apply to my latest tree :(
Ah, ok. I'll rebase this series on the staging tree.
Quoted 9 lines
drivers/staging/Makefile obj-$(CONFIG_XILLYBUS) += xillybus/ · line 68
Quoted 7 lines
drivers/staging/Makefile +1
-0@@ -65,3 +65,4 @@ obj-$(CONFIG_XILLYBUS) += xillybus/ obj-$(CONFIG_DGNC) += dgnc/ obj-$(CONFIG_DGAP) += dgap/ obj-$(CONFIG_MTD_SPINAND_MT29F) += mt29f_spinand/ +obj-$(CONFIG_CRYPTO_SKEIN) += skein/Care to align these up with the way this file is formatted?
Of course, not sure what happened there (well, other than the obvious :-P)
Quoted 3 lines
And I have no objection to taking the
drivers/staging/patches, the script looks useful, but I can't take it through the staging tree, sorry.
Ok, I'll pull that out as a separate branch. Do you mind taking a series that depends on a topic branch from another tree? We do it a lot in arm-soc, but I'm not sure how popular that is elsewhere.
It's purely an audit/testing dependency, but it would be nice to have it available in the history if someone wants to audit the changes.
I have one change I'd like to do to the objdiff script. I'd like it to assume 'HEAD^ HEAD' when the user executes './scripts/objdiff diff'.
I'll respin both and submit a v1.
Thanks for the review.
thx,
Jason.
Greg KH
maintainerRe: [RFC PATCH 03/22] staging: crypto: skein: allow building statically
Quoted 26 lines · Jason Cooper
Quoted 9 lines · Greg KH
Quoted 6 lines · Jason Cooper
These are the minimum changes required to get the code to build statically in the kernel. It's necessary to do this first so that we can empirically determine that future cleanup patches aren't changing the generated object code.
Signed-off-by Jason Cooper <[email protected]>This doesn't apply to my latest tree :(
Ah, ok. I'll rebase this series on the staging tree.
Quoted 9 lines
drivers/staging/Makefile obj-$(CONFIG_XILLYBUS) += xillybus/ · line 68
Quoted 7 lines
drivers/staging/Makefile +1
-0@@ -65,3 +65,4 @@ obj-$(CONFIG_XILLYBUS) += xillybus/ obj-$(CONFIG_DGNC) += dgnc/ obj-$(CONFIG_DGAP) += dgap/ obj-$(CONFIG_MTD_SPINAND_MT29F) += mt29f_spinand/ +obj-$(CONFIG_CRYPTO_SKEIN) += skein/Care to align these up with the way this file is formatted?
Of course, not sure what happened there (well, other than the obvious :-P)
Quoted 7 lines
Quoted 3 lines
And I have no objection to taking the
drivers/staging/patches, the script looks useful, but I can't take it through the staging tree, sorry.Ok, I'll pull that out as a separate branch. Do you mind taking a series that depends on a topic branch from another tree? We do it a lot in arm-soc, but I'm not sure how popular that is elsewhere.
It's not a dependancy at all, and I don't take git pull requests for the staging tree, just email patches, sorry.
So just resend these patches thanks.
greg k-h
PATCH v2 1/21 staging: crypto: skein: import code from Skein3Fish.git
In reply to Jason CooperThis is a byte-for-byte copy of the skein implementation found at:
https://github.com/wernerd/Skein3Fish.git
Specifically, from the master branch at commit:
00e925444c2c Merge pull request #4 from csm/master
The next commit will do the minimum necessary to build this code as a module.
I've generated the sha256 sums of the files by:
$ (cd drivers/staging/skein; find . -type f | sort | xargs sha256sum) bcd73168e5805b1b157dbf08863e6a8c217a7b270b6be1a361540591b00624e3 ./CMakeLists.txt e1adb97dd9e87bc7c05892ed7863a66d1d9fde6728a97a8b7b092709da664d29 ./include/brg_endian.h 240329b4ca4d829ac4d1490e96e83118e161e719e448c7e8dbf15735ab8a8e87 ./include/brg_types.h 0d8f16438f641fa365844a5991220eb04969f0a19c60dff08e10f521e74db5c3 ./include/skein.h 8f7362796e9e43f7619d51020d6faeedce786492b65bebd2ff6a833b621051cb ./include/skeinApi.h 90510d8a9f686c3bfbf6cf7737237e3fa263c1ed5046b0f19727ba55b9bffeb9 ./include/skein_iv.h 42c6c8eff8f364ee2f0de3177d468dbceba9c6a73222fea473fe6d603213806a ./include/skein_port.h 0154a4b8d54f5aa424b39a7ee668b31f2522b907bf3a8536fe46440b584531a1 ./include/threefishApi.h ac0fc0f95a48a716d30cf02e5adad77af17725a938f939cf94f6dfba42badeca ./skein.c 7af70b177bc63690f68eebceca2dbfef8a4473dcc847ae3525508c65c7d7bcc1 ./skeinApi.c d7ef7330be8253f7f061de3c36880dbc83b0f5d90c8f2b72d3478766f54fbff0 ./skeinBlockNo3F.c 8bb3d7864afc9eab5569949fb2799cb6f14e583ba00641313cf877a5aea1c763 ./skein_block.c 438e6cb59a0090166e8f1e39418c0a2d0036737a32c5e2822c2ed8b803e2132f ./threefish1024Block.c e812ec6f2881300e90c803cfd9d044e954f1ca64faa2fc17a709f56a2f122ff8 ./threefish256Block.c 926f680057e128cdd1feba4a8544c177a74420137af480267b949ae79f3d02b8 ./threefish512Block.c 19357f5d47e7183bc8558a8d0949a3f5a80a931848917d26f36eebb7d205f003 ./threefishApi.c
--- drivers/staging/skein/CMakeLists.txt | 27 + drivers/staging/skein/include/brg_endian.h | 148 +++ drivers/staging/skein/include/brg_types.h | 188 ++++ drivers/staging/skein/include/skein.h | 327 ++++++ drivers/staging/skein/include/skeinApi.h | 239 +++++ drivers/staging/skein/include/skein_iv.h | 199 ++++ drivers/staging/skein/include/skein_port.h | 124 +++ drivers/staging/skein/include/threefishApi.h | 167 ++++ drivers/staging/skein/skein.c | 742 ++++++++++++++ drivers/staging/skein/skeinApi.c | 221 ++++ drivers/staging/skein/skeinBlockNo3F.c | 172 ++++ drivers/staging/skein/skein_block.c | 689 +++++++++++++ drivers/staging/skein/threefish1024Block.c | 1385 ++++++++++++++++++++++++++ drivers/staging/skein/threefish256Block.c | 349 +++++++ drivers/staging/skein/threefish512Block.c | 643 ++++++++++++ drivers/staging/skein/threefishApi.c | 79 ++ 16 files changed, 5699 insertions(+) create mode 100755 drivers/staging/skein/CMakeLists.txt create mode 100644 drivers/staging/skein/include/brg_endian.h create mode 100644 drivers/staging/skein/include/brg_types.h create mode 100644 drivers/staging/skein/include/skein.h create mode 100755 drivers/staging/skein/include/skeinApi.h create mode 100644 drivers/staging/skein/include/skein_iv.h create mode 100644 drivers/staging/skein/include/skein_port.h create mode 100644 drivers/staging/skein/include/threefishApi.h create mode 100644 drivers/staging/skein/skein.c create mode 100755 drivers/staging/skein/skeinApi.c create mode 100644 drivers/staging/skein/skeinBlockNo3F.c create mode 100644 drivers/staging/skein/skein_block.c create mode 100644 drivers/staging/skein/threefish1024Block.c create mode 100644 drivers/staging/skein/threefish256Block.c create mode 100644 drivers/staging/skein/threefish512Block.c create mode 100644 drivers/staging/skein/threefishApi.c
drivers/staging/skein/CMakeLists.txt new file +27 -0
@@ -0,0 +1,27 @@ +cmake_minimum_required (VERSION 2.6) + +include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include) + +# set(skeinBlock_src skein_block.c) +set(skeinBlock_src skeinBlockNo3F.c) + +set(skein_src + ${skeinBlock_src} + skein.c + skeinApi.c + ) + +set(threefish_src + threefishApi.c + threefish256Block.c + threefish512Block.c + threefish1024Block.c + ) +set(s3f_src ${skein_src} ${threefish_src}) + +add_library(skein3fish SHARED ${s3f_src}) +set_target_properties(skein3fish PROPERTIES VERSION ${VERSION} SOVERSION ${SOVERSION}) +target_link_libraries(skein3fish ${LIBS}) + +install(TARGETS skein3fish DESTINATION ${LIBDIRNAME}) +
drivers/staging/skein/include/brg_endian.h new file +148 -0
148 lines not on this page · raw message
drivers/staging/skein/include/brg_types.h new file +188 -0
188 lines not on this page · raw message
drivers/staging/skein/include/skein.h new file +327 -0
327 lines not on this page · raw message
drivers/staging/skein/include/skeinApi.h new file +239 -0
239 lines not on this page · raw message
drivers/staging/skein/include/skein_iv.h new file +199 -0
199 lines not on this page · raw message
drivers/staging/skein/include/skein_port.h new file +124 -0
124 lines not on this page · raw message
drivers/staging/skein/include/threefishApi.h new file +167 -0
167 lines not on this page · raw message
drivers/staging/skein/skein.c new file +742 -0
742 lines not on this page · raw message
drivers/staging/skein/skeinApi.c new file +221 -0
221 lines not on this page · raw message
drivers/staging/skein/skeinBlockNo3F.c new file +172 -0
172 lines not on this page · raw message
drivers/staging/skein/skein_block.c new file +689 -0
446 lines not on this page · raw message
drivers/staging/skein/threefish1024Block.c new file +1385 -0
1,385 lines not on this page · raw message
drivers/staging/skein/threefish256Block.c new file +349 -0
349 lines not on this page · raw message
drivers/staging/skein/threefish512Block.c new file +643 -0
643 lines not on this page · raw message
drivers/staging/skein/threefishApi.c new file +79 -0
79 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
1.9.1
Part of the diff is not shown here. View the raw message.
PATCH v2 10/21 staging: crypto: skein: cleanup whitespace around operators/punc.
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 168 +++++----- drivers/staging/skein/include/skein_iv.h | 224 +++++++------- drivers/staging/skein/skein.c | 352 ++++++++++----------- drivers/staging/skein/skeinApi.c | 22 +- drivers/staging/skein/skeinBlockNo3F.c | 20 +- drivers/staging/skein/skein_block.c | 513 +++++++++++++++---------------- 6 files changed, 648 insertions(+), 651 deletions(-)
drivers/staging/skein/include/skein.h +84 -84
@@ -29,12 +29,12 @@***************************************************************************/ #ifndef RotL_64 -#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N)))) +#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N))))#endif /* below two prototype assume we are handed aligned data */ -#define Skein_Put64_LSB_First (dst08,src64,bCnt) memcpy(dst08,src64,bCnt) -#define Skein_Get64_LSB_First (dst64,src08,wCnt) memcpy(dst64,src08,8*(wCnt)) +#define Skein_Put64_LSB_First (dst08, src64, bCnt) memcpy(dst08, src64, bCnt) +#define Skein_Get64_LSB_First (dst64, src08, wCnt) memcpy(dst64, src08, 8*(wCnt))#define Skein_Swap64 (w64) (w64) enum
@@ -44,24 +44,24 @@ enumSKEIN_BAD_HASHLEN =2 }; -#define SKEIN_MODIFIER_WORDS ( 2)/* number of modifier (tweak) words */ +#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */ -#define SKEIN_256_STATE_WORDS ( 4) -#define SKEIN_512_STATE_WORDS ( 8) +#define SKEIN_256_STATE_WORDS (4) +#define SKEIN_512_STATE_WORDS (8)#define SKEIN1024_STATE_WORDS (16)#define SKEIN_MAX_STATE_WORDS (16) -#define SKEIN_256_STATE_BYTES ( 8*SKEIN_256_STATE_WORDS) -#define SKEIN_512_STATE_BYTES ( 8*SKEIN_512_STATE_WORDS) -#define SKEIN1024_STATE_BYTES ( 8*SKEIN1024_STATE_WORDS) +#define SKEIN_256_STATE_BYTES (8*SKEIN_256_STATE_WORDS) +#define SKEIN_512_STATE_BYTES (8*SKEIN_512_STATE_WORDS) +#define SKEIN1024_STATE_BYTES (8*SKEIN1024_STATE_WORDS)#define SKEIN_256_STATE_BITS (64*SKEIN_256_STATE_WORDS)#define SKEIN_512_STATE_BITS (64*SKEIN_512_STATE_WORDS)#define SKEIN1024_STATE_BITS (64*SKEIN1024_STATE_WORDS) -#define SKEIN_256_BLOCK_BYTES ( 8*SKEIN_256_STATE_WORDS) -#define SKEIN_512_BLOCK_BYTES ( 8*SKEIN_512_STATE_WORDS) -#define SKEIN1024_BLOCK_BYTES ( 8*SKEIN1024_STATE_WORDS) +#define SKEIN_256_BLOCK_BYTES (8*SKEIN_256_STATE_WORDS) +#define SKEIN_512_BLOCK_BYTES (8*SKEIN_512_STATE_WORDS) +#define SKEIN1024_BLOCK_BYTES (8*SKEIN1024_STATE_WORDS)struct skein_ctx_hdr {
@@ -92,17 +92,17 @@ struct skein1024_ctx /* 1024-bit Skein hash context };/* Skein APIs for (incremental) "straight hashing" */ -int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen); -int Skein_512_Init (struct skein_512_ctx *ctx,size_t hashBitLen); -int Skein1024_Init (struct skein1024_ctx *ctx,size_t hashBitLen); +int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen); +int Skein_512_Init (struct skein_512_ctx *ctx,size_t hashBitLen); +int Skein1024_Init (struct skein1024_ctx *ctx,size_t hashBitLen);int Skein_256_Update (struct skein_256_ctx *ctx,const u8 *msg,size_t msgByteCnt);int Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg,size_t msgByteCnt);int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_256_Final (struct skein_256_ctx *ctx,u8 *hashVal); -int Skein_512_Final (struct skein_512_ctx *ctx,u8 *hashVal); -int Skein1024_Final (struct skein1024_ctx *ctx,u8 *hashVal); +int Skein_256_Final (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Final (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Final (struct skein1024_ctx *ctx,u8 *hashVal);/* ** Skein APIs for "extended" initialization: MAC keys, tree hashing.
@@ -135,9 +135,9 @@ int Skein1024_Final_Pad(struct skein1024_ctx *ctx, u8 *hashVal);#define SKEIN_TREE_HASH (1)#endif #if SKEIN_TREE_HASH -int Skein_256_Output (struct skein_256_ctx *ctx,u8 *hashVal); -int Skein_512_Output (struct skein_512_ctx *ctx,u8 *hashVal); -int Skein1024_Output (struct skein1024_ctx *ctx,u8 *hashVal); +int Skein_256_Output (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Output (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Output (struct skein1024_ctx *ctx,u8 *hashVal);#endif /*****************************************************************
@@ -158,18 +158,18 @@ int Skein1024_Output (struct skein1024_ctx *ctx, u8 *hashVal);#define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* bit 127 : final block flag */ /* tweak word T[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) +#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 */ #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 */ -#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 */ +#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 */ #define SKEIN_BLK_TYPE_PK (12)/* public key (for digital signature hashing) */ #define SKEIN_BLK_TYPE_KDF (16)/* key identifier for KDF */ #define SKEIN_BLK_TYPE_NONCE (20)/* nonce for PRNG */
@@ -197,73 +197,73 @@ int Skein1024_Output (struct skein1024_ctx *ctx, u8 *hashVal);#define SKEIN_ID_STRING_LE (0x33414853)/* "SHA3" (little-endian)*/ #endif -#define SKEIN_MK_64 (hi32,lo32) ((lo32) + (((u64) (hi32)) << 32)) -#define SKEIN_SCHEMA_VER SKEIN_MK_64(SKEIN_VERSION,SKEIN_ID_STRING_LE) -#define SKEIN_KS_PARITY SKEIN_MK_64(0x1BD11BDA,0xA9FC1A22) +#define SKEIN_MK_64 (hi32, lo32) ((lo32) + (((u64) (hi32)) << 32)) +#define SKEIN_SCHEMA_VER SKEIN_MK_64(SKEIN_VERSION, SKEIN_ID_STRING_LE) +#define SKEIN_KS_PARITY SKEIN_MK_64(0x1BD11BDA, 0xA9FC1A22)#define SKEIN_CFG_STR_LEN (4*8)/* bit field definitions in config block treeInfo word */ -#define SKEIN_CFG_TREE_LEAF_SIZE_POS ( 0) -#define SKEIN_CFG_TREE_NODE_SIZE_POS ( 8) +#define SKEIN_CFG_TREE_LEAF_SIZE_POS (0) +#define SKEIN_CFG_TREE_NODE_SIZE_POS (8)#define SKEIN_CFG_TREE_MAX_LEVEL_POS (16)#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS)#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS)#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS) -#define SKEIN_CFG_TREE_INFO (leaf,node,maxLvl) \ - ( (((u64)(leaf )) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ - (((u64)(node )) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ - (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS) ) +#define SKEIN_CFG_TREE_INFO (leaf, node, maxLvl) \ + ((((u64)(leaf)) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ + (((u64)(node)) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ + (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS)) -#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0,0,0)/* use as treeInfo in InitExt() call for sequential processing */ +#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0, 0, 0)/* use as treeInfo in InitExt() call for sequential processing */ /* ** Skein macros for getting/setting tweak words, etc. ** These are useful for partial input bytes, hash tree init/update, etc. **/ -#define Skein_Get_Tweak (ctxPtr,TWK_NUM ) ((ctxPtr)->h.T[TWK_NUM]) -#define Skein_Set_Tweak (ctxPtr,TWK_NUM ,tVal) {(ctxPtr)->h.T[TWK_NUM] = (tVal);} +#define Skein_Get_Tweak (ctxPtr,TWK_NUM ) ((ctxPtr)->h.T[TWK_NUM]) +#define Skein_Set_Tweak (ctxPtr,TWK_NUM , tVal) {(ctxPtr)->h.T[TWK_NUM] = (tVal); } -#define Skein_Get_T0 (ctxPtr) Skein_Get_Tweak(ctxPtr,0) -#define Skein_Get_T1 (ctxPtr) Skein_Get_Tweak(ctxPtr,1) -#define Skein_Set_T0 (ctxPtr,T0 ) Skein_Set_Tweak(ctxPtr,0,T0) -#define Skein_Set_T1 (ctxPtr,T1 ) Skein_Set_Tweak(ctxPtr,1,T1) +#define Skein_Get_T0 (ctxPtr) Skein_Get_Tweak(ctxPtr, 0) +#define Skein_Get_T1 (ctxPtr) Skein_Get_Tweak(ctxPtr, 1) +#define Skein_Set_T0 (ctxPtr,T0 ) Skein_Set_Tweak(ctxPtr, 0, T0) +#define Skein_Set_T1 (ctxPtr,T1 ) Skein_Set_Tweak(ctxPtr, 1, T1)/* set both tweak words at once */ -#define Skein_Set_T0_T1 (ctxPtr,T0 ,T1 ) \ +#define Skein_Set_T0_T1 (ctxPtr,T0 ,T1 ) \ { \ - Skein_Set_T0(ctxPtr,(T0)); \ - Skein_Set_T1(ctxPtr,(T1)); \ + Skein_Set_T0(ctxPtr, (T0)); \ + Skein_Set_T1(ctxPtr, (T1)); \ } -#define Skein_Set_Type (ctxPtr,BLK_TYPE ) \ - Skein_Set_T1(ctxPtr,SKEIN_T1_BLK_TYPE_##BLK_TYPE) +#define Skein_Set_Type (ctxPtr,BLK_TYPE ) \ + Skein_Set_T1(ctxPtr, SKEIN_T1_BLK_TYPE_##BLK_TYPE)/* set up for starting with a new type: h.T[0]=0; h.T[1] = NEW_TYPE; h.bCnt=0; */ -#define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) \ - { Skein_Set_T0_T1(ctxPtr,0,SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt=0; } +#define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) \ + { Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt = 0; }#define Skein_Clear_First_Flag (hdr) { (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; }#define Skein_Set_Bit_Pad_Flag (hdr) { (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; } -#define Skein_Set_Tree_Level (hdr,height) { (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height);} +#define Skein_Set_Tree_Level (hdr, height) { (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height); }/***************************************************************** ** "Internal" Skein definitions for debugging and error checking ******************************************************************/ -#ifdef SKEIN_DEBUG /* examine/display intermediate values? */ +#ifdef SKEIN_DEBUG /* examine/display intermediate values? */ #include "skein_debug.h" #else /* default is no callouts */ -#define Skein_Show_Block (bits,ctx,X ,blkPtr,wPtr,ksEvenPtr,ksOddPtr) -#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,outPtr) -#define Skein_Show_Key (bits,ctx,key,keyBytes) +#define Skein_Show_Block (bits, ctx,X , blkPtr, wPtr, ksEvenPtr, ksOddPtr) +#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, outPtr) +#define Skein_Show_Key (bits, ctx, key, keyBytes)#endif -#define Skein_Assert (x,retCode)/* default: ignore all Asserts, for performance */ +#define Skein_Assert (x, retCode)/* default: ignore all Asserts, for performance */ #define Skein_assert (x)/*****************************************************************
@@ -272,34 +272,34 @@ int Skein1024_Output (struct skein1024_ctx *ctx, u8 *hashVal);enum {/* Skein_256 round rotation constants */ -R_256_0_0 =14 ,R_256_0_1 =16 , -R_256_1_0 =52 ,R_256_1_1 =57 , -R_256_2_0 =23 ,R_256_2_1 =40 , -R_256_3_0 =5 ,R_256_3_1 =37 , -R_256_4_0 =25 ,R_256_4_1 =33 , -R_256_5_0 =46 ,R_256_5_1 =12 , -R_256_6_0 =58 ,R_256_6_1 =22 , -R_256_7_0 =32 ,R_256_7_1 =32 , +R_256_0_0 =14 ,R_256_0_1 =16 , +R_256_1_0 =52 ,R_256_1_1 =57 , +R_256_2_0 =23 ,R_256_2_1 =40 , +R_256_3_0 =5 ,R_256_3_1 =37 , +R_256_4_0 =25 ,R_256_4_1 =33 , +R_256_5_0 =46 ,R_256_5_1 =12 , +R_256_6_0 =58 ,R_256_6_1 =22 , +R_256_7_0 =32 ,R_256_7_1 =32 ,/* Skein_512 round rotation constants */ -R_512_0_0 =46 ,R_512_0_1 =36 ,R_512_0_2 =19 ,R_512_0_3 =37 , -R_512_1_0 =33 ,R_512_1_1 =27 ,R_512_1_2 =14 ,R_512_1_3 =42 , -R_512_2_0 =17 ,R_512_2_1 =49 ,R_512_2_2 =36 ,R_512_2_3 =39 , -R_512_3_0 =44 ,R_512_3_1 =9 ,R_512_3_2 =54 ,R_512_3_3 =56 , -R_512_4_0 =39 ,R_512_4_1 =30 ,R_512_4_2 =34 ,R_512_4_3 =24 , -R_512_5_0 =13 ,R_512_5_1 =50 ,R_512_5_2 =10 ,R_512_5_3 =17 , -R_512_6_0 =25 ,R_512_6_1 =29 ,R_512_6_2 =39 ,R_512_6_3 =43 , -R_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 , +R_512_0_0 =46 ,R_512_0_1 =36 ,R_512_0_2 =19 ,R_512_0_3 =37 , +R_512_1_0 =33 ,R_512_1_1 =27 ,R_512_1_2 =14 ,R_512_1_3 =42 , +R_512_2_0 =17 ,R_512_2_1 =49 ,R_512_2_2 =36 ,R_512_2_3 =39 , +R_512_3_0 =44 ,R_512_3_1 =9 ,R_512_3_2 =54 ,R_512_3_3 =56 , +R_512_4_0 =39 ,R_512_4_1 =30 ,R_512_4_2 =34 ,R_512_4_3 =24 , +R_512_5_0 =13 ,R_512_5_1 =50 ,R_512_5_2 =10 ,R_512_5_3 =17 , +R_512_6_0 =25 ,R_512_6_1 =29 ,R_512_6_2 =39 ,R_512_6_3 =43 , +R_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 ,/* Skein1024 round rotation constants */ -R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , -R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , -R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , -R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , -R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , -R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , -R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , -R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 +R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , +R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , +R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , +R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , +R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , +R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , +R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , +R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 };#ifndef SKEIN_ROUNDS
@@ -308,8 +308,8 @@ enum#define SKEIN1024_ROUNDS_TOTAL (80)#else /* allow command-line define in range 8*(5..14) */ #define SKEIN_256_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/100) + 5) % 10) + 5)) -#define SKEIN_512_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/ 10) + 5) % 10) + 5)) -#define SKEIN1024_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS ) + 5) % 10) + 5)) +#define SKEIN_512_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/10) + 5) % 10) + 5)) +#define SKEIN1024_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS) + 5) % 10) + 5))#endif #endif /* ifndef _SKEIN_H_ */
drivers/staging/skein/include/skein_iv.h +112 -112
290 lines not on this page · raw message
drivers/staging/skein/skein.c +176 -176
778 lines not on this page · raw message
drivers/staging/skein/skeinApi.c +11 -11
@@ -31,7 +31,7 @@ int skeinCtxPrepare(struct skein_ctx *ctx, enum skein_size size) {Skein_Assert (ctx && size,SKEIN_FAIL ); -memset (ctx ,0 ,sizeof (struct skein_ctx )); +memset (ctx ,0 ,sizeof (struct skein_ctx )); ctx->skeinSize = size;return SKEIN_SUCCESS ;
@@ -97,18 +97,18 @@ int skeinMacInit(struct skein_ctx *ctx, const u8 *key, size_t keyLen,case Skein256: ret =Skein_256_InitExt (&ctx->m.s256, hashBitLen, treeInfo, - (const u8 *)key, keyLen); + (const u8 *)key, keyLen);break ;case Skein512: ret =Skein_512_InitExt (&ctx->m.s512, hashBitLen, treeInfo, - (const u8 *)key, keyLen); + (const u8 *)key, keyLen);break ;case Skein1024: ret =Skein1024_InitExt (&ctx->m.s1024, hashBitLen, treeInfo, - (const u8 *)key, keyLen); + (const u8 *)key, keyLen);break ; }
@@ -146,13 +146,13 @@ int skeinUpdate(struct skein_ctx *ctx, const u8 *msg,switch (ctx->skeinSize) {case Skein256: - ret =Skein_256_Update (&ctx->m.s256, (const u8 *)msg, msgByteCnt); + ret =Skein_256_Update (&ctx->m.s256, (const u8 *)msg, msgByteCnt);break ;case Skein512: - ret =Skein_512_Update (&ctx->m.s512, (const u8 *)msg, msgByteCnt); + ret =Skein_512_Update (&ctx->m.s512, (const u8 *)msg, msgByteCnt);break ;case Skein1024: - ret =Skein1024_Update (&ctx->m.s1024, (const u8 *)msg, msgByteCnt); + ret =Skein1024_Update (&ctx->m.s1024, (const u8 *)msg, msgByteCnt);break ; }return ret;
@@ -186,7 +186,7 @@ int skeinUpdateBits(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->skeinSize /8 ; + up = (u8 *)ctx->m.s256.X + ctx->skeinSize /8 ;Skein_Set_Bit_Pad_Flag (ctx->m.h);/* set tweak flag for the skeinFinal call */
@@ -206,13 +206,13 @@ int skeinFinal(struct skein_ctx *ctx, u8 *hash)switch (ctx->skeinSize) {case Skein256: - ret =Skein_256_Final (&ctx->m.s256, (u8 *)hash); + ret =Skein_256_Final (&ctx->m.s256, (u8 *)hash);break ;case Skein512: - ret =Skein_512_Final (&ctx->m.s512, (u8 *)hash); + ret =Skein_512_Final (&ctx->m.s512, (u8 *)hash);break ;case Skein1024: - ret =Skein1024_Final (&ctx->m.s1024, (u8 *)hash); + ret =Skein1024_Final (&ctx->m.s1024, (u8 *)hash);break ; }return ret;
drivers/staging/skein/skeinBlockNo3F.c +10 -10
@@ -147,16 +147,16 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, blkPtr +=SKEIN1024_BLOCK_BYTES ;/* do the final "feedforward" xor, update context chaining vars */ - ctx->X[0 ] = ctx->X[0 ] ^ w[0 ]; - ctx->X[1 ] = ctx->X[1 ] ^ w[1 ]; - ctx->X[2 ] = ctx->X[2 ] ^ w[2 ]; - ctx->X[3 ] = ctx->X[3 ] ^ w[3 ]; - ctx->X[4 ] = ctx->X[4 ] ^ w[4 ]; - ctx->X[5 ] = ctx->X[5 ] ^ w[5 ]; - ctx->X[6 ] = ctx->X[6 ] ^ w[6 ]; - ctx->X[7 ] = ctx->X[7 ] ^ w[7 ]; - ctx->X[8 ] = ctx->X[8 ] ^ w[8 ]; - ctx->X[9 ] = ctx->X[9 ] ^ w[9 ]; + ctx->X[0 ] = ctx->X[0 ] ^ w[0 ]; + ctx->X[1 ] = ctx->X[1 ] ^ w[1 ]; + ctx->X[2 ] = ctx->X[2 ] ^ w[2 ]; + ctx->X[3 ] = ctx->X[3 ] ^ w[3 ]; + ctx->X[4 ] = ctx->X[4 ] ^ w[4 ]; + ctx->X[5 ] = ctx->X[5 ] ^ w[5 ]; + ctx->X[6 ] = ctx->X[6 ] ^ w[6 ]; + ctx->X[7 ] = ctx->X[7 ] ^ w[7 ]; + ctx->X[8 ] = ctx->X[8 ] ^ w[8 ]; + ctx->X[9 ] = ctx->X[9 ] ^ w[9 ]; ctx->X[10 ] = ctx->X[10 ] ^ w[10 ]; ctx->X[11 ] = ctx->X[11 ] ^ w[11 ]; ctx->X[12 ] = ctx->X[12 ] ^ w[12 ];
drivers/staging/skein/skein_block.c +255 -258
721 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v2 11/21 staging: crypto: skein: dos2unix, remove executable perms
In reply to Jason Cooper$ find drivers/staging/skein -type f | xargs todos -d $ chmod -x drivers/staging/skein/skeinApi.c $ chmod -x drivers/staging/skein/include/skeinApi.h
--- drivers/staging/skein/include/skein.h | 630 ++++++------- drivers/staging/skein/include/skeinApi.h | 0 drivers/staging/skein/include/skein_iv.h | 398 ++++----- drivers/staging/skein/skein.c | 1442 +++++++++++++++--------------- drivers/staging/skein/skeinApi.c | 0 drivers/staging/skein/skeinBlockNo3F.c | 344 +++---- drivers/staging/skein/skein_block.c | 1372 ++++++++++++++-------------- 7 files changed, 2093 insertions(+), 2093 deletions(-) mode change 100755 => 100644 drivers/staging/skein/include/skeinApi.h mode change 100755 => 100644 drivers/staging/skein/skeinApi.c
drivers/staging/skein/include/skein.h +315 -315
@@ -1,315 +1,315 @@ -#ifndef _SKEIN_H_ -#define _SKEIN_H_ 1 -/************************************************************************** -** -** Interface declarations and internal definitions for Skein hashing. -** -** Source code author: Doug Whiting, 2008. -** -** This algorithm and source code is released to the public domain. -** -*************************************************************************** -** -** The following compile-time switches may be defined to control some -** tradeoffs between speed, code size, error checking, and security. -** -** The "default" note explains what happens when the switch is not defined. -** -** SKEIN_DEBUG -- make callouts from inside Skein code -** to examine/display intermediate values. -** [default: no callouts (no overhead)] -** -** SKEIN_ERR_CHECK -- how error checking is handled inside Skein -** code. If not defined, most error checking -** is disabled (for performance). Otherwise, -** the switch value is interpreted as: -** 0: use assert() to flag errors -** 1: return SKEIN_FAIL to flag errors -** -***************************************************************************/ - -#ifndef RotL_64 -#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N)))) -#endif - -/* below two prototype assume we are handed aligned data */ -#define Skein_Put64_LSB_First (dst08, src64, bCnt) memcpy(dst08, src64, bCnt) -#define Skein_Get64_LSB_First (dst64, src08, wCnt) memcpy(dst64, src08, 8*(wCnt)) -#define Skein_Swap64 (w64) (w64) - -enum - { -SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ -SKEIN_FAIL =1 , -SKEIN_BAD_HASHLEN =2 - }; - -#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */ - -#define SKEIN_256_STATE_WORDS (4) -#define SKEIN_512_STATE_WORDS (8) -#define SKEIN1024_STATE_WORDS (16) -#define SKEIN_MAX_STATE_WORDS (16) - -#define SKEIN_256_STATE_BYTES (8*SKEIN_256_STATE_WORDS) -#define SKEIN_512_STATE_BYTES (8*SKEIN_512_STATE_WORDS) -#define SKEIN1024_STATE_BYTES (8*SKEIN1024_STATE_WORDS) - -#define SKEIN_256_STATE_BITS (64*SKEIN_256_STATE_WORDS) -#define SKEIN_512_STATE_BITS (64*SKEIN_512_STATE_WORDS) -#define SKEIN1024_STATE_BITS (64*SKEIN1024_STATE_WORDS) - -#define SKEIN_256_BLOCK_BYTES (8*SKEIN_256_STATE_WORDS) -#define SKEIN_512_BLOCK_BYTES (8*SKEIN_512_STATE_WORDS) -#define SKEIN1024_BLOCK_BYTES (8*SKEIN1024_STATE_WORDS) - -struct skein_ctx_hdr - { -size_t hashBitLen;/* size of hash result, in bits */ -size_t bCnt;/* current byte count in buffer b[] */ -u64 T[SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[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 */ -u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (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 */ -u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }; - -struct skein1024_ctx /* 1024-bit Skein hash context structure */ - { -struct skein_ctx_hdr h;/* common header context variables */ -u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ -u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }; - -/* Skein APIs for (incremental) "straight hashing" */ -int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen); -int Skein_512_Init (struct skein_512_ctx *ctx,size_t hashBitLen); -int Skein1024_Init (struct skein1024_ctx *ctx,size_t hashBitLen); - -int Skein_256_Update (struct skein_256_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg,size_t msgByteCnt); - -int Skein_256_Final (struct skein_256_ctx *ctx,u8 *hashVal); -int Skein_512_Final (struct skein_512_ctx *ctx,u8 *hashVal); -int Skein1024_Final (struct skein1024_ctx *ctx,u8 *hashVal); - -/* -** Skein APIs for "extended" initialization: MAC keys, tree hashing. -** After an InitExt() call, just use Update/Final calls as with Init(). -** -** Notes: Same parameters as _Init() calls, plus treeInfo/key/keyBytes. -** When keyBytes == 0 and treeInfo == SKEIN_SEQUENTIAL, -** the results of InitExt() are identical to calling Init(). -** The function Init() may be called once to "precompute" the IV for -** a given hashBitLen value, then by saving a copy of the context -** the IV computation may be avoided in later calls. -** Similarly, the function InitExt() may be called once per MAC key -** to precompute the MAC IV, then a copy of the context saved and -** reused for each new MAC computation. -**/ -int Skein_256_InitExt (struct skein_256_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); -int Skein_512_InitExt (struct skein_512_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); -int Skein1024_InitExt (struct skein1024_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); - -/* -** Skein APIs for MAC and tree hash: -** Final_Pad: pad, do final block, but no OUTPUT type -** Output: do just the output stage -*/ -int Skein_256_Final_Pad (struct skein_256_ctx *ctx,u8 *hashVal); -int Skein_512_Final_Pad (struct skein_512_ctx *ctx,u8 *hashVal); -int Skein1024_Final_Pad (struct skein1024_ctx *ctx,u8 *hashVal); - -#ifndef SKEIN_TREE_HASH -#define SKEIN_TREE_HASH (1) -#endif -#if SKEIN_TREE_HASH -int Skein_256_Output (struct skein_256_ctx *ctx,u8 *hashVal); -int Skein_512_Output (struct skein_512_ctx *ctx,u8 *hashVal); -int Skein1024_Output (struct skein1024_ctx *ctx,u8 *hashVal); -#endif - -/***************************************************************** -** "Internal" Skein definitions -** -- not needed for sequential hashing API, but will be -** helpful for other uses of Skein (e.g., tree hash mode). -** -- included here so that they can be shared between -** reference and optimized code. -******************************************************************/ - -/* tweak word T[1]: bit field starting positions */ -#define SKEIN_T1_BIT (BIT ) ((BIT) - 64)/* offset 64 because it's the second word */ - -#define SKEIN_T1_POS_TREE_LVL SKEIN_T1_BIT(112)/* bits 112..118: level in hash tree */ -#define SKEIN_T1_POS_BIT_PAD SKEIN_T1_BIT(119)/* bit 119 : partial final input byte */ -#define SKEIN_T1_POS_BLK_TYPE SKEIN_T1_BIT(120)/* bits 120..125: type field */ -#define SKEIN_T1_POS_FIRST SKEIN_T1_BIT(126)/* bits 126 : first block flag */ -#define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* bit 127 : final block flag */ - -/* tweak word T[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 */ -#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 */ -#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 */ -#define SKEIN_BLK_TYPE_PK (12)/* public key (for digital signature hashing) */ -#define SKEIN_BLK_TYPE_KDF (16)/* key identifier for KDF */ -#define SKEIN_BLK_TYPE_NONCE (20)/* nonce for PRNG */ -#define SKEIN_BLK_TYPE_MSG (48)/* message processing */ -#define SKEIN_BLK_TYPE_OUT (63)/* output stage */ -#define SKEIN_BLK_TYPE_MASK (63)/* bit field mask */ - -#define SKEIN_T1_BLK_TYPE (T ) (((u64) (SKEIN_BLK_TYPE_##T)) << SKEIN_T1_POS_BLK_TYPE) -#define SKEIN_T1_BLK_TYPE_KEY SKEIN_T1_BLK_TYPE(KEY)/* key, for MAC and KDF */ -#define SKEIN_T1_BLK_TYPE_CFG SKEIN_T1_BLK_TYPE(CFG)/* configuration block */ -#define SKEIN_T1_BLK_TYPE_PERS SKEIN_T1_BLK_TYPE(PERS)/* personalization string */ -#define SKEIN_T1_BLK_TYPE_PK SKEIN_T1_BLK_TYPE(PK)/* public key (for digital signature hashing) */ -#define SKEIN_T1_BLK_TYPE_KDF SKEIN_T1_BLK_TYPE(KDF)/* key identifier for KDF */ -#define SKEIN_T1_BLK_TYPE_NONCE SKEIN_T1_BLK_TYPE(NONCE)/* nonce for PRNG */ -#define SKEIN_T1_BLK_TYPE_MSG SKEIN_T1_BLK_TYPE(MSG)/* message processing */ -#define SKEIN_T1_BLK_TYPE_OUT SKEIN_T1_BLK_TYPE(OUT)/* output stage */ -#define SKEIN_T1_BLK_TYPE_MASK SKEIN_T1_BLK_TYPE(MASK)/* field bit mask */ - -#define SKEIN_T1_BLK_TYPE_CFG_FINAL (SKEIN_T1_BLK_TYPE_CFG | SKEIN_T1_FLAG_FINAL) -#define SKEIN_T1_BLK_TYPE_OUT_FINAL (SKEIN_T1_BLK_TYPE_OUT | SKEIN_T1_FLAG_FINAL) - -#define SKEIN_VERSION (1) - -#ifndef SKEIN_ID_STRING_LE /* allow compile-time personalization */ -#define SKEIN_ID_STRING_LE (0x33414853)/* "SHA3" (little-endian)*/ -#endif - -#define SKEIN_MK_64 (hi32, lo32) ((lo32) + (((u64) (hi32)) << 32)) -#define SKEIN_SCHEMA_VER SKEIN_MK_64(SKEIN_VERSION, SKEIN_ID_STRING_LE) -#define SKEIN_KS_PARITY SKEIN_MK_64(0x1BD11BDA, 0xA9FC1A22) - -#define SKEIN_CFG_STR_LEN (4*8) - -/* bit field definitions in config block treeInfo word */ -#define SKEIN_CFG_TREE_LEAF_SIZE_POS (0) -#define SKEIN_CFG_TREE_NODE_SIZE_POS (8) -#define SKEIN_CFG_TREE_MAX_LEVEL_POS (16) - -#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS) -#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS) -#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS) - -#define SKEIN_CFG_TREE_INFO (leaf, node, maxLvl) \ - ((((u64)(leaf)) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ - (((u64)(node)) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ - (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS)) - -#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0, 0, 0)/* use as treeInfo in InitExt() call for sequential processing */ - -/* -** Skein macros for getting/setting tweak words, etc. -** These are useful for partial input bytes, hash tree init/update, etc. -**/ -#define Skein_Get_Tweak (ctxPtr,TWK_NUM ) ((ctxPtr)->h.T[TWK_NUM]) -#define Skein_Set_Tweak (ctxPtr,TWK_NUM , tVal) {(ctxPtr)->h.T[TWK_NUM] = (tVal); } - -#define Skein_Get_T0 (ctxPtr) Skein_Get_Tweak(ctxPtr, 0) -#define Skein_Get_T1 (ctxPtr) Skein_Get_Tweak(ctxPtr, 1) -#define Skein_Set_T0 (ctxPtr,T0 ) Skein_Set_Tweak(ctxPtr, 0, T0) -#define Skein_Set_T1 (ctxPtr,T1 ) Skein_Set_Tweak(ctxPtr, 1, T1) - -/* set both tweak words at once */ -#define Skein_Set_T0_T1 (ctxPtr,T0 ,T1 ) \ - { \ - Skein_Set_T0(ctxPtr, (T0)); \ - Skein_Set_T1(ctxPtr, (T1)); \ - } - -#define Skein_Set_Type (ctxPtr,BLK_TYPE ) \ - Skein_Set_T1(ctxPtr, SKEIN_T1_BLK_TYPE_##BLK_TYPE) - -/* set up for starting with a new type: h.T[0]=0; h.T[1] = NEW_TYPE; h.bCnt=0; */ -#define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) \ - { Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt = 0; } - -#define Skein_Clear_First_Flag (hdr) { (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; } -#define Skein_Set_Bit_Pad_Flag (hdr) { (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; } - -#define Skein_Set_Tree_Level (hdr, height) { (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height); } - -/***************************************************************** -** "Internal" Skein definitions for debugging and error checking -******************************************************************/ -#ifdef SKEIN_DEBUG /* examine/display intermediate values? */ -#include "skein_debug.h" -#else /* default is no callouts */ -#define Skein_Show_Block (bits, ctx,X , blkPtr, wPtr, ksEvenPtr, ksOddPtr) -#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, outPtr) -#define Skein_Show_Key (bits, ctx, key, keyBytes) -#endif - -#define Skein_Assert (x, retCode)/* default: ignore all Asserts, for performance */ -#define Skein_assert (x) - -/***************************************************************** -** Skein block function constants (shared across Ref and Opt code) -******************************************************************/ -enum - { -/* Skein_256 round rotation constants */ -R_256_0_0 =14 ,R_256_0_1 =16 , -R_256_1_0 =52 ,R_256_1_1 =57 , -R_256_2_0 =23 ,R_256_2_1 =40 , -R_256_3_0 =5 ,R_256_3_1 =37 , -R_256_4_0 =25 ,R_256_4_1 =33 , -R_256_5_0 =46 ,R_256_5_1 =12 , -R_256_6_0 =58 ,R_256_6_1 =22 , -R_256_7_0 =32 ,R_256_7_1 =32 , - -/* Skein_512 round rotation constants */ -R_512_0_0 =46 ,R_512_0_1 =36 ,R_512_0_2 =19 ,R_512_0_3 =37 , -R_512_1_0 =33 ,R_512_1_1 =27 ,R_512_1_2 =14 ,R_512_1_3 =42 , -R_512_2_0 =17 ,R_512_2_1 =49 ,R_512_2_2 =36 ,R_512_2_3 =39 , -R_512_3_0 =44 ,R_512_3_1 =9 ,R_512_3_2 =54 ,R_512_3_3 =56 , -R_512_4_0 =39 ,R_512_4_1 =30 ,R_512_4_2 =34 ,R_512_4_3 =24 , -R_512_5_0 =13 ,R_512_5_1 =50 ,R_512_5_2 =10 ,R_512_5_3 =17 , -R_512_6_0 =25 ,R_512_6_1 =29 ,R_512_6_2 =39 ,R_512_6_3 =43 , -R_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 , - -/* Skein1024 round rotation constants */ -R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , -R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , -R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , -R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , -R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , -R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , -R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , -R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 - }; - -#ifndef SKEIN_ROUNDS -#define SKEIN_256_ROUNDS_TOTAL (72)/* number of rounds for the different block sizes */ -#define SKEIN_512_ROUNDS_TOTAL (72) -#define SKEIN1024_ROUNDS_TOTAL (80) -#else /* allow command-line define in range 8*(5..14) */ -#define SKEIN_256_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/100) + 5) % 10) + 5)) -#define SKEIN_512_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/10) + 5) % 10) + 5)) -#define SKEIN1024_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS) + 5) % 10) + 5)) -#endif - -#endif /* ifndef _SKEIN_H_ */ +#ifndef _SKEIN_H_ +#define _SKEIN_H_ 1 +/************************************************************************** +** +** Interface declarations and internal definitions for Skein hashing. +** +** Source code author: Doug Whiting, 2008. +** +** This algorithm and source code is released to the public domain. +** +*************************************************************************** +** +** The following compile-time switches may be defined to control some +** tradeoffs between speed, code size, error checking, and security. +** +** The "default" note explains what happens when the switch is not defined. +** +** SKEIN_DEBUG -- make callouts from inside Skein code +** to examine/display intermediate values. +** [default: no callouts (no overhead)] +** +** SKEIN_ERR_CHECK -- how error checking is handled inside Skein +** code. If not defined, most error checking +** is disabled (for performance). Otherwise, +** the switch value is interpreted as: +** 0: use assert() to flag errors +** 1: return SKEIN_FAIL to flag errors +** +***************************************************************************/ + +#ifndef RotL_64 +#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N)))) +#endif + +/* below two prototype assume we are handed aligned data */ +#define Skein_Put64_LSB_First (dst08, src64, bCnt) memcpy(dst08, src64, bCnt) +#define Skein_Get64_LSB_First (dst64, src08, wCnt) memcpy(dst64, src08, 8*(wCnt)) +#define Skein_Swap64 (w64) (w64) + +enum + { +SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ +SKEIN_FAIL =1 , +SKEIN_BAD_HASHLEN =2 + }; + +#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */ + +#define SKEIN_256_STATE_WORDS (4) +#define SKEIN_512_STATE_WORDS (8) +#define SKEIN1024_STATE_WORDS (16) +#define SKEIN_MAX_STATE_WORDS (16) + +#define SKEIN_256_STATE_BYTES (8*SKEIN_256_STATE_WORDS) +#define SKEIN_512_STATE_BYTES (8*SKEIN_512_STATE_WORDS) +#define SKEIN1024_STATE_BYTES (8*SKEIN1024_STATE_WORDS) + +#define SKEIN_256_STATE_BITS (64*SKEIN_256_STATE_WORDS) +#define SKEIN_512_STATE_BITS (64*SKEIN_512_STATE_WORDS) +#define SKEIN1024_STATE_BITS (64*SKEIN1024_STATE_WORDS) + +#define SKEIN_256_BLOCK_BYTES (8*SKEIN_256_STATE_WORDS) +#define SKEIN_512_BLOCK_BYTES (8*SKEIN_512_STATE_WORDS) +#define SKEIN1024_BLOCK_BYTES (8*SKEIN1024_STATE_WORDS) + +struct skein_ctx_hdr + { +size_t hashBitLen;/* size of hash result, in bits */ +size_t bCnt;/* current byte count in buffer b[] */ +u64 T[SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[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 */ +u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (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 */ +u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ + }; + +struct skein1024_ctx /* 1024-bit Skein hash context structure */ + { +struct skein_ctx_hdr h;/* common header context variables */ +u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ + }; + +/* Skein APIs for (incremental) "straight hashing" */ +int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen); +int Skein_512_Init (struct skein_512_ctx *ctx,size_t hashBitLen); +int Skein1024_Init (struct skein1024_ctx *ctx,size_t hashBitLen); + +int Skein_256_Update (struct skein_256_ctx *ctx,const u8 *msg,size_t msgByteCnt); +int Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg,size_t msgByteCnt); +int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg,size_t msgByteCnt); + +int Skein_256_Final (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Final (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Final (struct skein1024_ctx *ctx,u8 *hashVal); + +/* +** Skein APIs for "extended" initialization: MAC keys, tree hashing. +** After an InitExt() call, just use Update/Final calls as with Init(). +** +** Notes: Same parameters as _Init() calls, plus treeInfo/key/keyBytes. +** When keyBytes == 0 and treeInfo == SKEIN_SEQUENTIAL, +** the results of InitExt() are identical to calling Init(). +** The function Init() may be called once to "precompute" the IV for +** a given hashBitLen value, then by saving a copy of the context +** the IV computation may be avoided in later calls. +** Similarly, the function InitExt() may be called once per MAC key +** to precompute the MAC IV, then a copy of the context saved and +** reused for each new MAC computation. +**/ +int Skein_256_InitExt (struct skein_256_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein_512_InitExt (struct skein_512_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein1024_InitExt (struct skein1024_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); + +/* +** Skein APIs for MAC and tree hash: +** Final_Pad: pad, do final block, but no OUTPUT type +** Output: do just the output stage +*/ +int Skein_256_Final_Pad (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Final_Pad (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Final_Pad (struct skein1024_ctx *ctx,u8 *hashVal); + +#ifndef SKEIN_TREE_HASH +#define SKEIN_TREE_HASH (1) +#endif +#if SKEIN_TREE_HASH +int Skein_256_Output (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Output (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Output (struct skein1024_ctx *ctx,u8 *hashVal); +#endif + +/***************************************************************** +** "Internal" Skein definitions +** -- not needed for sequential hashing API, but will be +** helpful for other uses of Skein (e.g., tree hash mode). +** -- included here so that they can be shared between +** reference and optimized code. +******************************************************************/ + +/* tweak word T[1]: bit field starting positions */ +#define SKEIN_T1_BIT (BIT ) ((BIT) - 64)/* offset 64 because it's the second word */ + +#define SKEIN_T1_POS_TREE_LVL SKEIN_T1_BIT(112)/* bits 112..118: level in hash tree */ +#define SKEIN_T1_POS_BIT_PAD SKEIN_T1_BIT(119)/* bit 119 : partial final input byte */ +#define SKEIN_T1_POS_BLK_TYPE SKEIN_T1_BIT(120)/* bits 120..125: type field */ +#define SKEIN_T1_POS_FIRST SKEIN_T1_BIT(126)/* bits 126 : first block flag */ +#define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* bit 127 : final block flag */ + +/* tweak word T[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 */ +#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 */ +#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 */ +#define SKEIN_BLK_TYPE_PK (12)/* public key (for digital signature hashing) */ +#define SKEIN_BLK_TYPE_KDF (16)/* key identifier for KDF */ +#define SKEIN_BLK_TYPE_NONCE (20)/* nonce for PRNG */ +#define SKEIN_BLK_TYPE_MSG (48)/* message processing */ +#define SKEIN_BLK_TYPE_OUT (63)/* output stage */ +#define SKEIN_BLK_TYPE_MASK (63)/* bit field mask */ + +#define SKEIN_T1_BLK_TYPE (T ) (((u64) (SKEIN_BLK_TYPE_##T)) << SKEIN_T1_POS_BLK_TYPE) +#define SKEIN_T1_BLK_TYPE_KEY SKEIN_T1_BLK_TYPE(KEY)/* key, for MAC and KDF */ +#define SKEIN_T1_BLK_TYPE_CFG SKEIN_T1_BLK_TYPE(CFG)/* configuration block */ +#define SKEIN_T1_BLK_TYPE_PERS SKEIN_T1_BLK_TYPE(PERS)/* personalization string */ +#define SKEIN_T1_BLK_TYPE_PK SKEIN_T1_BLK_TYPE(PK)/* public key (for digital signature hashing) */ +#define SKEIN_T1_BLK_TYPE_KDF SKEIN_T1_BLK_TYPE(KDF)/* key identifier for KDF */ +#define SKEIN_T1_BLK_TYPE_NONCE SKEIN_T1_BLK_TYPE(NONCE)/* nonce for PRNG */ +#define SKEIN_T1_BLK_TYPE_MSG SKEIN_T1_BLK_TYPE(MSG)/* message processing */ +#define SKEIN_T1_BLK_TYPE_OUT SKEIN_T1_BLK_TYPE(OUT)/* output stage */ +#define SKEIN_T1_BLK_TYPE_MASK SKEIN_T1_BLK_TYPE(MASK)/* field bit mask */ + +#define SKEIN_T1_BLK_TYPE_CFG_FINAL (SKEIN_T1_BLK_TYPE_CFG | SKEIN_T1_FLAG_FINAL) +#define SKEIN_T1_BLK_TYPE_OUT_FINAL (SKEIN_T1_BLK_TYPE_OUT | SKEIN_T1_FLAG_FINAL) + +#define SKEIN_VERSION (1) + +#ifndef SKEIN_ID_STRING_LE /* allow compile-time personalization */ +#define SKEIN_ID_STRING_LE (0x33414853)/* "SHA3" (little-endian)*/ +#endif + +#define SKEIN_MK_64 (hi32, lo32) ((lo32) + (((u64) (hi32)) << 32)) +#define SKEIN_SCHEMA_VER SKEIN_MK_64(SKEIN_VERSION, SKEIN_ID_STRING_LE) +#define SKEIN_KS_PARITY SKEIN_MK_64(0x1BD11BDA, 0xA9FC1A22) + +#define SKEIN_CFG_STR_LEN (4*8) + +/* bit field definitions in config block treeInfo word */ +#define SKEIN_CFG_TREE_LEAF_SIZE_POS (0) +#define SKEIN_CFG_TREE_NODE_SIZE_POS (8) +#define SKEIN_CFG_TREE_MAX_LEVEL_POS (16) + +#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS) +#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS) +#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS) + +#define SKEIN_CFG_TREE_INFO (leaf, node, maxLvl) \ + ((((u64)(leaf)) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ + (((u64)(node)) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ + (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS)) + +#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0, 0, 0)/* use as treeInfo in InitExt() call for sequential processing */ + +/* +** Skein macros for getting/setting tweak words, etc. +** These are useful for partial input bytes, hash tree init/update, etc. +**/ +#define Skein_Get_Tweak (ctxPtr,TWK_NUM ) ((ctxPtr)->h.T[TWK_NUM]) +#define Skein_Set_Tweak (ctxPtr,TWK_NUM , tVal) {(ctxPtr)->h.T[TWK_NUM] = (tVal); } + +#define Skein_Get_T0 (ctxPtr) Skein_Get_Tweak(ctxPtr, 0) +#define Skein_Get_T1 (ctxPtr) Skein_Get_Tweak(ctxPtr, 1) +#define Skein_Set_T0 (ctxPtr,T0 ) Skein_Set_Tweak(ctxPtr, 0, T0) +#define Skein_Set_T1 (ctxPtr,T1 ) Skein_Set_Tweak(ctxPtr, 1, T1) + +/* set both tweak words at once */ +#define Skein_Set_T0_T1 (ctxPtr,T0 ,T1 ) \ + { \ + Skein_Set_T0(ctxPtr, (T0)); \ + Skein_Set_T1(ctxPtr, (T1)); \ + } + +#define Skein_Set_Type (ctxPtr,BLK_TYPE ) \ + Skein_Set_T1(ctxPtr, SKEIN_T1_BLK_TYPE_##BLK_TYPE) + +/* set up for starting with a new type: h.T[0]=0; h.T[1] = NEW_TYPE; h.bCnt=0; */ +#define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) \ + { Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt = 0; } + +#define Skein_Clear_First_Flag (hdr) { (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; } +#define Skein_Set_Bit_Pad_Flag (hdr) { (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; } + +#define Skein_Set_Tree_Level (hdr, height) { (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height); } + +/***************************************************************** +** "Internal" Skein definitions for debugging and error checking +******************************************************************/ +#ifdef SKEIN_DEBUG /* examine/display intermediate values? */ +#include "skein_debug.h" +#else /* default is no callouts */ +#define Skein_Show_Block (bits, ctx,X , blkPtr, wPtr, ksEvenPtr, ksOddPtr) +#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, outPtr) +#define Skein_Show_Key (bits, ctx, key, keyBytes) +#endif + +#define Skein_Assert (x, retCode)/* default: ignore all Asserts, for performance */ +#define Skein_assert (x) + +/***************************************************************** +** Skein block function constants (shared across Ref and Opt code) +******************************************************************/ +enum + { +/* Skein_256 round rotation constants */ +R_256_0_0 =14 ,R_256_0_1 =16 , +R_256_1_0 =52 ,R_256_1_1 =57 , +R_256_2_0 =23 ,R_256_2_1 =40 , +R_256_3_0 =5 ,R_256_3_1 =37 , +R_256_4_0 =25 ,R_256_4_1 =33 , +R_256_5_0 =46 ,R_256_5_1 =12 , +R_256_6_0 =58 ,R_256_6_1 =22 , +R_256_7_0 =32 ,R_256_7_1 =32 , + +/* Skein_512 round rotation constants */ +R_512_0_0 =46 ,R_512_0_1 =36 ,R_512_0_2 =19 ,R_512_0_3 =37 , +R_512_1_0 =33 ,R_512_1_1 =27 ,R_512_1_2 =14 ,R_512_1_3 =42 , +R_512_2_0 =17 ,R_512_2_1 =49 ,R_512_2_2 =36 ,R_512_2_3 =39 , +R_512_3_0 =44 ,R_512_3_1 =9 ,R_512_3_2 =54 ,R_512_3_3 =56 , +R_512_4_0 =39 ,R_512_4_1 =30 ,R_512_4_2 =34 ,R_512_4_3 =24 , +R_512_5_0 =13 ,R_512_5_1 =50 ,R_512_5_2 =10 ,R_512_5_3 =17 , +R_512_6_0 =25 ,R_512_6_1 =29 ,R_512_6_2 =39 ,R_512_6_3 =43 , +R_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 , + +/* Skein1024 round rotation constants */ +R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , +R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , +R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , +R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , +R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , +R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , +R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , +R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 + }; + +#ifndef SKEIN_ROUNDS +#define SKEIN_256_ROUNDS_TOTAL (72)/* number of rounds for the different block sizes */ +#define SKEIN_512_ROUNDS_TOTAL (72) +#define SKEIN1024_ROUNDS_TOTAL (80) +#else /* allow command-line define in range 8*(5..14) */ +#define SKEIN_256_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/100) + 5) % 10) + 5)) +#define SKEIN_512_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/10) + 5) % 10) + 5)) +#define SKEIN1024_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS) + 5) % 10) + 5)) +#endif + +#endif /* ifndef _SKEIN_H_ */
drivers/staging/skein/include/skeinApi.h +0 -0
drivers/staging/skein/include/skein_iv.h +199 -199
398 lines not on this page · raw message
drivers/staging/skein/skein.c +721 -721
1,442 lines not on this page · raw message
drivers/staging/skein/skeinApi.c +0 -0
drivers/staging/skein/skeinBlockNo3F.c +172 -172
344 lines not on this page · raw message
drivers/staging/skein/skein_block.c +686 -686
186 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
1.9.1
Part of the diff is not shown here. View the raw message.
PATCH v2 12/21 staging: crypto: skein: fix leading whitespace
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 136 +- drivers/staging/skein/include/skeinApi.h | 284 +-- drivers/staging/skein/include/skein_iv.h | 276 +-- drivers/staging/skein/include/threefishApi.h | 230 +-- drivers/staging/skein/skein.c | 1126 +++++------ drivers/staging/skein/skeinApi.c | 320 +-- drivers/staging/skein/skeinBlockNo3F.c | 286 +-- drivers/staging/skein/skein_block.c | 1012 +++++----- drivers/staging/skein/threefish1024Block.c | 2740 +++++++++++++------------- drivers/staging/skein/threefish256Block.c | 639 +++--- drivers/staging/skein/threefish512Block.c | 1254 ++++++------ drivers/staging/skein/threefishApi.c | 102 +- 12 files changed, 4200 insertions(+), 4205 deletions(-)
drivers/staging/skein/include/skein.h +68 -68
@@ -38,11 +38,11 @@#define Skein_Swap64 (w64) (w64)enum - { -SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ -SKEIN_FAIL =1 , -SKEIN_BAD_HASHLEN =2 - }; + { +SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ +SKEIN_FAIL =1 , +SKEIN_BAD_HASHLEN =2 + };#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */
@@ -64,32 +64,32 @@ enum#define SKEIN1024_BLOCK_BYTES (8*SKEIN1024_STATE_WORDS)struct skein_ctx_hdr - { -size_t hashBitLen;/* size of hash result, in bits */ -size_t bCnt;/* current byte count in buffer b[] */ -u64 T[SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[1]=flags */ - }; + { +size_t hashBitLen;/* size of hash result, in bits */ +size_t bCnt;/* current byte count in buffer b[] */ +u64 T[SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[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 */ -u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }; + { +struct skein_ctx_hdr h;/* common header context variables */ +u64 X[SKEIN_256_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (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 */ -u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }; + { +struct skein_ctx_hdr h;/* common header context variables */ +u64 X[SKEIN_512_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ + };struct skein1024_ctx /* 1024-bit Skein hash context structure */ - { -struct skein_ctx_hdr h;/* common header context variables */ -u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ -u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }; + { +struct skein_ctx_hdr h;/* common header context variables */ +u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ + };/* Skein APIs for (incremental) "straight hashing" */ int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen);
@@ -150,18 +150,18 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);/* tweak word T[1]: bit field starting positions */ #define SKEIN_T1_BIT (BIT ) ((BIT) - 64)/* offset 64 because it's the second word */ - +#define SKEIN_T1_POS_TREE_LVL SKEIN_T1_BIT(112)/* bits 112..118: level in hash tree */ #define SKEIN_T1_POS_BIT_PAD SKEIN_T1_BIT(119)/* bit 119 : partial final input byte */ #define SKEIN_T1_POS_BLK_TYPE SKEIN_T1_BIT(120)/* bits 120..125: type field */ #define SKEIN_T1_POS_FIRST SKEIN_T1_BIT(126)/* bits 126 : first block flag */ #define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* bit 127 : final block flag */ - +/* tweak word T[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 */ #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)
@@ -213,9 +213,9 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS)#define SKEIN_CFG_TREE_INFO (leaf, node, maxLvl) \ - ((((u64)(leaf)) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ - (((u64)(node)) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ - (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS)) + ((((u64)(leaf)) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ + (((u64)(node)) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ + (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS))#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0, 0, 0)/* use as treeInfo in InitExt() call for sequential processing */
@@ -233,17 +233,17 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);/* set both tweak words at once */ #define Skein_Set_T0_T1 (ctxPtr,T0 ,T1 ) \ - { \ - Skein_Set_T0(ctxPtr, (T0)); \ - Skein_Set_T1(ctxPtr, (T1)); \ - } + { \ + Skein_Set_T0(ctxPtr, (T0)); \ + Skein_Set_T1(ctxPtr, (T1)); \ + }#define Skein_Set_Type (ctxPtr,BLK_TYPE ) \ - Skein_Set_T1(ctxPtr, SKEIN_T1_BLK_TYPE_##BLK_TYPE) + Skein_Set_T1(ctxPtr, SKEIN_T1_BLK_TYPE_##BLK_TYPE)/* set up for starting with a new type: h.T[0]=0; h.T[1] = NEW_TYPE; h.bCnt=0; */ #define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) \ - { Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt = 0; } + { Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt = 0; }#define Skein_Clear_First_Flag (hdr) { (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; }#define Skein_Set_Bit_Pad_Flag (hdr) { (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; }
@@ -270,37 +270,37 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);** Skein block function constants (shared across Ref and Opt code) ******************************************************************/ enum - { -/* Skein_256 round rotation constants */ -R_256_0_0 =14 ,R_256_0_1 =16 , -R_256_1_0 =52 ,R_256_1_1 =57 , -R_256_2_0 =23 ,R_256_2_1 =40 , -R_256_3_0 =5 ,R_256_3_1 =37 , -R_256_4_0 =25 ,R_256_4_1 =33 , -R_256_5_0 =46 ,R_256_5_1 =12 , -R_256_6_0 =58 ,R_256_6_1 =22 , -R_256_7_0 =32 ,R_256_7_1 =32 , - -/* Skein_512 round rotation constants */ -R_512_0_0 =46 ,R_512_0_1 =36 ,R_512_0_2 =19 ,R_512_0_3 =37 , -R_512_1_0 =33 ,R_512_1_1 =27 ,R_512_1_2 =14 ,R_512_1_3 =42 , -R_512_2_0 =17 ,R_512_2_1 =49 ,R_512_2_2 =36 ,R_512_2_3 =39 , -R_512_3_0 =44 ,R_512_3_1 =9 ,R_512_3_2 =54 ,R_512_3_3 =56 , -R_512_4_0 =39 ,R_512_4_1 =30 ,R_512_4_2 =34 ,R_512_4_3 =24 , -R_512_5_0 =13 ,R_512_5_1 =50 ,R_512_5_2 =10 ,R_512_5_3 =17 , -R_512_6_0 =25 ,R_512_6_1 =29 ,R_512_6_2 =39 ,R_512_6_3 =43 , -R_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 , - -/* Skein1024 round rotation constants */ -R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , -R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , -R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , -R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , -R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , -R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , -R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , -R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 - }; + { +/* Skein_256 round rotation constants */ +R_256_0_0 =14 ,R_256_0_1 =16 , +R_256_1_0 =52 ,R_256_1_1 =57 , +R_256_2_0 =23 ,R_256_2_1 =40 , +R_256_3_0 =5 ,R_256_3_1 =37 , +R_256_4_0 =25 ,R_256_4_1 =33 , +R_256_5_0 =46 ,R_256_5_1 =12 , +R_256_6_0 =58 ,R_256_6_1 =22 , +R_256_7_0 =32 ,R_256_7_1 =32 , + +/* Skein_512 round rotation constants */ +R_512_0_0 =46 ,R_512_0_1 =36 ,R_512_0_2 =19 ,R_512_0_3 =37 , +R_512_1_0 =33 ,R_512_1_1 =27 ,R_512_1_2 =14 ,R_512_1_3 =42 , +R_512_2_0 =17 ,R_512_2_1 =49 ,R_512_2_2 =36 ,R_512_2_3 =39 , +R_512_3_0 =44 ,R_512_3_1 =9 ,R_512_3_2 =54 ,R_512_3_3 =56 , +R_512_4_0 =39 ,R_512_4_1 =30 ,R_512_4_2 =34 ,R_512_4_3 =24 , +R_512_5_0 =13 ,R_512_5_1 =50 ,R_512_5_2 =10 ,R_512_5_3 =17 , +R_512_6_0 =25 ,R_512_6_1 =29 ,R_512_6_2 =39 ,R_512_6_3 =43 , +R_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 , + +/* Skein1024 round rotation constants */ +R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , +R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , +R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , +R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , +R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , +R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , +R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , +R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 + };#ifndef SKEIN_ROUNDS #define SKEIN_256_ROUNDS_TOTAL (72)/* number of rounds for the different block sizes */
drivers/staging/skein/include/skeinApi.h +142 -142
290 lines not on this page · raw message
drivers/staging/skein/include/skein_iv.h +138 -138
317 lines not on this page · raw message
drivers/staging/skein/include/threefishApi.h +115 -115
240 lines not on this page · raw message
drivers/staging/skein/skein.c +563 -563
1,242 lines not on this page · raw message
drivers/staging/skein/skeinApi.c +160 -160
351 lines not on this page · raw message
drivers/staging/skein/skeinBlockNo3F.c +143 -143
310 lines not on this page · raw message
drivers/staging/skein/skein_block.c +506 -506
58 lines not on this page · raw message
drivers/staging/skein/threefish1024Block.c +1369 -1371
2,740 lines not on this page · raw message
drivers/staging/skein/threefish256Block.c +319 -320
639 lines not on this page · raw message
drivers/staging/skein/threefish512Block.c +626 -628
1,254 lines not on this page · raw message
drivers/staging/skein/threefishApi.c +51 -51
102 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
1.9.1
Part of the diff is not shown here. View the raw message.
PATCH v2 14/21 staging: crypto: skein: cleanup >80 character lines
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 175 +- drivers/staging/skein/include/threefishApi.h | 16 +- drivers/staging/skein/skein.c | 586 ++- drivers/staging/skein/skeinApi.c | 58 +- drivers/staging/skein/skeinBlockNo3F.c | 27 +- drivers/staging/skein/skein_block.c | 427 +- drivers/staging/skein/threefish1024Block.c | 6152 ++++++++++++++++++++------ drivers/staging/skein/threefish256Block.c | 1398 ++++-- drivers/staging/skein/threefish512Block.c | 2775 +++++++++--- drivers/staging/skein/threefishApi.c | 13 +- 10 files changed, 8919 insertions(+), 2708 deletions(-)
drivers/staging/skein/include/skein.h +105 -70
@@ -39,12 +39,12 @@enum { -SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ +SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ SKEIN_FAIL =1 ,SKEIN_BAD_HASHLEN =2 }; -#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */ +#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */ #define SKEIN_256_STATE_WORDS (4)#define SKEIN_512_STATE_WORDS (8)
@@ -65,30 +65,30 @@ enumstruct skein_ctx_hdr { -size_t hashBitLen;/* size of hash result, in bits */ -size_t bCnt;/* current byte count in buffer b[] */ -u64 T[SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[1]=flags */ +size_t hashBitLen;/* size of hash result, in bits */ +size_t bCnt;/* current byte count in buffer b[] */ +u64 T[SKEIN_MODIFIER_WORDS ];/* tweak: T[0]=byte cnt, T[1]=flags */ }; -struct skein_256_ctx /* 256-bit Skein hash context structure */ +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 */ -u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ +struct skein_ctx_hdr h;/* common header context 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_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 */ -u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ +struct skein_ctx_hdr h;/* common header context variables */ +u64 X[SKEIN_512_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ }; -struct skein1024_ctx /* 1024-bit Skein hash context structure */ +struct skein1024_ctx /* 1024-bit Skein hash context structure */ { -struct skein_ctx_hdr h;/* common header context variables */ -u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ -u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ +struct skein_ctx_hdr h;/* common header context variables */ +u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ };/* Skein APIs for (incremental) "straight hashing" */
@@ -96,9 +96,12 @@ int Skein_256_Init(struct skein_256_ctx *ctx, size_t hashBitLen);int Skein_512_Init (struct skein_512_ctx *ctx,size_t hashBitLen);int Skein1024_Init (struct skein1024_ctx *ctx,size_t hashBitLen); -int Skein_256_Update (struct skein_256_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg,size_t msgByteCnt); +int Skein_256_Update (struct skein_256_ctx *ctx,const u8 *msg, +size_t msgByteCnt); +int Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg, +size_t msgByteCnt); +int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg, +size_t msgByteCnt);int Skein_256_Final (struct skein_256_ctx *ctx,u8 *hashVal);int Skein_512_Final (struct skein_512_ctx *ctx,u8 *hashVal);
@@ -118,9 +121,12 @@ int Skein1024_Final(struct skein1024_ctx *ctx, u8 *hashVal);** to precompute the MAC IV, then a copy of the context saved and ** reused for each new MAC computation. **/ -int Skein_256_InitExt (struct skein_256_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); -int Skein_512_InitExt (struct skein_512_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); -int Skein1024_InitExt (struct skein1024_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein_256_InitExt (struct skein_256_ctx *ctx,size_t hashBitLen, +u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein_512_InitExt (struct skein_512_ctx *ctx,size_t hashBitLen, +u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein1024_InitExt (struct skein1024_ctx *ctx,size_t hashBitLen, +u64 treeInfo,const u8 *key,size_t keyBytes);/* ** Skein APIs for MAC and tree hash:
@@ -149,13 +155,13 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);******************************************************************/ /* tweak word T[1]: bit field starting positions */ -#define SKEIN_T1_BIT (BIT ) ((BIT) - 64)/* offset 64 because it's the second word */ +#define SKEIN_T1_BIT (BIT ) ((BIT) - 64)/* second word */ -#define SKEIN_T1_POS_TREE_LVL SKEIN_T1_BIT(112)/* bits 112..118: level in hash tree */ -#define SKEIN_T1_POS_BIT_PAD SKEIN_T1_BIT(119)/* bit 119 : partial final input byte */ -#define SKEIN_T1_POS_BLK_TYPE SKEIN_T1_BIT(120)/* bits 120..125: type field */ -#define SKEIN_T1_POS_FIRST SKEIN_T1_BIT(126)/* bits 126 : first block flag */ -#define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* bit 127 : final block flag */ +#define SKEIN_T1_POS_TREE_LVL SKEIN_T1_BIT(112)/* 112..118 hash tree level */ +#define SKEIN_T1_POS_BIT_PAD SKEIN_T1_BIT(119)/* 119 part. final in byte */ +#define SKEIN_T1_POS_BLK_TYPE SKEIN_T1_BIT(120)/* 120..125 type field `*/ +#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) */ #define SKEIN_T1_FLAG_FIRST (((u64) 1) << SKEIN_T1_POS_FIRST)
@@ -167,34 +173,37 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);#define SKEIN_T1_TREE_LEVEL (n) (((u64) (n)) << SKEIN_T1_POS_TREE_LVL)/* tweak word T[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 */ -#define SKEIN_BLK_TYPE_PK (12)/* public key (for digital signature hashing) */ -#define SKEIN_BLK_TYPE_KDF (16)/* key identifier for KDF */ -#define SKEIN_BLK_TYPE_NONCE (20)/* nonce for PRNG */ -#define SKEIN_BLK_TYPE_MSG (48)/* message processing */ -#define SKEIN_BLK_TYPE_OUT (63)/* output stage */ -#define SKEIN_BLK_TYPE_MASK (63)/* bit field mask */ - -#define SKEIN_T1_BLK_TYPE (T ) (((u64) (SKEIN_BLK_TYPE_##T)) << SKEIN_T1_POS_BLK_TYPE) -#define SKEIN_T1_BLK_TYPE_KEY SKEIN_T1_BLK_TYPE(KEY)/* key, for MAC and KDF */ -#define SKEIN_T1_BLK_TYPE_CFG SKEIN_T1_BLK_TYPE(CFG)/* configuration block */ -#define SKEIN_T1_BLK_TYPE_PERS SKEIN_T1_BLK_TYPE(PERS)/* personalization string */ -#define SKEIN_T1_BLK_TYPE_PK SKEIN_T1_BLK_TYPE(PK)/* public key (for digital signature hashing) */ -#define SKEIN_T1_BLK_TYPE_KDF SKEIN_T1_BLK_TYPE(KDF)/* key identifier for KDF */ +#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 */ +#define SKEIN_BLK_TYPE_PK (12)/* pubkey (for digital sigs) */ +#define SKEIN_BLK_TYPE_KDF (16)/* key identifier for KDF */ +#define SKEIN_BLK_TYPE_NONCE (20)/* nonce for PRNG */ +#define SKEIN_BLK_TYPE_MSG (48)/* message processing */ +#define SKEIN_BLK_TYPE_OUT (63)/* output stage */ +#define SKEIN_BLK_TYPE_MASK (63)/* bit field mask */ + +#define SKEIN_T1_BLK_TYPE (T ) (((u64) (SKEIN_BLK_TYPE_##T)) << \ + SKEIN_T1_POS_BLK_TYPE) +#define SKEIN_T1_BLK_TYPE_KEY SKEIN_T1_BLK_TYPE(KEY)/* for MAC and KDF */ +#define SKEIN_T1_BLK_TYPE_CFG SKEIN_T1_BLK_TYPE(CFG)/* config block */ +#define SKEIN_T1_BLK_TYPE_PERS SKEIN_T1_BLK_TYPE(PERS)/* personalization */ +#define SKEIN_T1_BLK_TYPE_PK SKEIN_T1_BLK_TYPE(PK)/* pubkey (for sigs) */ +#define SKEIN_T1_BLK_TYPE_KDF SKEIN_T1_BLK_TYPE(KDF)/* key ident for KDF */ #define SKEIN_T1_BLK_TYPE_NONCE SKEIN_T1_BLK_TYPE(NONCE)/* nonce for PRNG */ #define SKEIN_T1_BLK_TYPE_MSG SKEIN_T1_BLK_TYPE(MSG)/* message processing */ #define SKEIN_T1_BLK_TYPE_OUT SKEIN_T1_BLK_TYPE(OUT)/* output stage */ #define SKEIN_T1_BLK_TYPE_MASK SKEIN_T1_BLK_TYPE(MASK)/* field bit mask */ -#define SKEIN_T1_BLK_TYPE_CFG_FINAL (SKEIN_T1_BLK_TYPE_CFG | SKEIN_T1_FLAG_FINAL) -#define SKEIN_T1_BLK_TYPE_OUT_FINAL (SKEIN_T1_BLK_TYPE_OUT | SKEIN_T1_FLAG_FINAL) +#define SKEIN_T1_BLK_TYPE_CFG_FINAL (SKEIN_T1_BLK_TYPE_CFG | \ + SKEIN_T1_FLAG_FINAL) +#define SKEIN_T1_BLK_TYPE_OUT_FINAL (SKEIN_T1_BLK_TYPE_OUT | \ + SKEIN_T1_FLAG_FINAL)#define SKEIN_VERSION (1)#ifndef SKEIN_ID_STRING_LE /* allow compile-time personalization */ -#define SKEIN_ID_STRING_LE (0x33414853)/* "SHA3" (little-endian)*/ +#define SKEIN_ID_STRING_LE (0x33414853)/* "SHA3" (little-endian)*/ #endif #define SKEIN_MK_64 (hi32, lo32) ((lo32) + (((u64) (hi32)) << 32))
@@ -208,23 +217,29 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);#define SKEIN_CFG_TREE_NODE_SIZE_POS (8)#define SKEIN_CFG_TREE_MAX_LEVEL_POS (16) -#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS) -#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS) -#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS) +#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64)0xFF) << \ + SKEIN_CFG_TREE_LEAF_SIZE_POS) +#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64)0xFF) << \ + SKEIN_CFG_TREE_NODE_SIZE_POS) +#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64)0xFF) << \ + SKEIN_CFG_TREE_MAX_LEVEL_POS)#define SKEIN_CFG_TREE_INFO (leaf, node, maxLvl) \ ((((u64)(leaf)) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ (((u64)(node)) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS)) -#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0, 0, 0)/* use as treeInfo in InitExt() call for sequential processing */ +/* use as treeInfo in InitExt() call for sequential processing */ +#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0, 0, 0)/* ** Skein macros for getting/setting tweak words, etc. ** These are useful for partial input bytes, hash tree init/update, etc. **/ #define Skein_Get_Tweak (ctxPtr,TWK_NUM ) ((ctxPtr)->h.T[TWK_NUM]) -#define Skein_Set_Tweak (ctxPtr,TWK_NUM , tVal) {(ctxPtr)->h.T[TWK_NUM] = (tVal); } +#define Skein_Set_Tweak (ctxPtr,TWK_NUM , tVal) { \ + (ctxPtr)->h.T[TWK_NUM] = (tVal); \ + }#define Skein_Get_T0 (ctxPtr) Skein_Get_Tweak(ctxPtr, 0)#define Skein_Get_T1 (ctxPtr) Skein_Get_Tweak(ctxPtr, 1)
@@ -241,14 +256,26 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);#define Skein_Set_Type (ctxPtr,BLK_TYPE ) \ Skein_Set_T1(ctxPtr, SKEIN_T1_BLK_TYPE_##BLK_TYPE) -/* set up for starting with a new type: h.T[0]=0; h.T[1] = NEW_TYPE; h.bCnt=0; */ -#define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) \ - { Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt = 0; } +/* +* setup for starting with a new type: +* h.T[0]=0; h.T[1] = NEW_TYPE; h.bCnt=0; +*/ +#define Skein_Start_New_Type (ctxPtr,BLK_TYPE ) { \ + Skein_Set_T0_T1(ctxPtr, 0, SKEIN_T1_FLAG_FIRST | \ + SKEIN_T1_BLK_TYPE_##BLK_TYPE); \ + (ctxPtr)->h.bCnt = 0; \ + } -#define Skein_Clear_First_Flag (hdr) { (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; } -#define Skein_Set_Bit_Pad_Flag (hdr) { (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; } +#define Skein_Clear_First_Flag (hdr) { \ + (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; \ + } +#define Skein_Set_Bit_Pad_Flag (hdr) { \ + (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; \ + } -#define Skein_Set_Tree_Level (hdr, height) { (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height); } +#define Skein_Set_Tree_Level (hdr, height) { \ + (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height); \ + }/***************************************************************** ** "Internal" Skein definitions for debugging and error checking
@@ -263,7 +290,7 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);#define Skein_Show_Key (bits, ctx, key, keyBytes)#endif -#define Skein_Assert (x, retCode)/* default: ignore all Asserts, for performance */ +#define Skein_Assert (x, retCode)/* ignore all Asserts, for performance */ #define Skein_assert (x)/*****************************************************************
@@ -292,21 +319,29 @@ enumR_512_7_0 =8 ,R_512_7_1 =35 ,R_512_7_2 =56 ,R_512_7_3 =22 ,/* Skein1024 round rotation constants */ -R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 ,R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , -R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 ,R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , -R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 ,R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , -R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 ,R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , -R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 ,R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , -R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 ,R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , -R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 ,R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , -R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 +R1024_0_0 =24 ,R1024_0_1 =13 ,R1024_0_2 =8 ,R1024_0_3 =47 , +R1024_0_4 =8 ,R1024_0_5 =17 ,R1024_0_6 =22 ,R1024_0_7 =37 , +R1024_1_0 =38 ,R1024_1_1 =19 ,R1024_1_2 =10 ,R1024_1_3 =55 , +R1024_1_4 =49 ,R1024_1_5 =18 ,R1024_1_6 =23 ,R1024_1_7 =52 , +R1024_2_0 =33 ,R1024_2_1 =4 ,R1024_2_2 =51 ,R1024_2_3 =13 , +R1024_2_4 =34 ,R1024_2_5 =41 ,R1024_2_6 =59 ,R1024_2_7 =17 , +R1024_3_0 =5 ,R1024_3_1 =20 ,R1024_3_2 =48 ,R1024_3_3 =41 , +R1024_3_4 =47 ,R1024_3_5 =28 ,R1024_3_6 =16 ,R1024_3_7 =25 , +R1024_4_0 =41 ,R1024_4_1 =9 ,R1024_4_2 =37 ,R1024_4_3 =31 , +R1024_4_4 =12 ,R1024_4_5 =47 ,R1024_4_6 =44 ,R1024_4_7 =30 , +R1024_5_0 =16 ,R1024_5_1 =34 ,R1024_5_2 =56 ,R1024_5_3 =51 , +R1024_5_4 =4 ,R1024_5_5 =53 ,R1024_5_6 =42 ,R1024_5_7 =41 , +R1024_6_0 =31 ,R1024_6_1 =44 ,R1024_6_2 =47 ,R1024_6_3 =46 , +R1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 , +R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 , +R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 };#ifndef SKEIN_ROUNDS -#define SKEIN_256_ROUNDS_TOTAL (72)/* number of rounds for the different block sizes */ +#define SKEIN_256_ROUNDS_TOTAL (72)/* # rounds for diff block sizes */ #define SKEIN_512_ROUNDS_TOTAL (72)#define SKEIN1024_ROUNDS_TOTAL (80) -#else /* allow command-line define in range 8*(5..14) */ +#else /* allow command-line define in range 8*(5..14) */ #define SKEIN_256_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/100) + 5) % 10) + 5))#define SKEIN_512_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS/10) + 5) % 10) + 5))#define SKEIN1024_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS) + 5) % 10) + 5))
drivers/staging/skein/include/threefishApi.h +11 -5
@@ -72,7 +72,9 @@ struct threefish_key {* @param tweak * Pointer to the two tweak words (word has 64 bits). */ -void threefishSetKey (struct threefish_key *keyCtx,enum threefish_size stateSize,u64 *keyData,u64 *tweak); +void threefishSetKey (struct threefish_key *keyCtx, +enum threefish_size stateSize, +u64 *keyData,u64 *tweak);/** * Encrypt Threefisch block (bytes).
@@ -108,7 +110,8 @@ void threefishEncryptBlockBytes(struct threefish_key *keyCtx, u8 *in, u8 *out);* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockWords (struct threefish_key *keyCtx,u64 *in,u64 *out); +void threefishEncryptBlockWords (struct threefish_key *keyCtx,u64 *in, +u64 *out);/** * Decrypt Threefisch block (bytes).
@@ -144,14 +147,17 @@ void threefishDecryptBlockBytes(struct threefish_key *keyCtx, u8 *in, u8 *out);* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockWords (struct threefish_key *keyCtx,u64 *in,u64 *out); +void threefishDecryptBlockWords (struct threefish_key *keyCtx,u64 *in, +u64 *out);void threefishEncrypt256 (struct threefish_key *keyCtx,u64 *input,u64 *output);void threefishEncrypt512 (struct threefish_key *keyCtx,u64 *input,u64 *output); -void threefishEncrypt1024 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishEncrypt1024 (struct threefish_key *keyCtx,u64 *input, +u64 *output);void threefishDecrypt256 (struct threefish_key *keyCtx,u64 *input,u64 *output);void threefishDecrypt512 (struct threefish_key *keyCtx,u64 *input,u64 *output); -void threefishDecrypt1024 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishDecrypt1024 (struct threefish_key *keyCtx,u64 *input, +u64 *output);/** * @} */
drivers/staging/skein/skein.c +396 -190
894 lines not on this page · raw message
drivers/staging/skein/skeinApi.c +38 -20
111 lines not on this page · raw message
drivers/staging/skein/skeinBlockNo3F.c +15 -12
@@ -11,10 +11,10 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr,struct threefish_key key;u64 tweak[2 ];int i; -u64 w[SKEIN_256_STATE_WORDS ];/* local copy of input block */ +u64 w[SKEIN_256_STATE_WORDS ];/* local copy of input block */ u64 words[3 ]; -Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ +Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ tweak[0 ] = ctx->h.T[0 ]; tweak[1 ] = ctx->h.T[1 ];
@@ -36,13 +36,14 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr,threefishSetKey (&key, Threefish256, ctx->X, tweak); -Skein_Get64_LSB_First (w, blkPtr,SKEIN_256_STATE_WORDS );/* get input block in little-endian format */ +/* get input block in little-endian format */ +Skein_Get64_LSB_First (w, blkPtr,SKEIN_256_STATE_WORDS );threefishEncryptBlockWords (&key, w, ctx->X); blkPtr +=SKEIN_256_BLOCK_BYTES ; -/* do the final "feedforward" xor, update context chaining vars */ +/* do the final "feedforward" xor, update ctx chaining vars */ ctx->X[0 ] = ctx->X[0 ] ^ w[0 ]; ctx->X[1 ] = ctx->X[1 ] ^ w[1 ]; ctx->X[2 ] = ctx->X[2 ] ^ w[2 ];
@@ -62,9 +63,9 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr,u64 tweak[2 ];int i;u64 words[3 ]; -u64 w[SKEIN_512_STATE_WORDS ];/* local copy of input block */ +u64 w[SKEIN_512_STATE_WORDS ];/* local copy of input block */ -Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ +Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ tweak[0 ] = ctx->h.T[0 ]; tweak[1 ] = ctx->h.T[1 ];
@@ -86,13 +87,14 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr,threefishSetKey (&key, Threefish512, ctx->X, tweak); -Skein_Get64_LSB_First (w, blkPtr,SKEIN_512_STATE_WORDS );/* get input block in little-endian format */ +/* get input block in little-endian format */ +Skein_Get64_LSB_First (w, blkPtr,SKEIN_512_STATE_WORDS );threefishEncryptBlockWords (&key, w, ctx->X); blkPtr +=SKEIN_512_BLOCK_BYTES ; -/* do the final "feedforward" xor, update context chaining vars */ +/* do the final "feedforward" xor, update ctx chaining vars */ ctx->X[0 ] = ctx->X[0 ] ^ w[0 ]; ctx->X[1 ] = ctx->X[1 ] ^ w[1 ]; ctx->X[2 ] = ctx->X[2 ] ^ w[2 ];
@@ -116,9 +118,9 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr,u64 tweak[2 ];int i;u64 words[3 ]; -u64 w[SKEIN1024_STATE_WORDS ];/* local copy of input block */ +u64 w[SKEIN1024_STATE_WORDS ];/* local copy of input block */ -Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ +Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ tweak[0 ] = ctx->h.T[0 ]; tweak[1 ] = ctx->h.T[1 ];
@@ -140,13 +142,14 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr,threefishSetKey (&key, Threefish1024, ctx->X, tweak); -Skein_Get64_LSB_First (w, blkPtr,SKEIN1024_STATE_WORDS );/* get input block in little-endian format */ +/* get input block in little-endian format */ +Skein_Get64_LSB_First (w, blkPtr,SKEIN1024_STATE_WORDS );threefishEncryptBlockWords (&key, w, ctx->X); blkPtr +=SKEIN1024_BLOCK_BYTES ; -/* do the final "feedforward" xor, update context chaining vars */ +/* do the final "feedforward" xor, update ctx chaining vars */ ctx->X[0 ] = ctx->X[0 ] ^ w[0 ]; ctx->X[1 ] = ctx->X[1 ] ^ w[1 ]; ctx->X[2 ] = ctx->X[2 ] ^ w[2 ];
drivers/staging/skein/skein_block.c +239 -188
625 lines not on this page · raw message
drivers/staging/skein/threefish1024Block.c +4835 -1317
972 lines not on this page · raw message
drivers/staging/skein/threefish256Block.c +1094 -304
1,398 lines not on this page · raw message
drivers/staging/skein/threefish512Block.c +2179 -596
2,775 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
1.9.1
Part of the diff is not shown here. View the raw message.
v2 cover staging: add skein/threefish crypto algos
In reply to Jason CooperGreg, all,
Changes from RFC:
- dropped scripts/objdiff patch to be submitted separately
- rebased onto staging-next and resolved conflicts
-- updated original text to reflect the above --
Attached is a series I've sat on for the past month and a half.
I'm hoping that by posting it in it's incomplete state, it will either a) motivate me to finish hooking into the crypto API, or b) motivate someone else to pitch in. ;-)
Quoted 1 line
From patch 2, all commits build successfully. In addition, using the script
I've submitted separately (objdiff), I can confirm that no object code was harmed in this process.
I'm under no time crunch with this, and I add to it as I find time. If Greg wants to take it for v3.15, great. Otherwise is fine as well.
Barring a few false-positives, this series makes the code checkpatch-clean, but it is not ready for mainline as yet. In particular, I really don't like the adhoc macro definitions, nor the camelCase.
The plan is to get skein and threefish registered into the crypto API, build as modules, and then move it to crypto/.
thx,
Jason.
Jason Cooper (21):
staging: crypto: skein: import code from Skein3Fish.git
staging: crypto: skein: allow building statically
staging: crypto: skein: remove brg_*.h includes
staging: crypto: skein: remove skein_port.h
staging: crypto: skein: remove __cplusplus and an unneeded stddef.h
staging: crypto: skein: remove unneeded typedefs
staging: crypto: skein: remove all typedef {struct,enum}
staging: crypto: skein: use u8, u64 vice uint*_t
staging: crypto: skein: fixup pointer whitespace
staging: crypto: skein: cleanup whitespace around operators/punc.
staging: crypto: skein: dos2unix, remove executable perms
staging: crypto: skein: fix leading whitespace
staging: crypto: skein: remove trailing whitespace
staging: crypto: skein: cleanup >80 character lines
staging: crypto: skein: fix do/while brace formatting
staging: crypto: skein: fix brace placement errors
staging: crypto: skein: wrap multi-line macros in do-while loops
staging: crypto: skein: remove externs from .c files
staging: crypto: skein: remove braces from single-statement block
staging: crypto: skein: remove unnecessary line continuation
staging: crypto: skein: add TODO file
drivers/staging/Kconfig | 2 + drivers/staging/Makefile | 1 + drivers/staging/skein/Kconfig | 32 + drivers/staging/skein/Makefile | 13 + drivers/staging/skein/TODO | 11 + drivers/staging/skein/include/skein.h | 344 ++ drivers/staging/skein/include/skeinApi.h | 230 ++ drivers/staging/skein/include/skein_block.h | 22 + drivers/staging/skein/include/skein_iv.h | 186 + drivers/staging/skein/include/threefishApi.h | 164 + drivers/staging/skein/skein.c | 880 +++++ drivers/staging/skein/skeinApi.c | 237 ++ drivers/staging/skein/skeinBlockNo3F.c | 175 + drivers/staging/skein/skein_block.c | 770 ++++ drivers/staging/skein/threefish1024Block.c | 4900 ++++++++++++++++++++++++++ drivers/staging/skein/threefish256Block.c | 1137 ++++++ drivers/staging/skein/threefish512Block.c | 2223 ++++++++++++ drivers/staging/skein/threefishApi.c | 79 + 18 files changed, 11406 insertions(+) create mode 100644 drivers/staging/skein/Kconfig create mode 100644 drivers/staging/skein/Makefile create mode 100644 drivers/staging/skein/TODO create mode 100644 drivers/staging/skein/include/skein.h create mode 100644 drivers/staging/skein/include/skeinApi.h create mode 100644 drivers/staging/skein/include/skein_block.h create mode 100644 drivers/staging/skein/include/skein_iv.h create mode 100644 drivers/staging/skein/include/threefishApi.h create mode 100644 drivers/staging/skein/skein.c create mode 100644 drivers/staging/skein/skeinApi.c create mode 100644 drivers/staging/skein/skeinBlockNo3F.c create mode 100644 drivers/staging/skein/skein_block.c create mode 100644 drivers/staging/skein/threefish1024Block.c create mode 100644 drivers/staging/skein/threefish256Block.c create mode 100644 drivers/staging/skein/threefish512Block.c create mode 100644 drivers/staging/skein/threefishApi.c
Signature · 1 line
1.9.1
PATCH v2 2/21 staging: crypto: skein: allow building statically
These are the minimum changes required to get the code to build statically in the kernel. It's necessary to do this first so that we can empirically determine that future cleanup patches aren't changing the generated object code.
---
Changes since RFC:
- rebased onto staging-next caused conflicts in Kconfig and Makefile, fixed.
drivers/staging/Kconfig | 2 + drivers/staging/Makefile | 1 + drivers/staging/skein/CMakeLists.txt | 27 ------------- drivers/staging/skein/Kconfig | 32 ++++++++++++++++ drivers/staging/skein/Makefile | 13 +++++++ drivers/staging/skein/include/brg_types.h | 57 ---------------------------- drivers/staging/skein/include/skein.h | 10 ----- drivers/staging/skein/include/skeinApi.h | 2 +- drivers/staging/skein/include/skein_port.h | 16 +------- drivers/staging/skein/include/threefishApi.h | 2 +- drivers/staging/skein/skein.c | 2 +- drivers/staging/skein/skeinApi.c | 4 +- drivers/staging/skein/skeinBlockNo3F.c | 2 +- drivers/staging/skein/skein_block.c | 2 +- drivers/staging/skein/threefish1024Block.c | 3 +- drivers/staging/skein/threefish256Block.c | 3 +- drivers/staging/skein/threefish512Block.c | 3 +- drivers/staging/skein/threefishApi.c | 3 +- 18 files changed, 59 insertions(+), 125 deletions(-) delete mode 100755 drivers/staging/skein/CMakeLists.txt create mode 100644 drivers/staging/skein/Kconfig create mode 100644 drivers/staging/skein/Makefile
drivers/staging/Kconfig +2 -0
@@ -144,6 +144,8 @@ source "drivers/staging/gs_fpgaboot/Kconfig" source "drivers/staging/nokia_h4p/Kconfig" +source "drivers/staging/skein/Kconfig" + source "drivers/staging/unisys/Kconfig" endif # STAGING
drivers/staging/Makefile +1 -0
@@ -64,4 +64,5 @@ obj-$(CONFIG_DGAP) += dgap/ obj-$(CONFIG_MTD_SPINAND_MT29F) += mt29f_spinand/ obj-$(CONFIG_GS_FPGABOOT) += gs_fpgaboot/ obj-$(CONFIG_BT_NOKIA_H4P) += nokia_h4p/ +obj-$(CONFIG_CRYPTO_SKEIN) += skein/ obj-$(CONFIG_UNISYSSPAR) += unisys/
drivers/staging/skein/CMakeLists.txt deleted +0 -27
@@ -1,27 +0,0 @@ -cmake_minimum_required (VERSION 2.6) - -include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include) - -# set(skeinBlock_src skein_block.c) -set(skeinBlock_src skeinBlockNo3F.c) - -set(skein_src - ${skeinBlock_src} - skein.c - skeinApi.c - ) - -set(threefish_src - threefishApi.c - threefish256Block.c - threefish512Block.c - threefish1024Block.c - ) -set(s3f_src ${skein_src} ${threefish_src}) - -add_library(skein3fish SHARED ${s3f_src}) -set_target_properties(skein3fish PROPERTIES VERSION ${VERSION} SOVERSION ${SOVERSION}) -target_link_libraries(skein3fish ${LIBS}) - -install(TARGETS skein3fish DESTINATION ${LIBDIRNAME}) -
drivers/staging/skein/Kconfig new file +32 -0
@@ -0,0 +1,32 @@ +config CRYPTO_SKEIN + bool "Skein digest algorithm" + depends on (X86 || UML_X86) && 64BIT + select CRYPTO_THREEFISH + select CRYPTO_HASH + help + Skein secure hash algorithm is one of 5 finalists from the NIST SHA3 + competition. + + Skein is optimized for modern, 64bit processors and is highly + customizable. See: + + http://www.skein-hash.info/sites/default/files/skein1.3.pdf + + for more information. This module depends on the threefish block + cipher module. + +config CRYPTO_THREEFISH + bool "Threefish tweakable block cipher" + depends on (X86 || UML_X86) && 64BIT + select CRYPTO_ALGAPI + help + Threefish cipher algorithm is the tweakable block cipher underneath + the Skein family of secure hash algorithms. Skein is one of 5 + finalists from the NIST SHA3 competition. + + Skein is optimized for modern, 64bit processors and is highly + customizable. See: + + http://www.skein-hash.info/sites/default/files/skein1.3.pdf + + for more information.
drivers/staging/skein/Makefile new file +13 -0
@@ -0,0 +1,13 @@ +# +# Makefile for the skein secure hash algorithm +# +subdir-ccflags-y := -I$(src)/include/ + +obj-$(CONFIG_CRYPTO_SKEIN) += skein.o \ + skeinApi.o \ + skein_block.o + +obj-$(CONFIG_CRYPTO_THREEFISH) += threefish1024Block.o \ + threefish256Block.o \ + threefish512Block.o \ + threefishApi.o
drivers/staging/skein/include/brg_types.h +0 -57
83 lines not on this page · raw message
drivers/staging/skein/include/skein.h +0 -10
@@ -261,18 +261,8 @@ int Skein1024_Output (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);#define Skein_Show_Key (bits,ctx,key,keyBytes)#endif -#ifndef SKEIN_ERR_CHECK /* run-time checks (e.g., bad params, uninitialized context)? */ #define Skein_Assert (x,retCode)/* default: ignore all Asserts, for performance */ #define Skein_assert (x) -#elif defined(SKEIN_ASSERT ) -#include <assert.h> -#define Skein_Assert (x,retCode) assert(x) -#define Skein_assert (x) assert(x) -#else -#include <assert.h> -#define Skein_Assert (x,retCode) { if (!(x)) return retCode; }/* caller error */ -#define Skein_assert (x) assert(x)/* internal error */ -#endif /***************************************************************** ** Skein block function constants (shared across Ref and Opt code)
drivers/staging/skein/include/skeinApi.h +1 -1
@@ -78,8 +78,8 @@ OTHER DEALINGS IN THE SOFTWARE.* */ +#include <linux/types.h> #include <skein.h> -#include <stdint.h> #ifdef __cplusplus extern "C"
drivers/staging/skein/include/skein_port.h +1 -15
@@ -44,24 +44,10 @@ typedef uint_64t u64b_t; /* 64-bit unsigned integer */* platform-specific code instead (e.g., for big-endian CPUs). * */ -#ifndef SKEIN_NEED_SWAP /* compile-time "override" for endianness? */ - -#include <brg_endian.h> /* get endianness selection */ -#if PLATFORM_BYTE_ORDER ==IS_BIG_ENDIAN -/* here for big-endian CPUs */ -#define SKEIN_NEED_SWAP (1) -#elif PLATFORM_BYTE_ORDER ==IS_LITTLE_ENDIAN -/* here for x86 and x86-64 CPUs (and other detected little-endian CPUs) */ #define SKEIN_NEED_SWAP (0) -#if PLATFORM_MUST_ALIGN ==0 /* ok to use "fast" versions? */ +/* below two prototype assume we are handed aligned data */ #define Skein_Put64_LSB_First (dst08,src64,bCnt) memcpy(dst08,src64,bCnt)#define Skein_Get64_LSB_First (dst64,src08,wCnt) memcpy(dst64,src08,8*(wCnt)) -#endif -#else -#error "Skein needs endianness setting!" -#endif - -#endif /* ifndef SKEIN_NEED_SWAP */ /* ******************************************************************
drivers/staging/skein/include/threefishApi.h +1 -1
@@ -28,8 +28,8 @@@endcode */ +#include <linux/types.h> #include <skein.h> -#include <stdint.h> #define KeyScheduleConst 0x1BD11BDAA9FC1A22L
drivers/staging/skein/skein.c +1 -1
@@ -10,7 +10,7 @@#define SKEIN_PORT_CODE /* instantiate any code in skein_port.h */ -#include <string.h> /* get the memcpy/memset functions */ +#include <linux/string.h> /* get the memcpy/memset functions */ #include <skein.h> /* get the Skein API definitions */ #include <skein_iv.h> /* get precomputed IVs */
drivers/staging/skein/skeinApi.c +1 -3
@@ -24,10 +24,8 @@ OTHER DEALINGS IN THE SOFTWARE.*/ -#define SKEIN_ERR_CHECK 1 +#include <linux/string.h> #include <skeinApi.h> -#include <string.h> -#include <stdio.h> int skeinCtxPrepare (SkeinCtx_t * ctx,SkeinSize_t size) {
drivers/staging/skein/skeinBlockNo3F.c +1 -1
@@ -1,5 +1,5 @@ -#include <string.h> +#include <linux/string.h> #include <skein.h> #include <threefishApi.h>
drivers/staging/skein/skein_block.c +1 -1
@@ -14,7 +14,7 @@** ************************************************************************/ -#include <string.h> +#include <linux/string.h> #include <skein.h> #ifndef SKEIN_USE_ASM
drivers/staging/skein/threefish1024Block.c +1 -2
@@ -1,6 +1,5 @@ +#include <linux/string.h> #include <threefishApi.h> -#include <stdint.h> -#include <string.h> void threefishEncrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output)
drivers/staging/skein/threefish256Block.c +1 -2
@@ -1,6 +1,5 @@ +#include <linux/string.h> #include <threefishApi.h> -#include <stdint.h> -#include <string.h> void threefishEncrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output)
drivers/staging/skein/threefish512Block.c +1 -2
@@ -1,6 +1,5 @@ +#include <linux/string.h> #include <threefishApi.h> -#include <stdint.h> -#include <string.h> void threefishEncrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output)
drivers/staging/skein/threefishApi.c +1 -2
@@ -1,8 +1,7 @@ +#include <linux/string.h> #include <threefishApi.h> -#include <stdlib.h> -#include <string.h> void threefishSetKey (ThreefishKey_t * keyCtx,ThreefishSize_t stateSize,uint64_t * keyData,uint64_t * tweak)
Signature · 1 line
1.9.1
PATCH v2 3/21 staging: crypto: skein: remove brg_*.h includes
In reply to Jason Cooper--- drivers/staging/skein/include/brg_endian.h | 148 ----------------------------- drivers/staging/skein/include/brg_types.h | 131 ------------------------- drivers/staging/skein/include/skein_port.h | 6 +- 3 files changed, 2 insertions(+), 283 deletions(-) delete mode 100644 drivers/staging/skein/include/brg_endian.h delete mode 100644 drivers/staging/skein/include/brg_types.h
drivers/staging/skein/include/brg_endian.h deleted +0 -148
@@ -1,148 +0,0 @@ -/* ---------------------------------------------------------------------------- -Copyright (c) 2003, Dr Brian Gladman, Worcester, UK. All rights reserved. - -LICENSE TERMS - -The free distribution and use of this software in both source and binary -form is allowed (with or without changes) provided that: - -1. distributions of this source code include the above copyright -notice, this list of conditions and the following disclaimer; - -2. distributions in binary form include the above copyright -notice, this list of conditions and the following disclaimer -in the documentation and/or other associated materials; - -3. the copyright holder's name is not used to endorse products -built using this software without specific written permission. - -ALTERNATIVELY, provided that this notice is retained in full, this product -may be distributed under the terms of the GNU General Public License (GPL), -in which case the provisions of the GPL apply INSTEAD OF those given above. - -DISCLAIMER - -This software is provided 'as is' with no explicit or implied warranties -in respect of its properties, including, but not limited to, correctness -and/or fitness for purpose. ---------------------------------------------------------------------------- -Issue 20/10/2006 -*/ - -#ifndef BRG_ENDIAN_H -#define BRG_ENDIAN_H - -#define IS_BIG_ENDIAN 4321/* byte 0 is most significant (mc68k) */ -#define IS_LITTLE_ENDIAN 1234/* byte 0 is least significant (i386) */ - -/* Include files where endian defines and byteswap functions may reside */ -#if defined( __FreeBSD__ ) || defined( __OpenBSD__ ) || defined( __NetBSD__ ) -# include <sys/endian.h> -#elif defined(BSD ) && (BSD >=199103 ) || defined( __APPLE__ ) || \ - defined( __CYGWIN32__ ) || defined( __DJGPP__ ) || defined( __osf__ ) -# include <machine/endian.h> -#elif defined( __linux__ ) || defined( __GNUC__ ) || defined( __GNU_LIBRARY__ ) -# if !defined( __MINGW32__ ) && !defined(AVR ) -# include <endian.h> -# if !defined( __BEOS__ ) -# include <byteswap.h> -# endif -# endif -#endif - -/* Now attempt to set the define for platform byte order using any */ -/* of the four forms SYMBOL, _SYMBOL, __SYMBOL & __SYMBOL__, which */ -/* seem to encompass most endian symbol definitions */ - -#if defined(BIG_ENDIAN ) && defined(LITTLE_ENDIAN ) -# if defined(BYTE_ORDER ) &&BYTE_ORDER ==BIG_ENDIAN -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -# elif defined(BYTE_ORDER ) &&BYTE_ORDER ==LITTLE_ENDIAN -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -# endif -#elif defined(BIG_ENDIAN ) -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -#elif defined(LITTLE_ENDIAN ) -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -#endif - -#if defined( _BIG_ENDIAN ) && defined( _LITTLE_ENDIAN ) -# if defined( _BYTE_ORDER ) && _BYTE_ORDER == _BIG_ENDIAN -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -# elif defined( _BYTE_ORDER ) && _BYTE_ORDER == _LITTLE_ENDIAN -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -# endif -#elif defined( _BIG_ENDIAN ) -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -#elif defined( _LITTLE_ENDIAN ) -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -#endif - -#if defined( __BIG_ENDIAN ) && defined( __LITTLE_ENDIAN ) -# if defined( __BYTE_ORDER ) && __BYTE_ORDER == __BIG_ENDIAN -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -# elif defined( __BYTE_ORDER ) && __BYTE_ORDER == __LITTLE_ENDIAN -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -# endif -#elif defined( __BIG_ENDIAN ) -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -#elif defined( __LITTLE_ENDIAN ) -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -#endif - -#if defined( __BIG_ENDIAN__ ) && defined( __LITTLE_ENDIAN__ ) -# if defined( __BYTE_ORDER__ ) && __BYTE_ORDER__ == __BIG_ENDIAN__ -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -# elif defined( __BYTE_ORDER__ ) && __BYTE_ORDER__ == __LITTLE_ENDIAN__ -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -# endif -#elif defined( __BIG_ENDIAN__ ) -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -#elif defined( __LITTLE_ENDIAN__ ) -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -#endif - -/* if the platform byte order could not be determined, then try to */ -/* set this define using common machine defines */ -#if !defined(PLATFORM_BYTE_ORDER ) - -#if defined( __alpha__ ) || defined( __alpha ) || defined( i386 ) || \ - defined( __i386__ ) || defined( _M_I86 ) || defined( _M_IX86 ) || \ - defined( __OS2__ ) || defined( sun386 ) || defined( __TURBOC__ ) || \ - defined( vax ) || defined( vms ) || defined(VMS ) || \ - defined( __VMS ) || defined( _M_X64 ) || defined(AVR ) -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN - -#elif defined(AMIGA ) || defined( applec ) || defined( __AS400__ ) || \ - defined( _CRAY ) || defined( __hppa ) || defined( __hp9000 ) || \ - defined( ibm370 ) || defined( mc68000 ) || defined( m68k ) || \ - defined( __MRC__ ) || defined( __MVS__ ) || defined( __MWERKS__ ) || \ - defined( sparc ) || defined( __sparc) || defined(SYMANTEC_C ) || \ - defined( __VOS__ ) || defined( __TIGCC__ ) || defined( __TANDEM ) || \ - defined(THINK_C ) || defined( __VMCMS__ ) -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN - -#elif 0 /* **** EDIT HERE IF NECESSARY **** */ -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -#elif 0 /* **** EDIT HERE IF NECESSARY **** */ -# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN -#else -# error Please edit lines 126 or 128 in brg_endian.h to set the platform byte order -#endif -#endif - -/* special handler for IA64, which may be either endianness (?) */ -/* here we assume little-endian, but this may need to be changed */ -#if defined(__ia64) || defined(__ia64__) || defined(_M_IA64) -# define PLATFORM_MUST_ALIGN (1) -#ifndef PLATFORM_BYTE_ORDER -# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN -#endif -#endif - -#ifndef PLATFORM_MUST_ALIGN -# define PLATFORM_MUST_ALIGN (0) -#endif - -#endif /* ifndef BRG_ENDIAN_H */
drivers/staging/skein/include/brg_types.h deleted +0 -131
131 lines not on this page · raw message
drivers/staging/skein/include/skein_port.h +2 -4
@@ -15,11 +15,9 @@** ********************************************************************/ -#include <brg_types.h> /* get integer type definitions */ -typedef unsigned int uint_t ;/* native unsigned integer */ -typedef uint_8t u08b_t ;/* 8-bit unsigned integer */ -typedef uint_64t u64b_t ;/* 64-bit unsigned integer */ +typedef uint8_t u08b_t ;/* 8-bit unsigned integer */ +typedef uint64_t u64b_t ;/* 64-bit unsigned integer */ #ifndef RotL_64#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N))))
Signature · 1 line
1.9.1
PATCH v2 4/21 staging: crypto: skein: remove skein_port.h
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 14 +++- drivers/staging/skein/include/skein_port.h | 108 ----------------------------- drivers/staging/skein/skein.c | 21 ------ 3 files changed, 13 insertions(+), 130 deletions(-) delete mode 100644 drivers/staging/skein/include/skein_port.h
drivers/staging/skein/include/skein.h +13 -1
@@ -33,7 +33,19 @@ extern "C"#endif #include <stddef.h> /* get size_t definition */ -#include <skein_port.h> /* get platform-specific definitions */ + +typedef unsigned int uint_t ;/* native unsigned integer */ +typedef uint8_t u08b_t ;/* 8-bit unsigned integer */ +typedef uint64_t u64b_t ;/* 64-bit unsigned integer */ + +#ifndef RotL_64 +#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N)))) +#endif + +/* below two prototype assume we are handed aligned data */ +#define Skein_Put64_LSB_First (dst08,src64,bCnt) memcpy(dst08,src64,bCnt) +#define Skein_Get64_LSB_First (dst64,src08,wCnt) memcpy(dst64,src08,8*(wCnt)) +#define Skein_Swap64 (w64) (w64)enum {
drivers/staging/skein/include/skein_port.h deleted +0 -108
108 lines not on this page · raw message
drivers/staging/skein/skein.c +0 -21
@@ -102,13 +102,6 @@ int Skein_256_InitExt(Skein_256_Ctxt_t *ctx,size_t hashBitLen,u64b_t treeInfo, cSkein_256_Update (ctx,key,keyBytes);/* hash the key */ Skein_256_Final_Pad (ctx,cfg.b);/* put result into cfg.b[] */ memcpy (ctx->X,cfg.b,sizeof (cfg.b));/* copy over into ctx->X[] */ -#if SKEIN_NEED_SWAP - { -uint_t i; -for (i=0 ;i<SKEIN_256_STATE_WORDS ;i++)/* convert key bytes to context words */ - ctx->X[i] =Skein_Swap64 (ctx->X[i]); - } -#endif }/* build/process the config block, type == CONFIG (could be precomputed for each key) */ ctx->h.hashBitLen = hashBitLen;/* output hash bit count */
@@ -297,13 +290,6 @@ int Skein_512_InitExt(Skein_512_Ctxt_t *ctx,size_t hashBitLen,u64b_t treeInfo, cSkein_512_Update (ctx,key,keyBytes);/* hash the key */ Skein_512_Final_Pad (ctx,cfg.b);/* put result into cfg.b[] */ memcpy (ctx->X,cfg.b,sizeof (cfg.b));/* copy over into ctx->X[] */ -#if SKEIN_NEED_SWAP - { -uint_t i; -for (i=0 ;i<SKEIN_512_STATE_WORDS ;i++)/* convert key bytes to context words */ - ctx->X[i] =Skein_Swap64 (ctx->X[i]); - } -#endif }/* build/process the config block, type == CONFIG (could be precomputed for each key) */ ctx->h.hashBitLen = hashBitLen;/* output hash bit count */
@@ -489,13 +475,6 @@ int Skein1024_InitExt(Skein1024_Ctxt_t *ctx,size_t hashBitLen,u64b_t treeInfo, cSkein1024_Update (ctx,key,keyBytes);/* hash the key */ Skein1024_Final_Pad (ctx,cfg.b);/* put result into cfg.b[] */ memcpy (ctx->X,cfg.b,sizeof (cfg.b));/* copy over into ctx->X[] */ -#if SKEIN_NEED_SWAP - { -uint_t i; -for (i=0 ;i<SKEIN1024_STATE_WORDS ;i++)/* convert key bytes to context words */ - ctx->X[i] =Skein_Swap64 (ctx->X[i]); - } -#endif }/* build/process the config block, type == CONFIG (could be precomputed for each key) */ ctx->h.hashBitLen = hashBitLen;/* output hash bit count */
Signature · 1 line
1.9.1
PATCH v2 5/21 staging: crypto: skein: remove __cplusplus and an unneeded stddef.h
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 11 ----------- drivers/staging/skein/include/skeinApi.h | 9 --------- drivers/staging/skein/include/threefishApi.h | 9 --------- 3 files changed, 29 deletions(-)
drivers/staging/skein/include/skein.h +0 -11
@@ -27,13 +27,6 @@** 1: return SKEIN_FAIL to flag errors ** ***************************************************************************/ -#ifdef __cplusplus -extern "C" -{ -#endif - -#include <stddef.h> /* get size_t definition */ -typedef unsigned int uint_t ;/* native unsigned integer */ typedef uint8_t u08b_t ;/* 8-bit unsigned integer */ typedef uint64_t u64b_t ;/* 64-bit unsigned integer */
@@ -322,8 +315,4 @@ enum#define SKEIN1024_ROUNDS_TOTAL (8*((((SKEIN_ROUNDS ) + 5) % 10) + 5))#endif -#ifdef __cplusplus -} -#endif -#endif /* ifndef _SKEIN_H_ */
drivers/staging/skein/include/skeinApi.h +0 -9
@@ -81,11 +81,6 @@ OTHER DEALINGS IN THE SOFTWARE.#include <linux/types.h> #include <skein.h> -#ifdef __cplusplus -extern "C" -{ -#endif -/** * Which Skein size to use */
@@ -229,10 +224,6 @@ extern "C"*/ int skeinFinal (SkeinCtx_t * ctx,uint8_t * hash); -#ifdef __cplusplus -} -#endif -/** * @} */
drivers/staging/skein/include/threefishApi.h +0 -9
@@ -33,11 +33,6 @@#define KeyScheduleConst 0x1BD11BDAA9FC1A22L -#ifdef __cplusplus -extern "C" -{ -#endif -/** * Which Threefish size to use */
@@ -157,10 +152,6 @@ extern "C"void threefishDecrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output);void threefishDecrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output);void threefishDecrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); -#ifdef __cplusplus -} -#endif -/** * @} */
Signature · 1 line
1.9.1
PATCH v2 6/21 staging: crypto: skein: remove unneeded typedefs
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 73 ++++++++++----------- drivers/staging/skein/include/skeinApi.h | 4 +- drivers/staging/skein/include/skein_iv.h | 26 ++++---- drivers/staging/skein/include/threefishApi.h | 6 +- drivers/staging/skein/skein.c | 96 ++++++++++++++-------------- drivers/staging/skein/skeinApi.c | 24 +++---- drivers/staging/skein/skeinBlockNo3F.c | 30 ++++----- drivers/staging/skein/skein_block.c | 54 ++++++++-------- drivers/staging/skein/threefishApi.c | 8 +-- 9 files changed, 159 insertions(+), 162 deletions(-)
drivers/staging/skein/include/skein.h +35 -38
@@ -27,9 +27,6 @@** 1: return SKEIN_FAIL to flag errors ** ***************************************************************************/ -typedef unsigned int uint_t ;/* native unsigned integer */ -typedef uint8_t u08b_t ;/* 8-bit unsigned integer */ -typedef uint64_t u64b_t ;/* 64-bit unsigned integer */ #ifndef RotL_64#define RotL_64 (x,N ) (((x) << (N)) | ((x) >> (64-(N))))
@@ -70,28 +67,28 @@ typedef struct {size_t hashBitLen;/* size of hash result, in bits */ size_t bCnt;/* current byte count in buffer b[] */ -u64b_t T [SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[1]=flags */ +u64 T [SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[1]=flags */ } Skein_Ctxt_Hdr_t;typedef struct /* 256-bit Skein hash context structure */ {Skein_Ctxt_Hdr_t h;/* common header context variables */ -u64b_t X[SKEIN_256_STATE_WORDS ];/* chaining variables */ -u08b_t b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ +u64 X[SKEIN_256_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ }Skein_256_Ctxt_t ;typedef struct /* 512-bit Skein hash context structure */ {Skein_Ctxt_Hdr_t h;/* common header context variables */ -u64b_t X[SKEIN_512_STATE_WORDS ];/* chaining variables */ -u08b_t b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ +u64 X[SKEIN_512_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ }Skein_512_Ctxt_t ;typedef struct /* 1024-bit Skein hash context structure */ {Skein_Ctxt_Hdr_t h;/* common header context variables */ -u64b_t X[SKEIN1024_STATE_WORDS ];/* chaining variables */ -u08b_t b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ +u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ +u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ }Skein1024_Ctxt_t ;/* Skein APIs for (incremental) "straight hashing" */
@@ -99,13 +96,13 @@ int Skein_256_Init (Skein_256_Ctxt_t *ctx, size_t hashBitLen);int Skein_512_Init (Skein_512_Ctxt_t *ctx,size_t hashBitLen);int Skein1024_Init (Skein1024_Ctxt_t *ctx,size_t hashBitLen); -int Skein_256_Update (Skein_256_Ctxt_t *ctx,const u08b_t *msg,size_t msgByteCnt); -int Skein_512_Update (Skein_512_Ctxt_t *ctx,const u08b_t *msg,size_t msgByteCnt); -int Skein1024_Update (Skein1024_Ctxt_t *ctx,const u08b_t *msg,size_t msgByteCnt); +int Skein_256_Update (Skein_256_Ctxt_t *ctx,const u8 *msg,size_t msgByteCnt); +int Skein_512_Update (Skein_512_Ctxt_t *ctx,const u8 *msg,size_t msgByteCnt); +int Skein1024_Update (Skein1024_Ctxt_t *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_256_Final (Skein_256_Ctxt_t *ctx,u08b_t * hashVal); -int Skein_512_Final (Skein_512_Ctxt_t *ctx,u08b_t * hashVal); -int Skein1024_Final (Skein1024_Ctxt_t *ctx,u08b_t * hashVal); +int Skein_256_Final (Skein_256_Ctxt_t *ctx,u8 * hashVal); +int Skein_512_Final (Skein_512_Ctxt_t *ctx,u8 * hashVal); +int Skein1024_Final (Skein1024_Ctxt_t *ctx,u8 * hashVal);/* ** Skein APIs for "extended" initialization: MAC keys, tree hashing.
@@ -121,26 +118,26 @@ int Skein1024_Final (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);** to precompute the MAC IV, then a copy of the context saved and ** reused for each new MAC computation. **/ -int Skein_256_InitExt (Skein_256_Ctxt_t *ctx,size_t hashBitLen,u64b_t treeInfo,const u08b_t *key,size_t keyBytes); -int Skein_512_InitExt (Skein_512_Ctxt_t *ctx,size_t hashBitLen,u64b_t treeInfo,const u08b_t *key,size_t keyBytes); -int Skein1024_InitExt (Skein1024_Ctxt_t *ctx,size_t hashBitLen,u64b_t treeInfo,const u08b_t *key,size_t keyBytes); +int Skein_256_InitExt (Skein_256_Ctxt_t *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein_512_InitExt (Skein_512_Ctxt_t *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein1024_InitExt (Skein1024_Ctxt_t *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes);/* ** Skein APIs for MAC and tree hash: ** Final_Pad: pad, do final block, but no OUTPUT type ** Output: do just the output stage */ -int Skein_256_Final_Pad (Skein_256_Ctxt_t *ctx,u08b_t * hashVal); -int Skein_512_Final_Pad (Skein_512_Ctxt_t *ctx,u08b_t * hashVal); -int Skein1024_Final_Pad (Skein1024_Ctxt_t *ctx,u08b_t * hashVal); +int Skein_256_Final_Pad (Skein_256_Ctxt_t *ctx,u8 * hashVal); +int Skein_512_Final_Pad (Skein_512_Ctxt_t *ctx,u8 * hashVal); +int Skein1024_Final_Pad (Skein1024_Ctxt_t *ctx,u8 * hashVal);#ifndef SKEIN_TREE_HASH #define SKEIN_TREE_HASH (1)#endif #if SKEIN_TREE_HASH -int Skein_256_Output (Skein_256_Ctxt_t *ctx,u08b_t * hashVal); -int Skein_512_Output (Skein_512_Ctxt_t *ctx,u08b_t * hashVal); -int Skein1024_Output (Skein1024_Ctxt_t *ctx,u08b_t * hashVal); +int Skein_256_Output (Skein_256_Ctxt_t *ctx,u8 * hashVal); +int Skein_512_Output (Skein_512_Ctxt_t *ctx,u8 * hashVal); +int Skein1024_Output (Skein1024_Ctxt_t *ctx,u8 * hashVal);#endif /*****************************************************************
@@ -161,13 +158,13 @@ int Skein1024_Output (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);#define SKEIN_T1_POS_FINAL SKEIN_T1_BIT(127)/* bit 127 : final block flag */ /* tweak word T[1]: flag bit definition(s) */ -#define SKEIN_T1_FLAG_FIRST (((u64b_t) 1 ) << SKEIN_T1_POS_FIRST) -#define SKEIN_T1_FLAG_FINAL (((u64b_t) 1 ) << SKEIN_T1_POS_FINAL) -#define SKEIN_T1_FLAG_BIT_PAD (((u64b_t) 1 ) << SKEIN_T1_POS_BIT_PAD) +#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 */ -#define SKEIN_T1_TREE_LVL_MASK (((u64b_t)0x7F) << SKEIN_T1_POS_TREE_LVL) -#define SKEIN_T1_TREE_LEVEL (n) (((u64b_t) (n)) << SKEIN_T1_POS_TREE_LVL) +#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 */ #define SKEIN_BLK_TYPE_KEY ( 0)/* key, for MAC and KDF */
@@ -180,7 +177,7 @@ int Skein1024_Output (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);#define SKEIN_BLK_TYPE_OUT (63)/* output stage */ #define SKEIN_BLK_TYPE_MASK (63)/* bit field mask */ -#define SKEIN_T1_BLK_TYPE (T ) (((u64b_t) (SKEIN_BLK_TYPE_##T)) << SKEIN_T1_POS_BLK_TYPE) +#define SKEIN_T1_BLK_TYPE (T ) (((u64) (SKEIN_BLK_TYPE_##T)) << SKEIN_T1_POS_BLK_TYPE)#define SKEIN_T1_BLK_TYPE_KEY SKEIN_T1_BLK_TYPE(KEY)/* key, for MAC and KDF */ #define SKEIN_T1_BLK_TYPE_CFG SKEIN_T1_BLK_TYPE(CFG)/* configuration block */ #define SKEIN_T1_BLK_TYPE_PERS SKEIN_T1_BLK_TYPE(PERS)/* personalization string */
@@ -200,7 +197,7 @@ int Skein1024_Output (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);#define SKEIN_ID_STRING_LE (0x33414853)/* "SHA3" (little-endian)*/ #endif -#define SKEIN_MK_64 (hi32,lo32) ((lo32) + (((u64b_t) (hi32)) << 32)) +#define SKEIN_MK_64 (hi32,lo32) ((lo32) + (((u64) (hi32)) << 32))#define SKEIN_SCHEMA_VER SKEIN_MK_64(SKEIN_VERSION,SKEIN_ID_STRING_LE)#define SKEIN_KS_PARITY SKEIN_MK_64(0x1BD11BDA,0xA9FC1A22)
@@ -211,14 +208,14 @@ int Skein1024_Output (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);#define SKEIN_CFG_TREE_NODE_SIZE_POS ( 8)#define SKEIN_CFG_TREE_MAX_LEVEL_POS (16) -#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64b_t) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS) -#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64b_t) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS) -#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64b_t) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS) +#define SKEIN_CFG_TREE_LEAF_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS) +#define SKEIN_CFG_TREE_NODE_SIZE_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS) +#define SKEIN_CFG_TREE_MAX_LEVEL_MSK (((u64) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS)#define SKEIN_CFG_TREE_INFO (leaf,node,maxLvl) \ - ( (((u64b_t)(leaf )) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ - (((u64b_t)(node )) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ - (((u64b_t)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS) ) + ( (((u64)(leaf )) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \ + (((u64)(node )) << SKEIN_CFG_TREE_NODE_SIZE_POS) | \ + (((u64)(maxLvl)) << SKEIN_CFG_TREE_MAX_LEVEL_POS) )#define SKEIN_CFG_TREE_INFO_SEQUENTIAL SKEIN_CFG_TREE_INFO(0,0,0)/* use as treeInfo in InitExt() call for sequential processing */
drivers/staging/skein/include/skeinApi.h +2 -2
@@ -99,8 +99,8 @@ OTHER DEALINGS IN THE SOFTWARE.* structures as well. */ typedef struct SkeinCtx { - u64b_t skeinSize; - u64b_t XSave[SKEIN_MAX_STATE_WORDS]; /* save area for state variables */ + u64 skeinSize; + u64 XSave[SKEIN_MAX_STATE_WORDS]; /* save area for state variables */ union { Skein_Ctxt_Hdr_t h; Skein_256_Ctxt_t s256;
drivers/staging/skein/include/skein_iv.h +13 -13
@@ -20,7 +20,7 @@#define MK_64 SKEIN_MK_64/* blkSize = 256 bits. hashSize = 128 bits */ -const u64b_t SKEIN_256_IV_128 [] = +const u64 SKEIN_256_IV_128 [] = {MK_64 (0xE1111906 ,0x964D7260 ),MK_64 (0x883DAAA7 ,0x7C8D811C ),
@@ -29,7 +29,7 @@ const u64b_t SKEIN_256_IV_128[] = };/* blkSize = 256 bits. hashSize = 160 bits */ -const u64b_t SKEIN_256_IV_160 [] = +const u64 SKEIN_256_IV_160 [] = {MK_64 (0x14202314 ,0x72825E98 ),MK_64 (0x2AC4E9A2 ,0x5A77E590 ),
@@ -38,7 +38,7 @@ const u64b_t SKEIN_256_IV_160[] = };/* blkSize = 256 bits. hashSize = 224 bits */ -const u64b_t SKEIN_256_IV_224 [] = +const u64 SKEIN_256_IV_224 [] = {MK_64 (0xC6098A8C ,0x9AE5EA0B ),MK_64 (0x876D5686 ,0x08C5191C ),
@@ -47,7 +47,7 @@ const u64b_t SKEIN_256_IV_224[] = };/* blkSize = 256 bits. hashSize = 256 bits */ -const u64b_t SKEIN_256_IV_256 [] = +const u64 SKEIN_256_IV_256 [] = {MK_64 (0xFC9DA860 ,0xD048B449 ),MK_64 (0x2FCA6647 ,0x9FA7D833 ),
@@ -56,7 +56,7 @@ const u64b_t SKEIN_256_IV_256[] = };/* blkSize = 512 bits. hashSize = 128 bits */ -const u64b_t SKEIN_512_IV_128 [] = +const u64 SKEIN_512_IV_128 [] = {MK_64 (0xA8BC7BF3 ,0x6FBF9F52 ),MK_64 (0x1E9872CE ,0xBD1AF0AA ),
@@ -69,7 +69,7 @@ const u64b_t SKEIN_512_IV_128[] = };/* blkSize = 512 bits. hashSize = 160 bits */ -const u64b_t SKEIN_512_IV_160 [] = +const u64 SKEIN_512_IV_160 [] = {MK_64 (0x28B81A2A ,0xE013BD91 ),MK_64 (0xC2F11668 ,0xB5BDF78F ),
@@ -82,7 +82,7 @@ const u64b_t SKEIN_512_IV_160[] = };/* blkSize = 512 bits. hashSize = 224 bits */ -const u64b_t SKEIN_512_IV_224 [] = +const u64 SKEIN_512_IV_224 [] = {MK_64 (0xCCD06162 ,0x48677224 ),MK_64 (0xCBA65CF3 ,0xA92339EF ),
@@ -95,7 +95,7 @@ const u64b_t SKEIN_512_IV_224[] = };/* blkSize = 512 bits. hashSize = 256 bits */ -const u64b_t SKEIN_512_IV_256 [] = +const u64 SKEIN_512_IV_256 [] = {MK_64 (0xCCD044A1 ,0x2FDB3E13 ),MK_64 (0xE8359030 ,0x1A79A9EB ),
@@ -108,7 +108,7 @@ const u64b_t SKEIN_512_IV_256[] = };/* blkSize = 512 bits. hashSize = 384 bits */ -const u64b_t SKEIN_512_IV_384 [] = +const u64 SKEIN_512_IV_384 [] = {MK_64 (0xA3F6C6BF ,0x3A75EF5F ),MK_64 (0xB0FEF9CC ,0xFD84FAA4 ),
@@ -121,7 +121,7 @@ const u64b_t SKEIN_512_IV_384[] = };/* blkSize = 512 bits. hashSize = 512 bits */ -const u64b_t SKEIN_512_IV_512 [] = +const u64 SKEIN_512_IV_512 [] = {MK_64 (0x4903ADFF ,0x749C51CE ),MK_64 (0x0D95DE39 ,0x9746DF03 ),
@@ -134,7 +134,7 @@ const u64b_t SKEIN_512_IV_512[] = };/* blkSize = 1024 bits. hashSize = 384 bits */ -const u64b_t SKEIN1024_IV_384 [] = +const u64 SKEIN1024_IV_384 [] = {MK_64 (0x5102B6B8 ,0xC1894A35 ),MK_64 (0xFEEBC9E3 ,0xFE8AF11A ),
@@ -155,7 +155,7 @@ const u64b_t SKEIN1024_IV_384[] = };/* blkSize = 1024 bits. hashSize = 512 bits */ -const u64b_t SKEIN1024_IV_512 [] = +const u64 SKEIN1024_IV_512 [] = {MK_64 (0xCAEC0E5D ,0x7C1B1B18 ),MK_64 (0xA01B0E04 ,0x5F03E802 ),
@@ -176,7 +176,7 @@ const u64b_t SKEIN1024_IV_512[] = };/* blkSize = 1024 bits. hashSize = 1024 bits */ -const u64b_t SKEIN1024_IV_1024 [] = +const u64 SKEIN1024_IV_1024 [] = {MK_64 (0xD593DA07 ,0x41E72355 ),MK_64 (0x15B5E511 ,0xAC73E00C ),
drivers/staging/skein/include/threefishApi.h +3 -3
@@ -51,9 +51,9 @@* structures as well. */ typedef struct ThreefishKey { -u64b_t stateSize; -u64b_t key[SKEIN_MAX_STATE_WORDS +1 ];/* max number of key words*/ -u64b_t tweak[3 ]; +u64 stateSize; +u64 key[SKEIN_MAX_STATE_WORDS +1 ];/* max number of key words*/ +u64 tweak[3 ]; }ThreefishKey_t ;/**
drivers/staging/skein/skein.c +48 -48
273 lines not on this page · raw message
drivers/staging/skein/skeinApi.c +12 -12
@@ -41,7 +41,7 @@ int skeinInit(SkeinCtx_t* ctx, size_t hashBitLen) {int ret =SKEIN_FAIL ;size_t Xlen =0 ; -u64b_t *X =NULL ; +u64 *X =NULL ;uint64_t treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;Skein_Assert (ctx,SKEIN_FAIL );
@@ -82,7 +82,7 @@ int skeinMacInit(SkeinCtx_t* ctx, const uint8_t *key, size_t keyLen, size_t hashBitLen) {int ret =SKEIN_FAIL ; -u64b_t *X =NULL ; +u64 *X =NULL ;size_t Xlen =0 ;uint64_t treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;
@@ -97,18 +97,18 @@ int skeinMacInit(SkeinCtx_t* ctx, const uint8_t *key, size_t keyLen,case Skein256: ret =Skein_256_InitExt (&ctx->m.s256, hashBitLen, treeInfo, - (const u08b_t *)key, keyLen); + (const u8 *)key, keyLen);break ;case Skein512: ret =Skein_512_InitExt (&ctx->m.s512, hashBitLen, treeInfo, - (const u08b_t *)key, keyLen); + (const u8 *)key, keyLen);break ;case Skein1024: ret =Skein1024_InitExt (&ctx->m.s1024, hashBitLen, treeInfo, - (const u08b_t *)key, keyLen); + (const u8 *)key, keyLen);break ; }
@@ -122,7 +122,7 @@ int skeinMacInit(SkeinCtx_t* ctx, const uint8_t *key, size_t keyLen,void skeinReset (SkeinCtx_t * ctx) {size_t Xlen =0 ; -u64b_t *X =NULL ; +u64 *X =NULL ;/* * The following two lines rely of the fact that the real Skein contexts are
@@ -146,13 +146,13 @@ int skeinUpdate(SkeinCtx_t *ctx, const uint8_t *msg,switch (ctx->skeinSize) {case Skein256: - ret =Skein_256_Update (&ctx->m.s256, (const u08b_t *)msg, msgByteCnt); + ret =Skein_256_Update (&ctx->m.s256, (const u8 *)msg, msgByteCnt);break ;case Skein512: - ret =Skein_512_Update (&ctx->m.s512, (const u08b_t *)msg, msgByteCnt); + ret =Skein_512_Update (&ctx->m.s512, (const u8 *)msg, msgByteCnt);break ;case Skein1024: - ret =Skein1024_Update (&ctx->m.s1024, (const u08b_t *)msg, msgByteCnt); + ret =Skein1024_Update (&ctx->m.s1024, (const u8 *)msg, msgByteCnt);break ; }return ret;
@@ -206,13 +206,13 @@ int skeinFinal(SkeinCtx_t* ctx, uint8_t* hash)switch (ctx->skeinSize) {case Skein256: - ret =Skein_256_Final (&ctx->m.s256, (u08b_t *)hash); + ret =Skein_256_Final (&ctx->m.s256, (u8 *)hash);break ;case Skein512: - ret =Skein_512_Final (&ctx->m.s512, (u08b_t *)hash); + ret =Skein_512_Final (&ctx->m.s512, (u8 *)hash);break ;case Skein1024: - ret =Skein1024_Final (&ctx->m.s1024, (u08b_t *)hash); + ret =Skein1024_Final (&ctx->m.s1024, (u8 *)hash);break ; }return ret;
drivers/staging/skein/skeinBlockNo3F.c +15 -15
@@ -5,21 +5,21 @@/***************************** Skein_256 ******************************/ -void Skein_256_Process_Block (Skein_256_Ctxt_t *ctx,const u08b_t *blkPtr, +void Skein_256_Process_Block (Skein_256_Ctxt_t *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) {ThreefishKey_t key; -u64b_t tweak[2 ]; +u64 tweak[2 ];int i; -u64b_t w[SKEIN_256_STATE_WORDS ];/* local copy of input block */ -u64b_t words[3 ]; +u64 w[SKEIN_256_STATE_WORDS ];/* local copy of input block */ +u64 words[3 ];Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ tweak[0 ] = ctx->h.T[0 ]; tweak[1 ] = ctx->h.T[1 ]; do { - u64b_t carry = byteCntAdd; + u64 carry = byteCntAdd; words[0] = tweak[0] & 0xffffffffL; words[1] = ((tweak[0] >> 32) & 0xffffffffL);
@@ -55,21 +55,21 @@ void Skein_256_Process_Block(Skein_256_Ctxt_t *ctx, const u08b_t *blkPtr, ctx->h.T[1 ] = tweak[1 ]; } -void Skein_512_Process_Block (Skein_512_Ctxt_t *ctx,const u08b_t *blkPtr, +void Skein_512_Process_Block (Skein_512_Ctxt_t *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) {ThreefishKey_t key; -u64b_t tweak[2 ]; +u64 tweak[2 ];int i; -u64b_t words[3 ]; -u64b_t w[SKEIN_512_STATE_WORDS ];/* local copy of input block */ +u64 words[3 ]; +u64 w[SKEIN_512_STATE_WORDS ];/* local copy of input block */ Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ tweak[0 ] = ctx->h.T[0 ]; tweak[1 ] = ctx->h.T[1 ]; do { - u64b_t carry = byteCntAdd; + u64 carry = byteCntAdd; words[0] = tweak[0] & 0xffffffffL; words[1] = ((tweak[0] >> 32) & 0xffffffffL);
@@ -109,21 +109,21 @@ void Skein_512_Process_Block(Skein_512_Ctxt_t *ctx, const u08b_t *blkPtr, ctx->h.T[1 ] = tweak[1 ]; } -void Skein1024_Process_Block (Skein1024_Ctxt_t *ctx,const u08b_t *blkPtr, +void Skein1024_Process_Block (Skein1024_Ctxt_t *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) {ThreefishKey_t key; -u64b_t tweak[2 ]; +u64 tweak[2 ];int i; -u64b_t words[3 ]; -u64b_t w[SKEIN1024_STATE_WORDS ];/* local copy of input block */ +u64 words[3 ]; +u64 w[SKEIN1024_STATE_WORDS ];/* local copy of input block */ Skein_assert (blkCnt !=0 );/* never call with blkCnt == 0! */ tweak[0 ] = ctx->h.T[0 ]; tweak[1 ] = ctx->h.T[1 ]; do { - u64b_t carry = byteCntAdd; + u64 carry = byteCntAdd; words[0] = tweak[0] & 0xffffffffL; words[1] = ((tweak[0] >> 32) & 0xffffffffL);
drivers/staging/skein/skein_block.c +27 -27
122 lines not on this page · raw message
drivers/staging/skein/threefishApi.c +4 -4
@@ -25,8 +25,8 @@ void threefishSetKey(ThreefishKey_t* keyCtx, ThreefishSize_t stateSize,void threefishEncryptBlockBytes (ThreefishKey_t * keyCtx,uint8_t * in,uint8_t * out) { -u64b_t plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ -u64b_t cipher[SKEIN_MAX_STATE_WORDS ]; +u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ +u64 cipher[SKEIN_MAX_STATE_WORDS ];Skein_Get64_LSB_First (plain, in, keyCtx->stateSize /64 );/* bytes to words */ threefishEncryptBlockWords (keyCtx, plain, cipher);
@@ -52,8 +52,8 @@ void threefishEncryptBlockWords(ThreefishKey_t* keyCtx, uint64_t* in,void threefishDecryptBlockBytes (ThreefishKey_t * keyCtx,uint8_t * in,uint8_t * out) { -u64b_t plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ -u64b_t cipher[SKEIN_MAX_STATE_WORDS ]; +u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ +u64 cipher[SKEIN_MAX_STATE_WORDS ];Skein_Get64_LSB_First (cipher, in, keyCtx->stateSize /64 );/* bytes to words */ threefishDecryptBlockWords (keyCtx, cipher, plain);
Signature · 1 line
1.9.1
PATCH v2 7/21 staging: crypto: skein: remove all typedef {struct,enum}
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 58 ++++++++++++++-------------- drivers/staging/skein/include/skeinApi.h | 32 +++++++-------- drivers/staging/skein/include/threefishApi.h | 32 +++++++-------- drivers/staging/skein/skein.c | 42 ++++++++++---------- drivers/staging/skein/skeinApi.c | 16 ++++---- drivers/staging/skein/skeinBlockNo3F.c | 12 +++--- drivers/staging/skein/skein_block.c | 6 +-- drivers/staging/skein/threefish1024Block.c | 4 +- drivers/staging/skein/threefish256Block.c | 4 +- drivers/staging/skein/threefish512Block.c | 4 +- drivers/staging/skein/threefishApi.c | 10 ++--- 11 files changed, 110 insertions(+), 110 deletions(-)
drivers/staging/skein/include/skein.h +29 -29
@@ -63,46 +63,46 @@ enum#define SKEIN_512_BLOCK_BYTES ( 8*SKEIN_512_STATE_WORDS)#define SKEIN1024_BLOCK_BYTES ( 8*SKEIN1024_STATE_WORDS) -typedef struct +struct skein_ctx_hdr {size_t hashBitLen;/* size of hash result, in bits */ size_t bCnt;/* current byte count in buffer b[] */ u64 T[SKEIN_MODIFIER_WORDS ];/* tweak words: T[0]=byte cnt, T[1]=flags */ - }Skein_Ctxt_Hdr_t ; + }; -typedef struct /* 256-bit Skein hash context structure */ +struct skein_256_ctx /* 256-bit Skein hash context structure */ { -Skein_Ctxt_Hdr_t h;/* common header context variables */ +struct skein_ctx_hdr h;/* common header context variables */ u64 X[SKEIN_256_STATE_WORDS ];/* chaining variables */ u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }Skein_256_Ctxt_t ; + }; -typedef struct /* 512-bit Skein hash context structure */ +struct skein_512_ctx /* 512-bit Skein hash context structure */ { -Skein_Ctxt_Hdr_t h;/* common header context variables */ +struct skein_ctx_hdr h;/* common header context variables */ u64 X[SKEIN_512_STATE_WORDS ];/* chaining variables */ u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }Skein_512_Ctxt_t ; + }; -typedef struct /* 1024-bit Skein hash context structure */ +struct skein1024_ctx /* 1024-bit Skein hash context structure */ { -Skein_Ctxt_Hdr_t h;/* common header context variables */ +struct skein_ctx_hdr h;/* common header context variables */ u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buffer (8-byte aligned) */ - }Skein1024_Ctxt_t ; + };/* Skein APIs for (incremental) "straight hashing" */ -int Skein_256_Init (Skein_256_Ctxt_t *ctx,size_t hashBitLen); -int Skein_512_Init (Skein_512_Ctxt_t *ctx,size_t hashBitLen); -int Skein1024_Init (Skein1024_Ctxt_t *ctx,size_t hashBitLen); +int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen); +int Skein_512_Init (struct skein_512_ctx *ctx,size_t hashBitLen); +int Skein1024_Init (struct skein1024_ctx *ctx,size_t hashBitLen); -int Skein_256_Update (Skein_256_Ctxt_t *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_512_Update (Skein_512_Ctxt_t *ctx,const u8 *msg,size_t msgByteCnt); -int Skein1024_Update (Skein1024_Ctxt_t *ctx,const u8 *msg,size_t msgByteCnt); +int Skein_256_Update (struct skein_256_ctx *ctx,const u8 *msg,size_t msgByteCnt); +int Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg,size_t msgByteCnt); +int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_256_Final (Skein_256_Ctxt_t *ctx,u8 * hashVal); -int Skein_512_Final (Skein_512_Ctxt_t *ctx,u8 * hashVal); -int Skein1024_Final (Skein1024_Ctxt_t *ctx,u8 * hashVal); +int Skein_256_Final (struct skein_256_ctx *ctx,u8 * hashVal); +int Skein_512_Final (struct skein_512_ctx *ctx,u8 * hashVal); +int Skein1024_Final (struct skein1024_ctx *ctx,u8 * hashVal);/* ** Skein APIs for "extended" initialization: MAC keys, tree hashing.
@@ -118,26 +118,26 @@ int Skein1024_Final (Skein1024_Ctxt_t *ctx, u8 * hashVal);** to precompute the MAC IV, then a copy of the context saved and ** reused for each new MAC computation. **/ -int Skein_256_InitExt (Skein_256_Ctxt_t *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); -int Skein_512_InitExt (Skein_512_Ctxt_t *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); -int Skein1024_InitExt (Skein1024_Ctxt_t *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein_256_InitExt (struct skein_256_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein_512_InitExt (struct skein_512_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes); +int Skein1024_InitExt (struct skein1024_ctx *ctx,size_t hashBitLen,u64 treeInfo,const u8 *key,size_t keyBytes);/* ** Skein APIs for MAC and tree hash: ** Final_Pad: pad, do final block, but no OUTPUT type ** Output: do just the output stage */ -int Skein_256_Final_Pad (Skein_256_Ctxt_t *ctx,u8 * hashVal); -int Skein_512_Final_Pad (Skein_512_Ctxt_t *ctx,u8 * hashVal); -int Skein1024_Final_Pad (Skein1024_Ctxt_t *ctx,u8 * hashVal); +int Skein_256_Final_Pad (struct skein_256_ctx *ctx,u8 * hashVal); +int Skein_512_Final_Pad (struct skein_512_ctx *ctx,u8 * hashVal); +int Skein1024_Final_Pad (struct skein1024_ctx *ctx,u8 * hashVal);#ifndef SKEIN_TREE_HASH #define SKEIN_TREE_HASH (1)#endif #if SKEIN_TREE_HASH -int Skein_256_Output (Skein_256_Ctxt_t *ctx,u8 * hashVal); -int Skein_512_Output (Skein_512_Ctxt_t *ctx,u8 * hashVal); -int Skein1024_Output (Skein1024_Ctxt_t *ctx,u8 * hashVal); +int Skein_256_Output (struct skein_256_ctx *ctx,u8 * hashVal); +int Skein_512_Output (struct skein_512_ctx *ctx,u8 * hashVal); +int Skein1024_Output (struct skein1024_ctx *ctx,u8 * hashVal);#endif /*****************************************************************
drivers/staging/skein/include/skeinApi.h +16 -16
@@ -47,7 +47,7 @@ OTHER DEALINGS IN THE SOFTWARE.* #include <skeinApi.h> * * ... -* SkeinCtx_t ctx; // a Skein hash or MAC context +* struct skein_ctx ctx; // a Skein hash or MAC context * * // prepare context, here for a Skein with a state size of 512 bits. * skeinCtxPrepare(&ctx, Skein512);
@@ -84,11 +84,11 @@ OTHER DEALINGS IN THE SOFTWARE./** * Which Skein size to use */ -typedef enum SkeinSize { +enum skein_size { Skein256 =256 ,/*!< Skein with 256 bit state */ Skein512 =512 ,/*!< Skein with 512 bit state */ Skein1024 =1024 /*!< Skein with 1024 bit state */ - }SkeinSize_t ; + };/** * Context for Skein.
@@ -98,16 +98,16 @@ OTHER DEALINGS IN THE SOFTWARE.* variables. If Skein implementation changes this, then adapt these * structures as well. */ -typedef struct SkeinCtx { +struct skein_ctx {u64 skeinSize;u64 XSave[SKEIN_MAX_STATE_WORDS ];/* save area for state variables */ union { -Skein_Ctxt_Hdr_t h; -Skein_256_Ctxt_t s256; -Skein_512_Ctxt_t s512; -Skein1024_Ctxt_t s1024; +struct skein_ctx_hdr h; +struct skein_256_ctx s256; +struct skein_512_ctx s512; +struct skein1024_ctx s1024; } m; - }SkeinCtx_t ; + };/** * Prepare a Skein context.
@@ -123,7 +123,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * SKEIN_SUCESS of SKEIN_FAIL */ -int skeinCtxPrepare (SkeinCtx_t * ctx,SkeinSize_t size); +int skeinCtxPrepare (struct skein_ctx * ctx,enum skein_size size);/** * Initialize a Skein context.
@@ -139,7 +139,7 @@ OTHER DEALINGS IN THE SOFTWARE.* SKEIN_SUCESS of SKEIN_FAIL * @see skeinReset */ -int skeinInit (SkeinCtx_t * ctx,size_t hashBitLen); +int skeinInit (struct skein_ctx * ctx,size_t hashBitLen);/** * Resets a Skein context for further use.
@@ -151,7 +151,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @param ctx * Pointer to a pre-initialized Skein MAC context */ -void skeinReset (SkeinCtx_t * ctx); +void skeinReset (struct skein_ctx * ctx);/** * Initializes a Skein context for MAC usage.
@@ -173,7 +173,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * SKEIN_SUCESS of SKEIN_FAIL */ -int skeinMacInit (SkeinCtx_t * ctx,const uint8_t *key,size_t keyLen, +int skeinMacInit (struct skein_ctx * ctx,const uint8_t *key,size_t keyLen,size_t hashBitLen);/**
@@ -188,7 +188,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * Success or error code. */ -int skeinUpdate (SkeinCtx_t *ctx,const uint8_t *msg, +int skeinUpdate (struct skein_ctx *ctx,const uint8_t *msg,size_t msgByteCnt);/**
@@ -204,7 +204,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @param msgBitCnt * Length of the message in @b bits. */ -int skeinUpdateBits (SkeinCtx_t *ctx,const uint8_t *msg, +int skeinUpdateBits (struct skein_ctx *ctx,const uint8_t *msg,size_t msgBitCnt);/**
@@ -222,7 +222,7 @@ OTHER DEALINGS IN THE SOFTWARE.* Success or error code. * @see skeinReset */ -int skeinFinal (SkeinCtx_t * ctx,uint8_t * hash); +int skeinFinal (struct skein_ctx * ctx,uint8_t * hash);/** * @}
drivers/staging/skein/include/threefishApi.h +16 -16
@@ -18,7 +18,7 @@ * @code // Threefish cipher context data -ThreefishKey_t keyCtx; +struct threefish_key keyCtx;// Initialize the context threefishSetKey (&keyCtx, Threefish512, key, tweak);
@@ -36,11 +36,11 @@/** * Which Threefish size to use */ -typedef enum ThreefishSize { +enum threefish_size { Threefish256 =256 ,/*!< Skein with 256 bit state */ Threefish512 =512 ,/*!< Skein with 512 bit state */ Threefish1024 =1024 /*!< Skein with 1024 bit state */ - }ThreefishSize_t ; + };/** * Context for Threefish key and tweak words.
@@ -50,11 +50,11 @@* variables. If Skein implementation changes this, the adapt these * structures as well. */ -typedef struct ThreefishKey { +struct threefish_key {u64 stateSize;u64 key[SKEIN_MAX_STATE_WORDS +1 ];/* max number of key words*/ u64 tweak[3 ]; - }ThreefishKey_t ; + };/** * Set Threefish key and tweak data.
@@ -72,7 +72,7 @@* @param tweak * Pointer to the two tweak words (word has 64 bits). */ -void threefishSetKey (ThreefishKey_t * keyCtx,ThreefishSize_t stateSize,uint64_t * keyData,uint64_t * tweak); +void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize,uint64_t * keyData,uint64_t * tweak);/** * Encrypt Threefisch block (bytes).
@@ -89,7 +89,7 @@* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockBytes (ThreefishKey_t * keyCtx,uint8_t * in,uint8_t * out); +void threefishEncryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in,uint8_t * out);/** * Encrypt Threefisch block (words).
@@ -108,7 +108,7 @@* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockWords (ThreefishKey_t * keyCtx,uint64_t * in,uint64_t * out); +void threefishEncryptBlockWords (struct threefish_key * keyCtx,uint64_t * in,uint64_t * out);/** * Decrypt Threefisch block (bytes).
@@ -125,7 +125,7 @@* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockBytes (ThreefishKey_t * keyCtx,uint8_t * in,uint8_t * out); +void threefishDecryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in,uint8_t * out);/** * Decrypt Threefisch block (words).
@@ -144,14 +144,14 @@* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockWords (ThreefishKey_t * keyCtx,uint64_t * in,uint64_t * out); +void threefishDecryptBlockWords (struct threefish_key * keyCtx,uint64_t * in,uint64_t * out); -void threefishEncrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); -void threefishEncrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); -void threefishEncrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); -void threefishDecrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); -void threefishDecrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); -void threefishDecrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output); +void threefishEncrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); +void threefishEncrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); +void threefishEncrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); +void threefishDecrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); +void threefishDecrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); +void threefishDecrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output);/** * @} */
drivers/staging/skein/skein.c +21 -21
156 lines not on this page · raw message
drivers/staging/skein/skeinApi.c +8 -8
@@ -27,17 +27,17 @@ OTHER DEALINGS IN THE SOFTWARE.#include <linux/string.h> #include <skeinApi.h> -int skeinCtxPrepare (SkeinCtx_t * ctx,SkeinSize_t size) +int skeinCtxPrepare (struct skein_ctx * ctx,enum skein_size size) {Skein_Assert (ctx && size,SKEIN_FAIL ); -memset (ctx ,0 ,sizeof (SkeinCtx_t)); +memset (ctx ,0 ,sizeof (struct skein_ctx )); ctx->skeinSize = size;return SKEIN_SUCCESS ; } -int skeinInit (SkeinCtx_t * ctx,size_t hashBitLen) +int skeinInit (struct skein_ctx * ctx,size_t hashBitLen) {int ret =SKEIN_FAIL ;size_t Xlen =0 ;
@@ -78,7 +78,7 @@ int skeinInit(SkeinCtx_t* ctx, size_t hashBitLen)return ret; } -int skeinMacInit (SkeinCtx_t * ctx,const uint8_t *key,size_t keyLen, +int skeinMacInit (struct skein_ctx * ctx,const uint8_t *key,size_t keyLen,size_t hashBitLen) {int ret =SKEIN_FAIL ;
@@ -119,7 +119,7 @@ int skeinMacInit(SkeinCtx_t* ctx, const uint8_t *key, size_t keyLen,return ret; } -void skeinReset (SkeinCtx_t * ctx) +void skeinReset (struct skein_ctx * ctx) {size_t Xlen =0 ;u64 *X =NULL ;
@@ -138,7 +138,7 @@ void skeinReset(SkeinCtx_t* ctx)Skein_Start_New_Type (&ctx->m,MSG ); } -int skeinUpdate (SkeinCtx_t *ctx,const uint8_t *msg, +int skeinUpdate (struct skein_ctx *ctx,const uint8_t *msg,size_t msgByteCnt) {int ret =SKEIN_FAIL ;
@@ -159,7 +159,7 @@ int skeinUpdate(SkeinCtx_t *ctx, const uint8_t *msg, } -int skeinUpdateBits (SkeinCtx_t *ctx,const uint8_t *msg, +int skeinUpdateBits (struct skein_ctx *ctx,const uint8_t *msg,size_t msgBitCnt) {/*
@@ -199,7 +199,7 @@ int skeinUpdateBits(SkeinCtx_t *ctx, const uint8_t *msg,return SKEIN_SUCCESS ; } -int skeinFinal (SkeinCtx_t * ctx,uint8_t * hash) +int skeinFinal (struct skein_ctx * ctx,uint8_t * hash) {int ret =SKEIN_FAIL ;Skein_Assert (ctx,SKEIN_FAIL );
drivers/staging/skein/skeinBlockNo3F.c +6 -6
@@ -5,10 +5,10 @@/***************************** Skein_256 ******************************/ -void Skein_256_Process_Block (Skein_256_Ctxt_t *ctx,const u8 *blkPtr, +void Skein_256_Process_Block (struct skein_256_ctx *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) { -ThreefishKey_t key; +struct threefish_key key;u64 tweak[2 ];int i;u64 w[SKEIN_256_STATE_WORDS ];/* local copy of input block */
@@ -55,10 +55,10 @@ void Skein_256_Process_Block(Skein_256_Ctxt_t *ctx, const u8 *blkPtr, ctx->h.T[1 ] = tweak[1 ]; } -void Skein_512_Process_Block (Skein_512_Ctxt_t *ctx,const u8 *blkPtr, +void Skein_512_Process_Block (struct skein_512_ctx *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) { -ThreefishKey_t key; +struct threefish_key key;u64 tweak[2 ];int i;u64 words[3 ];
@@ -109,10 +109,10 @@ void Skein_512_Process_Block(Skein_512_Ctxt_t *ctx, const u8 *blkPtr, ctx->h.T[1 ] = tweak[1 ]; } -void Skein1024_Process_Block (Skein1024_Ctxt_t *ctx,const u8 *blkPtr, +void Skein1024_Process_Block (struct skein1024_ctx *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) { -ThreefishKey_t key; +struct threefish_key key;u64 tweak[2 ];int i;u64 words[3 ];
drivers/staging/skein/skein_block.c +3 -3
@@ -39,7 +39,7 @@/***************************** Skein_256 ******************************/ #if !(SKEIN_USE_ASM & 256) -void Skein_256_Process_Block(Skein_256_Ctxt_t *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) +void Skein_256_Process_Block(struct skein_256_ctx *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) { /* do it in C */ enum {
@@ -224,7 +224,7 @@ unsigned int Skein_256_Unroll_Cnt(void)/***************************** Skein_512 ******************************/ #if !(SKEIN_USE_ASM & 512) -void Skein_512_Process_Block(Skein_512_Ctxt_t *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) +void Skein_512_Process_Block(struct skein_512_ctx *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) { /* do it in C */ enum {
@@ -432,7 +432,7 @@ unsigned int Skein_512_Unroll_Cnt(void)/***************************** Skein1024 ******************************/ #if !(SKEIN_USE_ASM & 1024) -void Skein1024_Process_Block(Skein1024_Ctxt_t *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) +void Skein1024_Process_Block(struct skein1024_ctx *ctx,const u8 *blkPtr,size_t blkCnt,size_t byteCntAdd) { /* do it in C, always looping (unrolled is bigger AND slower!) */ enum {
drivers/staging/skein/threefish1024Block.c +2 -2
@@ -2,7 +2,7 @@#include <threefishApi.h> -void threefishEncrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output) +void threefishEncrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) { uint64_t b0 = input[0], b1 = input[1],
@@ -684,7 +684,7 @@ void threefishEncrypt1024(ThreefishKey_t* keyCtx, uint64_t* input, uint64_t* out output[15 ] = b15 + k1 +20 ; } -void threefishDecrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output) +void threefishDecrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) { uint64_t b0 = input[0], b1 = input[1],
drivers/staging/skein/threefish256Block.c +2 -2
@@ -2,7 +2,7 @@#include <threefishApi.h> -void threefishEncrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output) +void threefishEncrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) { uint64_t b0 = input[0], b1 = input[1],
@@ -172,7 +172,7 @@ void threefishEncrypt256(ThreefishKey_t* keyCtx, uint64_t* input, uint64_t* outp output[3 ] = b3 + k1 +18 ; } -void threefishDecrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output) +void threefishDecrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) {uint64_t b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ];
drivers/staging/skein/threefish512Block.c +2 -2
@@ -2,7 +2,7 @@#include <threefishApi.h> -void threefishEncrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output) +void threefishEncrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) { uint64_t b0 = input[0], b1 = input[1],
@@ -316,7 +316,7 @@ void threefishEncrypt512(ThreefishKey_t* keyCtx, uint64_t* input, uint64_t* outp output[7 ] = b7 + k7 +18 ; } -void threefishDecrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output) +void threefishDecrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) { uint64_t b0 = input[0], b1 = input[1],
drivers/staging/skein/threefishApi.c +5 -5
@@ -3,7 +3,7 @@#include <linux/string.h> #include <threefishApi.h> -void threefishSetKey (ThreefishKey_t * keyCtx,ThreefishSize_t stateSize, +void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize,uint64_t * keyData,uint64_t * tweak) {int keyWords = stateSize /64 ;
@@ -22,7 +22,7 @@ void threefishSetKey(ThreefishKey_t* keyCtx, ThreefishSize_t stateSize, keyCtx->stateSize = stateSize; } -void threefishEncryptBlockBytes (ThreefishKey_t * keyCtx,uint8_t * in, +void threefishEncryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in,uint8_t * out) {u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/
@@ -33,7 +33,7 @@ void threefishEncryptBlockBytes(ThreefishKey_t* keyCtx, uint8_t* in,Skein_Put64_LSB_First (out, cipher, keyCtx->stateSize /8 );/* words to bytes */ } -void threefishEncryptBlockWords (ThreefishKey_t * keyCtx,uint64_t * in, +void threefishEncryptBlockWords (struct threefish_key * keyCtx,uint64_t * in,uint64_t * out) {switch (keyCtx->stateSize) {
@@ -49,7 +49,7 @@ void threefishEncryptBlockWords(ThreefishKey_t* keyCtx, uint64_t* in, } } -void threefishDecryptBlockBytes (ThreefishKey_t * keyCtx,uint8_t * in, +void threefishDecryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in,uint8_t * out) {u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/
@@ -60,7 +60,7 @@ void threefishDecryptBlockBytes(ThreefishKey_t* keyCtx, uint8_t* in,Skein_Put64_LSB_First (out, plain, keyCtx->stateSize /8 );/* words to bytes */ } -void threefishDecryptBlockWords (ThreefishKey_t * keyCtx,uint64_t * in, +void threefishDecryptBlockWords (struct threefish_key * keyCtx,uint64_t * in,uint64_t * out) {switch (keyCtx->stateSize) {
Signature · 1 line
1.9.1
PATCH v2 8/21 staging: crypto: skein: use u8, u64 vice uint*_t
In reply to Jason Cooper--- drivers/staging/skein/include/skeinApi.h | 8 ++++---- drivers/staging/skein/include/threefishApi.h | 22 +++++++++++----------- drivers/staging/skein/skeinApi.c | 22 +++++++++++----------- drivers/staging/skein/threefish1024Block.c | 18 +++++++++--------- drivers/staging/skein/threefish256Block.c | 18 +++++++++--------- drivers/staging/skein/threefish512Block.c | 18 +++++++++--------- drivers/staging/skein/threefishApi.c | 20 ++++++++++---------- 7 files changed, 63 insertions(+), 63 deletions(-)
drivers/staging/skein/include/skeinApi.h +4 -4
@@ -173,7 +173,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * SKEIN_SUCESS of SKEIN_FAIL */ -int skeinMacInit (struct skein_ctx * ctx,const uint8_t *key,size_t keyLen, +int skeinMacInit (struct skein_ctx * ctx,const u8 *key,size_t keyLen,size_t hashBitLen);/**
@@ -188,7 +188,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * Success or error code. */ -int skeinUpdate (struct skein_ctx *ctx,const uint8_t *msg, +int skeinUpdate (struct skein_ctx *ctx,const u8 *msg,size_t msgByteCnt);/**
@@ -204,7 +204,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @param msgBitCnt * Length of the message in @b bits. */ -int skeinUpdateBits (struct skein_ctx *ctx,const uint8_t *msg, +int skeinUpdateBits (struct skein_ctx *ctx,const u8 *msg,size_t msgBitCnt);/**
@@ -222,7 +222,7 @@ OTHER DEALINGS IN THE SOFTWARE.* Success or error code. * @see skeinReset */ -int skeinFinal (struct skein_ctx * ctx,uint8_t * hash); +int skeinFinal (struct skein_ctx * ctx,u8 * hash);/** * @}
drivers/staging/skein/include/threefishApi.h +11 -11
@@ -72,7 +72,7 @@* @param tweak * Pointer to the two tweak words (word has 64 bits). */ -void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize,uint64_t * keyData,uint64_t * tweak); +void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize,u64 * keyData,u64 * tweak);/** * Encrypt Threefisch block (bytes).
@@ -89,7 +89,7 @@* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in,uint8_t * out); +void threefishEncryptBlockBytes (struct threefish_key * keyCtx,u8 * in,u8 * out);/** * Encrypt Threefisch block (words).
@@ -108,7 +108,7 @@* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockWords (struct threefish_key * keyCtx,uint64_t * in,uint64_t * out); +void threefishEncryptBlockWords (struct threefish_key * keyCtx,u64 * in,u64 * out);/** * Decrypt Threefisch block (bytes).
@@ -125,7 +125,7 @@* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in,uint8_t * out); +void threefishDecryptBlockBytes (struct threefish_key * keyCtx,u8 * in,u8 * out);/** * Decrypt Threefisch block (words).
@@ -144,14 +144,14 @@* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockWords (struct threefish_key * keyCtx,uint64_t * in,uint64_t * out); +void threefishDecryptBlockWords (struct threefish_key * keyCtx,u64 * in,u64 * out); -void threefishEncrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); -void threefishEncrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); -void threefishEncrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); -void threefishDecrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); -void threefishDecrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); -void threefishDecrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output); +void threefishEncrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output); +void threefishEncrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output); +void threefishEncrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output); +void threefishDecrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output); +void threefishDecrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output); +void threefishDecrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output);/** * @} */
drivers/staging/skein/skeinApi.c +11 -11
@@ -42,7 +42,7 @@ int skeinInit(struct skein_ctx* ctx, size_t hashBitLen)int ret =SKEIN_FAIL ;size_t Xlen =0 ;u64 *X =NULL ; -uint64_t treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ; +u64 treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;Skein_Assert (ctx,SKEIN_FAIL );/*
@@ -78,13 +78,13 @@ int skeinInit(struct skein_ctx* ctx, size_t hashBitLen)return ret; } -int skeinMacInit (struct skein_ctx * ctx,const uint8_t *key,size_t keyLen, +int skeinMacInit (struct skein_ctx * ctx,const u8 *key,size_t keyLen,size_t hashBitLen) {int ret =SKEIN_FAIL ;u64 *X =NULL ;size_t Xlen =0 ; -uint64_t treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ; +u64 treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;Skein_Assert (ctx,SKEIN_FAIL );
@@ -138,7 +138,7 @@ void skeinReset(struct skein_ctx* ctx)Skein_Start_New_Type (&ctx->m,MSG ); } -int skeinUpdate (struct skein_ctx *ctx,const uint8_t *msg, +int skeinUpdate (struct skein_ctx *ctx,const u8 *msg,size_t msgByteCnt) {int ret =SKEIN_FAIL ;
@@ -159,7 +159,7 @@ int skeinUpdate(struct skein_ctx *ctx, const uint8_t *msg, } -int skeinUpdateBits (struct skein_ctx *ctx,const uint8_t *msg, +int skeinUpdateBits (struct skein_ctx *ctx,const u8 *msg,size_t msgBitCnt) {/*
@@ -168,8 +168,8 @@ int skeinUpdateBits(struct skein_ctx *ctx, const uint8_t *msg,* arithmetic. */ size_t length; -uint8_t mask; -uint8_t * up; +u8 mask; +u8 * up;/* only the final Update() call is allowed do partial bytes, else assert an error */ Skein_Assert ((ctx->m.h.T[1 ] &SKEIN_T1_FLAG_BIT_PAD ) ==0 || msgBitCnt ==0 ,SKEIN_FAIL );
@@ -186,20 +186,20 @@ int skeinUpdateBits(struct skein_ctx *ctx, const uint8_t *msg,* Skein's real partial block buffer. * If this layout ever changes we have to adapt this as well. */ - up = (uint8_t *)ctx->m.s256.X + ctx->skeinSize /8 ; + up = (u8 *)ctx->m.s256.X + ctx->skeinSize /8 ;Skein_Set_Bit_Pad_Flag (ctx->m.h);/* set tweak flag for the skeinFinal call */ /* now "pad" the final partial byte the way NIST likes */ length = ctx->m.h.bCnt;/* get the bCnt value (same location for all block sizes) */ Skein_assert (length !=0 );/* internal sanity check: there IS a partial byte in the buffer! */ - mask = (uint8_t ) (1u << (7 - (msgBitCnt &7 )));/* partial byte bit mask */ - up[length-1 ] = (uint8_t )((up[length-1 ] & (0 -mask))|mask);/* apply bit padding on final byte (in the buffer) */ + mask = (u8) (1u << (7 - (msgBitCnt &7 )));/* partial byte bit mask */ + up[length-1 ] = (u8)((up[length-1 ] & (0 -mask))|mask);/* apply bit padding on final byte (in the buffer) */ return SKEIN_SUCCESS ; } -int skeinFinal (struct skein_ctx * ctx,uint8_t * hash) +int skeinFinal (struct skein_ctx * ctx,u8 * hash) {int ret =SKEIN_FAIL ;Skein_Assert (ctx,SKEIN_FAIL );
drivers/staging/skein/threefish1024Block.c +9 -9
@@ -2,10 +2,10 @@#include <threefishApi.h> -void threefishEncrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) +void threefishEncrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output) { -uint64_t b0 = input[0 ], b1 = input[1 ], +u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ], b4 = input[4 ], b5 = input[5 ], b6 = input[6], b7 = input[7],
@@ -13,7 +13,7 @@ void threefishEncrypt1024(struct threefish_key* keyCtx, uint64_t* input, uint64_ b10 = input[10 ], b11 = input[11 ], b12 = input[12 ], b13 = input[13 ], b14 = input[14 ], b15 = input[15 ]; -uint64_t k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], +u64 k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], k2 = keyCtx->key[2 ], k3 = keyCtx->key[3 ], k4 = keyCtx->key[4 ], k5 = keyCtx->key[5 ], k6 = keyCtx->key[6], k7 = keyCtx->key[7],
@@ -22,7 +22,7 @@ void threefishEncrypt1024(struct threefish_key* keyCtx, uint64_t* input, uint64_ k12 = keyCtx->key[12 ], k13 = keyCtx->key[13 ], k14 = keyCtx->key[14 ], k15 = keyCtx->key[15 ], k16 = keyCtx->key[16 ]; -uint64_t t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], +u64 t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], t2 = keyCtx->tweak[2 ]; b1 += k1; b0 += b1 + k0; b1 = ((b1 <<24 ) | (b1 >> (64 -24 ))) ^ b0;
@@ -684,10 +684,10 @@ void threefishEncrypt1024(struct threefish_key* keyCtx, uint64_t* input, uint64_ output[15 ] = b15 + k1 +20 ; } -void threefishDecrypt1024 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) +void threefishDecrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output) { -uint64_t b0 = input[0 ], b1 = input[1 ], +u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ], b4 = input[4 ], b5 = input[5 ], b6 = input[6], b7 = input[7],
@@ -695,7 +695,7 @@ void threefishDecrypt1024(struct threefish_key* keyCtx, uint64_t* input, uint64_ b10 = input[10 ], b11 = input[11 ], b12 = input[12 ], b13 = input[13 ], b14 = input[14 ], b15 = input[15 ]; -uint64_t k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], +u64 k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], k2 = keyCtx->key[2 ], k3 = keyCtx->key[3 ], k4 = keyCtx->key[4 ], k5 = keyCtx->key[5 ], k6 = keyCtx->key[6], k7 = keyCtx->key[7],
@@ -704,9 +704,9 @@ void threefishDecrypt1024(struct threefish_key* keyCtx, uint64_t* input, uint64_ k12 = keyCtx->key[12 ], k13 = keyCtx->key[13 ], k14 = keyCtx->key[14 ], k15 = keyCtx->key[15 ], k16 = keyCtx->key[16 ]; -uint64_t t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], +u64 t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], t2 = keyCtx->tweak[2 ]; -uint64_t tmp; +u64 tmp; b0 -= k3; b1 -= k4;
drivers/staging/skein/threefish256Block.c +9 -9
@@ -2,15 +2,15 @@#include <threefishApi.h> -void threefishEncrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) +void threefishEncrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output) { -uint64_t b0 = input[0 ], b1 = input[1 ], +u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ]; -uint64_t k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], +u64 k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], k2 = keyCtx->key[2 ], k3 = keyCtx->key[3 ], k4 = keyCtx->key[4 ]; -uint64_t t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], +u64 t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], t2 = keyCtx->tweak[2 ]; b1 += k1 + t0; b0 += b1 + k0; b1 = ((b1 <<14 ) | (b1 >> (64 -14 ))) ^ b0;
@@ -172,17 +172,17 @@ void threefishEncrypt256(struct threefish_key* keyCtx, uint64_t* input, uint64_t output[3 ] = b3 + k1 +18 ; } -void threefishDecrypt256 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) +void threefishDecrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output) { -uint64_t b0 = input[0 ], b1 = input[1 ], +u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ]; -uint64_t k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], +u64 k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], k2 = keyCtx->key[2 ], k3 = keyCtx->key[3 ], k4 = keyCtx->key[4 ]; -uint64_t t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], +u64 t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], t2 = keyCtx->tweak[2 ]; -uint64_t tmp; +u64 tmp; b0 -= k3; b1 -= k4 + t0;
drivers/staging/skein/threefish512Block.c +9 -9
@@ -2,19 +2,19 @@#include <threefishApi.h> -void threefishEncrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) +void threefishEncrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output) { -uint64_t b0 = input[0 ], b1 = input[1 ], +u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ], b4 = input[4 ], b5 = input[5 ], b6 = input[6 ], b7 = input[7 ]; -uint64_t k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], +u64 k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], k2 = keyCtx->key[2 ], k3 = keyCtx->key[3 ], k4 = keyCtx->key[4 ], k5 = keyCtx->key[5 ], k6 = keyCtx->key[6 ], k7 = keyCtx->key[7 ], k8 = keyCtx->key[8 ]; -uint64_t t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], +u64 t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], t2 = keyCtx->tweak[2 ]; b1 += k1; b0 += b1 + k0; b1 = ((b1 <<46 ) | (b1 >> (64 -46 ))) ^ b0;
@@ -316,22 +316,22 @@ void threefishEncrypt512(struct threefish_key* keyCtx, uint64_t* input, uint64_t output[7 ] = b7 + k7 +18 ; } -void threefishDecrypt512 (struct threefish_key * keyCtx,uint64_t * input,uint64_t * output) +void threefishDecrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output) { -uint64_t b0 = input[0 ], b1 = input[1 ], +u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ], b4 = input[4 ], b5 = input[5 ], b6 = input[6 ], b7 = input[7 ]; -uint64_t k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], +u64 k0 = keyCtx->key[0 ], k1 = keyCtx->key[1 ], k2 = keyCtx->key[2 ], k3 = keyCtx->key[3 ], k4 = keyCtx->key[4 ], k5 = keyCtx->key[5 ], k6 = keyCtx->key[6 ], k7 = keyCtx->key[7 ], k8 = keyCtx->key[8 ]; -uint64_t t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], +u64 t0 = keyCtx->tweak[0 ], t1 = keyCtx->tweak[1 ], t2 = keyCtx->tweak[2 ]; -uint64_t tmp; +u64 tmp; b0 -= k0; b1 -= k1;
drivers/staging/skein/threefishApi.c +10 -10
@@ -4,11 +4,11 @@#include <threefishApi.h> void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize, -uint64_t * keyData,uint64_t * tweak) +u64 * keyData,u64 * tweak) {int keyWords = stateSize /64 ;int i; -uint64_t parity = KeyScheduleConst; +u64 parity = KeyScheduleConst; keyCtx->tweak[0 ] = tweak[0 ]; keyCtx->tweak[1 ] = tweak[1 ];
@@ -22,8 +22,8 @@ void threefishSetKey(struct threefish_key* keyCtx, enum threefish_size stateSize keyCtx->stateSize = stateSize; } -void threefishEncryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in, -uint8_t * out) +void threefishEncryptBlockBytes (struct threefish_key * keyCtx,u8 * in, +u8 * out) {u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ u64 cipher[SKEIN_MAX_STATE_WORDS ];
@@ -33,8 +33,8 @@ void threefishEncryptBlockBytes(struct threefish_key* keyCtx, uint8_t* in,Skein_Put64_LSB_First (out, cipher, keyCtx->stateSize /8 );/* words to bytes */ } -void threefishEncryptBlockWords (struct threefish_key * keyCtx,uint64_t * in, -uint64_t * out) +void threefishEncryptBlockWords (struct threefish_key * keyCtx,u64 * in, +u64 * out) {switch (keyCtx->stateSize) {case Threefish256:
@@ -49,8 +49,8 @@ void threefishEncryptBlockWords(struct threefish_key* keyCtx, uint64_t* in, } } -void threefishDecryptBlockBytes (struct threefish_key * keyCtx,uint8_t * in, -uint8_t * out) +void threefishDecryptBlockBytes (struct threefish_key * keyCtx,u8 * in, +u8 * out) {u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ u64 cipher[SKEIN_MAX_STATE_WORDS ];
@@ -60,8 +60,8 @@ void threefishDecryptBlockBytes(struct threefish_key* keyCtx, uint8_t* in,Skein_Put64_LSB_First (out, plain, keyCtx->stateSize /8 );/* words to bytes */ } -void threefishDecryptBlockWords (struct threefish_key * keyCtx,uint64_t * in, -uint64_t * out) +void threefishDecryptBlockWords (struct threefish_key * keyCtx,u64 * in, +u64 * out) {switch (keyCtx->stateSize) {case Threefish256:
Signature · 1 line
1.9.1
PATCH v2 13/21 staging: crypto: skein: remove trailing whitespace
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 16 +++++----- drivers/staging/skein/include/skeinApi.h | 44 ++++++++++++++-------------- drivers/staging/skein/include/threefishApi.h | 40 ++++++++++++------------- drivers/staging/skein/skeinBlockNo3F.c | 6 ++-- drivers/staging/skein/skein_block.c | 20 ++++++------- 5 files changed, 63 insertions(+), 63 deletions(-)
drivers/staging/skein/include/skein.h +8 -8
@@ -9,7 +9,7 @@ ** This algorithm and source code is released to the public domain. ** *************************************************************************** -** +** ** The following compile-time switches may be defined to control some ** tradeoffs between speed, code size, error checking, and security. **
@@ -20,8 +20,8 @@ ** [default: no callouts (no overhead)] ** ** SKEIN_ERR_CHECK -- how error checking is handled inside Skein -** code. If not defined, most error checking -** is disabled (for performance). Otherwise, +** code. If not defined, most error checking +** is disabled (for performance). Otherwise, ** the switch value is interpreted as: ** 0: use assert() to flag errors ** 1: return SKEIN_FAIL to flag errors
@@ -109,12 +109,12 @@ int Skein1024_Final(struct skein1024_ctx *ctx, u8 *hashVal);** After an InitExt() call, just use Update/Final calls as with Init(). ** ** Notes: Same parameters as _Init() calls, plus treeInfo/key/keyBytes. -** When keyBytes == 0 and treeInfo == SKEIN_SEQUENTIAL, +** When keyBytes == 0 and treeInfo == SKEIN_SEQUENTIAL, ** the results of InitExt() are identical to calling Init(). ** The function Init() may be called once to "precompute" the IV for ** a given hashBitLen value, then by saving a copy of the context ** the IV computation may be avoided in later calls. -** Similarly, the function InitExt() may be called once per MAC key +** Similarly, the function InitExt() may be called once per MAC key ** to precompute the MAC IV, then a copy of the context saved and ** reused for each new MAC computation. **/
@@ -142,7 +142,7 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);/***************************************************************** ** "Internal" Skein definitions -** -- not needed for sequential hashing API, but will be +** -- not needed for sequential hashing API, but will be ** helpful for other uses of Skein (e.g., tree hash mode). ** -- included here so that they can be shared between ** reference and optimized code.
@@ -269,8 +269,8 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);/***************************************************************** ** Skein block function constants (shared across Ref and Opt code) ******************************************************************/ -enum - { +enum + {/* Skein_256 round rotation constants */ R_256_0_0 =14 ,R_256_0_1 =16 ,R_256_1_0 =52 ,R_256_1_1 =57 ,
drivers/staging/skein/include/skeinApi.h +22 -22
108 lines not on this page · raw message
drivers/staging/skein/include/threefishApi.h +20 -20
@@ -8,14 +8,14 @@* @{ * * This API and the functions that implement this API simplify the usage -* of the Threefish cipher. The design and the way to use the functions +* of the Threefish cipher. The design and the way to use the functions * 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. -* Implementations for cipher modes such as ECB, CFB, or CBC may use these +* Implementations for cipher modes such as ECB, CFB, or CBC may use these * functions. -* +* @code // Threefish cipher context data struct threefish_key keyCtx;
@@ -44,7 +44,7 @@ enum threefish_size {/** * Context for Threefish key and tweak words. -* +* * This structure was setup with some know-how of the internal * Skein structures, in particular ordering of header and size dependent * variables. If Skein implementation changes this, the adapt these
@@ -58,10 +58,10 @@ struct threefish_key {/** * Set Threefish key and tweak data. -* +* * This function sets the key and tweak data for the Threefish cipher of * the given size. The key data must have the same length (number of bits) -* as the state size +* as the state size * * @param keyCtx * Pointer to a Threefish key structure.
@@ -76,12 +76,12 @@ void threefishSetKey(struct threefish_key *keyCtx, enum threefish_size stateSize/** * Encrypt Threefisch 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) aas the * state size for this key. The function uses the first @c stateSize bits * of the input buffer, encrypts them and stores the result in the output * buffer. -* +* * @param keyCtx * Pointer to a Threefish key structure. * @param in
@@ -93,14 +93,14 @@ void threefishEncryptBlockBytes(struct threefish_key *keyCtx, u8 *in, u8 *out);/** * Encrypt Threefisch 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) aas the * state size for this key. The function uses the first @c stateSize bits * of the input buffer, encrypts them and stores the result in the output * buffer. -* +* * The wordsize ist set to 64 bits. -* +* * @param keyCtx * Pointer to a Threefish key structure. * @param in
@@ -112,12 +112,12 @@ void threefishEncryptBlockWords(struct threefish_key *keyCtx, u64 *in, u64 *out)/** * Decrypt Threefisch 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) aas the * state size for this key. The function uses the first @c stateSize bits * of the input buffer, decrypts them and stores the result in the output * buffer -* +* * @param keyCtx * Pointer to a Threefish key structure. * @param in
@@ -129,14 +129,14 @@ void threefishDecryptBlockBytes(struct threefish_key *keyCtx, u8 *in, u8 *out);/** * Decrypt Threefisch 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) aas the * state size for this key. The function uses the first @c stateSize bits * of the input buffer, encrypts them and stores the result in the output * buffer. -* +* * The wordsize ist set to 64 bits. -* +* * @param keyCtx * Pointer to a Threefish key structure. * @param in
drivers/staging/skein/skeinBlockNo3F.c +3 -3
@@ -29,7 +29,7 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr, carry += words[i]; words[i] = carry; carry >>=32 ; - } + } tweak[0 ] = words[0 ] &0xffffffffL ; tweak[0 ] |= (words[1 ] &0xffffffffL ) <<32 ; tweak[1 ] |= words[2 ] &0xffffffffL ;
@@ -79,7 +79,7 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr, carry += words[i]; words[i] = carry; carry >>=32 ; - } + } tweak[0 ] = words[0 ] &0xffffffffL ; tweak[0 ] |= (words[1 ] &0xffffffffL ) <<32 ; tweak[1 ] |= words[2 ] &0xffffffffL ;
@@ -133,7 +133,7 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, carry += words[i]; words[i] = carry; carry >>=32 ; - } + } tweak[0 ] = words[0 ] &0xffffffffL ; tweak[0 ] |= (words[1 ] &0xffffffffL ) <<32 ; tweak[1 ] |= words[2 ] &0xffffffffL ;
drivers/staging/skein/skein_block.c +10 -10
@@ -28,7 +28,7 @@#define BLK_BITS (WCNT*64)/* some useful definitions for code here */ #define KW_TWK_BASE (0)#define KW_KEY_BASE (3) -#define ks (kw + KW_KEY_BASE) +#define ks (kw + KW_KEY_BASE)#define ts (kw + KW_TWK_BASE)#ifdef SKEIN_DEBUG
@@ -76,7 +76,7 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr, size_t ts[0 ] += byteCntAdd;/* update processed length */ /* precompute the key schedule for this block */ - ks[0 ] = ctx->X[0 ]; + ks[0 ] = ctx->X[0 ]; ks[1 ] = ctx->X[1 ]; ks[2 ] = ctx->X[2 ]; ks[3 ] = ctx->X[3 ];
@@ -103,7 +103,7 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr, size_t X##p0 += X##p1; X##p1 = RotL_64(X##p1, ROT##_0); X##p1 ^= X##p0; \ X##p2 += X##p3; X##p3 = RotL_64(X##p3, ROT##_1); X##p3 ^= X##p2; \ -#if SKEIN_UNROLL_256 ==0 +#if SKEIN_UNROLL_256 ==0 #define R256 (p0, p1, p2, p3,ROT , rNum)/* fully unrolled */ \ Round256(p0, p1, p2, p3, ROT, rNum) \ Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rNum, Xptr);
@@ -129,8 +129,8 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr, size_tSkein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); for (r = 1; r < 2 * RCNT; r += 2 * SKEIN_UNROLL_256) /* loop thru it */ -#endif - { +#endif + {#define R256_8_rounds (R ) \ R256(0, 1, 2, 3, R_256_0, 8 * (R) + 1); \ R256(0, 3, 2, 1, R_256_1, 8 * (R) + 2); \
@@ -270,7 +270,7 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr, size_t ks[5 ] = ctx->X[5 ]; ks[6 ] = ctx->X[6 ]; ks[7 ] = ctx->X[7 ]; - ks[8 ] = ks[0 ] ^ ks[1 ] ^ ks[2 ] ^ ks[3 ] ^ + ks[8 ] = ks[0 ] ^ ks[1 ] ^ ks[2 ] ^ ks[3 ] ^ ks[4 ] ^ ks[5 ] ^ ks[6 ] ^ ks[7 ] ^SKEIN_KS_PARITY ; ts[2 ] = ts[0 ] ^ ts[1 ];
@@ -298,7 +298,7 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr, size_t X##p4 += X##p5; X##p5 = RotL_64(X##p5, ROT##_2); X##p5 ^= X##p4; \ X##p6 += X##p7; X##p7 = RotL_64(X##p7, ROT##_3); X##p7 ^= X##p6; \ -#if SKEIN_UNROLL_512 ==0 +#if SKEIN_UNROLL_512 ==0 #define R512 (p0, p1, p2, p3, p4, p5, p6, p7,ROT , rNum)/* unrolled */ \ Round512(p0, p1, p2, p3, p4, p5, p6, p7, ROT, rNum) \ Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rNum, Xptr);
@@ -529,7 +529,7 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, size_t X##pC += X##pD; X##pD = RotL_64(X##pD, ROT##_6); X##pD ^= X##pC; \ X##pE += X##pF; X##pF = RotL_64(X##pF, ROT##_7); X##pF ^= X##pE; \ -#if SKEIN_UNROLL_1024 ==0 +#if SKEIN_UNROLL_1024 ==0 #define R1024 (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF,ROT , rn) \ Round1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, ROT, rn) \ Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rn, Xptr);
@@ -551,7 +551,7 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, size_tX13 += ks[((R ) +14 ) %17 ] + ts[((R ) +1 ) %3 ]; \X14 += ks[((R ) +15 ) %17 ] + ts[((R ) +2 ) %3 ]; \X15 += ks[((R ) +16 ) %17 ] + (R ) +1 ; \ -Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); +Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr);#else /* looping version */ #define R1024 (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF,ROT , rn) \ Round1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, ROT, rn) \
@@ -579,7 +579,7 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, size_tSkein_Show_R_Ptr (BLK_BITSi, &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); for (r = 1; r <= 2 * RCNT; r += 2 * SKEIN_UNROLL_1024) /* loop thru it */ -#endif +#endif {#define R1024_8_rounds (R )/* do 8 full rounds */ \ R1024(00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, R1024_0, 8*(R) + 1); \
Signature · 1 line
1.9.1
PATCH v2 9/21 staging: crypto: skein: fixup pointer whitespace
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 18 +++++++++--------- drivers/staging/skein/include/skeinApi.h | 10 +++++----- drivers/staging/skein/include/threefishApi.h | 22 +++++++++++----------- drivers/staging/skein/skeinApi.c | 18 +++++++++--------- drivers/staging/skein/threefish1024Block.c | 4 ++-- drivers/staging/skein/threefish256Block.c | 4 ++-- drivers/staging/skein/threefish512Block.c | 4 ++-- drivers/staging/skein/threefishApi.c | 20 ++++++++++---------- 8 files changed, 50 insertions(+), 50 deletions(-)
drivers/staging/skein/include/skein.h +9 -9
@@ -100,9 +100,9 @@ int Skein_256_Update(struct skein_256_ctx *ctx, const u8 *msg, size_t msgByteCnint Skein_512_Update (struct skein_512_ctx *ctx,const u8 *msg,size_t msgByteCnt);int Skein1024_Update (struct skein1024_ctx *ctx,const u8 *msg,size_t msgByteCnt); -int Skein_256_Final (struct skein_256_ctx *ctx,u8 * hashVal); -int Skein_512_Final (struct skein_512_ctx *ctx,u8 * hashVal); -int Skein1024_Final (struct skein1024_ctx *ctx,u8 * hashVal); +int Skein_256_Final (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Final (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Final (struct skein1024_ctx *ctx,u8 *hashVal);/* ** Skein APIs for "extended" initialization: MAC keys, tree hashing.
@@ -127,17 +127,17 @@ int Skein1024_InitExt(struct skein1024_ctx *ctx, size_t hashBitLen, u64 treeInf** Final_Pad: pad, do final block, but no OUTPUT type ** Output: do just the output stage */ -int Skein_256_Final_Pad (struct skein_256_ctx *ctx,u8 * hashVal); -int Skein_512_Final_Pad (struct skein_512_ctx *ctx,u8 * hashVal); -int Skein1024_Final_Pad (struct skein1024_ctx *ctx,u8 * hashVal); +int Skein_256_Final_Pad (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Final_Pad (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Final_Pad (struct skein1024_ctx *ctx,u8 *hashVal);#ifndef SKEIN_TREE_HASH #define SKEIN_TREE_HASH (1)#endif #if SKEIN_TREE_HASH -int Skein_256_Output (struct skein_256_ctx *ctx,u8 * hashVal); -int Skein_512_Output (struct skein_512_ctx *ctx,u8 * hashVal); -int Skein1024_Output (struct skein1024_ctx *ctx,u8 * hashVal); +int Skein_256_Output (struct skein_256_ctx *ctx,u8 *hashVal); +int Skein_512_Output (struct skein_512_ctx *ctx,u8 *hashVal); +int Skein1024_Output (struct skein1024_ctx *ctx,u8 *hashVal);#endif /*****************************************************************
drivers/staging/skein/include/skeinApi.h +5 -5
@@ -123,7 +123,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * SKEIN_SUCESS of SKEIN_FAIL */ -int skeinCtxPrepare (struct skein_ctx * ctx,enum skein_size size); +int skeinCtxPrepare (struct skein_ctx *ctx,enum skein_size size);/** * Initialize a Skein context.
@@ -139,7 +139,7 @@ OTHER DEALINGS IN THE SOFTWARE.* SKEIN_SUCESS of SKEIN_FAIL * @see skeinReset */ -int skeinInit (struct skein_ctx * ctx,size_t hashBitLen); +int skeinInit (struct skein_ctx *ctx,size_t hashBitLen);/** * Resets a Skein context for further use.
@@ -151,7 +151,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @param ctx * Pointer to a pre-initialized Skein MAC context */ -void skeinReset (struct skein_ctx * ctx); +void skeinReset (struct skein_ctx *ctx);/** * Initializes a Skein context for MAC usage.
@@ -173,7 +173,7 @@ OTHER DEALINGS IN THE SOFTWARE.* @return * SKEIN_SUCESS of SKEIN_FAIL */ -int skeinMacInit (struct skein_ctx * ctx,const u8 *key,size_t keyLen, +int skeinMacInit (struct skein_ctx *ctx,const u8 *key,size_t keyLen,size_t hashBitLen);/**
@@ -222,7 +222,7 @@ OTHER DEALINGS IN THE SOFTWARE.* Success or error code. * @see skeinReset */ -int skeinFinal (struct skein_ctx * ctx,u8 * hash); +int skeinFinal (struct skein_ctx *ctx,u8 *hash);/** * @}
drivers/staging/skein/include/threefishApi.h +11 -11
@@ -72,7 +72,7 @@* @param tweak * Pointer to the two tweak words (word has 64 bits). */ -void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize,u64 * keyData,u64 * tweak); +void threefishSetKey (struct threefish_key *keyCtx,enum threefish_size stateSize,u64 *keyData,u64 *tweak);/** * Encrypt Threefisch block (bytes).
@@ -89,7 +89,7 @@* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockBytes (struct threefish_key * keyCtx,u8 * in,u8 * out); +void threefishEncryptBlockBytes (struct threefish_key *keyCtx,u8 *in,u8 *out);/** * Encrypt Threefisch block (words).
@@ -108,7 +108,7 @@* @param out * Pointer to cipher buffer. */ -void threefishEncryptBlockWords (struct threefish_key * keyCtx,u64 * in,u64 * out); +void threefishEncryptBlockWords (struct threefish_key *keyCtx,u64 *in,u64 *out);/** * Decrypt Threefisch block (bytes).
@@ -125,7 +125,7 @@* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockBytes (struct threefish_key * keyCtx,u8 * in,u8 * out); +void threefishDecryptBlockBytes (struct threefish_key *keyCtx,u8 *in,u8 *out);/** * Decrypt Threefisch block (words).
@@ -144,14 +144,14 @@* @param out * Pointer to plaintext buffer. */ -void threefishDecryptBlockWords (struct threefish_key * keyCtx,u64 * in,u64 * out); +void threefishDecryptBlockWords (struct threefish_key *keyCtx,u64 *in,u64 *out); -void threefishEncrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output); -void threefishEncrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output); -void threefishEncrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output); -void threefishDecrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output); -void threefishDecrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output); -void threefishDecrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output); +void threefishEncrypt256 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishEncrypt512 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishEncrypt1024 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishDecrypt256 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishDecrypt512 (struct threefish_key *keyCtx,u64 *input,u64 *output); +void threefishDecrypt1024 (struct threefish_key *keyCtx,u64 *input,u64 *output);/** * @} */
drivers/staging/skein/skeinApi.c +9 -9
@@ -27,7 +27,7 @@ OTHER DEALINGS IN THE SOFTWARE.#include <linux/string.h> #include <skeinApi.h> -int skeinCtxPrepare (struct skein_ctx * ctx,enum skein_size size) +int skeinCtxPrepare (struct skein_ctx *ctx,enum skein_size size) {Skein_Assert (ctx && size,SKEIN_FAIL );
@@ -37,11 +37,11 @@ int skeinCtxPrepare(struct skein_ctx* ctx, enum skein_size size)return SKEIN_SUCCESS ; } -int skeinInit (struct skein_ctx * ctx,size_t hashBitLen) +int skeinInit (struct skein_ctx *ctx,size_t hashBitLen) {int ret =SKEIN_FAIL ;size_t Xlen =0 ; -u64 *X =NULL ; +u64 *X =NULL ;u64 treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;Skein_Assert (ctx,SKEIN_FAIL );
@@ -78,11 +78,11 @@ int skeinInit(struct skein_ctx* ctx, size_t hashBitLen)return ret; } -int skeinMacInit (struct skein_ctx * ctx,const u8 *key,size_t keyLen, +int skeinMacInit (struct skein_ctx *ctx,const u8 *key,size_t keyLen,size_t hashBitLen) {int ret =SKEIN_FAIL ; -u64 *X =NULL ; +u64 *X =NULL ;size_t Xlen =0 ;u64 treeInfo =SKEIN_CFG_TREE_INFO_SEQUENTIAL ;
@@ -119,10 +119,10 @@ int skeinMacInit(struct skein_ctx* ctx, const u8 *key, size_t keyLen,return ret; } -void skeinReset (struct skein_ctx * ctx) +void skeinReset (struct skein_ctx *ctx) {size_t Xlen =0 ; -u64 *X =NULL ; +u64 *X =NULL ;/* * The following two lines rely of the fact that the real Skein contexts are
@@ -169,7 +169,7 @@ int skeinUpdateBits(struct skein_ctx *ctx, const u8 *msg,*/ size_t length;u8 mask; -u8 * up; +u8 *up;/* only the final Update() call is allowed do partial bytes, else assert an error */ Skein_Assert ((ctx->m.h.T[1 ] &SKEIN_T1_FLAG_BIT_PAD ) ==0 || msgBitCnt ==0 ,SKEIN_FAIL );
@@ -199,7 +199,7 @@ int skeinUpdateBits(struct skein_ctx *ctx, const u8 *msg,return SKEIN_SUCCESS ; } -int skeinFinal (struct skein_ctx * ctx,u8 * hash) +int skeinFinal (struct skein_ctx *ctx,u8 *hash) {int ret =SKEIN_FAIL ;Skein_Assert (ctx,SKEIN_FAIL );
drivers/staging/skein/threefish1024Block.c +2 -2
@@ -2,7 +2,7 @@#include <threefishApi.h> -void threefishEncrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output) +void threefishEncrypt1024 (struct threefish_key *keyCtx,u64 *input,u64 *output) { u64 b0 = input[0], b1 = input[1],
@@ -684,7 +684,7 @@ void threefishEncrypt1024(struct threefish_key* keyCtx, u64* input, u64* output) output[15 ] = b15 + k1 +20 ; } -void threefishDecrypt1024 (struct threefish_key * keyCtx,u64 * input,u64 * output) +void threefishDecrypt1024 (struct threefish_key *keyCtx,u64 *input,u64 *output) { u64 b0 = input[0], b1 = input[1],
drivers/staging/skein/threefish256Block.c +2 -2
@@ -2,7 +2,7 @@#include <threefishApi.h> -void threefishEncrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output) +void threefishEncrypt256 (struct threefish_key *keyCtx,u64 *input,u64 *output) { u64 b0 = input[0], b1 = input[1],
@@ -172,7 +172,7 @@ void threefishEncrypt256(struct threefish_key* keyCtx, u64* input, u64* output) output[3 ] = b3 + k1 +18 ; } -void threefishDecrypt256 (struct threefish_key * keyCtx,u64 * input,u64 * output) +void threefishDecrypt256 (struct threefish_key *keyCtx,u64 *input,u64 *output) {u64 b0 = input[0 ], b1 = input[1 ], b2 = input[2 ], b3 = input[3 ];
drivers/staging/skein/threefish512Block.c +2 -2
@@ -2,7 +2,7 @@#include <threefishApi.h> -void threefishEncrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output) +void threefishEncrypt512 (struct threefish_key *keyCtx,u64 *input,u64 *output) { u64 b0 = input[0], b1 = input[1],
@@ -316,7 +316,7 @@ void threefishEncrypt512(struct threefish_key* keyCtx, u64* input, u64* output) output[7 ] = b7 + k7 +18 ; } -void threefishDecrypt512 (struct threefish_key * keyCtx,u64 * input,u64 * output) +void threefishDecrypt512 (struct threefish_key *keyCtx,u64 *input,u64 *output) { u64 b0 = input[0], b1 = input[1],
drivers/staging/skein/threefishApi.c +10 -10
@@ -3,8 +3,8 @@#include <linux/string.h> #include <threefishApi.h> -void threefishSetKey (struct threefish_key * keyCtx,enum threefish_size stateSize, -u64 * keyData,u64 * tweak) +void threefishSetKey (struct threefish_key *keyCtx,enum threefish_size stateSize, +u64 *keyData,u64 *tweak) {int keyWords = stateSize /64 ;int i;
@@ -22,8 +22,8 @@ void threefishSetKey(struct threefish_key* keyCtx, enum threefish_size stateSize keyCtx->stateSize = stateSize; } -void threefishEncryptBlockBytes (struct threefish_key * keyCtx,u8 * in, -u8 * out) +void threefishEncryptBlockBytes (struct threefish_key *keyCtx,u8 *in, +u8 *out) {u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ u64 cipher[SKEIN_MAX_STATE_WORDS ];
@@ -33,8 +33,8 @@ void threefishEncryptBlockBytes(struct threefish_key* keyCtx, u8* in,Skein_Put64_LSB_First (out, cipher, keyCtx->stateSize /8 );/* words to bytes */ } -void threefishEncryptBlockWords (struct threefish_key * keyCtx,u64 * in, -u64 * out) +void threefishEncryptBlockWords (struct threefish_key *keyCtx,u64 *in, +u64 *out) {switch (keyCtx->stateSize) {case Threefish256:
@@ -49,8 +49,8 @@ void threefishEncryptBlockWords(struct threefish_key* keyCtx, u64* in, } } -void threefishDecryptBlockBytes (struct threefish_key * keyCtx,u8 * in, -u8 * out) +void threefishDecryptBlockBytes (struct threefish_key *keyCtx,u8 *in, +u8 *out) {u64 plain[SKEIN_MAX_STATE_WORDS ];/* max number of words*/ u64 cipher[SKEIN_MAX_STATE_WORDS ];
@@ -60,8 +60,8 @@ void threefishDecryptBlockBytes(struct threefish_key* keyCtx, u8* in,Skein_Put64_LSB_First (out, plain, keyCtx->stateSize /8 );/* words to bytes */ } -void threefishDecryptBlockWords (struct threefish_key * keyCtx,u64 * in, -u64 * out) +void threefishDecryptBlockWords (struct threefish_key *keyCtx,u64 *in, +u64 *out) {switch (keyCtx->stateSize) {case Threefish256:
Signature · 1 line
1.9.1
PATCH v2 15/21 staging: crypto: skein: fix do/while brace formatting
In reply to Jason Cooper--- drivers/staging/skein/skein_block.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
drivers/staging/skein/skein_block.c +3 -6
@@ -215,8 +215,7 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr,Skein_Show_Round (BLK_BITS , &ctx->h,SKEIN_RND_FEED_FWD , ctx->X); ts[1 ] &= ~SKEIN_T1_FLAG_FIRST ; - } -while (--blkCnt); + }while (--blkCnt); ctx->h.T[0 ] = ts[0 ]; ctx->h.T[1 ] = ts[1 ]; }
@@ -434,8 +433,7 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr,Skein_Show_Round (BLK_BITS , &ctx->h,SKEIN_RND_FEED_FWD , ctx->X); ts[1 ] &= ~SKEIN_T1_FLAG_FIRST ; - } -while (--blkCnt); + }while (--blkCnt); ctx->h.T[0 ] = ts[0 ]; ctx->h.T[1 ] = ts[1 ]; }
@@ -717,8 +715,7 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \ ts[1 ] &= ~SKEIN_T1_FLAG_FIRST ; blkPtr +=SKEIN1024_BLOCK_BYTES ; - } -while (--blkCnt); + }while (--blkCnt); ctx->h.T[0 ] = ts[0 ]; ctx->h.T[1 ] = ts[1 ]; }
Signature · 1 line
1.9.1
PATCH v2 16/21 staging: crypto: skein: fix brace placement errors
In reply to Jason Cooper--- drivers/staging/skein/include/skein.h | 30 ++++----- drivers/staging/skein/include/skein_iv.h | 65 ++++++++---------- drivers/staging/skein/skein.c | 111 ++++++++++--------------------- 3 files changed, 74 insertions(+), 132 deletions(-)
drivers/staging/skein/include/skein.h +12 -18
@@ -37,12 +37,11 @@#define Skein_Get64_LSB_First (dst64, src08, wCnt) memcpy(dst64, src08, 8*(wCnt))#define Skein_Swap64 (w64) (w64) -enum - { +enum {SKEIN_SUCCESS =0 ,/* return codes from Skein calls */ SKEIN_FAIL =1 ,SKEIN_BAD_HASHLEN =2 - }; +};#define SKEIN_MODIFIER_WORDS (2)/* number of modifier (tweak) words */
@@ -63,33 +62,29 @@ enum#define SKEIN_512_BLOCK_BYTES (8*SKEIN_512_STATE_WORDS)#define SKEIN1024_BLOCK_BYTES (8*SKEIN1024_STATE_WORDS) -struct skein_ctx_hdr - { +struct skein_ctx_hdr {size_t hashBitLen;/* size of hash result, in bits */ size_t bCnt;/* current byte count in buffer b[] */ u64 T[SKEIN_MODIFIER_WORDS ];/* tweak: T[0]=byte cnt, T[1]=flags */ - }; +}; -struct skein_256_ctx /* 256-bit Skein hash context structure */ - { +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 */ u8 b[SKEIN_256_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ - }; +}; -struct skein_512_ctx /* 512-bit Skein hash context structure */ - { +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 */ u8 b[SKEIN_512_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ - }; +}; -struct skein1024_ctx /* 1024-bit Skein hash context structure */ - { +struct skein1024_ctx {/* 1024-bit Skein hash context structure */ struct skein_ctx_hdr h;/* common header context variables */ u64 X[SKEIN1024_STATE_WORDS ];/* chaining variables */ u8 b[SKEIN1024_BLOCK_BYTES ];/* partial block buf (8-byte aligned) */ - }; +};/* Skein APIs for (incremental) "straight hashing" */ int Skein_256_Init (struct skein_256_ctx *ctx,size_t hashBitLen);
@@ -296,8 +291,7 @@ int Skein1024_Output(struct skein1024_ctx *ctx, u8 *hashVal);/***************************************************************** ** Skein block function constants (shared across Ref and Opt code) ******************************************************************/ -enum - { +enum {/* Skein_256 round rotation constants */ R_256_0_0 =14 ,R_256_0_1 =16 ,R_256_1_0 =52 ,R_256_1_1 =57 ,
@@ -335,7 +329,7 @@ enumR1024_6_4 =19 ,R1024_6_5 =42 ,R1024_6_6 =44 ,R1024_6_7 =25 ,R1024_7_0 =9 ,R1024_7_1 =48 ,R1024_7_2 =35 ,R1024_7_3 =52 ,R1024_7_4 =23 ,R1024_7_5 =31 ,R1024_7_6 =37 ,R1024_7_7 =20 - }; +};#ifndef SKEIN_ROUNDS #define SKEIN_256_ROUNDS_TOTAL (72)/* # rounds for diff block sizes */
drivers/staging/skein/include/skein_iv.h +26 -39
164 lines not on this page · raw message
drivers/staging/skein/skein.c +36 -75
288 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v2 17/21 staging: crypto: skein: wrap multi-line macros in do-while loops
In reply to Jason Cooper--- drivers/staging/skein/skein_block.c | 66 ++++++++++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 15 deletions(-)
drivers/staging/skein/skein_block.c +51 -15
@@ -107,27 +107,36 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr,/* run the rounds */ #define Round256 (p0, p1, p2, p3,ROT , rNum) \ +do { \ X##p0 += X##p1; X##p1 = RotL_64(X##p1, ROT##_0); X##p1 ^= X##p0; \ X##p2 += X##p3; X##p3 = RotL_64(X##p3, ROT##_1); X##p3 ^= X##p2; \ +} while (0)#if SKEIN_UNROLL_256 ==0 #define R256 (p0, p1, p2, p3,ROT , rNum)/* fully unrolled */ \ +do { \ Round256(p0, p1, p2, p3, ROT, rNum) \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rNum, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rNum, Xptr); \ +} while (0) #define I256(R) \ +do { \ /* inject the key schedule value */ \X0 += ks[((R)+1) % 5]; \ X1 += ks[((R)+2) % 5] + ts[((R)+1) % 3]; \ X2 += ks[((R)+3) % 5] + ts[((R)+2) % 3]; \ X3 += ks[((R)+4) % 5] + (R)+1; \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, SKEIN_RND_KEY_INJECT, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, SKEIN_RND_KEY_INJECT, Xptr); \ +} while (0)#else /* looping version */ #define R256 (p0, p1, p2, p3,ROT , rNum) \ +do { \ Round256(p0, p1, p2, p3, ROT, rNum) \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, 4 * (r - 1) + rNum, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, 4 * (r - 1) + rNum, Xptr); \ +} while (0)#define I256 (R ) \ +do { \/* inject the key schedule value */ \X0 += ks[r+(R )+0 ]; \X1 += ks[r+(R )+1 ] + ts[r+(R )+0 ]; \
@@ -136,12 +145,14 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr,/* rotate key schedule */ \ ks[r + (R ) +4 ] = ks[r + (R ) -1 ]; \ ts[r + (R ) +2 ] = ts[r + (R ) -1 ]; \ -Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); +Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); \ +} while (0) for (r = 1; r < 2 * RCNT; r += 2 * SKEIN_UNROLL_256)#endif {#define R256_8_rounds (R ) \ +do { \ R256(0, 1, 2, 3, R_256_0, 8 * (R) + 1); \ R256(0, 3, 2, 1, R_256_1, 8 * (R) + 2); \ R256(0, 1, 2, 3, R_256_2, 8 * (R) + 3); \
@@ -151,7 +162,8 @@ void Skein_256_Process_Block(struct skein_256_ctx *ctx, const u8 *blkPtr,R256 (0 ,3 ,2 ,1 ,R_256_5 ,8 * (R ) +6 ); \R256 (0 ,1 ,2 ,3 ,R_256_6 ,8 * (R ) +7 ); \R256 (0 ,3 ,2 ,1 ,R_256_7 ,8 * (R ) +8 ); \ -I256 (2 * (R ) +1 ); +I256 (2 * (R ) +1 ); \ +}while (0 )R256_8_rounds (0 );
@@ -311,17 +323,22 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr, Xptr);/* run the rounds */ #define Round512 (p0, p1, p2, p3, p4, p5, p6, p7,ROT , rNum) \ +do { \ X##p0 += X##p1; X##p1 = RotL_64(X##p1, ROT##_0); X##p1 ^= X##p0; \ X##p2 += X##p3; X##p3 = RotL_64(X##p3, ROT##_1); X##p3 ^= X##p2; \ X##p4 += X##p5; X##p5 = RotL_64(X##p5, ROT##_2); X##p5 ^= X##p4; \ X##p6 += X##p7; X##p7 = RotL_64(X##p7, ROT##_3); X##p7 ^= X##p6; \ +} while (0)#if SKEIN_UNROLL_512 ==0 #define R512 (p0, p1, p2, p3, p4, p5, p6, p7,ROT , rNum)/* unrolled */ \ +do { \ Round512(p0, p1, p2, p3, p4, p5, p6, p7, ROT, rNum) \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rNum, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rNum, Xptr); \ +} while (0)#define I512 (R ) \ +do { \/* inject the key schedule value */ \X0 += ks[((R ) +1 ) %9 ]; \X1 += ks[((R ) +2 ) %9 ]; \
@@ -331,13 +348,17 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr,X5 += ks[((R ) +6 ) %9 ] + ts[((R ) +1 ) %3 ]; \X6 += ks[((R ) +7 ) %9 ] + ts[((R ) +2 ) %3 ]; \X7 += ks[((R ) +8 ) %9 ] + (R ) +1 ; \ -Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); +Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); \ +} while (0)#else /* looping version */ #define R512 (p0, p1, p2, p3, p4, p5, p6, p7,ROT , rNum) \ +do { \ Round512(p0, p1, p2, p3, p4, p5, p6, p7, ROT, rNum) \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, 4 * (r - 1) + rNum, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, 4 * (r - 1) + rNum, Xptr); \ +} while (0)#define I512 (R ) \ +do { \/* inject the key schedule value */ \X0 += ks[r + (R ) +0 ]; \X1 += ks[r + (R ) +1 ]; \
@@ -350,12 +371,14 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr,/* rotate key schedule */ \ ks[r + (R ) +8 ] = ks[r + (R ) -1 ]; \ ts[r + (R ) +2 ] = ts[r + (R ) -1 ]; \ -Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); +Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); \ +} while (0) for (r = 1; r < 2 * RCNT; r += 2 * SKEIN_UNROLL_512)#endif /* end of looped code definitions */ {#define R512_8_rounds (R )/* do 8 full rounds */ \ +do { \ R512(0, 1, 2, 3, 4, 5, 6, 7, R_512_0, 8 * (R) + 1); \ R512(2, 1, 4, 7, 6, 5, 0, 3, R_512_1, 8 * (R) + 2); \ R512(4, 1, 6, 3, 0, 5, 2, 7, R_512_2, 8 * (R) + 3); \
@@ -365,7 +388,8 @@ void Skein_512_Process_Block(struct skein_512_ctx *ctx, const u8 *blkPtr,R512 (2 ,1 ,4 ,7 ,6 ,5 ,0 ,3 ,R_512_5 ,8 * (R ) +6 ); \R512 (4 ,1 ,6 ,3 ,0 ,5 ,2 ,7 ,R_512_6 ,8 * (R ) +7 ); \R512 (6 ,1 ,0 ,7 ,2 ,5 ,4 ,3 ,R_512_7 ,8 * (R ) +8 ); \ -I512 (2 * (R ) +1 );/* and key injection */ +I512 (2 * (R ) +1 );/* and key injection */ \ +}while (0 )R512_8_rounds (0 );
@@ -551,6 +575,7 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \#define Round1024 (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, \ pF,ROT , rNum) \ +do { \ X##p0 += X##p1; X##p1 = RotL_64(X##p1, ROT##_0); X##p1 ^= X##p0; \ X##p2 += X##p3; X##p3 = RotL_64(X##p3, ROT##_1); X##p3 ^= X##p2; \ X##p4 += X##p5; X##p5 = RotL_64(X##p5, ROT##_2); X##p5 ^= X##p4; \
@@ -559,15 +584,19 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \ X##pA += X##pB; X##pB = RotL_64(X##pB, ROT##_5); X##pB ^= X##pA; \ X##pC += X##pD; X##pD = RotL_64(X##pD, ROT##_6); X##pD ^= X##pC; \ X##pE += X##pF; X##pF = RotL_64(X##pF, ROT##_7); X##pF ^= X##pE; \ +} while (0)#if SKEIN_UNROLL_1024 ==0 #define R1024 (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, \ROT , rn) \ +do { \ Round1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, \ pF, ROT, rn) \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rn, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, rn, Xptr); \ +} while (0)#define I1024 (R ) \ +do { \/* inject the key schedule value */ \X00 += ks[((R ) +1 ) %17 ]; \X01 += ks[((R ) +2 ) %17 ]; \
@@ -585,15 +614,19 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \X13 += ks[((R ) +14 ) %17 ] + ts[((R ) +1 ) %3 ]; \X14 += ks[((R ) +15 ) %17 ] + ts[((R ) +2 ) %3 ]; \X15 += ks[((R ) +16 ) %17 ] + (R ) +1 ; \ -Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); +Skein_Show_R_Ptr (BLK_BITS , &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); \ +} while (0)#else /* looping version */ #define R1024 (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, \ROT , rn) \ +do { \ Round1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, \ pF, ROT, rn) \ - Skein_Show_R_Ptr(BLK_BITS, &ctx->h, 4 * (r - 1) + rn, Xptr); + Skein_Show_R_Ptr(BLK_BITS, &ctx->h, 4 * (r - 1) + rn, Xptr); \ +} while (0)#define I1024 (R ) \ +do { \/* inject the key schedule value */ \X00 += ks[r + (R ) +0 ]; \X01 += ks[r + (R ) +1 ]; \
@@ -614,12 +647,14 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \/* rotate key schedule */ \ ks[r + (R ) +16 ] = ks[r + (R ) -1 ]; \ ts[r + (R ) +2 ] = ts[r + (R ) -1 ]; \ -Skein_Show_R_Ptr (BLK_BITSi, &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); +Skein_Show_R_Ptr (BLK_BITSi, &ctx->h,SKEIN_RND_KEY_INJECT , Xptr); \ +} while (0) for (r = 1; r <= 2 * RCNT; r += 2 * SKEIN_UNROLL_1024)#endif {#define R1024_8_rounds (R ) \ +do { \ R1024(00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, \ R1024_0, 8*(R) + 1); \ R1024(00, 09, 02, 13, 06, 11, 04, 15, 10, 07, 12, 03, 14, 05, 08, 01, \
@@ -637,7 +672,8 @@ void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \ R1024_6, 8*(R) + 7); \R1024 (00 ,15 ,02 ,11 ,06 ,13 ,04 ,09 ,14 ,01 ,08 ,05 ,10 ,03 ,12 ,07 , \R1024_7 ,8 *(R ) +8 ); \ -I1024 (2 *(R )+1 ); +I1024 (2 *(R )+1 ); \ +}while (0 )R1024_8_rounds (0 );
Signature · 1 line
1.9.1
PATCH v2 18/21 staging: crypto: skein: remove externs from .c files
In reply to Jason Cooper--- drivers/staging/skein/include/skein_block.h | 22 ++++++++++++++++++++++ drivers/staging/skein/skein.c | 10 +--------- 2 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 drivers/staging/skein/include/skein_block.h
drivers/staging/skein/include/skein_block.h new file +22 -0
@@ -0,0 +1,22 @@ +/*********************************************************************** +** +** Implementation of the Skein hash function. +** +** Source code author: Doug Whiting, 2008. +** +** This algorithm and source code is released to the public domain. +** +************************************************************************/ +#ifndef _SKEIN_BLOCK_H_ +#define _SKEIN_BLOCK_H_ + +#include <skein.h> /* get the Skein API definitions */ + +void Skein_256_Process_Block (struct skein_256_ctx *ctx,const u8 *blkPtr, +size_t blkCnt,size_t byteCntAdd); +void Skein_512_Process_Block (struct skein_512_ctx *ctx,const u8 *blkPtr, +size_t blkCnt,size_t byteCntAdd); +void Skein1024_Process_Block (struct skein1024_ctx *ctx,const u8 *blkPtr, +size_t blkCnt,size_t byteCntAdd); + +#endif
drivers/staging/skein/skein.c +1 -9
@@ -13,15 +13,7 @@#include <linux/string.h> /* get the memcpy/memset functions */ #include <skein.h> /* get the Skein API definitions */ #include <skein_iv.h> /* get precomputed IVs */ - -/*****************************************************************/ -/* External function to process blkCnt (nonzero) full block(s) of data. */ -void Skein_256_Process_Block (struct skein_256_ctx *ctx,const u8 *blkPtr, -size_t blkCnt,size_t byteCntAdd); -void Skein_512_Process_Block (struct skein_512_ctx *ctx,const u8 *blkPtr, -size_t blkCnt,size_t byteCntAdd); -void Skein1024_Process_Block (struct skein1024_ctx *ctx,const u8 *blkPtr, -size_t blkCnt,size_t byteCntAdd); +#include <skein_block.h> /*****************************************************************/ /* 256-bit Skein */
Signature · 1 line
1.9.1
PATCH v2 19/21 staging: crypto: skein: remove braces from single-statement block
In reply to Jason Cooper--- drivers/staging/skein/skeinApi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/staging/skein/skeinApi.c +2 -2
@@ -188,9 +188,9 @@ int skeinUpdateBits(struct skein_ctx *ctx, const u8 *msg, msgBitCnt == 0, SKEIN_FAIL);/* if number of bits is a multiple of bytes - that's easy */ -if ((msgBitCnt &0x7 ) ==0 ) { +if ((msgBitCnt &0x7 ) ==0 )return skeinUpdate (ctx, msg, msgBitCnt >>3 ); - } +skeinUpdate (ctx, msg, (msgBitCnt >>3 ) +1 );/*
Signature · 1 line
1.9.1
PATCH v2 20/21 staging: crypto: skein: remove unnecessary line continuation
In reply to Jason Cooper--- drivers/staging/skein/skein_block.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/staging/skein/skein_block.c +1 -1
@@ -477,7 +477,7 @@ unsigned int Skein_512_Unroll_Cnt(void)/***************************** Skein1024 ******************************/ #if !(SKEIN_USE_ASM & 1024) -void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, \ +void Skein1024_Process_Block(struct skein1024_ctx *ctx, const u8 *blkPtr, size_t blkCnt, size_t byteCntAdd) { /* do it in C, always looping (unrolled is bigger AND slower!) */ enum {
Signature · 1 line
1.9.1
PATCH v2 21/21 staging: crypto: skein: add TODO file
In reply to Jason Cooper--- drivers/staging/skein/TODO | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 drivers/staging/skein/TODO
drivers/staging/skein/TODO new file +11 -0
@@ -0,0 +1,11 @@ +skein/threefish TODO + + - rename camelcase vars + - rename camelcase functions + - rename files + - move macros into appropriate header files + - add / pass test vectors + - module support + +Please send patches to Jason Cooper <[email protected]> in addition to the +staging tree mailinglist.
Signature · 1 line
1.9.1
Re: [RFC PATCH 03/22] staging: crypto: skein: allow building statically
In reply to Greg KHQuoted 8 lines · Greg KH
Quoted 7 lines · Jason Cooper
Quoted 6 lines · Greg KH
Quoted 5 lines · Jason Cooper
These are the minimum changes required to get the code to build statically in the kernel. It's necessary to do this first so that we can empirically determine that future cleanup patches aren't changing the generated object code.
Quoted 5 lines
Quoted 5 lines
Quoted 3 lines
Quoted 1 line
Signed-off-by Jason Cooper <[email protected]>This doesn't apply to my latest tree :(
Ah, ok. I'll rebase this series on the staging tree.
Done, submitted.
Quoted 10 lines
Quoted 10 lines
Quoted 9 lines
drivers/staging/Makefile obj-$(CONFIG_XILLYBUS) += xillybus/ · line 68
Quoted 7 lines
drivers/staging/Makefile +1
-0@@ -65,3 +65,4 @@ obj-$(CONFIG_XILLYBUS) += xillybus/ obj-$(CONFIG_DGNC) += dgnc/ obj-$(CONFIG_DGAP) += dgap/ obj-$(CONFIG_MTD_SPINAND_MT29F) += mt29f_spinand/ +obj-$(CONFIG_CRYPTO_SKEIN) += skein/Care to align these up with the way this file is formatted?
Quoted 2 lines
Quoted 2 lines
Of course, not sure what happened there (well, other than the obvious :-P)
dabbit. I thought I remembered everything. I'll do a V3 of this patch.
Quoted 5 lines
Quoted 5 lines
Quoted 3 lines
And I have no objection to taking the
drivers/staging/patches, the script looks useful, but I can't take it through the staging tree, sorry.Ok, I'll pull that out as a separate branch.
s/branch/patch/. Done.
thx,
Jason.
PATCH v3 2/21 staging: crypto: skein: allow building statically
In reply to Jason CooperThese are the minimum changes required to get the code to build statically in the kernel. It's necessary to do this first so that we can empirically determine that future cleanup patches aren't changing the generated object code.
---
Changes since V2:
- fixed whitespace in staging/Makefile (gregkh)
Changes since RFC:
- rebased onto staging-next caused conflicts in Kconfig and Makefile, fixed.
drivers/staging/Kconfig | 2 + drivers/staging/Makefile | 1 + drivers/staging/skein/CMakeLists.txt | 27 ------------- drivers/staging/skein/Kconfig | 32 ++++++++++++++++ drivers/staging/skein/Makefile | 13 +++++++ drivers/staging/skein/include/brg_types.h | 57 ---------------------------- drivers/staging/skein/include/skein.h | 10 ----- drivers/staging/skein/include/skeinApi.h | 2 +- drivers/staging/skein/include/skein_port.h | 16 +------- drivers/staging/skein/include/threefishApi.h | 2 +- drivers/staging/skein/skein.c | 2 +- drivers/staging/skein/skeinApi.c | 4 +- drivers/staging/skein/skeinBlockNo3F.c | 2 +- drivers/staging/skein/skein_block.c | 2 +- drivers/staging/skein/threefish1024Block.c | 3 +- drivers/staging/skein/threefish256Block.c | 3 +- drivers/staging/skein/threefish512Block.c | 3 +- drivers/staging/skein/threefishApi.c | 3 +- 18 files changed, 59 insertions(+), 125 deletions(-) delete mode 100755 drivers/staging/skein/CMakeLists.txt create mode 100644 drivers/staging/skein/Kconfig create mode 100644 drivers/staging/skein/Makefile
drivers/staging/Kconfig +2 -0
@@ -144,6 +144,8 @@ source "drivers/staging/gs_fpgaboot/Kconfig" source "drivers/staging/nokia_h4p/Kconfig" +source "drivers/staging/skein/Kconfig" + source "drivers/staging/unisys/Kconfig" endif # STAGING
drivers/staging/Makefile +1 -0
@@ -64,4 +64,5 @@ obj-$(CONFIG_DGAP) += dgap/ obj-$(CONFIG_MTD_SPINAND_MT29F) += mt29f_spinand/ obj-$(CONFIG_GS_FPGABOOT) += gs_fpgaboot/ obj-$(CONFIG_BT_NOKIA_H4P) += nokia_h4p/ +obj-$(CONFIG_CRYPTO_SKEIN) += skein/ obj-$(CONFIG_UNISYSSPAR) += unisys/
drivers/staging/skein/CMakeLists.txt deleted +0 -27
@@ -1,27 +0,0 @@ -cmake_minimum_required (VERSION 2.6) - -include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include) - -# set(skeinBlock_src skein_block.c) -set(skeinBlock_src skeinBlockNo3F.c) - -set(skein_src - ${skeinBlock_src} - skein.c - skeinApi.c - ) - -set(threefish_src - threefishApi.c - threefish256Block.c - threefish512Block.c - threefish1024Block.c - ) -set(s3f_src ${skein_src} ${threefish_src}) - -add_library(skein3fish SHARED ${s3f_src}) -set_target_properties(skein3fish PROPERTIES VERSION ${VERSION} SOVERSION ${SOVERSION}) -target_link_libraries(skein3fish ${LIBS}) - -install(TARGETS skein3fish DESTINATION ${LIBDIRNAME}) -
drivers/staging/skein/Kconfig new file +32 -0
@@ -0,0 +1,32 @@ +config CRYPTO_SKEIN + bool "Skein digest algorithm" + depends on (X86 || UML_X86) && 64BIT + select CRYPTO_THREEFISH + select CRYPTO_HASH + help + Skein secure hash algorithm is one of 5 finalists from the NIST SHA3 + competition. + + Skein is optimized for modern, 64bit processors and is highly + customizable. See: + + http://www.skein-hash.info/sites/default/files/skein1.3.pdf + + for more information. This module depends on the threefish block + cipher module. + +config CRYPTO_THREEFISH + bool "Threefish tweakable block cipher" + depends on (X86 || UML_X86) && 64BIT + select CRYPTO_ALGAPI + help + Threefish cipher algorithm is the tweakable block cipher underneath + the Skein family of secure hash algorithms. Skein is one of 5 + finalists from the NIST SHA3 competition. + + Skein is optimized for modern, 64bit processors and is highly + customizable. See: + + http://www.skein-hash.info/sites/default/files/skein1.3.pdf + + for more information.
drivers/staging/skein/Makefile new file +13 -0
@@ -0,0 +1,13 @@ +# +# Makefile for the skein secure hash algorithm +# +subdir-ccflags-y := -I$(src)/include/ + +obj-$(CONFIG_CRYPTO_SKEIN) += skein.o \ + skeinApi.o \ + skein_block.o + +obj-$(CONFIG_CRYPTO_THREEFISH) += threefish1024Block.o \ + threefish256Block.o \ + threefish512Block.o \ + threefishApi.o
drivers/staging/skein/include/brg_types.h +0 -57
83 lines not on this page · raw message
drivers/staging/skein/include/skein.h +0 -10
@@ -261,18 +261,8 @@ int Skein1024_Output (Skein1024_Ctxt_t *ctx, u08b_t * hashVal);#define Skein_Show_Key (bits,ctx,key,keyBytes)#endif -#ifndef SKEIN_ERR_CHECK /* run-time checks (e.g., bad params, uninitialized context)? */ #define Skein_Assert (x,retCode)/* default: ignore all Asserts, for performance */ #define Skein_assert (x) -#elif defined(SKEIN_ASSERT ) -#include <assert.h> -#define Skein_Assert (x,retCode) assert(x) -#define Skein_assert (x) assert(x) -#else -#include <assert.h> -#define Skein_Assert (x,retCode) { if (!(x)) return retCode; }/* caller error */ -#define Skein_assert (x) assert(x)/* internal error */ -#endif /***************************************************************** ** Skein block function constants (shared across Ref and Opt code)
drivers/staging/skein/include/skeinApi.h +1 -1
@@ -78,8 +78,8 @@ OTHER DEALINGS IN THE SOFTWARE.* */ +#include <linux/types.h> #include <skein.h> -#include <stdint.h> #ifdef __cplusplus extern "C"
drivers/staging/skein/include/skein_port.h +1 -15
@@ -44,24 +44,10 @@ typedef uint_64t u64b_t; /* 64-bit unsigned integer */* platform-specific code instead (e.g., for big-endian CPUs). * */ -#ifndef SKEIN_NEED_SWAP /* compile-time "override" for endianness? */ - -#include <brg_endian.h> /* get endianness selection */ -#if PLATFORM_BYTE_ORDER ==IS_BIG_ENDIAN -/* here for big-endian CPUs */ -#define SKEIN_NEED_SWAP (1) -#elif PLATFORM_BYTE_ORDER ==IS_LITTLE_ENDIAN -/* here for x86 and x86-64 CPUs (and other detected little-endian CPUs) */ #define SKEIN_NEED_SWAP (0) -#if PLATFORM_MUST_ALIGN ==0 /* ok to use "fast" versions? */ +/* below two prototype assume we are handed aligned data */ #define Skein_Put64_LSB_First (dst08,src64,bCnt) memcpy(dst08,src64,bCnt)#define Skein_Get64_LSB_First (dst64,src08,wCnt) memcpy(dst64,src08,8*(wCnt)) -#endif -#else -#error "Skein needs endianness setting!" -#endif - -#endif /* ifndef SKEIN_NEED_SWAP */ /* ******************************************************************
drivers/staging/skein/include/threefishApi.h +1 -1
@@ -28,8 +28,8 @@@endcode */ +#include <linux/types.h> #include <skein.h> -#include <stdint.h> #define KeyScheduleConst 0x1BD11BDAA9FC1A22L
drivers/staging/skein/skein.c +1 -1
@@ -10,7 +10,7 @@#define SKEIN_PORT_CODE /* instantiate any code in skein_port.h */ -#include <string.h> /* get the memcpy/memset functions */ +#include <linux/string.h> /* get the memcpy/memset functions */ #include <skein.h> /* get the Skein API definitions */ #include <skein_iv.h> /* get precomputed IVs */
drivers/staging/skein/skeinApi.c +1 -3
@@ -24,10 +24,8 @@ OTHER DEALINGS IN THE SOFTWARE.*/ -#define SKEIN_ERR_CHECK 1 +#include <linux/string.h> #include <skeinApi.h> -#include <string.h> -#include <stdio.h> int skeinCtxPrepare (SkeinCtx_t * ctx,SkeinSize_t size) {
drivers/staging/skein/skeinBlockNo3F.c +1 -1
@@ -1,5 +1,5 @@ -#include <string.h> +#include <linux/string.h> #include <skein.h> #include <threefishApi.h>
drivers/staging/skein/skein_block.c +1 -1
@@ -14,7 +14,7 @@** ************************************************************************/ -#include <string.h> +#include <linux/string.h> #include <skein.h> #ifndef SKEIN_USE_ASM
drivers/staging/skein/threefish1024Block.c +1 -2
@@ -1,6 +1,5 @@ +#include <linux/string.h> #include <threefishApi.h> -#include <stdint.h> -#include <string.h> void threefishEncrypt1024 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output)
drivers/staging/skein/threefish256Block.c +1 -2
@@ -1,6 +1,5 @@ +#include <linux/string.h> #include <threefishApi.h> -#include <stdint.h> -#include <string.h> void threefishEncrypt256 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output)
drivers/staging/skein/threefish512Block.c +1 -2
@@ -1,6 +1,5 @@ +#include <linux/string.h> #include <threefishApi.h> -#include <stdint.h> -#include <string.h> void threefishEncrypt512 (ThreefishKey_t * keyCtx,uint64_t * input,uint64_t * output)
drivers/staging/skein/threefishApi.c +1 -2
@@ -1,8 +1,7 @@ +#include <linux/string.h> #include <threefishApi.h> -#include <stdlib.h> -#include <string.h> void threefishSetKey (ThreefishKey_t * keyCtx,ThreefishSize_t stateSize,uint64_t * keyData,uint64_t * tweak)
Signature · 1 line
1.9.1