Hex Artifact Content

Artifact b98da73ba46bd0c1cf6703ffab553f96a2769cb8:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 73 68 61 2d 70 72  ********* sha-pr
0020: 69 76 61 74 65 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a  ivate.h ********
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0040: 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /./*************
0050: 2a 2a 2a 2a 20 53 65 65 20 52 46 43 20 36 32 33  **** See RFC 623
0060: 34 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 20 2a  4 for details. *
0070: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0080: 2a 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 53 48 41  **/.#ifndef _SHA
0090: 5f 50 52 49 56 41 54 45 5f 5f 48 0a 23 64 65 66  _PRIVATE__H.#def
00a0: 69 6e 65 20 5f 53 48 41 5f 50 52 49 56 41 54 45  ine _SHA_PRIVATE
00b0: 5f 5f 48 0a 2f 2a 0a 20 2a 20 54 68 65 73 65 20  __H./*. * These 
00c0: 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 72 65 20  definitions are 
00d0: 64 65 66 69 6e 65 64 20 69 6e 20 46 49 50 53 20  defined in FIPS 
00e0: 31 38 30 2d 33 2c 20 73 65 63 74 69 6f 6e 20 34  180-3, section 4
00f0: 2e 31 2e 0a 20 2a 20 43 68 28 29 20 61 6e 64 20  .1.. * Ch() and 
0100: 4d 61 6a 28 29 20 61 72 65 20 64 65 66 69 6e 65  Maj() are define
0110: 64 20 69 64 65 6e 74 69 63 61 6c 6c 79 20 69 6e  d identically in
0120: 20 73 65 63 74 69 6f 6e 73 20 34 2e 31 2e 31 2c   sections 4.1.1,
0130: 0a 20 2a 20 34 2e 31 2e 32 2c 20 61 6e 64 20 34  . * 4.1.2, and 4
0140: 2e 31 2e 33 2e 0a 20 2a 0a 20 2a 20 54 68 65 20  .1.3.. *. * The 
0150: 64 65 66 69 6e 69 74 69 6f 6e 73 20 75 73 65 64  definitions used
0160: 20 69 6e 20 46 49 50 53 20 31 38 30 2d 33 20 61   in FIPS 180-3 a
0170: 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 20  re as follows:. 
0180: 2a 2f 0a 0a 23 69 66 6e 64 65 66 20 55 53 45 5f  */..#ifndef USE_
0190: 4d 4f 44 49 46 49 45 44 5f 4d 41 43 52 4f 53 0a  MODIFIED_MACROS.
01a0: 23 64 65 66 69 6e 65 20 53 48 41 5f 43 68 28 78  #define SHA_Ch(x
01b0: 2c 79 2c 7a 29 20 20 20 20 20 20 20 20 28 28 28  ,y,z)        (((
01c0: 78 29 20 26 20 28 79 29 29 20 5e 20 28 28 7e 28  x) & (y)) ^ ((~(
01d0: 78 29 29 20 26 20 28 7a 29 29 29 0a 23 64 65 66  x)) & (z))).#def
01e0: 69 6e 65 20 53 48 41 5f 4d 61 6a 28 78 2c 79 2c  ine SHA_Maj(x,y,
01f0: 7a 29 20 20 20 20 20 20 20 28 28 28 78 29 20 26  z)       (((x) &
0200: 20 28 79 29 29 20 5e 20 28 28 78 29 20 26 20 28   (y)) ^ ((x) & (
0210: 7a 29 29 20 5e 20 28 28 79 29 20 26 20 28 7a 29  z)) ^ ((y) & (z)
0220: 29 29 0a 23 65 6c 73 65 20 2f 2a 20 55 53 45 5f  )).#else /* USE_
0230: 4d 4f 44 49 46 49 45 44 5f 4d 41 43 52 4f 53 20  MODIFIED_MACROS 
0240: 2a 2f 0a 2f 2a 0a 20 2a 20 54 68 65 20 66 6f 6c  */./*. * The fol
0250: 6c 6f 77 69 6e 67 20 64 65 66 69 6e 69 74 69 6f  lowing definitio
0260: 6e 73 20 61 72 65 20 65 71 75 69 76 61 6c 65 6e  ns are equivalen
0270: 74 20 61 6e 64 20 70 6f 74 65 6e 74 69 61 6c 6c  t and potentiall
0280: 79 20 66 61 73 74 65 72 2e 0a 20 2a 2f 0a 0a 23  y faster.. */..#
0290: 64 65 66 69 6e 65 20 53 48 41 5f 43 68 28 78 2c  define SHA_Ch(x,
02a0: 20 79 2c 20 7a 29 20 20 20 20 20 20 28 28 28 78   y, z)      (((x
02b0: 29 20 26 20 28 28 79 29 20 5e 20 28 7a 29 29 29  ) & ((y) ^ (z)))
02c0: 20 5e 20 28 7a 29 29 0a 23 64 65 66 69 6e 65 20   ^ (z)).#define 
02d0: 53 48 41 5f 4d 61 6a 28 78 2c 20 79 2c 20 7a 29  SHA_Maj(x, y, z)
02e0: 20 20 20 20 20 28 28 28 78 29 20 26 20 28 28 79       (((x) & ((y
02f0: 29 20 7c 20 28 7a 29 29 29 20 7c 20 28 28 79 29  ) | (z))) | ((y)
0300: 20 26 20 28 7a 29 29 29 0a 0a 23 65 6e 64 69 66   & (z)))..#endif
0310: 20 2f 2a 20 55 53 45 5f 4d 4f 44 49 46 49 45 44   /* USE_MODIFIED
0320: 5f 4d 41 43 52 4f 53 20 2a 2f 0a 0a 23 64 65 66  _MACROS */..#def
0330: 69 6e 65 20 53 48 41 5f 50 61 72 69 74 79 28 78  ine SHA_Parity(x
0340: 2c 20 79 2c 20 7a 29 20 20 28 28 78 29 20 5e 20  , y, z)  ((x) ^ 
0350: 28 79 29 20 5e 20 28 7a 29 29 0a 0a 23 65 6e 64  (y) ^ (z))..#end
0360: 69 66 20 2f 2a 20 5f 53 48 41 5f 50 52 49 56 41  if /* _SHA_PRIVA
0370: 54 45 5f 5f 48 20 2a 2f 0a 0a                    TE__H */..