Annotation of parser3/src/lib/md5/pa_sha2.h, revision 1.2
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: *
1.2 ! moko 32: * $Id: pa_sha2.h,v 1.1 2013/07/12 21:22:38 moko Exp $
1.1 moko 33: */
34:
35: #ifndef __PA_SHA2_H__
36: #define __PA_SHA2_H__
37:
38: #ifdef __cplusplus
39: extern "C" {
40: #endif
41:
1.2 ! moko 42: #include "pa_config_includes.h"
1.1 moko 43:
44:
45: /*** SHA-256/384/512 Various Length Definitions ***********************/
46: #define SHA256_BLOCK_LENGTH 64
47: #define SHA256_DIGEST_LENGTH 32
48: #define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1)
49: #define SHA384_BLOCK_LENGTH 128
50: #define SHA384_DIGEST_LENGTH 48
51: #define SHA384_DIGEST_STRING_LENGTH (SHA384_DIGEST_LENGTH * 2 + 1)
52: #define SHA512_BLOCK_LENGTH 128
53: #define SHA512_DIGEST_LENGTH 64
54: #define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1)
55:
56:
57: /*** SHA-256/384/512 Context Structures *******************************/
58: /* NOTE: If your architecture does not define either u_intXX_t types or
59: * uintXX_t (from inttypes.h), you may need to define things by hand
60: * for your system:
61: */
62:
63: typedef struct _SHA256_CTX {
64: uint32_t state[8];
65: uint64_t bitcount;
66: uint8_t buffer[SHA256_BLOCK_LENGTH];
67: } SHA256_CTX;
68: typedef struct _SHA512_CTX {
69: uint64_t state[8];
70: uint64_t bitcount[2];
71: uint8_t buffer[SHA512_BLOCK_LENGTH];
72: } SHA512_CTX;
73:
74: typedef SHA512_CTX SHA384_CTX;
75:
76:
77: /*** SHA-256/384/512 Function Prototypes ******************************/
78:
79: void pa_SHA256_Init(SHA256_CTX *);
80: void pa_SHA256_Update(SHA256_CTX*, const uint8_t*, size_t);
81: void pa_SHA256_Final(uint8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*);
82: char* pa_SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]);
83: char* pa_SHA256_Data(const uint8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]);
84:
85: void pa_SHA384_Init(SHA384_CTX*);
86: void pa_SHA384_Update(SHA384_CTX*, const uint8_t*, size_t);
87: void pa_SHA384_Final(uint8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*);
88: char* pa_SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]);
89: char* pa_SHA384_Data(const uint8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]);
90:
91: void pa_SHA512_Init(SHA512_CTX*);
92: void pa_SHA512_Update(SHA512_CTX*, const uint8_t*, size_t);
93: void pa_SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*);
94: char* pa_SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]);
95: char* pa_SHA512_Data(const uint8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]);
96:
97: #ifdef __cplusplus
98: }
99: #endif /* __cplusplus */
100:
101: #endif /* __SHA2_H__ */
102:
E-mail: