2019-02-08 19:59:36 +01:00
|
|
|
/*
|
2019-08-03 19:43:48 +02:00
|
|
|
* This software is licensed under the terms of the MIT License.
|
2019-02-08 19:59:36 +01:00
|
|
|
* See COPYING for further information.
|
|
|
|
* ---
|
2024-05-16 23:30:41 +02:00
|
|
|
* Copyright (c) 2011-2024, Lukas Weber <laochailan@web.de>.
|
|
|
|
* Copyright (c) 2012-2024, Andrei Alexeyev <akari@taisei-project.org>.
|
2019-02-08 19:59:36 +01:00
|
|
|
*/
|
|
|
|
|
2021-08-12 23:09:01 +02:00
|
|
|
#pragma once
|
2019-02-08 19:59:36 +01:00
|
|
|
#include "taisei.h"
|
|
|
|
|
2020-08-15 13:51:12 +02:00
|
|
|
enum {
|
|
|
|
SHA256_BLOCK_SIZE = 32,
|
|
|
|
SHA256_HEXDIGEST_SIZE = SHA256_BLOCK_SIZE * 2 + 1,
|
|
|
|
};
|
2019-02-08 19:59:36 +01:00
|
|
|
|
|
|
|
typedef struct SHA256State SHA256State;
|
|
|
|
|
2020-08-15 13:51:12 +02:00
|
|
|
SHA256State *sha256_new(void) attr_returns_allocated;
|
2019-02-08 19:59:36 +01:00
|
|
|
void sha256_update(SHA256State *state, const uint8_t *data, size_t len) attr_nonnull(1, 2);
|
|
|
|
void sha256_final(SHA256State *state, uint8_t hash[SHA256_BLOCK_SIZE], size_t hashlen) attr_nonnull(1, 2);
|
|
|
|
void sha256_free(SHA256State *state);
|
|
|
|
|
|
|
|
void sha256_digest(const uint8_t *data, size_t len, uint8_t hash[SHA256_BLOCK_SIZE], size_t hashlen);
|
2020-08-15 13:51:12 +02:00
|
|
|
void sha256_hexdigest(const uint8_t *data, size_t len, char hash[SHA256_HEXDIGEST_SIZE], size_t hashlen);
|