透過集合功能整理內容 你可以依據偏好儲存及分類內容。

Crypto - 平台

這個模組包含 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
}
列舉
這項列舉定義了索引鍵類型。

Typedefs

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 Extract 步驟。
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
初始化 Crypto 模組。
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

這個結構代表 Crypto 作業所需的金鑰內容。

列舉

匿名列舉

 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

索引鍵類型:原始資料。

Typedefs

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 Extract 步驟。

詳情
參數
[in] aContext
HKDF 運算的作業內容。
[in] aSalt
指向 HKDF 的鹽室。
[in] aSaltLength
鹽度。
[in] aInputKey
指向輸入鍵的遊標。
傳回值
OT_ERROR_NONE
HKDF Extract 已成功送出。
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

otPlatCryptoHmacSha256 起點

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

otPlatCryptoHmacSha256 更新

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
)

初始化 Crypto 模組。

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

otPlatCryptoSha256 起點

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

otPlatCryptoSha256 更新

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 取得。如要瞭解詳情或參閱說明文件,請參閱資源