123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /*
- * Copyright (c) 2006-2021, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2019-04-23 tyx the first version
- */
- #include <rtthread.h>
- #include <rtdevice.h>
- #include <hw_hash.h>
- /**
- * @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)
- {
- struct rt_hwcrypto_ctx *ctx;
- ctx = rt_hwcrypto_ctx_create(device, type, sizeof(struct hwcrypto_hash));
- return ctx;
- }
- /**
- * @brief Destroy hash Context
- *
- * @param ctx Hash context
- */
- void rt_hwcrypto_hash_destroy(struct rt_hwcrypto_ctx *ctx)
- {
- rt_hwcrypto_ctx_destroy(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)
- {
- if (ctx && ((struct hwcrypto_hash *)ctx)->ops->finish)
- {
- return ((struct hwcrypto_hash *)ctx)->ops->finish((struct hwcrypto_hash *)ctx, output, length);
- }
- return -RT_ERROR;
- }
- /**
- * @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)
- {
- if (ctx && ((struct hwcrypto_hash *)ctx)->ops->update)
- {
- return ((struct hwcrypto_hash *)ctx)->ops->update((struct hwcrypto_hash *)ctx, input, length);
- }
- return -RT_ERROR;
- }
- /**
- * @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)
- {
- return rt_hwcrypto_ctx_cpy(des, src);
- }
- /**
- * @brief Reset hash context
- *
- * @param ctx Hash context
- */
- void rt_hwcrypto_hash_reset(struct rt_hwcrypto_ctx *ctx)
- {
- rt_hwcrypto_ctx_reset(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)
- {
- return rt_hwcrypto_set_type(ctx, type);
- }
|