---
title: 创建Digest context
description: "创建Digest context的时候需要提供内存及相关管理函数配置setup.ops，可以提供第三方内存，也可以使用WD提供的BLK内存池接口创建。此处以wd_queue申请的test_mempool为例，介绍Digest context的创建过程。进行HMAC操作需要设置认证key，可以调用wd_set_digest_key实现。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/252RC1/accel/kunpengaccel_17_0085.html
sourcePath: /source/zh/kunpengboostkithistory/252RC1/accel/kunpengaccel_17_0085.html
indexId: 771e20c700f32e573fe228c4f78379f5d18928ff20404ba2adea3a4260d7edea72
---
# 创建Digest context

创建Digest context的时候需要提供内存及相关管理函数配置setup.ops，可以提供第三方内存，也可以使用WD提供的BLK内存池接口创建。此处以wd_queue申请的test_mempool为例，介绍Digest context的创建过程。进行HMAC操作需要设置认证key，可以调用wd_set_digest_key实现。

```
struct wcrypto_digest_ctx_setup setup;
void *ctx = NULL, *pool = NULL;
int block_size = TEST_BLOCK_SIZE;
int block_num = TEST_BLOCK_NUM;

pool = test_mempool_create(&q, block_size, block_num);
memset((void *)&setup, 0, sizeof(setup));
setup.ops.alloc = test_alloc_buf;
setup.ops.free = test_free_buf;
setup.ops.dma_map = test_dma_map;
setup.ops.dma_unmap = test_dma_unmap;
setup.ops.usr = pool;
setup.alg = WD_SM3;
setup.mode = WD_DIGEST_NORMAL;
ctx = wcrypto_create_digest_ctx(&q, &setup);
```
