You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Kernel Crypto API AEAD回调函数未触发及异步执行疑问

Linux Kernel Crypto API 回调与同步/异步执行问题解答

问题1:回调函数为何始终未被调用?

你的回调未触发的核心原因是当前使用的AES-GCM算法实现为同步模式:

  • Linux Crypto API中,crypto_aead_encrypt的行为由算法实现类型决定:同步算法会直接阻塞完成加密操作,函数执行完毕后立即返回,不会触发回调;只有使用异步算法实现时,加密操作才会在后台执行,完成后才会调用回调函数。
  • 你的代码里,crypto_alloc_aead的第三个参数为0,未指定CRYPTO_ALG_ASYNC标志,因此默认分配的是同步算法实例。即便设置了回调,同步模式下也不会走到回调调用的逻辑,和你设置的编译优化选项无关。

问题2:调用crypto_wait_req()前,加解密操作是否是异步执行的?

答案取决于你使用的算法实现类型:

  • 异步算法实现:当分配tfm时指定CRYPTO_ALG_ASYNC标志,或是使用支持异步的硬件加速驱动,调用crypto_aead_encrypt会立即返回,加密操作在后台异步执行。此时在调用crypto_wait_req()之前,操作确实处于异步运行状态,crypto_wait_req()的作用是阻塞等待异步操作完成。
  • 同步算法实现:crypto_aead_encrypt会直接阻塞直到加密完成,函数返回时操作已经结束。这种情况下不存在异步执行阶段,调用crypto_wait_req()没有实际意义。

你的代码使用的是同步算法,所以crypto_aead_encrypt返回时加密已经完成,无需调用crypto_wait_req()。

内容的提问来源于stack exchange,提问作者synthrax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:50:02