Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

暗号 - プラットフォーム

このモジュールには、暗号のプラットフォーム抽象化が含まれています。

概要

列挙型

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
}
列挙型
この列挙型は、鍵タイプを定義します。

Typedef

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
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

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

列挙型

匿名列挙型

 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。

otPlaceholderAlgorithm

 otCryptoKeyAlgorithm

この列挙型は、鍵アルゴリズムを定義します。

プロパティ
OT_CRYPTO_KEY_ALG_AES_ECB

鍵アルゴリズム: AES ECB。

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

鍵アルゴリズム: HMAC SHA-256

OT_CRYPTO_KEY_ALG_VENDOR

鍵アルゴリズム: ベンダー定義。

otDrawableStorage

 otCryptoKeyStorage

この列挙型は、主なストレージ タイプを定義します。

プロパティ
OT_CRYPTO_KEY_STORAGE_PERSISTENT

キーの永続性: キーは永続的です。

OT_CRYPTO_KEY_STORAGE_VOLATILE

キーの永続性: キーは揮発性です。

OT 暗号鍵のタイプ

 otCryptoKeyType

この列挙型は、鍵タイプを定義します。

プロパティ
OT_CRYPTO_KEY_TYPE_AES

キータイプ: AES

OT_CRYPTO_KEY_TYPE_HMAC

キータイプ: HMAC

OT_CRYPTO_KEY_TYPE_RAW

キータイプ: 元データ

Typedef

otCryptoContext

struct otCryptoContext otCryptoContext

OT 暗号鍵

struct otCryptoKey otCryptoKey

otPlaceholderRef

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
aContext または aKey が 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
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 に鍵をインポートします。

注: OT_CRYPTO_KEY_STORAGE_PERSISTENT が aKeyPersistence に渡された場合、aKeyRef が入力されるため、プラットフォームは指定された aKeyRef を使用する必要があり、変更してはなりません。 OT_CRYPTO_KEY_STORAGE_VOLATILE が aKeyPersistence に渡された場合、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 Core でのみ使用されます。

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
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 でした

リソース

OpenThread API リファレンスのトピックは、GitHub で入手可能なソースコードに基づいています。 詳細またはドキュメントへの投稿については、リソースをご覧ください。