c-libp2p/include/libp2p/crypto/sha256.h

44 lines
1.3 KiB
C

#pragma once
#include "mbedtls/sha256.h"
/***
* hash a string using SHA256
* @param input the input string
* @param input_length the length of the input string
* @param output where to place the results
* @returns 1
*/
int libp2p_crypto_hashing_sha256(const unsigned char* input, size_t input_length, unsigned char* output);
/**
* Initialize a sha256 hmac process
* @param ctx the context
* @returns true(1) on success, otherwise false(0)
*/
int libp2p_crypto_hashing_sha256_init(mbedtls_sha256_context* ctx);
/**
* Update a sha256 hmac process
* @param ctx the context
* @param input the data to add
* @param input_size the size of input
* @returns true(1) on success, otherwise false(0)
*/
int libp2p_crypto_hashing_sha256_update(mbedtls_sha256_context* ctx, const unsigned char* input, size_t input_size);
/**
* finalize a sha256 hmac process
* @param ctx the context
* @param hash where to put the results (for SHA256, should be 32 bytes long)
* @returns true(1) on success, otherwise false(0)
*/
int libp2p_crypto_hashing_sha256_finish(mbedtls_sha256_context* ctx, unsigned char* hash);
/**
* Clean up allocated memory
* @param ctx the context
* @returns true(1) on success, otherwise false(0)
*/
int libp2p_crypto_hashing_sha256_free(mbedtls_sha256_context* ctx);