summaryrefslogtreecommitdiff
path: root/chip/g/dcrypto/internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'chip/g/dcrypto/internal.h')
-rw-r--r--chip/g/dcrypto/internal.h22
1 files changed, 21 insertions, 1 deletions
diff --git a/chip/g/dcrypto/internal.h b/chip/g/dcrypto/internal.h
index 279b2798e7..3be8a406a7 100644
--- a/chip/g/dcrypto/internal.h
+++ b/chip/g/dcrypto/internal.h
@@ -26,10 +26,30 @@ struct HASH_VTAB {
uint32_t size;
};
+#define SHA1_DIGEST_BYTES 20
+#define SHA256_DIGEST_BYTES 32
+#define SHA384_DIGEST_BYTES 48
+#define SHA512_DIGEST_BYTES 64
+
+#define SHA1_DIGEST_WORDS (SHA1_DIGEST_BYTES / sizeof(uint32_t))
+#define SHA256_DIGEST_WORDS (SHA256_DIGEST_BYTES / sizeof(uint32_t))
+#define SHA384_DIGEST_WORDS (SHA384_DIGEST_BYTES / sizeof(uint32_t))
+#define SHA512_DIGEST_WORDS (SHA512_DIGEST_BYTES / sizeof(uint32_t))
+
+#if defined(CONFIG_SHA512)
+#define SHA_DIGEST_MAX_BYTES SHA512_DIGEST_BYTES
+#elif defined(CONFIG_SHA384)
+#define SHA_DIGEST_MAX_BYTES SHA384_DIGEST_BYTES
+#elif defined(CONFIG_SHA256)
+#define SHA_DIGEST_MAX_BYTES SHA256_DIGEST_BYTES
+#elif defined CONFIG_SHA1
+#define SHA_DIGEST_MAX_BYTES SHA1_DIGEST_BYTES
+#endif
+
struct HASH_CTX {
const struct HASH_VTAB *vtab;
union {
- uint8_t buf[64];
+ uint8_t buf[SHA_DIGEST_MAX_BYTES];
struct sha1_ctx sw_sha1;
struct sha256_ctx sw_sha256;
} u;