Google 致力于为黑人社区推动种族平等。查看具体行动

加密 - 平台

此模块包含 Crypto 的平台抽象。

摘要

枚举

anonymous enum{
  OT_CRYPTO_KEY_USAGE_NONE = 0,
  OT_CRYPTO_KEY_USAGE_EXPORT = 1 << 0,
  OT_CRYPTO_KEY_USAGE_ENCRYPT = 1 << 1,
  OT_CRYPTO_KEY_USAGE_DECRYPT = 1 << 2,
  OT_CRYPTO_KEY_USAGE_SIGN_HASH = 1 << 3
}
枚举
此枚举定义了密钥使用标志。
otCryptoKeyAlgorithm{
  OT_CRYPTO_KEY_ALG_VENDOR,
  OT_CRYPTO_KEY_ALG_AES_ECB,
  OT_CRYPTO_KEY_ALG_HMAC_SHA_256
}
枚举
此枚举定义了关键算法。
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
枚举
此枚举定义了密钥存储类型。
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC
}
枚举
此枚举定义了密钥类型。

类型定义符

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
此数据类型表示键引用。

函数

otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
加密给定数据。
otPlatCryptoAesFree(otCryptoContext *aContext)
释放 AES 上下文。
otPlatCryptoAesInit(otCryptoContext *aContext)
初始化 AES 操作。
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
设置 AES 操作的密钥。
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
销毁存储在 PSA ITS 中的密钥。
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
导出存储在 PSA ITS 中的密钥。
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
检查所传递的密钥引用在 PSA ITS 中是否有关联的密钥。
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
取消初始化 HKDF 上下文。
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
执行 HKDF 展开步骤。
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
执行 HKDF 提取步骤。
otPlatCryptoHkdfInit(otCryptoContext *aContext)
初始化 HKDF 上下文。
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
取消初始化 HMAC 操作。
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
完成 HMAC 操作。
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
初始化 HMAC 操作。
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
启动 HMAC 操作。
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
使用新输入更新 HMAC 操作。
otPlatCryptoImportKey(otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
将密钥导入 PSA ITS。
otPlatCryptoInit(void)
void
初始化加密模块。
otPlatCryptoRandomDeinit(void)
void
对经过加密保护的伪随机数生成器 (CSPRNG) 进行去初始化。
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
使用加密安全的随机字节填充给定缓冲区。
otPlatCryptoRandomInit(void)
void
初始化加密安全的伪随机数生成器 (CSPRNG)。
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
取消初始化 SHA-256 操作。
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
完成 SHA-256 操作。
otPlatCryptoSha256Init(otCryptoContext *aContext)
初始化 SHA-256 操作。
otPlatCryptoSha256Start(otCryptoContext *aContext)
启动 SHA-256 操作。
otPlatCryptoSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
使用新输入更新 SHA-256 操作。

结构体

otCryptoContext

此结构可存储平台 API 的上下文对象。

otCryptoKey

此结构表示加密操作所需的密钥材料。

枚举

匿名枚举

 anonymous enum

此枚举定义了密钥使用标志。

属性
OT_CRYPTO_KEY_USAGE_DECRYPT

密钥用途:AES ECB。

OT_CRYPTO_KEY_USAGE_ENCRYPT

密钥用途:加密(由供应商定义)。

OT_CRYPTO_KEY_USAGE_EXPORT

密钥用途:可以导出密钥。

OT_CRYPTO_KEY_USAGE_NONE

密钥用途:密钥用途为空。

OT_CRYPTO_KEY_USAGE_SIGN_HASH

密钥用途:HMAC SHA-256。

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

此枚举定义了关键算法。

属性
OT_CRYPTO_KEY_ALG_AES_ECB

密钥算法:AES ECB。

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

密钥算法:HMAC SHA-256。

OT_CRYPTO_KEY_ALG_VENDOR

密钥算法:供应商定义。

otCryptoKeyStorage

 otCryptoKeyStorage

此枚举定义了密钥存储类型。

属性
OT_CRYPTO_KEY_STORAGE_PERSISTENT

密钥持久性:密钥是持久性的。

OT_CRYPTO_KEY_STORAGE_VOLATILE

键持久性:键是易失性的。

otCryptoKeyType

 otCryptoKeyType

此枚举定义了密钥类型。

属性
OT_CRYPTO_KEY_TYPE_AES

密钥类型:AES。

OT_CRYPTO_KEY_TYPE_HMAC

密钥类型:HMAC。

OT_CRYPTO_KEY_TYPE_RAW

密钥类型:原始数据。

类型定义符

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

此数据类型表示键引用。

函数

otPlatCryptoAesEncrypt

otError otPlatCryptoAesEncrypt(
  otCryptoContext *aContext,
  const uint8_t *aInput,
  uint8_t *aOutput
)

加密给定数据。

详情
参数
[in] aContext
AES 操作的上下文。
[in] aInput
指向输入缓冲区的指针。
[in] aOutput
指向输出缓冲区的指针。
返回值
OT_ERROR_NONE
已成功加密“aInput”。
OT_ERROR_FAILED
未能加密“aInput”。
OT_ERROR_INVALID_ARGS
aContextaKeyaOutput 是 NULL

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

释放 AES 上下文。

详情
参数
[in] aContext
AES 操作的上下文。
返回值
OT_ERROR_NONE
已成功释放 AES 上下文。
OT_ERROR_FAILED
未能释放 AES 上下文。
OT_ERROR_INVALID_ARGS
aContext 是 NULL

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

初始化 AES 操作。

详情
参数
[in] aContext
AES 操作的上下文。
返回值
OT_ERROR_NONE
已成功初始化 AES 操作。
OT_ERROR_FAILED
无法初始化 AES 操作。
OT_ERROR_INVALID_ARGS
aContext 是 NULL
OT_ERROR_NO_BUFS
无法分配上下文。

otPlatCryptoAesSetKey

otError otPlatCryptoAesSetKey(
  otCryptoContext *aContext,
  const otCryptoKey *aKey
)

设置 AES 操作的密钥。

详情
参数
[in] aContext
AES 操作的上下文。
[out] aKey
用于 AES 操作的密钥。
返回值
OT_ERROR_NONE
已成功设置 AES 操作密钥。
OT_ERROR_FAILED
无法设置用于 AES 操作的密钥。
OT_ERROR_INVALID_ARGS
aContextaKey 是 NULL

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

销毁存储在 PSA ITS 中的密钥。

详情
参数
[in] aKeyRef
要销毁的密钥引用
返回值
OT_ERROR_NONE
已成功销毁密钥。
OT_ERROR_FAILED
未能销毁密钥。

otPlatCryptoExportKey

otError otPlatCryptoExportKey(
  otCryptoKeyRef aKeyRef,
  uint8_t *aBuffer,
  size_t aBufferLen,
  size_t *aKeyLen
)

导出存储在 PSA ITS 中的密钥。

详情
参数
[in] aKeyRef
要用于加密操作的密钥参考。
[out] aBuffer
指向需要导出密钥的缓冲区的指针。
[in] aBufferLen
为存储导出的密钥而传递的缓冲区的长度。
[out] aKeyLen
指针,用于返回导出的密钥的长度。
返回值
OT_ERROR_NONE
已成功导出“aKeyRef”。
OT_ERROR_FAILED
未能导出“aKeyRef”。
OT_ERROR_INVALID_ARGS
aBuffer 是 NULL

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

检查所传递的密钥引用在 PSA ITS 中是否有关联的密钥。

详情
参数
[in] aKeyRef
要检查的按键引用。
返回值
TRUE
有一个与 aKeyRef 关联的密钥。
FALSE
没有与 aKeyRef 关联的密钥。

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

取消初始化 HKDF 上下文。

详情
参数
[in] aContext
HKDF 操作的上下文。
返回值
OT_ERROR_NONE
已成功取消初始化 HKDF 操作。
OT_ERROR_FAILED
未能初始化 HKDF 操作。
OT_ERROR_INVALID_ARGS
aContext 是 NULL

otPlatCryptoHkdfExpand

otError otPlatCryptoHkdfExpand(
  otCryptoContext *aContext,
  const uint8_t *aInfo,
  uint16_t aInfoLength,
  uint8_t *aOutputKey,
  uint16_t aOutputKeyLength
)

执行 HKDF 展开步骤。

详情
参数
[in] aContext
HKDF 操作的操作上下文。
[in] aInfo
指向“信息”序列的指针。
[in] aInfoLength
信息序列的长度。
[out] aOutputKey
指向输出键的指针。
[in] aOutputKeyLength
输出键缓冲区的大小。
返回值
OT_ERROR_NONE
HKDF 扩展已成功完成。
OT_ERROR_FAILED
HKDF 扩展失败。
OT_ERROR_INVALID_ARGS
aContext 是 NULL

otPlatCryptoHkdfExtract

otError otPlatCryptoHkdfExtract(
  otCryptoContext *aContext,
  const uint8_t *aSalt,
  uint16_t aSaltLength,
  const otCryptoKey *aInputKey
)

执行 HKDF 提取步骤。

详情
参数
[in] aContext
HKDF 操作的操作上下文。
[in] aSalt
指向 HKDF 的盐的指针。
[in] aSaltLength
盐长度。
[in] aInputKey
指向输入键的指针。
返回值
OT_ERROR_NONE
HKDF 提取成功。
OT_ERROR_FAILED
HKDF 提取失败。

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

初始化 HKDF 上下文。

详情
参数
[in] aContext
HKDF 操作的上下文。
返回值
OT_ERROR_NONE
已成功初始化 AES 操作。
OT_ERROR_FAILED
无法初始化 AES 操作。
OT_ERROR_INVALID_ARGS
aContext 是 NULL

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

取消初始化 HMAC 操作。

详情
参数
[in] aContext
HMAC 操作的上下文。
返回值
OT_ERROR_NONE
已成功取消初始化 HMAC 操作。
OT_ERROR_FAILED
未能取消初始化 HMAC 操作。
OT_ERROR_INVALID_ARGS
aContext 是 NULL

otPlatCryptoHmacSha256Finish

otError otPlatCryptoHmacSha256Finish(
  otCryptoContext *aContext,
  uint8_t *aBuf,
  size_t aBufLength
)

完成 HMAC 操作。

详情
参数
[in] aContext
HMAC 操作的上下文。
[out] aBuf
指向输出缓冲区的指针。
[in] aBufLength
aBuf 的长度(以字节为单位)。
返回值
OT_ERROR_NONE
已成功完成 HMAC 操作。
OT_ERROR_FAILED
未能完成 HMAC 操作。
OT_ERROR_INVALID_ARGS
aContextaBuf 是 NULL

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

初始化 HMAC 操作。

详情
参数
[in] aContext
HMAC 操作的上下文。
返回值
OT_ERROR_NONE
已成功初始化 HMAC 操作。
OT_ERROR_FAILED
未能初始化 HMAC 操作。
OT_ERROR_INVALID_ARGS
aContext 是 NULL

otPlatCryptoHmacSha256Start

otError otPlatCryptoHmacSha256Start(
  otCryptoContext *aContext,
  const otCryptoKey *aKey
)

启动 HMAC 操作。

详情
参数
[in] aContext
HMAC 操作的上下文。
[in] aKey
用于 HMAC 操作的密钥材料。
返回值
OT_ERROR_NONE
已成功启动 HMAC 操作。
OT_ERROR_FAILED
未能启动 HMAC 操作。
OT_ERROR_INVALID_ARGS
aContextaKey 是 NULL

otPlatCryptoHmacSha256Update

otError otPlatCryptoHmacSha256Update(
  otCryptoContext *aContext,
  const void *aBuf,
  uint16_t aBufLength
)

使用新输入更新 HMAC 操作。

详情
参数
[in] aContext
HMAC 操作的上下文。
[in] aBuf
指向输入缓冲区的指针。
[in] aBufLength
aBuf 的长度(以字节为单位)。
返回值
OT_ERROR_NONE
使用新的输入操作成功更新了 HMAC。
OT_ERROR_FAILED
未能更新 HMAC 操作。
OT_ERROR_INVALID_ARGS
aContextaBuf 是 NULL

otPlatCryptoImportKey

otError otPlatCryptoImportKey(
  otCryptoKeyRef *aKeyRef,
  otCryptoKeyType aKeyType,
  otCryptoKeyAlgorithm aKeyAlgorithm,
  int aKeyUsage,
  otCryptoKeyStorage aKeyPersistence,
  const uint8_t *aKey,
  size_t aKeyLen
)

将密钥导入 PSA ITS。

注意:如果为 aKeyPersistence 传递 OT_CRYPTO_KEY_STORAGE_PERSISTENT,则会输入 aKeyRef,平台应使用给定的 aKeyRef,且不得对其进行更改。如果针对 aKeyPersistence 传递了 OT_CRYPTO_KEY_STORAGE_VOLATILE,然后输出 aKeyRef,则初始值无关紧要,平台 API 必须对其进行更新以返回新的密钥引用。

详情
参数
[in,out] aKeyRef
指向用于加密操作的密钥参考的指针。
[in] aKeyType
密钥的密钥类型编码。
[in] aKeyAlgorithm
密钥的密钥算法编码。
[in] aKeyUsage
密钥的密钥使用情况编码(OT_CRYPTO_KEY_USAGE_* 的组合)。
[in] aKeyPersistence
此密钥的持久性
[in] aKey
要导入的实际键。
[in] aKeyLen
要导入的密钥的长度。
返回值
OT_ERROR_NONE
已成功导入密钥。
OT_ERROR_FAILED
未能导入密钥。
OT_ERROR_INVALID_ARGS
aKey 已设置为 NULL。

只有启用 OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE 后,OT 核心才会使用此 API。

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

初始化加密模块。

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

对经过加密保护的伪随机数生成器 (CSPRNG) 进行去初始化。

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

使用加密安全的随机字节填充给定缓冲区。

详情
参数
[out] aBuffer
指向填充随机字节的缓冲区的指针。
[in] aSize
缓冲区大小(要填充的字节数)。
返回值
OT_ERROR_NONE
已成功使用随机值填充缓冲区。
OT_ERROR_FAILED
操作失败,

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

初始化加密安全的伪随机数生成器 (CSPRNG)。

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

取消初始化 SHA-256 操作。

详情
参数
[in] aContext
SHA-256 操作的上下文。
返回值
OT_ERROR_NONE
已成功取消初始化 SHA-256 操作。
OT_ERROR_FAILED
未能初始化 SHA-256 操作。
OT_ERROR_INVALID_ARGS
aContext 是 NULL

otPlatCryptoSha256Finish

otError otPlatCryptoSha256Finish(
  otCryptoContext *aContext,
  uint8_t *aHash,
  uint16_t aHashSize
)

完成 SHA-256 操作。

详情
参数
[in] aContext
SHA-256 操作的上下文。
[in] aHash
指向需要存储哈希的输出缓冲区的指针。
[in] aHashSize
aHash 的长度(以字节为单位)。
返回值
OT_ERROR_NONE
已成功完成 SHA-256 操作。
OT_ERROR_FAILED
未能完成 SHA-256 操作。
OT_ERROR_INVALID_ARGS
aContextaHash 是 NULL

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

初始化 SHA-256 操作。

详情
参数
[in] aContext
SHA-256 操作的上下文。
返回值
OT_ERROR_NONE
已成功初始化 SHA-256 操作。
OT_ERROR_FAILED
未能初始化 SHA-256 操作。
OT_ERROR_INVALID_ARGS
aContext 是 NULL

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

启动 SHA-256 操作。

详情
参数
[in] aContext
SHA-256 操作的上下文。
返回值
OT_ERROR_NONE
已成功启动 SHA-256 操作。
OT_ERROR_FAILED
未能启动 SHA-256 操作。
OT_ERROR_INVALID_ARGS
aContext 是 NULL

otPlatCryptoSha256Update

otError otPlatCryptoSha256Update(
  otCryptoContext *aContext,
  const void *aBuf,
  uint16_t aBufLength
)

使用新输入更新 SHA-256 操作。

详情
参数
[in] aContext
SHA-256 操作的上下文。
[in] aBuf
指向输入缓冲区的指针。
[in] aBufLength
aBuf 的长度(以字节为单位)。
返回值
OT_ERROR_NONE
已成功使用新输入操作更新 SHA-256。
OT_ERROR_FAILED
未能更新 SHA-256 操作。
OT_ERROR_INVALID_ARGS
aContextaBuf 是 NULL

资源

OpenThread API 参考主题源自源代码,可在 GitHub 上找到。 如需了解详情或为我们的文档做贡献,请参阅资源