Annotation of parser3/src/lib/md5/pa_sha2.h, revision 1.3
1.1 moko 1: /*
2: * FILE: sha2.h
3: * AUTHOR: Aaron D. Gifford - http://www.aarongifford.com/
4: *
5: * Copyright (c) 2000-2001, Aaron D. Gifford
6: * All rights reserved.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: * 3. Neither the name of the copyright holder nor the names of contributors
17: * may be used to endorse or promote products derived from this software
18: * without specific prior written permission.
19: *
20: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND
21: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23: * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE
24: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30: * SUCH DAMAGE.
31: *
32: */
33:
34: #ifndef __PA_SHA2_H__
35: #define __PA_SHA2_H__
36:
1.3 ! moko 37: #define IDENT_PA_SHA2_H "$Id: pa_sha2.h,v 1.2 2013/07/16 21:48:36 moko Exp $"
! 38:
1.1 moko 39: #ifdef __cplusplus
40: extern "C" {
41: #endif
42:
1.2 moko 43: #include "pa_config_includes.h"
1.1 moko 44:
45:
46: /*** SHA-256/384/512 Various Length Definitions ***********************/
47: #define SHA256_BLOCK_LENGTH 64
48: #define SHA256_DIGEST_LENGTH 32
49: #define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1)
50: #define SHA384_BLOCK_LENGTH 128
51: #define SHA384_DIGEST_LENGTH 48
52: #define SHA384_DIGEST_STRING_LENGTH (SHA384_DIGEST_LENGTH * 2 + 1)
53: #define SHA512_BLOCK_LENGTH 128
54: #define SHA512_DIGEST_LENGTH 64
55: #define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1)
56:
57:
58: /*** SHA-256/384/512 Context Structures *******************************/
59: /* NOTE: If your architecture does not define either u_intXX_t types or
60: * uintXX_t (from inttypes.h), you may need to define things by hand
61: * for your system:
62: */
63:
64: typedef struct _SHA256_CTX {
65: uint32_t state[8];
66: uint64_t bitcount;
67: uint8_t buffer[SHA256_BLOCK_LENGTH];
68: } SHA256_CTX;
69: typedef struct _SHA512_CTX {
70: uint64_t state[8];
71: uint64_t bitcount[2];
72: uint8_t buffer[SHA512_BLOCK_LENGTH];
73: } SHA512_CTX;
74:
75: typedef SHA512_CTX SHA384_CTX;
76:
77:
78: /*** SHA-256/384/512 Function Prototypes ******************************/
79:
80: void pa_SHA256_Init(SHA256_CTX *);
81: void pa_SHA256_Update(SHA256_CTX*, const uint8_t*, size_t);
82: void pa_SHA256_Final(uint8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*);
83: char* pa_SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]);
84: char* pa_SHA256_Data(const uint8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]);
85:
86: void pa_SHA384_Init(SHA384_CTX*);
87: void pa_SHA384_Update(SHA384_CTX*, const uint8_t*, size_t);
88: void pa_SHA384_Final(uint8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*);
89: char* pa_SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]);
90: char* pa_SHA384_Data(const uint8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]);
91:
92: void pa_SHA512_Init(SHA512_CTX*);
93: void pa_SHA512_Update(SHA512_CTX*, const uint8_t*, size_t);
94: void pa_SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*);
95: char* pa_SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]);
96: char* pa_SHA512_Data(const uint8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]);
97:
98: #ifdef __cplusplus
99: }
100: #endif /* __cplusplus */
101:
102: #endif /* __SHA2_H__ */
103:
E-mail: