在Linux密码库中,以下方面有什么区别:
我猜'a‘代表异步,'s’代表同步。
如果是这样的话,在执行选择方面意味着什么?
(在使用密码库处理SHA1数据包时,我试图找到计算HMAC()值的正确方法)。
发布于 2015-11-25 17:50:32
所以Question1和所以Question2是你的好起点。
没有什么叫做异步和同步functions.All函数(被调用者)需要返回给调用者。
但也有异步和同步操作。
crypto_alloc_ahash() & crypto_alloc_shash()的不同之处在于,前者由异步操作组成,后者由同步操作组成。
在第一种情况下,该功能在调用时立即返回主方案,使其业务得以完成。当操作完成时,他们通常使用信号/中断来让主程序知道他们已经完成了。您可以看到实现这里,下面给出了一个摘录。
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);
}在后一种情况下,主程序(主叫者)必须等待函数中的操作完成才能继续。在这种情况下,我想不出同步是强制性的特定场景。您可以看到实现这里
实际上,这两个函数看起来都是一样的,但它们返回的值类型是相同的。
函数的异步变体通常是您应该寻找的程序的速度原因。此外,由于明显的原因,您不能从同步变体中进行异步调用。
编辑:
哈希是同步散列,我无法找出散列和shash之间的区别。
两种方法都会在成功的情况下返回分配的密码句柄;如果出现错误,则IS_ERR为真,PTR_ERR返回错误代码。
见沙什 vs 哈希。
https://stackoverflow.com/questions/33919247
复制相似问题