1 | /* |
2 | +----------------------------------------------------------------------+ |
3 | | PHP Version 5 | |
4 | +----------------------------------------------------------------------+ |
5 | | Copyright (c) 1997-2015 The PHP Group | |
6 | +----------------------------------------------------------------------+ |
7 | | This source file is subject to version 3.01 of the PHP license, | |
8 | | that is bundled with this package in the file LICENSE, and is | |
9 | | available through the world-wide-web at the following url: | |
10 | | http://www.php.net/license/3_01.txt | |
11 | | If you did not receive a copy of the PHP license and are unable to | |
12 | | obtain it through the world-wide-web, please send a note to | |
13 | | license@php.net so we can mail you a copy immediately. | |
14 | +----------------------------------------------------------------------+ |
15 | | SHA1 Author: Stefan Esser <sesser@php.net> | |
16 | | SHA256 Author: Sara Golemon <pollita@php.net> | |
17 | +----------------------------------------------------------------------+ |
18 | */ |
19 | |
20 | /* $Id$ */ |
21 | |
22 | #ifndef PHP_HASH_SHA_H |
23 | #define PHP_HASH_SHA_H |
24 | |
25 | /* When SHA is removed from Core, |
26 | the ext/standard/sha1.c file can be removed |
27 | and the ext/standard/sha1.h file can be reduced to: |
28 | #define PHP_HASH_SHA1_NOT_IN_CORE |
29 | #include "ext/hash/php_hash_sha.h" |
30 | Don't forget to remove sha1() and sha1_file() from basic_functions.c |
31 | */ |
32 | #include "ext/standard/sha1.h" |
33 | #include "ext/standard/basic_functions.h" |
34 | |
35 | #ifdef PHP_HASH_SHA1_NOT_IN_CORE |
36 | |
37 | /* SHA1 context. */ |
38 | typedef struct { |
39 | php_hash_uint32 state[5]; /* state (ABCD) */ |
40 | php_hash_uint32 count[2]; /* number of bits, modulo 2^64 */ |
41 | unsigned char buffer[64]; /* input buffer */ |
42 | } PHP_SHA1_CTX; |
43 | |
44 | PHP_HASH_API void PHP_SHA1Init(PHP_SHA1_CTX *); |
45 | PHP_HASH_API void PHP_SHA1Update(PHP_SHA1_CTX *, const unsigned char *, unsigned int); |
46 | PHP_HASH_API void PHP_SHA1Final(unsigned char[20], PHP_SHA1_CTX *); |
47 | |
48 | PHP_FUNCTION(sha1); |
49 | PHP_FUNCTION(sha1_file); |
50 | |
51 | #endif /* PHP_HASH_SHA1_NOT_IN_CORE */ |
52 | |
53 | /* SHA224 context. */ |
54 | typedef struct { |
55 | php_hash_uint32 state[8]; /* state */ |
56 | php_hash_uint32 count[2]; /* number of bits, modulo 2^64 */ |
57 | unsigned char buffer[64]; /* input buffer */ |
58 | } PHP_SHA224_CTX; |
59 | |
60 | PHP_HASH_API void PHP_SHA224Init(PHP_SHA224_CTX *); |
61 | PHP_HASH_API void PHP_SHA224Update(PHP_SHA224_CTX *, const unsigned char *, unsigned int); |
62 | PHP_HASH_API void PHP_SHA224Final(unsigned char[28], PHP_SHA224_CTX *); |
63 | |
64 | /* SHA256 context. */ |
65 | typedef struct { |
66 | php_hash_uint32 state[8]; /* state */ |
67 | php_hash_uint32 count[2]; /* number of bits, modulo 2^64 */ |
68 | unsigned char buffer[64]; /* input buffer */ |
69 | } PHP_SHA256_CTX; |
70 | |
71 | PHP_HASH_API void PHP_SHA256Init(PHP_SHA256_CTX *); |
72 | PHP_HASH_API void PHP_SHA256Update(PHP_SHA256_CTX *, const unsigned char *, unsigned int); |
73 | PHP_HASH_API void PHP_SHA256Final(unsigned char[32], PHP_SHA256_CTX *); |
74 | |
75 | /* SHA384 context */ |
76 | typedef struct { |
77 | php_hash_uint64 state[8]; /* state */ |
78 | php_hash_uint64 count[2]; /* number of bits, modulo 2^128 */ |
79 | unsigned char buffer[128]; /* input buffer */ |
80 | } PHP_SHA384_CTX; |
81 | |
82 | PHP_HASH_API void PHP_SHA384Init(PHP_SHA384_CTX *); |
83 | PHP_HASH_API void PHP_SHA384Update(PHP_SHA384_CTX *, const unsigned char *, unsigned int); |
84 | PHP_HASH_API void PHP_SHA384Final(unsigned char[48], PHP_SHA384_CTX *); |
85 | |
86 | /* SHA512 context */ |
87 | typedef struct { |
88 | php_hash_uint64 state[8]; /* state */ |
89 | php_hash_uint64 count[2]; /* number of bits, modulo 2^128 */ |
90 | unsigned char buffer[128]; /* input buffer */ |
91 | } PHP_SHA512_CTX; |
92 | |
93 | PHP_HASH_API void PHP_SHA512Init(PHP_SHA512_CTX *); |
94 | PHP_HASH_API void PHP_SHA512Update(PHP_SHA512_CTX *, const unsigned char *, unsigned int); |
95 | PHP_HASH_API void PHP_SHA512Final(unsigned char[64], PHP_SHA512_CTX *); |
96 | |
97 | #endif /* PHP_HASH_SHA_H */ |
98 | |