c-libp2p/crypto/sha256.c

58 lines
1.5 KiB
C

#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, should be 32 bytes
* @returns 1
*/
int libp2p_crypto_hashing_sha256(const unsigned char* input, size_t input_length, unsigned char* output) {
mbedtls_sha256(input, input_length, output, 0);
return 32;
}
/**
* 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) {
mbedtls_sha256_init(ctx);
return 1;
}
/**
* 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) {
mbedtls_sha256_update(ctx, input, input_size);
return 1;
}
/**
* 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) {
mbedtls_sha256_finish(ctx, hash);
return 1;
}
/**
* 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) {
mbedtls_sha256_free(ctx);
return 1;
}