内核加密 API 接口规范

简介

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

为了理解和正确使用内核加密 API,需要对它的结构进行简要说明。根据架构,API 可以分为不同的组件。在架构规范之后,提供了密码开发人员的提示。API 函数调用文档的指针在最后给出。

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

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

  • 请求加密服务的消费者

  • 数据转换实现(通常是密码),消费者可以使用内核加密 API 调用它们

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

注意:术语“转换”和密码算法可以互换使用。

术语

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

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

包含转换对象的结构也可以称为“密码句柄”。这样的密码句柄始终要经历以下几个阶段,这些阶段反映在适用于此类密码句柄的 API 调用中

  1. 初始化密码句柄。

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

  3. 销毁密码句柄。

使用初始化 API 调用时,会创建密码句柄并返回给消费者。因此,请参阅所有初始化 API 调用,这些调用引用消费者预期接收并随后使用的数据结构类型。初始化 API 调用都具有相同的命名约定 crypto_alloc*。

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