diff options
| author | J08nY | 2019-11-21 19:10:50 +0100 |
|---|---|---|
| committer | J08nY | 2019-11-21 19:10:50 +0100 |
| commit | c8d0bff46001bd5636825c5b0bb4c896cb34a4e6 (patch) | |
| tree | 2b3029c6ca37e56e86daa34069ab39da3b1a5400 /pyecsca/codegen/hash/sha2.h | |
| download | pyecsca-codegen-c8d0bff46001bd5636825c5b0bb4c896cb34a4e6.tar.gz pyecsca-codegen-c8d0bff46001bd5636825c5b0bb4c896cb34a4e6.tar.zst pyecsca-codegen-c8d0bff46001bd5636825c5b0bb4c896cb34a4e6.zip | |
Initialize.
Diffstat (limited to 'pyecsca/codegen/hash/sha2.h')
| -rw-r--r-- | pyecsca/codegen/hash/sha2.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/pyecsca/codegen/hash/sha2.h b/pyecsca/codegen/hash/sha2.h new file mode 100644 index 0000000..10627cf --- /dev/null +++ b/pyecsca/codegen/hash/sha2.h @@ -0,0 +1,72 @@ +/* sha2.h */ +/* + This file was part of the AVR-Crypto-Lib. + Copyright (C) 2011 Daniel Otte (daniel.otte@rub.de) + Copyright (C) 2019 Jan Jancar + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef SHA2_H_ +#define SHA2_H_ + +typedef struct { + uint64_t h[8]; + uint32_t length; +} sha2_large_common_ctx_t; + +typedef struct { + uint32_t h[8]; + uint32_t length; +} sha2_small_common_ctx_t; + +#if HASH == HASH_SHA224 + #define SHA2_SIZE 28 + #define SHA2_j 7 + #define SHA2_HASH_BITS 224 + #define SHA2_HASH_BYTES (SHA2_HASH_BITS/8) + #define SHA2_BLOCK_BITS 512 + #define SHA2_BLOCK_BYTES (SHA2_BLOCK_BITS/8) + #define sha2_ctx_t sha2_small_common_ctx_t + #define SHA2_STATE_BYTES 32 +#elif HASH == HASH_SHA256 + #define SHA2_SIZE 32 + #define SHA2_j 8 + #define SHA2_HASH_BITS 256 + #define SHA2_HASH_BYTES (SHA2_HASH_BITS/8) + #define SHA2_BLOCK_BITS 512 + #define SHA2_BLOCK_BYTES (SHA2_BLOCK_BITS/8) + #define sha2_ctx_t sha2_small_common_ctx_t + #define SHA2_STATE_BYTES 32 +#elif HASH == HASH_SHA384 + #define SHA2_SIZE 48 + #define SHA2_i 6 + #define SHA2_HASH_BITS 384 + #define SHA2_HASH_BYTES (SHA2_HASH_BITS/8) + #define SHA2_BLOCK_BITS 1024 + #define SHA2_BLOCK_BYTES (SHA2_BLOCK_BITS/8) + #define sha2_ctx_t sha2_large_common_ctx_t + #define SHA2_STATE_BYTES 64 +#elif HASH == HASH_SHA512 + #define SHA2_SIZE 64 + #define SHA2_i 8 + #define SHA2_HASH_BITS 512 + #define SHA2_HASH_BYTES (SHA2_HASH_BITS/8) + #define SHA2_BLOCK_BITS 1024 + #define SHA2_BLOCK_BYTES (SHA2_BLOCK_BITS/8) + #define sha2_ctx_t sha2_large_common_ctx_t + #define SHA2_STATE_BYTES 64 +#endif + +#endif /* SHA2_H_ */ |
