简介
内核加密 API 提供了一组丰富的加密密码以及其他数据转换机制和调用这些机制的方法。本文档包含 API 的描述,并提供示例代码。
为了理解和正确使用内核加密 API,对其结构进行了简要说明。根据体系结构,API 可以分为不同的组件。按照体系结构规范,为密码开发人员提供了提示。末尾提供了指向 API 函数调用文档的链接。
内核加密 API 将所有算法称为“转换”(transformations)。因此,密码句柄变量通常具有名称“tfm”。除了加密操作之外,内核加密 API 还知道压缩转换,并以与密码相同的方式处理它们。
内核加密 API 提供以下实体类型:
-
请求加密服务的消费者
-
可由使用者使用内核加密 API 调用的数据转换实现(通常为密码)
此规范适用于内核加密 API 的使用者以及实现密码的开发人员。但是,此 API 规范并未讨论可用于数据转换实现的所有 API 调用(即可以注册到内核加密 API 的密码和其他转换(例如 CRC 甚至压缩算法)的实现)。
注意:术语“转换”和密码算法可以互换使用。
术语
转换实现是硬件的实际代码或接口,它通过精确定义的行为实现特定的转换。
转换对象 (TFM) 是转换实现的实例。可以有多个转换对象与单个转换实现相关联。这些转换对象中的每一个都由加密 API 使用者或其他转换持有。当加密 API 使用者请求转换实现时,将分配转换对象。然后,为使用者提供一个结构,其中包含一个转换对象 (TFM) 。
包含转换对象的结构体也可以称为“密码句柄”(cipher handle)。此类密码句柄始终受以下阶段的约束,这些阶段反映在适用于此类密码句柄的 API 调用中:
-
密码句柄的初始化。
-
执行适用于句柄的所有预期密码操作,其中必须为每个 API 调用提供密码句柄。
-
销毁密码句柄。
使用初始化 API 调用时,将创建一个密码句柄并将其返回给使用者。因此,请参阅所有初始化 API 调用,这些调用引用使用者预期接收并随后使用的数据结构类型。初始化 API 调用具有所有相同的命名约定 crypto_alloc*。
转换上下文是与转换对象关联的私有数据。
ref:https://www.kernel.org/doc/html/latest/crypto/intro.html