sha.h
上传用户:xiejiait
上传日期:2007-01-06
资源大小:881k
文件大小:3k
源码类别:

SCSI/ASPI

开发平台:

MultiPlatform

  1. /* @(#)sha.h 1.2 99/12/19 Copyright 1998,1999 Heiko Eissfeldt */
  2. /*____________________________________________________________________________
  3. //
  4. //   CD Index - The Internet CD Index
  5. //
  6. //   This program is free software; you can redistribute it and/or modify
  7. //   it under the terms of the GNU General Public License as published by
  8. //   the Free Software Foundation; either version 2 of the License, or
  9. //   (at your option) any later version.
  10. //
  11. //   This program is distributed in the hope that it will be useful,
  12. //   but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. //   GNU General Public License for more details.
  15. //
  16. //   You should have received a copy of the GNU General Public License
  17. //   along with this program; if not, write to the Free Software
  18. //   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19. //
  20. //   $Id: sha.h,v 1.1.1.2 1999/04/29 00:53:34 marc Exp $
  21. //____________________________________________________________________________
  22. */
  23. #ifndef SHA_H
  24. #define SHA_H
  25. /* NIST Secure Hash Algorithm */
  26. /* heavily modified by Uwe Hollerbach <uh@alumni.caltech edu> */
  27. /* from Peter C. Gutmann's implementation as found in */
  28. /* Applied Cryptography by Bruce Schneier */
  29. /* This code is in the public domain */
  30. /* Useful defines & typedefs */
  31. typedef unsigned char BYTE; /* 8-bit quantity */
  32. typedef unsigned long ULONG; /* 32-or-more-bit quantity */
  33. #define SHA_BLOCKSIZE 64
  34. #define SHA_DIGESTSIZE 20
  35. typedef struct {
  36.     ULONG digest[5]; /* message digest */
  37.     ULONG count_lo, count_hi; /* 64-bit bit count */
  38.     BYTE data[SHA_BLOCKSIZE]; /* SHA data buffer */
  39.     int local; /* unprocessed amount in data */
  40. } SHA_INFO;
  41. void sha_init __PR((SHA_INFO *));
  42. void sha_update __PR((SHA_INFO *, BYTE *, int));
  43. void sha_final __PR((unsigned char [20], SHA_INFO *));
  44. #ifdef SHA_FOR_C
  45. #include <stdlib.h>
  46. #include <stdio.h>
  47. void sha_stream __PR((unsigned char [20], SHA_INFO *, FILE *));
  48. void sha_print __PR((unsigned char [20]));
  49. char *sha_version __PR((void));
  50. #endif /* SHA_FOR_C */
  51. #define SHA_VERSION 1
  52. #ifndef WIN32 
  53. #include "xconfig.h"
  54. #ifdef WORDS_BIGENDIAN
  55. #  if SIZEOF_UNSIGNED_LONG_INT == 4
  56. #    define SHA_BYTE_ORDER  4321
  57. #  elif SIZEOF_UNSIGNED_LONG_INT == 8
  58. #    define SHA_BYTE_ORDER  87654321
  59. #  endif
  60. #else
  61. #  if SIZEOF_UNSIGNED_LONG_INT == 4
  62. #    define SHA_BYTE_ORDER  1234
  63. #  elif SIZEOF_UNSIGNED_LONG_INT == 8
  64. #    define SHA_BYTE_ORDER  12345678
  65. #  endif
  66. #endif
  67. #else
  68. #define SHA_BYTE_ORDER 1234
  69. #endif
  70. #endif /* SHA_H */