ccRTP 2.1.2
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
skein.h File Reference
#include <stddef.h>
#include <crypto/skein_port.h>
Include dependency graph for skein.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  Skein_Ctxt_Hdr_t
 
struct  Skein_256_Ctxt_t
 
struct  Skein_512_Ctxt_t
 
struct  Skein1024_Ctxt_t
 

Macros

#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_TREE_HASH   (1)
 
#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 */
 
#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)   (((u64b_t) (n)) << SKEIN_T1_POS_TREE_LVL)
 
#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)   (((u64b_t) (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)
 
#define SKEIN_ID_STRING_LE   (0x33414853) /* "SHA3" (little-endian)*/
 
#define SKEIN_MK_64(hi32, lo32)   ((lo32) + (((u64b_t) (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)
 
#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)   ((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_Set_T0_T1(ctxPtr, T0, T1)
 
#define Skein_Set_Type(ctxPtr, BLK_TYPE)   Skein_Set_T1(ctxPtr,SKEIN_T1_BLK_TYPE_##BLK_TYPE)
 
#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_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)   /* default: ignore all Asserts, for performance */
 
#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)
 

Enumerations

enum  { SKEIN_SUCCESS = 0, SKEIN_FAIL = 1, SKEIN_BAD_HASHLEN = 2 }
 
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

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_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_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_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_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)
 

Macro Definition Documentation

#define SKEIN1024_BLOCK_BYTES   ( 8*SKEIN1024_STATE_WORDS)

Definition at line 62 of file skein.h.

#define SKEIN1024_ROUNDS_TOTAL   (80)

Definition at line 316 of file skein.h.

#define SKEIN1024_STATE_BITS   (64*SKEIN1024_STATE_WORDS)

Definition at line 58 of file skein.h.

#define SKEIN1024_STATE_BYTES   ( 8*SKEIN1024_STATE_WORDS)

Definition at line 54 of file skein.h.

#define SKEIN1024_STATE_WORDS   (16)

Definition at line 49 of file skein.h.

#define SKEIN_256_BLOCK_BYTES   ( 8*SKEIN_256_STATE_WORDS)

Definition at line 60 of file skein.h.

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

Definition at line 314 of file skein.h.

#define SKEIN_256_STATE_BITS   (64*SKEIN_256_STATE_WORDS)

Definition at line 56 of file skein.h.

#define SKEIN_256_STATE_BYTES   ( 8*SKEIN_256_STATE_WORDS)

Definition at line 52 of file skein.h.

#define SKEIN_256_STATE_WORDS   ( 4)

Definition at line 47 of file skein.h.

#define SKEIN_512_BLOCK_BYTES   ( 8*SKEIN_512_STATE_WORDS)

Definition at line 61 of file skein.h.

#define SKEIN_512_ROUNDS_TOTAL   (72)

Definition at line 315 of file skein.h.

#define SKEIN_512_STATE_BITS   (64*SKEIN_512_STATE_WORDS)

Definition at line 57 of file skein.h.

#define SKEIN_512_STATE_BYTES   ( 8*SKEIN_512_STATE_WORDS)

Definition at line 53 of file skein.h.

#define SKEIN_512_STATE_WORDS   ( 8)

Definition at line 48 of file skein.h.

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

Definition at line 265 of file skein.h.

#define Skein_assert (   x)

Definition at line 266 of file skein.h.

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

Definition at line 169 of file skein.h.

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

Definition at line 172 of file skein.h.

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

Definition at line 168 of file skein.h.

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

Definition at line 176 of file skein.h.

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

Definition at line 174 of file skein.h.

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

Definition at line 173 of file skein.h.

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

Definition at line 175 of file skein.h.

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

Definition at line 170 of file skein.h.

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

Definition at line 171 of file skein.h.

#define SKEIN_CFG_STR_LEN   (4*8)

Definition at line 202 of file skein.h.

#define SKEIN_CFG_TREE_INFO (   leaf,
  node,
  maxLvl 
)
Value:
( (((u64b_t)(leaf )) << SKEIN_CFG_TREE_LEAF_SIZE_POS) | \
uint_64t u64b_t
Definition: skein_port.h:25
#define SKEIN_CFG_TREE_MAX_LEVEL_POS
Definition: skein.h:207
#define SKEIN_CFG_TREE_LEAF_SIZE_POS
Definition: skein.h:205
#define SKEIN_CFG_TREE_NODE_SIZE_POS
Definition: skein.h:206

Definition at line 213 of file skein.h.

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

Definition at line 218 of file skein.h.

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

Definition at line 209 of file skein.h.

#define SKEIN_CFG_TREE_LEAF_SIZE_POS   ( 0)

Definition at line 205 of file skein.h.

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

Definition at line 211 of file skein.h.

#define SKEIN_CFG_TREE_MAX_LEVEL_POS   (16)

Definition at line 207 of file skein.h.

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

Definition at line 210 of file skein.h.

#define SKEIN_CFG_TREE_NODE_SIZE_POS   ( 8)

Definition at line 206 of file skein.h.

#define Skein_Clear_First_Flag (   hdr)    { (hdr).T[1] &= ~SKEIN_T1_FLAG_FIRST; }

Definition at line 246 of file skein.h.

#define Skein_Get_T0 (   ctxPtr)    Skein_Get_Tweak(ctxPtr,0)

Definition at line 227 of file skein.h.

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

Definition at line 228 of file skein.h.

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

Definition at line 224 of file skein.h.

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

Definition at line 195 of file skein.h.

#define SKEIN_KS_PARITY   SKEIN_MK_64(0x1BD11BDA,0xA9FC1A22)

Definition at line 200 of file skein.h.

#define SKEIN_MAX_STATE_WORDS   (16)

Definition at line 50 of file skein.h.

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

Definition at line 198 of file skein.h.

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

Definition at line 45 of file skein.h.

#define SKEIN_SCHEMA_VER   SKEIN_MK_64(SKEIN_VERSION,SKEIN_ID_STRING_LE)

Definition at line 199 of file skein.h.

#define Skein_Set_Bit_Pad_Flag (   hdr)    { (hdr).T[1] |= SKEIN_T1_FLAG_BIT_PAD; }

Definition at line 247 of file skein.h.

#define Skein_Set_T0 (   ctxPtr,
  T0 
)    Skein_Set_Tweak(ctxPtr,0,T0)

Definition at line 229 of file skein.h.

#define Skein_Set_T0_T1 (   ctxPtr,
  T0,
  T1 
)
Value:
{ \
Skein_Set_T0(ctxPtr,(T0)); \
Skein_Set_T1(ctxPtr,(T1)); \
}
#define Skein_Set_T0(ctxPtr, T0)
Definition: skein.h:229
#define Skein_Set_T1(ctxPtr, T1)
Definition: skein.h:230

Definition at line 233 of file skein.h.

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

Definition at line 230 of file skein.h.

#define Skein_Set_Tree_Level (   hdr,
  height 
)    { (hdr).T[1] |= SKEIN_T1_TREE_LEVEL(height);}

Definition at line 249 of file skein.h.

#define Skein_Set_Tweak (   ctxPtr,
  TWK_NUM,
  tVal 
)    {(ctxPtr)->h.T[TWK_NUM] = (tVal);}

Definition at line 225 of file skein.h.

#define Skein_Set_Type (   ctxPtr,
  BLK_TYPE 
)    Skein_Set_T1(ctxPtr,SKEIN_T1_BLK_TYPE_##BLK_TYPE)

Definition at line 239 of file skein.h.

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

Definition at line 257 of file skein.h.

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

Definition at line 260 of file skein.h.

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

Definition at line 261 of file skein.h.

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

Definition at line 259 of file skein.h.

#define Skein_Show_Round (   bits,
  ctx,
  r,
 
)

Definition at line 258 of file skein.h.

#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; }

Definition at line 243 of file skein.h.

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

Definition at line 150 of file skein.h.

#define SKEIN_T1_BLK_TYPE (   T)    (((u64b_t) (SKEIN_BLK_TYPE_##T)) << SKEIN_T1_POS_BLK_TYPE)

Definition at line 178 of file skein.h.

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

Definition at line 180 of file skein.h.

#define SKEIN_T1_BLK_TYPE_CFG_FINAL   (SKEIN_T1_BLK_TYPE_CFG | SKEIN_T1_FLAG_FINAL)

Definition at line 189 of file skein.h.

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

Definition at line 183 of file skein.h.

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

Definition at line 179 of file skein.h.

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

Definition at line 187 of file skein.h.

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

Definition at line 185 of file skein.h.

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

Definition at line 184 of file skein.h.

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

Definition at line 186 of file skein.h.

#define SKEIN_T1_BLK_TYPE_OUT_FINAL   (SKEIN_T1_BLK_TYPE_OUT | SKEIN_T1_FLAG_FINAL)

Definition at line 190 of file skein.h.

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

Definition at line 181 of file skein.h.

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

Definition at line 182 of file skein.h.

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

Definition at line 161 of file skein.h.

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

Definition at line 160 of file skein.h.

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

Definition at line 159 of file skein.h.

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

Definition at line 153 of file skein.h.

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

Definition at line 154 of file skein.h.

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

Definition at line 156 of file skein.h.

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

Definition at line 155 of file skein.h.

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

Definition at line 152 of file skein.h.

#define SKEIN_T1_TREE_LEVEL (   n)    (((u64b_t) (n)) << SKEIN_T1_POS_TREE_LVL)

Definition at line 165 of file skein.h.

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

Definition at line 164 of file skein.h.

#define SKEIN_TREE_HASH   (1)

Definition at line 133 of file skein.h.

#define SKEIN_VERSION   (1)

Definition at line 192 of file skein.h.

Enumeration Type Documentation

anonymous enum
Enumerator
SKEIN_SUCCESS 
SKEIN_FAIL 
SKEIN_BAD_HASHLEN 

Definition at line 38 of file skein.h.

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 

Definition at line 280 of file skein.h.

Function Documentation

int Skein1024_Final ( Skein1024_Ctxt_t ctx,
u08b_t hashVal 
)
int Skein1024_Final_Pad ( Skein1024_Ctxt_t ctx,
u08b_t hashVal 
)
int Skein1024_Init ( Skein1024_Ctxt_t ctx,
size_t  hashBitLen 
)
int Skein1024_InitExt ( Skein1024_Ctxt_t ctx,
size_t  hashBitLen,
u64b_t  treeInfo,
const u08b_t key,
size_t  keyBytes 
)
int Skein1024_Output ( Skein1024_Ctxt_t ctx,
u08b_t hashVal 
)
int Skein1024_Update ( Skein1024_Ctxt_t ctx,
const u08b_t msg,
size_t  msgByteCnt 
)
int Skein_256_Final ( Skein_256_Ctxt_t ctx,
u08b_t hashVal 
)
int Skein_256_Final_Pad ( Skein_256_Ctxt_t ctx,
u08b_t hashVal 
)
int Skein_256_Init ( Skein_256_Ctxt_t ctx,
size_t  hashBitLen 
)
int Skein_256_InitExt ( Skein_256_Ctxt_t ctx,
size_t  hashBitLen,
u64b_t  treeInfo,
const u08b_t key,
size_t  keyBytes 
)
int Skein_256_Output ( Skein_256_Ctxt_t ctx,
u08b_t hashVal 
)
int Skein_256_Update ( Skein_256_Ctxt_t ctx,
const u08b_t msg,
size_t  msgByteCnt 
)
int Skein_512_Final ( Skein_512_Ctxt_t ctx,
u08b_t hashVal 
)
int Skein_512_Final_Pad ( Skein_512_Ctxt_t ctx,
u08b_t hashVal 
)
int Skein_512_Init ( Skein_512_Ctxt_t ctx,
size_t  hashBitLen 
)
int Skein_512_InitExt ( Skein_512_Ctxt_t ctx,
size_t  hashBitLen,
u64b_t  treeInfo,
const u08b_t key,
size_t  keyBytes 
)
int Skein_512_Output ( Skein_512_Ctxt_t ctx,
u08b_t hashVal 
)
int Skein_512_Update ( Skein_512_Ctxt_t ctx,
const u08b_t msg,
size_t  msgByteCnt 
)