summaryrefslogtreecommitdiff
path: root/include/sha1.h
blob: ed3fbaf0f2a1846baaf4a633e445f926b84a2c70 (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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB                                                              
                                                                                                                                    
 This program is free software; you can redistribute it and/or modify                                                             
 it under the terms of the GNU General Public License as published by                                                             
 the Free Software Foundation; either version 2 of the License, or                                                                
 (at your option) any later version.                                                                                              
	                                                                                                                                        
 This program is distributed in the hope that it will be useful,                                                                  
 but WITHOUT ANY WARRANTY; without even the implied warranty of                                                                   
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                                                    
 GNU General Public License for more details.                                                                                     
		                                                                                                                                    
 You should have received a copy of the GNU General Public License                                                                
 along with this program; if not, write to the Free Software                                                                      
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */                                                     
				                                                                                      
				 
/*
 sha1.h
 
 Description:
   This is the header file for code which implements the Secure
   Hashing Algorithm 1 as defined in FIPS PUB 180-1 published 
   April 17, 1995.
  
   Many of the variable names in this code, 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.
 
*/
 
/* Modified 2002 by Peter Zaitsev to better follow MySQL standards */


#ifndef _SHA1_H_
#define _SHA1_H_

#include "my_global.h"

/* Required for uint32, uint8, int16 ulonglong types */

enum sha_result_codes
{
    SHA_SUCCESS = 0,
    SHA_NULL,            /* Null pointer parameter */
    SHA_INPUT_TOO_LONG,  /* input data too long */
    SHA_STATE_ERROR      /* called Input after Result */
};

#define SHA1_HASH_SIZE 20 /* Hash size in bytes */

/*
 This structure will hold context information for the SHA-1
 hashing operation
 */
typedef struct SHA1_CONTEXT
{
  ulonglong  Length;            /* Message length in bits      */                             
  uint32 Intermediate_Hash[SHA1_HASH_SIZE/4]; /* Message Digest  */
  int Computed;                 /* Is the digest computed?         */
  int Corrupted;                /* Is the message digest corrupted? */
  int16 Message_Block_Index;    /* Index into message block array   */
  uint8 Message_Block[64];      /* 512-bit message blocks      */
} SHA1_CONTEXT;

/*
 *  Function Prototypes
 */
 

#ifdef __cplusplus
extern "C" {
#endif 

int sha1_reset( SHA1_CONTEXT* );
int sha1_input( SHA1_CONTEXT*, const uint8 *, unsigned int );
int sha1_result( SHA1_CONTEXT* , uint8 Message_Digest[SHA1_HASH_SIZE] );
		
#ifdef __cplusplus
}
#endif		

#endif