xref: /freebsd/sys/crypto/skein/skein_debug.h (revision b468a9ff1d3a70c6d14cf2b49574cbbcc60ff997)
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