内核加密 API 接口规范

引言

内核加密 API 提供了一套丰富的加密算法以及其他数据转换机制和调用这些机制的方法。本文档包含对 API 的描述并提供了示例代码。

为了理解和正确使用内核加密 API,本文简要解释了其结构。基于其架构,API 可以分为不同的组件。在架构规范之后,本文提供了对加密算法开发者的提示。API 函数调用文档的指针在文末给出。

内核加密 API 将所有算法都称为“转换”。因此,加密句柄变量通常命名为“tfm”。除了加密操作,内核加密 API 还识别压缩转换,并以与加密算法相同的方式处理它们。

内核加密 API 服务于以下实体类型:

  • 请求加密服务的消费者

  • 数据转换实现(通常是加密算法),可供消费者使用内核加密 API 调用

本规范旨在供内核加密 API 的消费者以及实现加密算法的开发者使用。然而,本 API 规范不讨论数据转换实现(即可以注册到内核加密 API 的加密算法和其他转换(例如 CRC 甚至压缩算法)的实现)可用的所有 API 调用。

注意:“转换”和加密算法这两个术语可互换使用。

术语

转换实现是实际的代码或硬件接口,用于实现具有精确定义行为的特定转换。

转换对象 (TFM) 是转换实现的一个实例。一个转换实现可以关联多个转换对象。这些转换对象中的每一个都由加密 API 消费者或另一个转换持有。当加密 API 消费者请求一个转换实现时,就会分配一个转换对象。然后向消费者提供一个包含转换对象 (TFM) 的结构。

包含转换对象的结构也可以被称为“加密句柄”。这样的加密句柄总是经历以下阶段,这些阶段反映在适用于此类加密句柄的 API 调用中:

  1. 加密句柄的初始化。

  2. 执行适用于该句柄的所有预期加密操作,其中加密句柄必须提供给每个 API 调用。

  3. 加密句柄的销毁。

使用初始化 API 调用时,会创建一个加密句柄并返回给消费者。因此,请参考所有涉及消费者预期接收并随后使用的数据结构类型的初始化 API 调用。初始化 API 调用都遵循相同的命名约定:crypto_alloc*。

转换上下文是与转换对象关联的私有数据。