任务描述符
使用 CE 模块进行硬件加速时,软件需要以任务描述符的方式将详细的任务信息配置给 CE 模块。 多个相关的任务通过链表的方式构建任务链表 (Task List),CE 模块则按照任务链表顺序逐个处理任务。
警告:
当一个任务链表由多个任务描述符组成时,链表内的所有任务描述符必须使用相同的算法。
任务描述符的大小固定,组成部分如下所示:
| 任务描述符组成部分 | 大小/字节 | 说明 |
|---|---|---|
| Algorithm descriptor | 36 | 算法描述符 |
| Data descriptor | 24 | 数据描述符 |
| Next | 4 | 下一个任务描述符的地址 |
任务列表 显示了多个任务描述符构成的任务列表示例:

以下是任务描述符的具体位域分配总览:
| 字段 | 位域 | 备注 | |
|---|---|---|---|
| Algorithm Desc | Algorithm Config | 31:24 | - |
| 23:20 | Key size,密钥大小 | ||
| 19:16 | Key source,密钥源选择 | ||
| 15:12 | - | ||
| 11:10 | Counter width | ||
| 9 | Hash IV flag | ||
| 8 | Direction | ||
| 7:0 | Algorithm tag, 算法标识 | ||
| Key address | 31:0 | - | |
| IV address | 31:0 | - | |
| Counter output address | 31:0 | - | |
| Reserved | [31:0] * 5 | 20 字节 | |
| Data Desc | Data Info | 31:2 | - |
| 1 | First flag,当前数据是否为开始数据块 | ||
| 0 | Last flag,当前数据是否为结束数据块 | ||
| Total length | 31:0 | - | |
| Input Address | 31:0 | 当前输入数据地址 | |
| Input Length | 31:0 | 当前输入数据长度 | |
| Output Address | 31:0 | 当前输出数据地址 | |
| Output Length | 31:0 | 当前输出数据长度 | |
| Next | 31:0 | 下一个任务描述符的地址 | |
