summaryrefslogtreecommitdiff
path: root/libjava/gnu/gcj/io/shs.h
blob: c4b2d5a30b02e615bb893b2388683a3435990221 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/* --------------------------------- SHS.H ------------------------------- */

/*
 * NIST proposed Secure Hash Standard. 
 *
 * Written 2 September 1992, Peter C. Gutmann.
 * This implementation placed in the public domain. 
 *
 * Comments to pgut1@cs.aukuni.ac.nz 
 */

/* Useful defines/typedefs */

#ifndef SHS_H
#define SHS_H

#include<config.h>
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
#  include <stdint.h>
# else
typedef unsigned int uint8_t __attribute__((mode(QI)));
/* This is a blatant hack: on Solaris 2.5, pthread.h defines uint32_t
   in pthread.h, which we sometimes include.  We protect our
   definition the same way Solaris 2.5 does, to avoid redefining it.  */
#  ifndef _UINT32_T
typedef unsigned int uint32_t __attribute__((mode(SI)));
#  endif
# endif
#endif

#define PROTO

/* The SHS block size and message digest sizes, in bytes */

#define SHS_BLOCKSIZE	64
#define SHS_DIGESTSIZE	20

/* The structure for storing SHS info */

typedef struct {
       uint32_t digest [5];    /* Message digest */
       uint32_t countLo, countHi;      /* 64-bit bit count */
       uint32_t data [16];             /* SHS data buffer */
} SHS_INFO;

/* Turn off prototypes if requested */
#if (defined(NOPROTO) && defined(PROTO))
#	undef PROTO
#endif

/* Used to remove arguments in function prototypes for non-ANSI C */
#ifdef PROTO
#	define OF(a) a
#else	/* !PROTO */
#	define OF(a) ()
#endif	/* ?PROTO */

#define	local	static

void shsInit OF((SHS_INFO *shsInfo));
void shsUpdate OF((SHS_INFO *shsInfo, uint8_t *buffer, int count));
void shsFinal OF((SHS_INFO *shsInfo));

#endif