暗号 - プラットフォーム

このモジュールには、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,
  OT_CRYPTO_KEY_USAGE_VERIFY_HASH = 1 << 4
}
enum
鍵用途フラグを定義します。
otCryptoKeyAlgorithm{
  OT_CRYPTO_KEY_ALG_VENDOR,
  OT_CRYPTO_KEY_ALG_AES_ECB,
  OT_CRYPTO_KEY_ALG_HMAC_SHA_256,
  OT_CRYPTO_KEY_ALG_ECDSA
}
enum
鍵アルゴリズムを定義する。
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
鍵の保存タイプを定義します。
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
enum
キーのタイプを定義します。

Typedef

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
このデータ型はキー参照を表します。
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
SHA-256 ハッシュを表します。

変数

OT_TOOL_PACKED_END

関数

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 に保存されている鍵を破棄します。
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
渡された鍵参照から関連する公開鍵を取得します。
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
参照が渡された新しい ECDSA 鍵ペアを生成してインポートします。
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
出力バッファを生成して、新しい ECDSA 鍵ペアを入力します。
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
関連する公開鍵を入力コンテキストから取得します。
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
入力コンテキストの秘密鍵を使用して、ハッシュ化されたメッセージの ECDSA 署名を計算します。
otPlatCryptoEcdsaSignUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
渡された鍵参照を使用して、ハッシュ化されたメッセージの ECDSA 署名を計算します。
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
入力コンテキストの鍵を使用して、ハッシュ化されたメッセージの ECDSA 署名を検証します。
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
keyref を使用して、ハッシュされたメッセージの 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 抽出ステップを実行します。
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)
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

暗号オペレーションに必要な鍵マテリアルを表します。

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

鍵の用途: 署名ハッシュ。

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

鍵の使用: ハッシュを検証します。

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

鍵アルゴリズムを定義する。

プロパティ
OT_CRYPTO_KEY_ALG_AES_ECB

主要なアルゴリズム: AES ECB。

OT_CRYPTO_KEY_ALG_ECDSA

主要なアルゴリズム: ECDSA。

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_ECDSA

キータイプ: ECDSA。

OT_CRYPTO_KEY_TYPE_HMAC

キータイプ: HMAC。

OT_CRYPTO_KEY_TYPE_RAW

キータイプ: 元データ

Typedef

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

このデータ型はキー参照を表します。

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

SHA-256 ハッシュを表します。

変数

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

関数

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
aContext または aKey が NULL だった

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

PSA ITS に保存されている鍵を破棄します。

詳細
パラメータ
[in] aKeyRef
破棄される鍵参照
戻り値
OT_ERROR_NONE
鍵を破棄しました。
OT_ERROR_FAILED
鍵を破棄できませんでした。

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

渡された鍵参照から関連する公開鍵を取得します。

公開鍵の保存方法は、使用する暗号バックエンド ライブラリによって異なります(OPENTHREAD_CONFIG_CRYPTO_LIB)。

この API は公開鍵を、非圧縮曲線点のバイト シーケンス表現として返す必要があります(RFC 6605 - sec 4)

詳細
パラメータ
[in] aKeyRef
Key-ペアが保存されているスロットへのキー参照。
[out] aPublicKey
公開鍵を格納する ECDSA 公開鍵構造へのポインタ。
戻り値
OT_ERROR_NONE
公開鍵が取得され、aBuffer が更新されました。
OT_ERROR_PARSE
鍵ペアの DER 形式を解析できませんでした(無効な形式)。
OT_ERROR_INVALID_ARGS
aContext が NULL である。

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

参照が渡された新しい ECDSA 鍵ペアを生成してインポートします。

詳細
パラメータ
[in] aKeyRef
Key-ペアが保存されているスロットへのキー参照。
戻り値
OT_ERROR_NONE
新しい鍵ペアが正常に生成されました。
OT_ERROR_NO_BUFS
鍵生成用のバッファを割り当てることができませんでした。
OT_ERROR_NOT_CAPABLE
サポートされていません。
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 である。

otPlatCryptoEcdsaSignUsingKeyRef

otError otPlatCryptoEcdsaSignUsingKeyRef(
  otCryptoKeyRef aKeyRef,
  const otPlatCryptoSha256Hash *aHash,
  otPlatCryptoEcdsaSignature *aSignature
)

渡された鍵参照を使用して、ハッシュ化されたメッセージの ECDSA 署名を計算します。

RFC 6979 の決定性デジタル署名生成手順を使用します。

詳細
パラメータ
[in] aKeyRef
Key-ペアが保存されているスロットへのキー参照。
[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
署名検証用のバッファを割り当てることができませんでした。

otPlatCryptoEcdsaVerifyUsingKeyRef

otError otPlatCryptoEcdsaVerifyUsingKeyRef(
  otCryptoKeyRef aKeyRef,
  const otPlatCryptoSha256Hash *aHash,
  const otPlatCryptoEcdsaSignature *aSignature
)

keyref を使用して、ハッシュされたメッセージの ECDSA 署名を検証します。

詳細
パラメータ
[in] aKeyRef
Key-ペアが保存されているスロットへのキー参照。
[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
確認するキー参照。
戻り値
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
Info シーケンスへのポインタ。
[in] aInfoLength
Info シーケンスの長さ。
[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
aContext または aBuf が 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
aContext または aKey が 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
aContext または aBuf が 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_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 に設定されました。

この API は、OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE が有効になっている場合にのみ OT コアで使用されます。

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

Crypto モジュールを初期化します。

otPlatCryptoPbkdf2GenerateKey

otError 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
生成されたキーへのポインタ。
戻り値
OT_ERROR_NONE
新しい鍵ペアが正常に生成されました。
OT_ERROR_NO_BUFS
鍵生成用のバッファを割り当てることができませんでした。
OT_ERROR_NOT_CAPABLE
サポートされていません。
OT_ERROR_FAILED
キーを生成できませんでした。

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
aContext または aHash が 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
aContext または aBuf が NULL だった

マクロ

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

EDCSA 鍵ペアを DER 形式で表す最大バッファサイズ(バイト単位)。

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 で入手できるソースコードに由来しています。 詳細について、またはドキュメントへの投稿については、リソースをご覧ください。