Mercurial > dovecot > core-2.2
annotate src/lib/sha2.h @ 22664:fea53c2725c0
director: Fix director_max_parallel_moves/kicks type
Should be uint, not time.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 09 Nov 2017 12:24:16 +0200 |
parents | d6ef8ebd03b5 |
children |
rev | line source |
---|---|
5758
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
1 /* |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 * FIPS 180-2 SHA-224/256/384/512 implementation |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 * Last update: 02/02/2007 |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 * Issue date: 04/30/2005 |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 * |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 * Copyright (C) 2005, 2007 Olivier Gay <olivier.gay@a3.epfl.ch> |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 * All rights reserved. |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 * |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 * Redistribution and use in source and binary forms, with or without |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 * modification, are permitted provided that the following conditions |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 * are met: |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 * 1. Redistributions of source code must retain the above copyright |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 * notice, this list of conditions and the following disclaimer. |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 * 2. Redistributions in binary form must reproduce the above copyright |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 * notice, this list of conditions and the following disclaimer in the |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 * documentation and/or other materials provided with the distribution. |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 * 3. Neither the name of the project nor the names of its contributors |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 * may be used to endorse or promote products derived from this software |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
19 * without specific prior written permission. |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
20 * |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
21 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
31 * SUCH DAMAGE. |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
32 */ |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
33 |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
34 #ifndef SHA2_H |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 #define SHA2_H |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 |
12307
368fd1cce4d6
liblib: Added a common API for accessing all hash methods.
Timo Sirainen <tss@iki.fi>
parents:
10749
diff
changeset
|
37 #include "hash-method.h" |
21069
d6ef8ebd03b5
lib: Move sha context and result size to new header
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
20328
diff
changeset
|
38 #include "sha-common.h" |
10749 | 39 |
5758
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 struct sha256_ctx { |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 size_t tot_len; |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
42 size_t len; |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
43 unsigned char block[2 * SHA256_BLOCK_SIZE]; |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
44 uint32_t h[8]; |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
45 }; |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
46 |
10749 | 47 struct sha512_ctx { |
48 size_t tot_len; | |
49 size_t len; | |
50 unsigned char block[2 * SHA512_BLOCK_SIZE]; | |
51 uint64_t h[8]; | |
52 }; | |
53 | |
5758
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
54 void sha256_init(struct sha256_ctx *ctx); |
8393
44f3bf2d0671
sha256_loop() takes now const void *data parameter.
Timo Sirainen <tss@iki.fi>
parents:
5758
diff
changeset
|
55 void sha256_loop(struct sha256_ctx *ctx, const void *data, size_t len); |
5758
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
56 void sha256_result(struct sha256_ctx *ctx, |
20328
7e016f5e8cb4
[LEN] to [static LEN] on some function parameters
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
12307
diff
changeset
|
57 unsigned char digest[STATIC_ARRAY SHA256_RESULTLEN]); |
5758
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
58 |
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
59 void sha256_get_digest(const void *data, size_t size, |
20328
7e016f5e8cb4
[LEN] to [static LEN] on some function parameters
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
12307
diff
changeset
|
60 unsigned char digest[STATIC_ARRAY SHA256_RESULTLEN]); |
5758
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
61 |
10749 | 62 void sha512_init(struct sha512_ctx *ctx); |
63 void sha512_loop(struct sha512_ctx *ctx, const void *data, size_t len); | |
64 void sha512_result(struct sha512_ctx *ctx, | |
20328
7e016f5e8cb4
[LEN] to [static LEN] on some function parameters
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
12307
diff
changeset
|
65 unsigned char digest[STATIC_ARRAY SHA512_RESULTLEN]); |
10749 | 66 |
67 void sha512_get_digest(const void *data, size_t size, | |
20328
7e016f5e8cb4
[LEN] to [static LEN] on some function parameters
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
12307
diff
changeset
|
68 unsigned char digest[STATIC_ARRAY SHA512_RESULTLEN]); |
10749 | 69 |
12307
368fd1cce4d6
liblib: Added a common API for accessing all hash methods.
Timo Sirainen <tss@iki.fi>
parents:
10749
diff
changeset
|
70 extern const struct hash_method hash_method_sha256; |
368fd1cce4d6
liblib: Added a common API for accessing all hash methods.
Timo Sirainen <tss@iki.fi>
parents:
10749
diff
changeset
|
71 extern const struct hash_method hash_method_sha512; |
368fd1cce4d6
liblib: Added a common API for accessing all hash methods.
Timo Sirainen <tss@iki.fi>
parents:
10749
diff
changeset
|
72 |
5758
2cba4c0f3b4f
Added support for SHA256. Based on patch by Jasper Slits.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
73 #endif /* !SHA2_H */ |