Monero
Loading...
Searching...
No Matches
skein.c File Reference
#include <stddef.h>
#include <string.h>
#include "skein.h"
Include dependency graph for skein.c:

Classes

struct  Skein_Ctxt_Hdr_t
struct  Skein_256_Ctxt_t
struct  Skein_512_Ctxt_t
struct  Skein1024_Ctxt_t
struct  hashState

Macros

#define SKEIN_PORT_CODE   /* instantiate any code in skein_port.h */
#define DISABLE_UNUSED   0
#define SKEIN_256_NIST_MAX_HASHBITS   (0)
#define SKEIN_512_NIST_MAX_HASHBITS   (512)
#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)
#define SKEIN_RND_SPECIAL   (1000u)
#define SKEIN_RND_KEY_INITIAL   (SKEIN_RND_SPECIAL+0u)
#define SKEIN_RND_KEY_INJECT   (SKEIN_RND_SPECIAL+1u)
#define SKEIN_RND_FEED_FWD   (SKEIN_RND_SPECIAL+2u)
#define SKEIN_TREE_HASH   (1)
#define SKEIN_T1_BIT(BIT)
#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_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_TREE_LVL_MASK   (((u64b_t)0x7F) << SKEIN_T1_POS_TREE_LVL)
#define SKEIN_T1_TREE_LEVEL(n)
#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)
#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)
#define SKEIN_ID_STRING_LE   (0x33414853) /* "SHA3" (little-endian)*/
#define SKEIN_MK_64(hi32, lo32)
#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)
#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   (((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_INFO(leaf, node, maxLvl)
#define SKEIN_CFG_TREE_INFO_SEQUENTIAL   SKEIN_CFG_TREE_INFO(0,0,0) /* use as treeInfo in InitExt() call for sequential processing */
#define Skein_Get_Tweak(ctxPtr, TWK_NUM)
#define Skein_Set_Tweak(ctxPtr, TWK_NUM, tVal)
#define Skein_Get_T0(ctxPtr)
#define Skein_Get_T1(ctxPtr)
#define Skein_Set_T0(ctxPtr, T0)
#define Skein_Set_T1(ctxPtr, T1)
#define Skein_Set_T0_T1(ctxPtr, T0, T1)
#define Skein_Set_Type(ctxPtr, BLK_TYPE)
#define Skein_Start_New_Type(ctxPtr, BLK_TYPE)
#define Skein_Clear_First_Flag(hdr)
#define Skein_Set_Bit_Pad_Flag(hdr)
#define Skein_Set_Tree_Level(hdr, height)
#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_Assert(x, retCode)
#define Skein_assert(x)
#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)
#define MK_64   SKEIN_MK_64
#define SKEIN_USE_ASM   (0) /* default is all C code (no ASM) */
#define SKEIN_LOOP   001 /* default: unroll 256 and 512, but not 1024 */
#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 ts   (kw + KW_TWK_BASE)
#define DebugSaveTweak(ctx)
#define RCNT   (SKEIN_256_ROUNDS_TOTAL/8)
#define SKEIN_UNROLL_256   (((SKEIN_LOOP)/100)%10)
#define Round256(p0, p1, p2, p3, ROT, rNum)
#define R256(p0, p1, p2, p3, ROT, rNum)
#define I256(R)
#define R256_8_rounds(R)
#define R256_Unroll_R(NN)
#define RCNT   (SKEIN_512_ROUNDS_TOTAL/8)
#define SKEIN_UNROLL_512   (((SKEIN_LOOP)/10)%10)
#define Round512(p0, p1, p2, p3, p4, p5, p6, p7, ROT, rNum)
#define R512(p0, p1, p2, p3, p4, p5, p6, p7, ROT, rNum)
#define I512(R)
#define R512_8_rounds(R)
#define R512_Unroll_R(NN)
#define RCNT   (SKEIN1024_ROUNDS_TOTAL/8)
#define SKEIN_UNROLL_1024   ((SKEIN_LOOP)%10)
#define Round1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, ROT, rNum)
#define R1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, ROT, rn)
#define I1024(R)
#define R1024_8_rounds(R)
#define R1024_Unroll_R(NN)

Enumerations

enum  {
  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_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 ,
  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
}

Functions

static int Skein_512_Init (Skein_512_Ctxt_t *ctx, size_t hashBitLen)
static int Skein1024_Init (Skein1024_Ctxt_t *ctx, size_t hashBitLen)
static int Skein_256_Update (Skein_256_Ctxt_t *ctx, const u08b_t *msg, size_t msgByteCnt)
static int Skein_512_Update (Skein_512_Ctxt_t *ctx, const u08b_t *msg, size_t msgByteCnt)
static int Skein1024_Update (Skein1024_Ctxt_t *ctx, const u08b_t *msg, size_t msgByteCnt)
static int Skein_256_Final (Skein_256_Ctxt_t *ctx, u08b_t *hashVal)
static int Skein_512_Final (Skein_512_Ctxt_t *ctx, u08b_t *hashVal)
static int Skein1024_Final (Skein1024_Ctxt_t *ctx, u08b_t *hashVal)
static void Skein_256_Process_Block (Skein_256_Ctxt_t *ctx, const u08b_t *blkPtr, size_t blkCnt, size_t byteCntAdd)
static void Skein_512_Process_Block (Skein_512_Ctxt_t *ctx, const u08b_t *blkPtr, size_t blkCnt, size_t byteCntAdd)
static void Skein1024_Process_Block (Skein1024_Ctxt_t *ctx, const u08b_t *blkPtr, size_t blkCnt, size_t byteCntAdd)
static HashReturn Init (hashState *state, int hashbitlen)
static HashReturn Update (hashState *state, const BitSequence *data, DataLength databitlen)
static HashReturn Final (hashState *state, BitSequence *hashval)
HashReturn skein_hash (int hashbitlen, const BitSequence *data, DataLength databitlen, BitSequence *hashval)

Variables

const u64b_t SKEIN_256_IV_128 []
const u64b_t SKEIN_256_IV_160 []
const u64b_t SKEIN_256_IV_224 []
const u64b_t SKEIN_256_IV_256 []
const u64b_t SKEIN_512_IV_128 []
const u64b_t SKEIN_512_IV_160 []
const u64b_t SKEIN_512_IV_224 []
const u64b_t SKEIN_512_IV_256 []
const u64b_t SKEIN_512_IV_384 []
const u64b_t SKEIN_512_IV_512 []
const u64b_t SKEIN1024_IV_384 []
const u64b_t SKEIN1024_IV_512 []
const u64b_t SKEIN1024_IV_1024 []

Macro Definition Documentation

◆ BLK_BITS

#define BLK_BITS   (WCNT*64) /* some useful definitions for code here */

◆ DebugSaveTweak

#define DebugSaveTweak ( ctx)

◆ DISABLE_UNUSED

#define DISABLE_UNUSED   0

◆ I1024

#define I1024 ( R)
Value:
X00 += ks[((R)+ 1) % 17]; /* inject the key schedule value */ \
X01 += ks[((R)+ 2) % 17]; \
X02 += ks[((R)+ 3) % 17]; \
X03 += ks[((R)+ 4) % 17]; \
X04 += ks[((R)+ 5) % 17]; \
X05 += ks[((R)+ 6) % 17]; \
X06 += ks[((R)+ 7) % 17]; \
X07 += ks[((R)+ 8) % 17]; \
X08 += ks[((R)+ 9) % 17]; \
X09 += ks[((R)+10) % 17]; \
X10 += ks[((R)+11) % 17]; \
X11 += ks[((R)+12) % 17]; \
X12 += ks[((R)+13) % 17]; \
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);
#define ks
Definition skein.c:521
#define BLK_BITS
Definition skein.c:518
#define SKEIN_RND_KEY_INJECT
Definition skein.c:48
#define ts
Definition skein.c:522

◆ I256

#define I256 ( R)
Value:
X0 += ks[((R)+1) % 5]; /* inject the key schedule value */ \
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);

◆ I512

#define I512 ( R)
Value:
X0 += ks[((R)+1) % 9]; /* inject the key schedule value */ \
X1 += ks[((R)+2) % 9]; \
X2 += ks[((R)+3) % 9]; \
X3 += ks[((R)+4) % 9]; \
X4 += ks[((R)+5) % 9]; \
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);

◆ ks

#define ks   (kw + KW_KEY_BASE)

◆ KW_KEY_BASE

#define KW_KEY_BASE   (3)

◆ KW_TWK_BASE

#define KW_TWK_BASE   (0)

◆ MK_64

#define MK_64   SKEIN_MK_64

◆ R1024

#define R1024 ( p0,
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
pA,
pB,
pC,
pD,
pE,
pF,
ROT,
rn )
Value:
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);
#define ROT(x, n)
#define Round1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, ROT, rNum)

◆ R1024_8_rounds

#define R1024_8_rounds ( R)
Value:
/* 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); \
R1024(00,09,02,13,06,11,04,15,10,07,12,03,14,05,08,01,R1024_1,8*(R) + 2); \
R1024(00,07,02,05,04,03,06,01,12,15,14,13,08,11,10,09,R1024_2,8*(R) + 3); \
R1024(00,15,02,11,06,13,04,09,14,01,08,05,10,03,12,07,R1024_3,8*(R) + 4); \
I1024(2*(R)); \
R1024(00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,R1024_4,8*(R) + 5); \
R1024(00,09,02,13,06,11,04,15,10,07,12,03,14,05,08,01,R1024_5,8*(R) + 6); \
R1024(00,07,02,05,04,03,06,01,12,15,14,13,08,11,10,09,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);

◆ R1024_Unroll_R

#define R1024_Unroll_R ( NN)
Value:
#define SKEIN1024_ROUNDS_TOTAL
Definition skein.c:308
#define SKEIN_UNROLL_1024

◆ R256

#define R256 ( p0,
p1,
p2,
p3,
ROT,
rNum )
Value:
/* fully unrolled */ \
Round256(p0,p1,p2,p3,ROT,rNum) \
Skein_Show_R_Ptr(BLK_BITS,&ctx->h,rNum,Xptr);

◆ R256_8_rounds

#define R256_8_rounds ( R)
Value:
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); \
R256(0,3,2,1,R_256_3,8*(R) + 4); \
I256(2*(R)); \
R256(0,1,2,3,R_256_4,8*(R) + 5); \
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);
#define R256(p0, p1, p2, p3, ROT, rNum)

◆ R256_Unroll_R

#define R256_Unroll_R ( NN)
Value:
#define SKEIN_256_ROUNDS_TOTAL
Definition skein.c:306
#define SKEIN_UNROLL_256

◆ R512

#define R512 ( p0,
p1,
p2,
p3,
p4,
p5,
p6,
p7,
ROT,
rNum )
Value:
/* unrolled */ \
Round512(p0,p1,p2,p3,p4,p5,p6,p7,ROT,rNum) \
Skein_Show_R_Ptr(BLK_BITS,&ctx->h,rNum,Xptr);

◆ R512_8_rounds

#define R512_8_rounds ( R)
Value:
/* do 8 full rounds */ \
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); \
R512(6,1,0,7,2,5,4,3,R_512_3,8*(R)+ 4); \
I512(2*(R)); \
R512(0,1,2,3,4,5,6,7,R_512_4,8*(R)+ 5); \
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 */

◆ R512_Unroll_R

#define R512_Unroll_R ( NN)
Value:
#define SKEIN_512_ROUNDS_TOTAL
Definition skein.c:307
#define SKEIN_UNROLL_512

◆ RCNT [1/3]

#define RCNT   (SKEIN1024_ROUNDS_TOTAL/8)

◆ RCNT [2/3]

#define RCNT   (SKEIN_512_ROUNDS_TOTAL/8)

◆ RCNT [3/3]

#define RCNT   (SKEIN_256_ROUNDS_TOTAL/8)

◆ Round1024

#define Round1024 ( p0,
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
pA,
pB,
pC,
pD,
pE,
pF,
ROT,
rNum )
Value:
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; \
X##p8 += X##p9; X##p9 = RotL_64(X##p9,ROT##_4); X##p9 ^= X##p8; \
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; \
#define RotL_64(x, N)
Definition skein_port.h:92

◆ Round256

#define Round256 ( p0,
p1,
p2,
p3,
ROT,
rNum )
Value:
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; \

◆ Round512

#define Round512 ( p0,
p1,
p2,
p3,
p4,
p5,
p6,
p7,
ROT,
rNum )
Value:
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; \

◆ SKEIN1024_BLOCK_BYTES

#define SKEIN1024_BLOCK_BYTES   ( 8*SKEIN1024_STATE_WORDS)

◆ SKEIN1024_ROUNDS_TOTAL

#define SKEIN1024_ROUNDS_TOTAL   (80)

◆ SKEIN1024_STATE_BITS

#define SKEIN1024_STATE_BITS   (64*SKEIN1024_STATE_WORDS)

◆ SKEIN1024_STATE_BYTES

#define SKEIN1024_STATE_BYTES   ( 8*SKEIN1024_STATE_WORDS)

◆ SKEIN1024_STATE_WORDS

#define SKEIN1024_STATE_WORDS   (16)

◆ SKEIN_256_BLOCK_BYTES

#define SKEIN_256_BLOCK_BYTES   ( 8*SKEIN_256_STATE_WORDS)

◆ SKEIN_256_NIST_MAX_HASHBITS

#define SKEIN_256_NIST_MAX_HASHBITS   (0)

◆ SKEIN_256_ROUNDS_TOTAL

#define SKEIN_256_ROUNDS_TOTAL   (72) /* number of rounds for the different block sizes */

◆ SKEIN_256_STATE_BITS

#define SKEIN_256_STATE_BITS   (64*SKEIN_256_STATE_WORDS)

◆ SKEIN_256_STATE_BYTES

#define SKEIN_256_STATE_BYTES   ( 8*SKEIN_256_STATE_WORDS)

◆ SKEIN_256_STATE_WORDS

#define SKEIN_256_STATE_WORDS   ( 4)

◆ SKEIN_512_BLOCK_BYTES

#define SKEIN_512_BLOCK_BYTES   ( 8*SKEIN_512_STATE_WORDS)

◆ SKEIN_512_NIST_MAX_HASHBITS

#define SKEIN_512_NIST_MAX_HASHBITS   (512)

◆ SKEIN_512_ROUNDS_TOTAL

#define SKEIN_512_ROUNDS_TOTAL   (72)

◆ SKEIN_512_STATE_BITS

#define SKEIN_512_STATE_BITS   (64*SKEIN_512_STATE_WORDS)

◆ SKEIN_512_STATE_BYTES

#define SKEIN_512_STATE_BYTES   ( 8*SKEIN_512_STATE_WORDS)

◆ SKEIN_512_STATE_WORDS

#define SKEIN_512_STATE_WORDS   ( 8)

◆ Skein_Assert

#define Skein_Assert ( x,
retCode )
Value:
/* default: ignore all Asserts, for performance */

◆ Skein_assert

#define Skein_assert ( x)

◆ SKEIN_BLK_TYPE_CFG

#define SKEIN_BLK_TYPE_CFG   ( 4) /* configuration block */

◆ SKEIN_BLK_TYPE_KDF

#define SKEIN_BLK_TYPE_KDF   (16) /* key identifier for KDF */

◆ SKEIN_BLK_TYPE_KEY

#define SKEIN_BLK_TYPE_KEY   ( 0) /* key, for MAC and KDF */

◆ SKEIN_BLK_TYPE_MASK

#define SKEIN_BLK_TYPE_MASK   (63) /* bit field mask */

◆ SKEIN_BLK_TYPE_MSG

#define SKEIN_BLK_TYPE_MSG   (48) /* message processing */

◆ SKEIN_BLK_TYPE_NONCE

#define SKEIN_BLK_TYPE_NONCE   (20) /* nonce for PRNG */

◆ SKEIN_BLK_TYPE_OUT

#define SKEIN_BLK_TYPE_OUT   (63) /* output stage */

◆ SKEIN_BLK_TYPE_PERS

#define SKEIN_BLK_TYPE_PERS   ( 8) /* personalization string */

◆ SKEIN_BLK_TYPE_PK

#define SKEIN_BLK_TYPE_PK   (12) /* public key (for digital signature hashing) */

◆ SKEIN_CFG_STR_LEN

#define SKEIN_CFG_STR_LEN   (4*8)

◆ SKEIN_CFG_TREE_INFO

#define SKEIN_CFG_TREE_INFO ( leaf,
node,
maxLvl )
Value:
( (((u64b_t)(leaf )) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \
#define SKEIN_CFG_TREE_LEAF_SIZE_POS
Definition skein.c:200
#define SKEIN_CFG_TREE_MAX_LEVEL_POS
Definition skein.c:202
#define SKEIN_CFG_TREE_NODE_SIZE_POS
Definition skein.c:201
uint64_t u64b_t
Definition skein_port.h:89

◆ SKEIN_CFG_TREE_INFO_SEQUENTIAL

#define SKEIN_CFG_TREE_INFO_SEQUENTIAL   SKEIN_CFG_TREE_INFO(0,0,0) /* use as treeInfo in InitExt() call for sequential processing */

◆ SKEIN_CFG_TREE_LEAF_SIZE_MSK

#define SKEIN_CFG_TREE_LEAF_SIZE_MSK   (((u64b_t) 0xFF) << SKEIN_CFG_TREE_LEAF_SIZE_POS)

◆ SKEIN_CFG_TREE_LEAF_SIZE_POS

#define SKEIN_CFG_TREE_LEAF_SIZE_POS   ( 0)

◆ SKEIN_CFG_TREE_MAX_LEVEL_MSK

#define SKEIN_CFG_TREE_MAX_LEVEL_MSK   (((u64b_t) 0xFF) << SKEIN_CFG_TREE_MAX_LEVEL_POS)

◆ SKEIN_CFG_TREE_MAX_LEVEL_POS

#define SKEIN_CFG_TREE_MAX_LEVEL_POS   (16)

◆ SKEIN_CFG_TREE_NODE_SIZE_MSK

#define SKEIN_CFG_TREE_NODE_SIZE_MSK   (((u64b_t) 0xFF) << SKEIN_CFG_TREE_NODE_SIZE_POS)

◆ SKEIN_CFG_TREE_NODE_SIZE_POS

#define SKEIN_CFG_TREE_NODE_SIZE_POS   ( 8)

◆ Skein_Clear_First_Flag

#define Skein_Clear_First_Flag ( hdr)
Value:
{ (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; }
#define SKEIN_T1_FLAG_FIRST
Definition skein.c:154
#define T(x)

◆ Skein_Get_T0

#define Skein_Get_T0 ( ctxPtr)
Value:
Skein_Get_Tweak(ctxPtr,0)
#define Skein_Get_Tweak(ctxPtr, TWK_NUM)
Definition skein.c:219

◆ Skein_Get_T1

#define Skein_Get_T1 ( ctxPtr)
Value:
Skein_Get_Tweak(ctxPtr,1)

◆ Skein_Get_Tweak

#define Skein_Get_Tweak ( ctxPtr,
TWK_NUM )
Value:
((ctxPtr)->h.T[TWK_NUM])

◆ SKEIN_ID_STRING_LE

#define SKEIN_ID_STRING_LE   (0x33414853) /* "SHA3" (little-endian)*/

◆ SKEIN_KS_PARITY

#define SKEIN_KS_PARITY   SKEIN_MK_64(0x1BD11BDA,0xA9FC1A22)

◆ SKEIN_LOOP

#define SKEIN_LOOP   001 /* default: unroll 256 and 512, but not 1024 */

◆ SKEIN_MAX_STATE_WORDS

#define SKEIN_MAX_STATE_WORDS   (16)

◆ SKEIN_MK_64

#define SKEIN_MK_64 ( hi32,
lo32 )
Value:
((lo32) + (((u64b_t) (hi32)) << 32))

◆ SKEIN_MODIFIER_WORDS

#define SKEIN_MODIFIER_WORDS   ( 2) /* number of modifier (tweak) words */

◆ SKEIN_PORT_CODE

#define SKEIN_PORT_CODE   /* instantiate any code in skein_port.h */

◆ SKEIN_RND_FEED_FWD

#define SKEIN_RND_FEED_FWD   (SKEIN_RND_SPECIAL+2u)

◆ SKEIN_RND_KEY_INITIAL

#define SKEIN_RND_KEY_INITIAL   (SKEIN_RND_SPECIAL+0u)

◆ SKEIN_RND_KEY_INJECT

#define SKEIN_RND_KEY_INJECT   (SKEIN_RND_SPECIAL+1u)

◆ SKEIN_RND_SPECIAL

#define SKEIN_RND_SPECIAL   (1000u)

◆ SKEIN_SCHEMA_VER

#define SKEIN_SCHEMA_VER   SKEIN_MK_64(SKEIN_VERSION,SKEIN_ID_STRING_LE)

◆ Skein_Set_Bit_Pad_Flag

#define Skein_Set_Bit_Pad_Flag ( hdr)
Value:
{ (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; }
#define SKEIN_T1_FLAG_BIT_PAD
Definition skein.c:156

◆ Skein_Set_T0

#define Skein_Set_T0 ( ctxPtr,
T0 )
Value:
Skein_Set_Tweak(ctxPtr,0,T0)
#define Skein_Set_Tweak(ctxPtr, TWK_NUM, tVal)
Definition skein.c:220

◆ Skein_Set_T0_T1

#define Skein_Set_T0_T1 ( ctxPtr,
T0,
T1 )
Value:
{ \
Skein_Set_T0(ctxPtr,(T0)); \
Skein_Set_T1(ctxPtr,(T1)); \
}

◆ Skein_Set_T1

#define Skein_Set_T1 ( ctxPtr,
T1 )
Value:
Skein_Set_Tweak(ctxPtr,1,T1)

◆ Skein_Set_Tree_Level

#define Skein_Set_Tree_Level ( hdr,
height )
Value:
{ (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height);}
#define SKEIN_T1_TREE_LEVEL(n)
Definition skein.c:160

◆ Skein_Set_Tweak

#define Skein_Set_Tweak ( ctxPtr,
TWK_NUM,
tVal )
Value:
{(ctxPtr)->h.T[TWK_NUM] = (tVal);}
static uint64_t h
Definition blockchain_stats.cpp:55

◆ Skein_Set_Type

#define Skein_Set_Type ( ctxPtr,
BLK_TYPE )
Value:
Skein_Set_T1(ctxPtr,SKEIN_T1_BLK_TYPE_##BLK_TYPE)
#define Skein_Set_T1(ctxPtr, T1)
Definition skein.c:225

◆ Skein_Show_Block

#define Skein_Show_Block ( bits,
ctx,
X,
blkPtr,
wPtr,
ksEvenPtr,
ksOddPtr )

◆ Skein_Show_Final

#define Skein_Show_Final ( bits,
ctx,
cnt,
outPtr )

◆ Skein_Show_Key

#define Skein_Show_Key ( bits,
ctx,
key,
keyBytes )

◆ Skein_Show_R_Ptr

#define Skein_Show_R_Ptr ( bits,
ctx,
r,
X_ptr )

◆ Skein_Show_Round

#define Skein_Show_Round ( bits,
ctx,
r,
X )

◆ Skein_Start_New_Type

#define Skein_Start_New_Type ( ctxPtr,
BLK_TYPE )
Value:
{ Skein_Set_T0_T1(ctxPtr,0,SKEIN_T1_FLAG_FIRST | SKEIN_T1_BLK_TYPE_##BLK_TYPE); (ctxPtr)->h.bCnt=0; }
#define Skein_Set_T0_T1(ctxPtr, T0, T1)
Definition skein.c:228

◆ SKEIN_T1_BIT

#define SKEIN_T1_BIT ( BIT)
Value:
((BIT) - 64) /* offset 64 because it's the second word */

◆ SKEIN_T1_BLK_TYPE

#define SKEIN_T1_BLK_TYPE ( T)
Value:
(((u64b_t) (SKEIN_BLK_TYPE_##T)) << SKEIN_T1_POS_BLK_TYPE)
#define SKEIN_T1_POS_BLK_TYPE
Definition skein.c:149

◆ SKEIN_T1_BLK_TYPE_CFG

#define SKEIN_T1_BLK_TYPE_CFG   SKEIN_T1_BLK_TYPE(CFG) /* configuration block */

◆ SKEIN_T1_BLK_TYPE_CFG_FINAL

#define SKEIN_T1_BLK_TYPE_CFG_FINAL   (SKEIN_T1_BLK_TYPE_CFG | SKEIN_T1_FLAG_FINAL)

◆ SKEIN_T1_BLK_TYPE_KDF

#define SKEIN_T1_BLK_TYPE_KDF   SKEIN_T1_BLK_TYPE(KDF) /* key identifier for KDF */

◆ SKEIN_T1_BLK_TYPE_KEY

#define SKEIN_T1_BLK_TYPE_KEY   SKEIN_T1_BLK_TYPE(KEY) /* key, for MAC and KDF */

◆ SKEIN_T1_BLK_TYPE_MASK

#define SKEIN_T1_BLK_TYPE_MASK   SKEIN_T1_BLK_TYPE(MASK) /* field bit mask */

◆ SKEIN_T1_BLK_TYPE_MSG

#define SKEIN_T1_BLK_TYPE_MSG   SKEIN_T1_BLK_TYPE(MSG) /* message processing */

◆ SKEIN_T1_BLK_TYPE_NONCE

#define SKEIN_T1_BLK_TYPE_NONCE   SKEIN_T1_BLK_TYPE(NONCE)/* nonce for PRNG */

◆ SKEIN_T1_BLK_TYPE_OUT

#define SKEIN_T1_BLK_TYPE_OUT   SKEIN_T1_BLK_TYPE(OUT) /* output stage */

◆ SKEIN_T1_BLK_TYPE_OUT_FINAL

#define SKEIN_T1_BLK_TYPE_OUT_FINAL   (SKEIN_T1_BLK_TYPE_OUT | SKEIN_T1_FLAG_FINAL)

◆ SKEIN_T1_BLK_TYPE_PERS

#define SKEIN_T1_BLK_TYPE_PERS   SKEIN_T1_BLK_TYPE(PERS) /* personalization string */

◆ SKEIN_T1_BLK_TYPE_PK

#define SKEIN_T1_BLK_TYPE_PK   SKEIN_T1_BLK_TYPE(PK) /* public key (for digital signature hashing) */

◆ SKEIN_T1_FLAG_BIT_PAD

#define SKEIN_T1_FLAG_BIT_PAD   (((u64b_t) 1 ) << SKEIN_T1_POS_BIT_PAD)

◆ SKEIN_T1_FLAG_FINAL

#define SKEIN_T1_FLAG_FINAL   (((u64b_t) 1 ) << SKEIN_T1_POS_FINAL)

◆ SKEIN_T1_FLAG_FIRST

#define SKEIN_T1_FLAG_FIRST   (((u64b_t) 1 ) << SKEIN_T1_POS_FIRST)

◆ SKEIN_T1_POS_BIT_PAD

#define SKEIN_T1_POS_BIT_PAD   SKEIN_T1_BIT(119) /* bit 119 : partial final input byte */

◆ SKEIN_T1_POS_BLK_TYPE

#define SKEIN_T1_POS_BLK_TYPE   SKEIN_T1_BIT(120) /* bits 120..125: type field */

◆ SKEIN_T1_POS_FINAL

#define SKEIN_T1_POS_FINAL   SKEIN_T1_BIT(127) /* bit 127 : final block flag */

◆ SKEIN_T1_POS_FIRST

#define SKEIN_T1_POS_FIRST   SKEIN_T1_BIT(126) /* bits 126 : first block flag */

◆ SKEIN_T1_POS_TREE_LVL

#define SKEIN_T1_POS_TREE_LVL   SKEIN_T1_BIT(112) /* bits 112..118: level in hash tree */

◆ SKEIN_T1_TREE_LEVEL

#define SKEIN_T1_TREE_LEVEL ( n)
Value:
#define SKEIN_T1_POS_TREE_LVL
Definition skein.c:147

◆ SKEIN_T1_TREE_LVL_MASK

#define SKEIN_T1_TREE_LVL_MASK   (((u64b_t)0x7F) << SKEIN_T1_POS_TREE_LVL)

◆ SKEIN_TREE_HASH

#define SKEIN_TREE_HASH   (1)

◆ SKEIN_UNROLL_1024

#define SKEIN_UNROLL_1024   ((SKEIN_LOOP)%10)

◆ SKEIN_UNROLL_256

#define SKEIN_UNROLL_256   (((SKEIN_LOOP)/100)%10)

◆ SKEIN_UNROLL_512

#define SKEIN_UNROLL_512   (((SKEIN_LOOP)/10)%10)

◆ SKEIN_USE_ASM

#define SKEIN_USE_ASM   (0) /* default is all C code (no ASM) */

◆ SKEIN_VERSION

#define SKEIN_VERSION   (1)

◆ ts

#define ts   (kw + KW_TWK_BASE)

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
R_256_0_0 
R_256_0_1 
R_256_1_0 
R_256_1_1 
R_256_2_0 
R_256_2_1 
R_256_3_0 
R_256_3_1 
R_256_4_0 
R_256_4_1 
R_256_5_0 
R_256_5_1 
R_256_6_0 
R_256_6_1 
R_256_7_0 
R_256_7_1 
R_512_0_0 
R_512_0_1 
R_512_0_2 
R_512_0_3 
R_512_1_0 
R_512_1_1 
R_512_1_2 
R_512_1_3 
R_512_2_0 
R_512_2_1 
R_512_2_2 
R_512_2_3 
R_512_3_0 
R_512_3_1 
R_512_3_2 
R_512_3_3 
R_512_4_0 
R_512_4_1 
R_512_4_2 
R_512_4_3 
R_512_5_0 
R_512_5_1 
R_512_5_2 
R_512_5_3 
R_512_6_0 
R_512_6_1 
R_512_6_2 
R_512_6_3 
R_512_7_0 
R_512_7_1 
R_512_7_2 
R_512_7_3 
R1024_0_0 
R1024_0_1 
R1024_0_2 
R1024_0_3 
R1024_0_4 
R1024_0_5 
R1024_0_6 
R1024_0_7 
R1024_1_0 
R1024_1_1 
R1024_1_2 
R1024_1_3 
R1024_1_4 
R1024_1_5 
R1024_1_6 
R1024_1_7 
R1024_2_0 
R1024_2_1 
R1024_2_2 
R1024_2_3 
R1024_2_4 
R1024_2_5 
R1024_2_6 
R1024_2_7 
R1024_3_0 
R1024_3_1 
R1024_3_2 
R1024_3_3 
R1024_3_4 
R1024_3_5 
R1024_3_6 
R1024_3_7 
R1024_4_0 
R1024_4_1 
R1024_4_2 
R1024_4_3 
R1024_4_4 
R1024_4_5 
R1024_4_6 
R1024_4_7 
R1024_5_0 
R1024_5_1 
R1024_5_2 
R1024_5_3 
R1024_5_4 
R1024_5_5 
R1024_5_6 
R1024_5_7 
R1024_6_0 
R1024_6_1 
R1024_6_2 
R1024_6_3 
R1024_6_4 
R1024_6_5 
R1024_6_6 
R1024_6_7 
R1024_7_0 
R1024_7_1 
R1024_7_2 
R1024_7_3 
R1024_7_4 
R1024_7_5 
R1024_7_6 
R1024_7_7 

Function Documentation

◆ Final()

HashReturn Final ( hashState * state,
BitSequence * hashval )
static

◆ Init()

HashReturn Init ( hashState * state,
int hashbitlen )
static

◆ Skein1024_Final()

int Skein1024_Final ( Skein1024_Ctxt_t * ctx,
u08b_t * hashVal )
static

◆ Skein1024_Init()

int Skein1024_Init ( Skein1024_Ctxt_t * ctx,
size_t hashBitLen )
static

◆ Skein1024_Process_Block()

void Skein1024_Process_Block ( Skein1024_Ctxt_t * ctx,
const u08b_t * blkPtr,
size_t blkCnt,
size_t byteCntAdd )
static

◆ Skein1024_Update()

int Skein1024_Update ( Skein1024_Ctxt_t * ctx,
const u08b_t * msg,
size_t msgByteCnt )
static

◆ Skein_256_Final()

int Skein_256_Final ( Skein_256_Ctxt_t * ctx,
u08b_t * hashVal )
static

◆ Skein_256_Process_Block()

void Skein_256_Process_Block ( Skein_256_Ctxt_t * ctx,
const u08b_t * blkPtr,
size_t blkCnt,
size_t byteCntAdd )
static

◆ Skein_256_Update()

int Skein_256_Update ( Skein_256_Ctxt_t * ctx,
const u08b_t * msg,
size_t msgByteCnt )
static

◆ Skein_512_Final()

int Skein_512_Final ( Skein_512_Ctxt_t * ctx,
u08b_t * hashVal )
static

◆ Skein_512_Init()

int Skein_512_Init ( Skein_512_Ctxt_t * ctx,
size_t hashBitLen )
static

◆ Skein_512_Process_Block()

void Skein_512_Process_Block ( Skein_512_Ctxt_t * ctx,
const u08b_t * blkPtr,
size_t blkCnt,
size_t byteCntAdd )
static

◆ Skein_512_Update()

int Skein_512_Update ( Skein_512_Ctxt_t * ctx,
const u08b_t * msg,
size_t msgByteCnt )
static

◆ skein_hash()

HashReturn skein_hash ( int hashbitlen,
const BitSequence * data,
DataLength databitlen,
BitSequence * hashval )

◆ Update()

HashReturn Update ( hashState * state,
const BitSequence * data,
DataLength databitlen )
static

Variable Documentation

◆ SKEIN1024_IV_1024

const u64b_t SKEIN1024_IV_1024[]
Initial value:
=
{
MK_64(0xD593DA07,0x41E72355),
MK_64(0x15B5E511,0xAC73E00C),
MK_64(0x5180E5AE,0xBAF2C4F0),
MK_64(0x03BD41D3,0xFCBCAFAF),
MK_64(0x1CAEC6FD,0x1983A898),
MK_64(0x6E510B8B,0xCDD0589F),
MK_64(0x77E2BDFD,0xC6394ADA),
MK_64(0xC11E1DB5,0x24DCB0A3),
MK_64(0xD6D14AF9,0xC6329AB5),
MK_64(0x6A9B0BFC,0x6EB67E0D),
MK_64(0x9243C60D,0xCCFF1332),
MK_64(0x1A1F1DDE,0x743F02D4),
MK_64(0x0996753C,0x10ED0BB8),
MK_64(0x6572DD22,0xF2B4969A),
MK_64(0x61FD3062,0xD00A579A),
}
#define MK_64
Definition skein.c:330

◆ SKEIN1024_IV_384

const u64b_t SKEIN1024_IV_384[]
Initial value:
=
{
MK_64(0x5102B6B8,0xC1894A35),
MK_64(0xFEEBC9E3,0xFE8AF11A),
MK_64(0x0C807F06,0xE32BED71),
MK_64(0x60C13A52,0xB41A91F6),
MK_64(0x9716D35D,0xD4917C38),
MK_64(0xE780DF12,0x6FD31D3A),
MK_64(0x797846B6,0xC898303A),
MK_64(0xB172C2A8,0xB3572A3B),
MK_64(0xC9BC8203,0xA6104A6C),
MK_64(0x65909338,0xD75624F4),
MK_64(0x94BCC568,0x4B3F81A0),
MK_64(0x3EBBF51E,0x10ECFD46),
MK_64(0x2DF50F0B,0xEEB08542),
MK_64(0x3B5A6530,0x0DBC6516),
MK_64(0x484B9CD2,0x167BBCE1),
}

◆ SKEIN1024_IV_512

const u64b_t SKEIN1024_IV_512[]
Initial value:
=
{
MK_64(0xCAEC0E5D,0x7C1B1B18),
MK_64(0xA01B0E04,0x5F03E802),
MK_64(0x33840451,0xED912885),
MK_64(0x374AFB04,0xEAEC2E1C),
MK_64(0xDF25A0E2,0x813581F7),
MK_64(0xE4004093,0x8B12F9D2),
MK_64(0xA662D539,0xC2ED39B6),
MK_64(0xFA8B85CF,0x45D8C75A),
MK_64(0x8316ED8E,0x29EDE796),
MK_64(0x053289C0,0x2E9F91B8),
MK_64(0xC3F8EF1D,0x6D518B73),
MK_64(0xBDCEC3C4,0xD5EF332E),
MK_64(0x549A7E52,0x22974487),
MK_64(0x67070872,0x5B749816),
MK_64(0xB9CD28FB,0xF0581BD1),
}

◆ SKEIN_256_IV_128

const u64b_t SKEIN_256_IV_128[]
Initial value:
=
{
MK_64(0xE1111906,0x964D7260),
MK_64(0x883DAAA7,0x7C8D811C),
MK_64(0x10080DF4,0x91960F7A),
}

◆ SKEIN_256_IV_160

const u64b_t SKEIN_256_IV_160[]
Initial value:
=
{
MK_64(0x14202314,0x72825E98),
MK_64(0x2AC4E9A2,0x5A77E590),
MK_64(0xD47A5856,0x8838D63E),
}

◆ SKEIN_256_IV_224

const u64b_t SKEIN_256_IV_224[]
Initial value:
=
{
MK_64(0xC6098A8C,0x9AE5EA0B),
MK_64(0x876D5686,0x08C5191C),
MK_64(0x99CB88D7,0xD7F53884),
}

◆ SKEIN_256_IV_256

const u64b_t SKEIN_256_IV_256[]
Initial value:
=
{
MK_64(0xFC9DA860,0xD048B449),
MK_64(0x2FCA6647,0x9FA7D833),
MK_64(0xB33BC389,0x6656840F),
}

◆ SKEIN_512_IV_128

const u64b_t SKEIN_512_IV_128[]
Initial value:
=
{
MK_64(0xA8BC7BF3,0x6FBF9F52),
MK_64(0x1E9872CE,0xBD1AF0AA),
MK_64(0x309B1790,0xB32190D3),
MK_64(0xBCFBB854,0x3F94805C),
MK_64(0x0DA61BCD,0x6E31B11B),
MK_64(0x1A18EBEA,0xD46A32E3),
MK_64(0xA2CC5B18,0xCE84AA82),
}

◆ SKEIN_512_IV_160

const u64b_t SKEIN_512_IV_160[]
Initial value:
=
{
MK_64(0x28B81A2A,0xE013BD91),
MK_64(0xC2F11668,0xB5BDF78F),
MK_64(0x1760D8F3,0xF6A56F12),
MK_64(0x4FB74758,0x8239904F),
MK_64(0x21EDE07F,0x7EAF5056),
MK_64(0xD908922E,0x63ED70B8),
MK_64(0xB8EC76FF,0xECCB52FA),
}

◆ SKEIN_512_IV_224

const u64b_t SKEIN_512_IV_224[]
Initial value:
=
{
MK_64(0xCCD06162,0x48677224),
MK_64(0xCBA65CF3,0xA92339EF),
MK_64(0x8CCD69D6,0x52FF4B64),
MK_64(0x398AED7B,0x3AB890B4),
MK_64(0x0F59D1B1,0x457D2BD0),
MK_64(0x6776FE65,0x75D4EB3D),
MK_64(0x99FBC70E,0x997413E9),
}

◆ SKEIN_512_IV_256

const u64b_t SKEIN_512_IV_256[]
Initial value:
=
{
MK_64(0xCCD044A1,0x2FDB3E13),
MK_64(0xE8359030,0x1A79A9EB),
MK_64(0x55AEA061,0x4F816E6F),
MK_64(0x2A2767A4,0xAE9B94DB),
MK_64(0xEC06025E,0x74DD7683),
MK_64(0xE7A436CD,0xC4746251),
MK_64(0xC36FBAF9,0x393AD185),
}

◆ SKEIN_512_IV_384

const u64b_t SKEIN_512_IV_384[]
Initial value:
=
{
MK_64(0xA3F6C6BF,0x3A75EF5F),
MK_64(0xB0FEF9CC,0xFD84FAA4),
MK_64(0x9D77DD66,0x3D770CFE),
MK_64(0xD798CBF3,0xB468FDDA),
MK_64(0x1BC4A666,0x8A0E4465),
MK_64(0x7ED7D434,0xE5807407),
MK_64(0x548FC1AC,0xD4EC44D6),
}

◆ SKEIN_512_IV_512

const u64b_t SKEIN_512_IV_512[]
Initial value:
=
{
MK_64(0x4903ADFF,0x749C51CE),
MK_64(0x0D95DE39,0x9746DF03),
MK_64(0x8FD19341,0x27C79BCE),
MK_64(0x9A255629,0xFF352CB1),
MK_64(0x5DB62599,0xDF6CA7B0),
MK_64(0xEABE394C,0xA9D5C3F4),
MK_64(0x991112C7,0x1A75B523),
}