alloc_ahash 对比 alloc_shash 在 Linux 加密库中
alloc_ahash vs alloc_shash in Linux Crypto Libraries
在 Linux CRYPTO 库中,有什么区别:
- crypto_alloc_hash(...);
- crypto_alloc_ahash(...);
- crypto_alloc_shash(...);
我猜 'a' 代表异步,'s' 代表同步。
如果是这种情况,在实施选择方面意味着什么?
(我正在尝试找到在使用 CRYPTO 库处理 TCP 数据包时计算 HMAC(SHA1) 值的正确方法)。
SO Question1 & SO Question2 对你来说是很好的起点。
没有所谓的异步和同步 functions.All 函数(被调用者)需要 return 给调用者。
但是有异步和同步操作。
crypto_alloc_ahash()
& crypto_alloc_shash()
的区别在于
首先由异步操作组成,后者由
同步操作。
如果第一个函数被调用时returns 立即将其操作交给主程序来完成。当操作完成时,他们通常使用 SIGNALS/INTERRUPTS 让主程序知道他们已经完成。您可以看到实现 here,下面给出了摘录。
struct crypto_ahash *crypto_alloc_ahash(const char *alg_name, u32 type,
u32 mask)
{
return crypto_alloc_tfm(alg_name, &crypto_ahash_type, type, mask);
}
在后者的情况下,主程序(调用者)必须等待函数中的操作完成才能继续。我想不出具体的场景
在这种情况下同步是强制性的。可以看到实现here
事实上,这两个函数看起来是一样的,但是对于值的类型,它们 return。
函数的异步变体通常是您应该寻找的程序速度原因。此外,由于显而易见的原因,您不能从同步变体进行异步调用。
编辑:
crypto_alloc_hash是同步hash,我没搞清楚hash和shash的区别
两个return都分配了密码句柄以防成功; IS_ERR 错误时为真,PTR_ERR return 错误代码。
在 Linux CRYPTO 库中,有什么区别:
- crypto_alloc_hash(...);
- crypto_alloc_ahash(...);
- crypto_alloc_shash(...);
我猜 'a' 代表异步,'s' 代表同步。
如果是这种情况,在实施选择方面意味着什么?
(我正在尝试找到在使用 CRYPTO 库处理 TCP 数据包时计算 HMAC(SHA1) 值的正确方法)。
SO Question1 & SO Question2 对你来说是很好的起点。
没有所谓的异步和同步 functions.All 函数(被调用者)需要 return 给调用者。
但是有异步和同步操作。
crypto_alloc_ahash()
& crypto_alloc_shash()
的区别在于
首先由异步操作组成,后者由
同步操作。
如果第一个函数被调用时returns 立即将其操作交给主程序来完成。当操作完成时,他们通常使用 SIGNALS/INTERRUPTS 让主程序知道他们已经完成。您可以看到实现 here,下面给出了摘录。
struct crypto_ahash *crypto_alloc_ahash(const char *alg_name, u32 type,
u32 mask)
{
return crypto_alloc_tfm(alg_name, &crypto_ahash_type, type, mask);
}
在后者的情况下,主程序(调用者)必须等待函数中的操作完成才能继续。我想不出具体的场景 在这种情况下同步是强制性的。可以看到实现here
事实上,这两个函数看起来是一样的,但是对于值的类型,它们 return。
函数的异步变体通常是您应该寻找的程序速度原因。此外,由于显而易见的原因,您不能从同步变体进行异步调用。
编辑:
crypto_alloc_hash是同步hash,我没搞清楚hash和shash的区别
两个return都分配了密码句柄以防成功; IS_ERR 错误时为真,PTR_ERR return 错误代码。