Skip to content

File sha1.h

File List > base > sha1.h

Go to the documentation of this file

/*
 *  sha1.h
 *
 *  Copyright (C) 1998
 *  Paul E. Jones <paulej@arid.us>
 *  All Rights Reserved
 *
 *****************************************************************************
 *  $Id: sha1.h,v 1.2 2004/03/27 18:00:33 paulej Exp $
 *****************************************************************************
 *
 *  Description:
 *      This class implements the Secure Hashing Standard as defined
 *      in FIPS PUB 180-1 published April 17, 1995.
 *
 *      Many of the variable names in the SHA1Context, especially the
 *      single character names, were used because those were the names
 *      used in the publication.
 *
 *      Please read the file sha1.c for more information.
 *
 */

#ifndef _SHA1_H_
#define _SHA1_H_

#include "system.h"

/*
 *  This structure will hold context information for the hashing
 *  operation
 */
typedef struct SHA1Context
{
  unsigned Message_Digest[5];   /* Message Digest (output) */

  unsigned Length_Low;      /* Message length in bits */
  unsigned Length_High;     /* Message length in bits */

  unsigned char Message_Block[64];  /* 512-bit message blocks */
  int Message_Block_Index;  /* Index into message block array */

  int Computed;         /* Is the digest computed? */
  int Corrupted;        /* Is the message digest corrupted? */
} SHA1Context;

/*
 * This structure holds the hash (message digest) computed using SHA-1.
 */
typedef struct SHA1Hash
{
  INT32 h[5];
} SHA1Hash;
#define SHA1_HASH_INITIALIZER { { 0, 0, 0, 0, 0 } }

#define SHA1_AS_ARGS(sha1) (sha1)->h[0], (sha1)->h[1], (sha1)->h[2], (sha1)->h[3], (sha1)->h[4]

/*
 *  Function Prototypes
 */
void SHA1Reset (SHA1Context *);
int SHA1Result (SHA1Context *);
void SHA1Input (SHA1Context *, const unsigned char *, size_t);

int SHA1Compute (const unsigned char *, size_t, SHA1Hash *);
int SHA1Compare (void *a, void *b);

#endif