1*b468a9ffSAllan Jude #ifndef _SKEIN_DEBUG_H_ 2*b468a9ffSAllan Jude #define _SKEIN_DEBUG_H_ 3*b468a9ffSAllan Jude /*********************************************************************** 4*b468a9ffSAllan Jude ** 5*b468a9ffSAllan Jude ** Interface definitions for Skein hashing debug output. 6*b468a9ffSAllan Jude ** 7*b468a9ffSAllan Jude ** Source code author: Doug Whiting, 2008. 8*b468a9ffSAllan Jude ** 9*b468a9ffSAllan Jude ** This algorithm and source code is released to the public domain. 10*b468a9ffSAllan Jude ** 11*b468a9ffSAllan Jude ************************************************************************/ 12*b468a9ffSAllan Jude 13*b468a9ffSAllan Jude #ifdef SKEIN_DEBUG 14*b468a9ffSAllan Jude /* callout functions used inside Skein code */ 15*b468a9ffSAllan Jude void Skein_Show_Block(uint_t bits,const Skein_Ctxt_Hdr_t *h,const u64b_t *X,const u08b_t *blkPtr, 16*b468a9ffSAllan Jude const u64b_t *wPtr,const u64b_t *ksPtr,const u64b_t *tsPtr); 17*b468a9ffSAllan Jude void Skein_Show_Round(uint_t bits,const Skein_Ctxt_Hdr_t *h,size_t r,const u64b_t *X); 18*b468a9ffSAllan Jude void Skein_Show_R_Ptr(uint_t bits,const Skein_Ctxt_Hdr_t *h,size_t r,const u64b_t *X_ptr[]); 19*b468a9ffSAllan Jude void Skein_Show_Final(uint_t bits,const Skein_Ctxt_Hdr_t *h,size_t cnt,const u08b_t *outPtr); 20*b468a9ffSAllan Jude void Skein_Show_Key (uint_t bits,const Skein_Ctxt_Hdr_t *h,const u08b_t *key,size_t keyBytes); 21*b468a9ffSAllan Jude 22*b468a9ffSAllan Jude extern uint_t skein_DebugFlag; /* flags to control debug output (0 --> none) */ 23*b468a9ffSAllan Jude 24*b468a9ffSAllan Jude #define SKEIN_RND_SPECIAL (1000u) 25*b468a9ffSAllan Jude #define SKEIN_RND_KEY_INITIAL (SKEIN_RND_SPECIAL+0u) 26*b468a9ffSAllan Jude #define SKEIN_RND_KEY_INJECT (SKEIN_RND_SPECIAL+1u) 27*b468a9ffSAllan Jude #define SKEIN_RND_FEED_FWD (SKEIN_RND_SPECIAL+2u) 28*b468a9ffSAllan Jude 29*b468a9ffSAllan Jude /* flag bits: skein_DebugFlag */ 30*b468a9ffSAllan Jude #define SKEIN_DEBUG_KEY (1u << 1) /* show MAC key */ 31*b468a9ffSAllan Jude #define SKEIN_DEBUG_CONFIG (1u << 2) /* show config block processing */ 32*b468a9ffSAllan Jude #define SKEIN_DEBUG_STATE (1u << 3) /* show input state during Show_Block() */ 33*b468a9ffSAllan Jude #define SKEIN_DEBUG_TWEAK (1u << 4) /* show input state during Show_Block() */ 34*b468a9ffSAllan Jude #define SKEIN_DEBUG_KEYSCHED (1u << 5) /* show expanded key schedule */ 35*b468a9ffSAllan Jude #define SKEIN_DEBUG_INPUT_64 (1u << 6) /* show input block as 64-bit words */ 36*b468a9ffSAllan Jude #define SKEIN_DEBUG_INPUT_08 (1u << 7) /* show input block as 8-bit bytes */ 37*b468a9ffSAllan Jude #define SKEIN_DEBUG_INJECT (1u << 8) /* show state after key injection & feedforward points */ 38*b468a9ffSAllan Jude #define SKEIN_DEBUG_ROUNDS (1u << 9) /* show state after all rounds */ 39*b468a9ffSAllan Jude #define SKEIN_DEBUG_FINAL (1u <<10) /* show final output of Skein */ 40*b468a9ffSAllan Jude #define SKEIN_DEBUG_HDR (1u <<11) /* show block header */ 41*b468a9ffSAllan Jude #define SKEIN_DEBUG_THREEFISH (1u <<12) /* use Threefish name instead of Skein */ 42*b468a9ffSAllan Jude #define SKEIN_DEBUG_PERMUTE (1u <<13) /* use word permutations */ 43*b468a9ffSAllan Jude #define SKEIN_DEBUG_ALL ((~0u) & ~(SKEIN_DEBUG_THREEFISH | SKEIN_DEBUG_PERMUTE)) 44*b468a9ffSAllan Jude #define THREEFISH_DEBUG_ALL (SKEIN_DEBUG_ALL | SKEIN_DEBUG_THREEFISH) 45*b468a9ffSAllan Jude 46*b468a9ffSAllan Jude #endif /* SKEIN_DEBUG */ 47*b468a9ffSAllan Jude 48*b468a9ffSAllan Jude #endif /* _SKEIN_DEBUG_H_ */ 49