| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| |
| #ifndef _F_LIB_SHA256_H__ |
| #define _F_LIB_SHA256_H__ |
| |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| #include "sw/vendor/cryptoc/hash-internal.h" |
| |
| typedef HASH_CTX HW_SHA256_CTX; |
| |
| #define SHA256_DIGEST_SIZE 32 |
| |
| /** |
| * hw_SHA256_init initializes |ctx|. |
| * |
| * @param ctx SHA256 context. |
| */ |
| void hw_SHA256_init(HW_SHA256_CTX *ctx); |
| |
| /** |
| * hw_SHA256_update adds |len| bytes from |data| to |ctx|. |
| * |
| * @param ctx SHA256 context. |
| * @param data Input buffer. |
| * @param len Number of bytes to add. |
| */ |
| void hw_SHA256_update(HW_SHA256_CTX *ctx, const void *data, size_t len); |
| |
| /** |
| * hw_SHA256_final adds the final padding to |ctx| and calculates digest. |
| * |
| * @param ctx SHA256 context. |
| * |
| * @return pointer to digest buffer held in |ctx|. |
| */ |
| const uint8_t *hw_SHA256_final(HW_SHA256_CTX *ctx); |
| |
| /** |
| * hw_SHA256_hash writes |digest| from |len| bytes of |data|. |
| * |
| * @param data Input buffer. |
| * @param len Number of bytes to add. |
| * @param digest Output buffer. |
| */ |
| const uint8_t *hw_SHA256_hash(const void *data, size_t len, uint8_t *digest); |
| |
| #endif // _F_LIB_SHA256_H__ |