blob: 7bf9afdc407929f595572bb740fc278c1ce411e4 [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (c) 2019 Huawei Technologies Co., Ltd
*/
/**
* \file sm3.h
* thanks to Xyssl
* author:goldboar
* email:goldboar@163.com
* 2011-10-26
*/
#ifndef CORE_CRYPTO_SM3_H
#define CORE_CRYPTO_SM3_H
#include <stddef.h>
#include <stdint.h>
struct sm3_context {
uint32_t total[2]; /* number of bytes processed */
uint32_t state[8]; /* intermediate digest state */
uint8_t buffer[64]; /* data block being processed */
uint8_t ipad[64]; /* HMAC: inner padding */
uint8_t opad[64]; /* HMAC: outer padding */
};
void sm3_init(struct sm3_context *ctx);
void sm3_update(struct sm3_context *ctx, const uint8_t *input, size_t ilen);
void sm3_final(struct sm3_context *ctx, uint8_t output[32]);
void sm3(const uint8_t *input, size_t ilen, uint8_t output[32]);
void sm3_hmac_init(struct sm3_context *ctx, const uint8_t *key, size_t keylen);
void sm3_hmac_update(struct sm3_context *ctx, const uint8_t *input,
size_t ilen);
void sm3_hmac_final(struct sm3_context *ctx, uint8_t output[32]);
void sm3_hmac(const uint8_t *key, size_t keylen, const uint8_t *input,
size_t ilen, uint8_t output[32]);
#endif /* CORE_CRYPTO_SM3_H */