core/crypto/hash_mbedtls_static.h (60 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
#ifndef HASH_MBEDTLS_STATIC_H_
#define HASH_MBEDTLS_STATIC_H_
#include "hash_mbedtls.h"
/* Internal functions declared to allow for static initialization. */
int hash_mbedtls_calculate_sha1 (const struct hash_engine *engine, const uint8_t *data,
size_t length, uint8_t *hash, size_t hash_length);
int hash_mbedtls_start_sha1 (const struct hash_engine *engine);
int hash_mbedtls_calculate_sha256 (const struct hash_engine *engine, const uint8_t *data,
size_t length, uint8_t *hash, size_t hash_length);
int hash_mbedtls_start_sha256 (const struct hash_engine *engine);
int hash_mbedtls_calculate_sha384 (const struct hash_engine *engine, const uint8_t *data,
size_t length, uint8_t *hash, size_t hash_length);
int hash_mbedtls_start_sha384 (const struct hash_engine *engine);
int hash_mbedtls_calculate_sha512 (const struct hash_engine *engine, const uint8_t *data,
size_t length, uint8_t *hash, size_t hash_length);
int hash_mbedtls_start_sha512 (const struct hash_engine *engine);
int hash_mbedtls_update (const struct hash_engine *engine, const uint8_t *data, size_t length);
int hash_mbedtls_get_hash (const struct hash_engine *engine, uint8_t *hash, size_t hash_length);
int hash_mbedtls_finish (const struct hash_engine *engine, uint8_t *hash, size_t hash_length);
void hash_mbedtls_cancel (const struct hash_engine *engine);
enum hash_type hash_mbedtls_get_active_algorithm (const struct hash_engine *engine);
/**
* Constant initializer for SHA1 APIs.
*/
#ifdef HASH_ENABLE_SHA1
#define HASH_MBEDTLS_SHA1 \
.calculate_sha1 = hash_mbedtls_calculate_sha1, \
.start_sha1 = hash_mbedtls_start_sha1,
#else
#define HASH_MBEDTLS_SHA1
#endif
/**
* Constant initializer for SHA-256 APIs.
*/
#define HASH_MBEDTLS_SHA256 \
.calculate_sha256 = hash_mbedtls_calculate_sha256, \
.start_sha256 = hash_mbedtls_start_sha256,
/**
* Constant initializer for SHA-384 APIs.
*/
#ifdef HASH_ENABLE_SHA384
#define HASH_MBEDTLS_SHA384 \
.calculate_sha384 = hash_mbedtls_calculate_sha384, \
.start_sha384 = hash_mbedtls_start_sha384,
#else
#define HASH_MBEDTLS_SHA384
#endif
/**
* Constant initializer for SHA-512 APIs.
*/
#ifdef HASH_ENABLE_SHA512
#define HASH_MBEDTLS_SHA512 \
.calculate_sha512 = hash_mbedtls_calculate_sha512, \
.start_sha512 = hash_mbedtls_start_sha512,
#else
#define HASH_MBEDTLS_SHA512
#endif
/**
* Constant initializer for the hash API.
*/
#define HASH_MBEDTLS_API_INIT { \
HASH_MBEDTLS_SHA1 \
HASH_MBEDTLS_SHA256 \
HASH_MBEDTLS_SHA384 \
HASH_MBEDTLS_SHA512 \
.get_active_algorithm = hash_mbedtls_get_active_algorithm, \
.update = hash_mbedtls_update, \
.get_hash = hash_mbedtls_get_hash, \
.finish = hash_mbedtls_finish, \
.cancel = hash_mbedtls_cancel, \
}
/**
* Initialize a static hash engine using mbedTLS.
*
* There is no validation done on the arguments.
*
* @param state_ptr Variable context for the hash engine.
*/
#define hash_mbedtls_static_init(state_ptr) { \
.base = HASH_MBEDTLS_API_INIT, \
.state = state_ptr, \
}
#endif /* HASH_MBEDTLS_STATIC_H_ */