mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-02-05 18:44:54 +00:00
d2edcad66e
Thanks to Phil Zimmermann for the code and for the license exception we needed to include it. There remains some build system integration work to be done before this code will build properly in the FreeSWITCH tree.
59 lines
1.4 KiB
C
59 lines
1.4 KiB
C
/* --------------------------------- SHA.H ------------------------------- */
|
|
|
|
/*
|
|
* NIST Secure Hash Algorithm.
|
|
*
|
|
* Written 2 September 1992, Peter C. Gutmann.
|
|
* This implementation placed in the public domain.
|
|
*
|
|
* Modified 1 June 1993, Colin Plumb.
|
|
* Renamed to SHA and comments updated a bit 1 November 1995, Colin Plumb.
|
|
* These modifications placed in the public domain.
|
|
*
|
|
* Comments to pgut1@cs.aukuni.ac.nz
|
|
*/
|
|
|
|
/* Typedefs for various word sizes */
|
|
#include "types.h"
|
|
|
|
/*
|
|
* Since 64-bit machines are the wave of the future, we may as well
|
|
* support them directly.
|
|
*/
|
|
|
|
/* The SHA block size and message digest sizes, in bytes */
|
|
|
|
#define SHA_BLOCKSIZE 64
|
|
#define SHA_DIGESTSIZE 20
|
|
|
|
/*
|
|
* The structure for storing SHA info.
|
|
* data[] is placed first in case offsets of 0 are faster
|
|
* for some reason; it's the most often accessed field.
|
|
*/
|
|
|
|
struct SHAContext {
|
|
word32 data[ 16 ]; /* SHA data buffer */
|
|
word32 digest[ 5 ]; /* Message digest */
|
|
#ifdef HAVE64
|
|
word64 count;
|
|
#else
|
|
word32 countHi, countLo; /* 64-bit byte count */
|
|
#endif
|
|
};
|
|
|
|
/* Which standard? FIPS 180 or FIPS 180.1? */
|
|
|
|
#define SHA_VERSION 1
|
|
|
|
/* Whether the machine is little-endian or not */
|
|
|
|
#if !defined(BIG_ENDIAN) && !defined(LITTLE_ENDIAN)
|
|
#define BIG_ENDIAN 1
|
|
#endif
|
|
|
|
void shaInit(struct SHAContext *sha);
|
|
void shaTransform(struct SHAContext *sha);
|
|
void shaUpdate(struct SHAContext *sha, word8 const *buffer, unsigned count);
|
|
void shaFinal(struct SHAContext *shaInfo, word8 *hash);
|