diff options
author | Christian Heimes <christian@python.org> | 2016-04-22 13:07:57 +0300 |
---|---|---|
committer | Christian Heimes <christian@python.org> | 2016-04-22 13:07:57 +0300 |
commit | 81a1bcf245f8d4ba1d627327b9069559b72d00b1 (patch) | |
tree | f3bc1c75214caab09bbc34b5a30007e981eef773 /sse/blake2.h | |
parent | 02bf34f3d49c205812c34dfce9123a7c74509605 (diff) |
Make BLAKE2 code C89 and MSVC friendly
This patch makes the BLAKE2 reference implementation compatible with C89
compilers and MSVC.
1) Use C comments (/* */) instead of C++ comments.
2) No declarations after statements. All variables are declared on the
top of a block.
3) Optional inline with BLAKE2_LOCAL_INLINE() macro.
Signed-off-by: Christian Heimes <christian@python.org>
Diffstat (limited to 'sse/blake2.h')
-rw-r--r-- | sse/blake2.h | 77 |
1 files changed, 44 insertions, 33 deletions
diff --git a/sse/blake2.h b/sse/blake2.h index 542f450..1a9fdf4 100644 --- a/sse/blake2.h +++ b/sse/blake2.h @@ -1,14 +1,16 @@ /* - BLAKE2 reference source code package - optimized C implementations - - Written in 2012 by Samuel Neves <sneves@dei.uc.pt> - - To the extent possible under law, the author(s) have dedicated all copyright - and related and neighboring rights to this software to the public domain - worldwide. This software is distributed without any warranty. - - You should have received a copy of the CC0 Public Domain Dedication along with - this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. + BLAKE2 reference source code package - reference C implementations + + Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the + terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at + your option. The terms of these licenses can be found at: + + - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + - OpenSSL license : https://www.openssl.org/source/license.html + - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + + More information about the BLAKE2 hash function can be found at + https://blake2.net. */ #pragma once #ifndef __BLAKE2_H__ @@ -17,6 +19,14 @@ #include <stddef.h> #include <stdint.h> +#ifdef BLAKE2_NO_INLINE +#define BLAKE2_LOCAL_INLINE(type) static type +#endif + +#ifndef BLAKE2_LOCAL_INLINE +#define BLAKE2_LOCAL_INLINE(type) static inline type +#endif + #if defined(__cplusplus) extern "C" { #endif @@ -75,39 +85,40 @@ extern "C" { size_t buflen; } blake2bp_state; + #pragma pack(push, 1) typedef struct __blake2s_param { - uint8_t digest_length; // 1 - uint8_t key_length; // 2 - uint8_t fanout; // 3 - uint8_t depth; // 4 - uint32_t leaf_length; // 8 + uint8_t digest_length; /* 1 */ + uint8_t key_length; /* 2 */ + uint8_t fanout; /* 3 */ + uint8_t depth; /* 4 */ + uint32_t leaf_length; /* 8 */ uint8_t node_offset[6];// 14 - uint8_t node_depth; // 15 - uint8_t inner_length; // 16 - // uint8_t reserved[0]; - uint8_t salt[BLAKE2S_SALTBYTES]; // 24 - uint8_t personal[BLAKE2S_PERSONALBYTES]; // 32 + uint8_t node_depth; /* 15 */ + uint8_t inner_length; /* 16 */ + /* uint8_t reserved[0]; */ + uint8_t salt[BLAKE2S_SALTBYTES]; /* 24 */ + uint8_t personal[BLAKE2S_PERSONALBYTES]; /* 32 */ } blake2s_param; typedef struct __blake2b_param { - uint8_t digest_length; // 1 - uint8_t key_length; // 2 - uint8_t fanout; // 3 - uint8_t depth; // 4 - uint32_t leaf_length; // 8 - uint64_t node_offset; // 16 - uint8_t node_depth; // 17 - uint8_t inner_length; // 18 - uint8_t reserved[14]; // 32 - uint8_t salt[BLAKE2B_SALTBYTES]; // 48 - uint8_t personal[BLAKE2B_PERSONALBYTES]; // 64 + uint8_t digest_length; /* 1 */ + uint8_t key_length; /* 2 */ + uint8_t fanout; /* 3 */ + uint8_t depth; /* 4 */ + uint32_t leaf_length; /* 8 */ + uint64_t node_offset; /* 16 */ + uint8_t node_depth; /* 17 */ + uint8_t inner_length; /* 18 */ + uint8_t reserved[14]; /* 32 */ + uint8_t salt[BLAKE2B_SALTBYTES]; /* 48 */ + uint8_t personal[BLAKE2B_PERSONALBYTES]; /* 64 */ } blake2b_param; #pragma pack(pop) - // Streaming API + /* Streaming API */ int blake2s_init( blake2s_state *S, const uint8_t outlen ); int blake2s_init_key( blake2s_state *S, const uint8_t outlen, const void *key, const uint8_t keylen ); int blake2s_init_param( blake2s_state *S, const blake2s_param *P ); @@ -130,7 +141,7 @@ extern "C" { int blake2bp_update( blake2bp_state *S, const uint8_t *in, uint64_t inlen ); int blake2bp_final( blake2bp_state *S, uint8_t *out, uint8_t outlen ); - // Simple API + /* Simple API */ int blake2s( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen ); int blake2b( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen ); |