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

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
這個資料類型代表鍵參照。
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
此結構代表一個 SHA-256 雜湊。

變數

OT_TOOL_PACKED_END

Functions

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 中的金鑰。
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
使用新的 ECDSA 金鑰組產生並填入輸出緩衝區。
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
從輸入內容取得相關聯的公開金鑰。
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
使用輸入內容中的私密金鑰計算雜湊訊息的 ECDSA 簽名。
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
使用輸入內容中的金鑰來驗證經雜湊處理訊息的 ECDSA 簽名。
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 模組。
otPlatCryptoPbkdf2GenerateKey(const uint8_t *aPassword, uint16_t aPasswordLen, const uint8_t *aSalt, uint16_t aSaltLen, uint32_t aIterationCounter, uint16_t aKeyLen, uint8_t *aKey)
void
使用 CMAC (AES-CMAC-PRF-128) 執行 PKCS#5 PBKDF2。
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 作業所需的金鑰內容。

otPlatCryptoEcdsaKeyPair

這個結構代表 ECDSA 金鑰組 (公開和私密金鑰)。

otPlatCryptoEcdsaPublicKey

這個結構代表 ECDSA 公開金鑰。

otPlatCryptoEcdsaSignature

這個結構代表 ECDSA 簽名。

otPlatCryptoSha256Hash

此結構代表一個 SHA-256 雜湊。

列舉

匿名列舉

 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

此列舉會定義主要演算法。

屬性
OT_CRYPTO_KEY_ALG_AES_ECB

金鑰演算法:AES ECB。

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

金鑰演算法:HMAC SHA-256。

OT_CRYPTO_KEY_ALG_VENDOR

金鑰演算法:廠商定義。

otCryptoKey 儲存

 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

NFC

struct otCryptoKey otCryptoKey

OTCryptoKeyRef

uint32_t otCryptoKeyRef

這個資料類型代表鍵參照。

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsa 簽名

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

此結構代表一個 SHA-256 雜湊。

變數

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

Functions

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

OTPPCryptoAesInit

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
無法刪除金鑰。

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

使用新的 ECDSA 金鑰組產生並填入輸出緩衝區。

詳細資料
參數
[out] aKeyPair
指向 ECDSA 金鑰組結構的金鑰,用於儲存產生的金鑰組。
回傳值
OT_ERROR_NONE
已成功產生新的金鑰組。
OT_ERROR_NO_BUFS
無法為緩衝區產生金鑰進行緩衝處理。
OT_ERROR_NOT_CAPABLE
系統不支援這項功能。
OT_ERROR_FAILED
無法產生金鑰組。

otPlatCryptoEcdsaGetPublicKey

otError otPlatCryptoEcdsaGetPublicKey(
  const otPlatCryptoEcdsaKeyPair *aKeyPair,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

從輸入內容取得相關聯的公開金鑰。

詳細資料
參數
[in] aKeyPair
指向儲存金鑰組的 ECDSA 金鑰組結構的指標。
[out] aPublicKey
指向 ECDSA 公開金鑰結構的指標,用於儲存公開金鑰。
回傳值
OT_ERROR_NONE
已成功擷取公開金鑰,並且更新了「aBuffer」。
OT_ERROR_PARSE
無法剖析金鑰組 DER 格式 (格式無效)。
OT_ERROR_INVALID_ARGS
aContext 為 NULL。

otPlatCryptoEcdsaSign

otError otPlatCryptoEcdsaSign(
  const otPlatCryptoEcdsaKeyPair *aKeyPair,
  const otPlatCryptoSha256Hash *aHash,
  otPlatCryptoEcdsaSignature *aSignature
)

使用輸入內容中的私密金鑰計算雜湊訊息的 ECDSA 簽名。

這種方法使用 RFC 6979 的確定性數位簽章產生程序。

詳細資料
參數
[in] aKeyPair
指向儲存金鑰組的 ECDSA 金鑰組結構的指標。
[in] aHash
指向儲存 SHA-256 雜湊結構的指標,用於儲存簽名計算的雜湊值。
[out] aSignature
指向 ECDSA 簽名結構的指標,以便輸出計算的簽章。
回傳值
OT_ERROR_NONE
已成功計算簽名,已更新 aSignature
OT_ERROR_PARSE
無法剖析金鑰組 DER 格式 (格式無效)。
OT_ERROR_NO_BUFS
無法分配緩衝區來計算簽名。
OT_ERROR_INVALID_ARGS
aContext 為 NULL。

otPlatCryptoEcdsaVerify

otError otPlatCryptoEcdsaVerify(
  const otPlatCryptoEcdsaPublicKey *aPublicKey,
  const otPlatCryptoSha256Hash *aHash,
  const otPlatCryptoEcdsaSignature *aSignature
)

使用輸入內容中的金鑰來驗證經雜湊處理訊息的 ECDSA 簽名。

詳細資料
參數
[in] aPublicKey
指向 ECDSA 公開金鑰結構的指標,這個金鑰用於儲存簽名的公開金鑰。
[in] aHash
指向 SHA-256 雜湊結構的指標,用於儲存簽名驗證的雜湊值。
[in] aSignature
指向需驗證驗證簽章值的 ECDSA 簽名結構的指標。
回傳值
OT_ERROR_NONE
已成功驗證簽名。
OT_ERROR_SECURITY
簽名無效。
OT_ERROR_INVALID_ARGS
索引鍵或雜湊無效。
OT_ERROR_NO_BUFS
無法分配緩衝區進行簽章驗證。

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
要確認的 Key Ref。
回傳值
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 資料擷取成功。
OT_ERROR_FAILED
HKDF 擷取失敗。

OTPPCryptoHkdfInit

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

otPlatCryptoHmacSha256 完成

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 必須「更新」 以傳回新的金鑰 ref.

詳細資料
參數
[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 Core 才會使用這個 API。

OTPPCryptoInit

void otPlatCryptoInit(
  void
)

初始化 Crypto 模組。

otPlatCryptoPbkdf2GenerateKey

void otPlatCryptoPbkdf2GenerateKey(
  const uint8_t *aPassword,
  uint16_t aPasswordLen,
  const uint8_t *aSalt,
  uint16_t aSaltLen,
  uint32_t aIterationCounter,
  uint16_t aKeyLen,
  uint8_t *aKey
)

使用 CMAC (AES-CMAC-PRF-128) 執行 PKCS#5 PBKDF2。

詳細資料
參數
[in] aPassword
產生金鑰時使用的密碼。
[in] aPasswordLen
密碼長度。
[in] aSalt
產生金鑰時使用的鹽。
[in] aSaltLen
鹽度。
[in] aIterationCounter
疊代次數。
[in] aKeyLen
產生的金鑰長度,以位元組為單位。
[out] aKey
指向產生的金鑰的指標。

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

將經加密的虛擬虛擬號碼產生器 (CSPRNG) 初始化。

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

在指定的緩衝區中填入經過加密保護的隨機位元組。

詳細資料
參數
[out] aBuffer
指向緩衝區填充的緩衝區指標。
[in] aSize
緩衝區大小 (要填入的位元組數)。
回傳值
OT_ERROR_NONE
成功在緩衝區中填入隨機值。
OT_ERROR_FAILED
作業失敗,

OTPPCryptoRandomInit

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

otPlatCryptoSha256 完成

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

巨集

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

代表 DER 格式的 EDCSA 金鑰組上限緩衝區 (以位元組為單位)。

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

代表 EDCSA 公開金鑰的緩衝區大小 (以位元組為單位)。

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

代表 EDCSA 簽名的緩衝區大小 (以位元組為單位)。

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

最大 PBKDF2 SALT 長度:鹽首前縮 (6) + 加強 panid (8) + 電縮名為 (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

SHA256 雜湊長度 (以位元組為單位)。

資源

OpenThread API 參考資料主題來自原始碼,可在 GitHub 取得。如需詳細資訊或為說明文件貢獻一己之力,請參閱資源