| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 | /* * Copyright (c) 2006-2019, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date           Author       Notes * 2019-04-23     tyx          the first version */#ifndef __HW_HASH_H__#define __HW_HASH_H__#include <hwcrypto.h>#ifdef __cplusplusextern "C" {#endifstruct hwcrypto_hash;struct hwcrypto_hash_ops{    rt_err_t (*update)(struct hwcrypto_hash *hash_ctx,                       const rt_uint8_t *in, rt_size_t length);     /**< Processing a packet of data */    rt_err_t (*finish)(struct hwcrypto_hash *hash_ctx,                       rt_uint8_t *out, rt_size_t length);          /**< Get the final hash value */};/** * @brief           hash context. Hardware driver usage */struct hwcrypto_hash{    struct rt_hwcrypto_ctx parent;              /**< Inheritance from hardware crypto context */    const struct hwcrypto_hash_ops *ops;        /**< !! Hardware initializes this value when creating context !! */};/** * @brief           Creating hash Context * * @param device    Hardware crypto device * @param type      Type of hash context * * @return          Hash context */struct rt_hwcrypto_ctx *rt_hwcrypto_hash_create(struct rt_hwcrypto_device *device,                                                hwcrypto_type type);/** * @brief           Destroy hash Context * * @param ctx       Hash context */void rt_hwcrypto_hash_destroy(struct rt_hwcrypto_ctx *ctx);/** * @brief           Get the final hash value * * @param ctx       Hash context * @param output    Hash value buffer * @param length    Hash value buffer length * * @return          RT_EOK on success. */rt_err_t rt_hwcrypto_hash_finish(struct rt_hwcrypto_ctx *ctx, rt_uint8_t *output, rt_size_t length);/** * @brief           Processing a packet of data * * @param ctx       Hash context * @param input     Data buffer to be Processed * @param length    Data Buffer length * * @return          RT_EOK on success. */rt_err_t rt_hwcrypto_hash_update(struct rt_hwcrypto_ctx *ctx, const rt_uint8_t *input, rt_size_t length);/** * @brief           This function copy hash context * * @param des       The destination hash context * @param src       The hash context to be copy * * @return          RT_EOK on success. */rt_err_t rt_hwcrypto_hash_cpy(struct rt_hwcrypto_ctx *des, const struct rt_hwcrypto_ctx *src);/** * @brief           Reset hash context * * @param ctx       Hash context */void rt_hwcrypto_hash_reset(struct rt_hwcrypto_ctx *ctx);/** * @brief           Setting hash context type * * @param ctx       Hash context * @param type      Types of settings * * @return          RT_EOK on success. */rt_err_t rt_hwcrypto_hash_set_type(struct rt_hwcrypto_ctx *ctx, hwcrypto_type type);#ifdef __cplusplus}#endif#endif
 |