aboutsummaryrefslogtreecommitdiffhomepage
path: root/pyecsca/codegen/hash/sha2.h
diff options
context:
space:
mode:
authorJ08nY2019-11-21 19:10:50 +0100
committerJ08nY2019-11-21 19:10:50 +0100
commitc8d0bff46001bd5636825c5b0bb4c896cb34a4e6 (patch)
tree2b3029c6ca37e56e86daa34069ab39da3b1a5400 /pyecsca/codegen/hash/sha2.h
downloadpyecsca-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.h72
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_ */