wolfSSL FIPS Ready
Documentation and Users Guide
May 11, 2023, version 5.0.0

wolfSSL FIPS Ready
FIPS認証の取得が求められるプロジェクトには、wolfSSL FIPS Ready版が役立ちます。wolfSSL
ソースツリーに含まれるFIPS対応の暗号レイヤーを用いて、FIPS認証を取得する手間を低減できます。FIPS Ready版はFIPS版と同一の構成ですが、認証は取得していません。必要なタイミ
ングでFIPS認証プロセスを実行する準備が整っています。FIPS Ready版にはFIPSコードが組み込まれており、FIPS
140-3に示されるデフォルト・エントリーポイントの実用例やConditional
Algorithm Self-tests(CAST)を含んでいます。必要なタイミングで実行環境をテストし、wolfSSLの
既存のFIPS 140-3認証に追加、または新たなFIPS140-3認証を申請することですべての手続きが完了します。
FIPS Ready版はオープンソースと商用ライセンスのデュアルライセンスで提供しており、GPLv3
ライセンス下で動作検証を行っていただけます。その後商用環境でご利用いただくには、商用ライセンス契約が必要です。
FIPSは複雑なトピックです。このドキュメントをご覧いただいた後、ご質問がありましたら
info@wolfssl.jpまでお問い合わせください。

非FIPS版との違い
wolfCrypt FIPS APIは、FIPS環境内に存在するすべてのアルゴリズム関数のラッパーを提供します。FIPS APIをご利用にならず、非FIPS版にも存在するAPIを用いてコードを記述いただくことも可能です。いずれの場合でも、コンパイル時に自動的にwolfCrypt FIPS APIに置換します。FIPS
APIは、実際の関数を呼び出す前に内部ステータスのセルフテストを行います。そして各アルゴ
Copyright © 2024 wolfSSL Inc. All rights reserved.
1

リズムの初回実行時にCASTが実行します。このようなタイミングでの実行を避けたい場合は、起動時に予め各テストを実行することも可能です。
wolfCrypt FIPS 140-3 Ready版のコードには、メモリ内の実行可能ファイルの整合性を自動的にチェックする必須の電源投入時自己テスト (POST) が含まれています。これにはアルゴリズムのKnown Answere Tests (KAT) が含まれており、140-2 以降変更しておりません。 POST で使用しないものは、使用が条件付きになりました。実行可能ファイルは、FIPS環境内のコードがメモ
リ内で隣接するように設計しています。FIPSコードを使用するアプリケーションが起動するか、共有ライブラリがロードされると、ライブラリのデフォルトエントリーポイントを呼び出し、POSTを
自動的に実行します。これには、コア内のメモリチェックとPOSTで使用するアルゴリズム(HMAC-SHA256)のためのKATの2つが含まれます。
まずHMAC-SHA256のPOSTを実行し、次いでコア内メモリテストを実行します。メモリ内のコー
ドはHMAC-SHA256でハッシュを取り、一致した場合のみテストを続行します。一致しなければFIPSモジュールはエラー状態となり、整合性が取れるまですべての呼び出しは成功しません。
FIPS環境内の他のアルゴリズムは、初回使用時または開発者が指定したタイミングで既定のデータを用いてテストします。出力は事前に計算された回答と比較します。テスト値はすべてFIPS環境内に存在し、呼び出された際にチェックします。署名と検証などのいくつかのテスト
ではランダム性を含むため、既知のデータを署名し既知のデータで検証します。鍵の生成も同様にテストします。

wolfSSL FIPS Ready版のビルド手順
通常版と大きな差はありませんが、いくつかの追加手順が必要です。
ここでは、LinuxまたはmacOS環境でwolfSSL FIPS Ready GPL v3版を利用し、システムに共有ライブラリとしてインストールする手順を示します。
1. ソースコードを解凍します$ tar xzvf wolfssl-5.6.0-gplv3-fips-ready.tar.gz$ cd wolfssl-5.6.0-gplv3-fips-ready

ソースコードを解凍し、生成されたディレクトリに移動します。商用リリースを受け取った場
合は、gplv3をcommercialに、.tar.gz を .7z に、tar xzvf を 7z x -p<password> に置き換えてください。
2. ビルドを構成します$ ./configure --enable-fips=ready

このコマンドは、FIPS Ready版のwolfSSLを構築するようにMakefileを構成します。
3. ライブラリをビルドします
Copyright © 2024 wolfSSL Inc. All rights reserved.
2

$ make

これにより、すべてのソースがコンパイルされライブラリがリンクされます。 また、サンプル
ツールとテストツールも構築します。
4. コアメモリのハッシュを更新します$ ./fips-hash.sh$ make # Re-build once the hash has been updated

このステップでコア内メモリ テストのハッシュを計算し、更新する必要があります。
wolfCrypt テストは、fips-hash.sh スクリプトによって呼び出されたときに失敗するはずです。次のメッセージが出力されます。(ハッシュ値は一意であることにご注意ください)in my Fips callback, ok = 0, err = -203
message = In Core Integrity check FIPS error
hash = 8D29242F610EAEA179605BB1A99974EBC72B0ECDB26B483B226A729F36FC82A2
In core integrity hash check failure, copy above hashinto verifyCore[] in fips_test.c and rebuild

ビルド時に他のオプションを追加するとハッシュ値が変化する可能性があるため、この手順を繰り返す必要があります。 またアプリケーションに変更を加えると、アプリケーションを再コンパイルしたときにメモリ内の FIPS 境界が移動する可能性があります。 アプリケーションのみが更新された場合のハッシュの変化は、モジュールが影響を受けていることを示すものではな
く、メモリ内の所定の位置にシフトされたことを示します。 これは、静的ライブラリとして使用する場合に発生します。 共有ライブラリではこの問題は発生しません。
4.1 提供している fips-hash.sh スクリプトを使用せずに上記を実行する場合は、ファイル wolfcrypt/src/fips_test.c を編集してハッシュを手動で更新するか、次のような設定を使用することができます。
$ ./configure --enable-fips=ready
CFLAGS=”-DWOLFCRYPT_FIPS_CORE_HASH_VALUE=8D29242F610EAEA179605BB1A99974EB
C72B0ECDB26B483B226A729F36FC82A2”

4.2 再びmakeを実行します。
5. ビルドを検証します$ make check

Makefile 内のチェック ターゲットは、wolfSSLおよびwolfCryptで提供されるすべてのテスト
ツールとスクリプトです。すべてが正常であれば、次の出力が表示されるはずです。
PASS: scripts/resume.test
PASS: scripts/external.test
PASS: scripts/google.test
PASS: testsuite/testsuite.test
PASS: scripts/openssl.test
Copyright © 2024 wolfSSL Inc. All rights reserved.
3

PASS: tests/unit.test=======================================================================
Testsuite summary for wolfssl 4.0.0=======================================================================# TOTAL: 6# PASS: 6# SKIP: 0# XFAIL: 0# FAIL: 0# XPASS: 0# ERROR: 0=======================================================================

6. ライブラリをインストールします$ make install

Makefile 内のinstallターゲットにより、すべてのヘッダーとライブラリがシステムにインストー
ルされます。デフォルトでは /usr/local 配下にインストールします。
これで、アプリケーションのビルド時にwolfSSL FIPS Ready版をご利用いただけます。

FIPS 140-2 Ready版からの変更点
1. FIPSモードで実行する場合は、アプリケーションレベルで wc_SetSeed_Cb を呼び出す必要があります。
a. +#ifdef WC_RNG_SEED_CB
b. + wc_SetSeed_Cb(wc_GenerateSeed);c. +#endif
2. 鍵アクセス管理
a. wolfSSL(SSL/TLS)APIを呼び出す場合には、この項による影響はありません。しかしCrypt API(wc_XXX)を呼び出す場合には、次のステップをご参照ください。
b. 秘密鍵のロードまたは使用を伴う wolfCrypt (wc_XXX) API を直接呼び出す場合
は、アプリケーション レベルで鍵へのアクセスを管理する必要があります。具体的には、秘密鍵のロードや使用前に、アプリケーションでPRIVATE_KEY_UNLOCK()
を呼び出してロックを解除しなければなりません。使用後には
PRIVATE_KEY_LOCK()を呼び出して再度ロックする必要があります。
i. PRIVATE_KEY_UNLOCK()とPRIVATE_KEY_LOCK()は、アプリケーションの起動時及びシャットダウン時にそれぞれ1回だけ呼び出すことも可能です。
ii. 秘密鍵のロードや使用の前後で都度これらを呼び出すことで、より厳密なアクセス管理を実現できます。
** アプリケーション終了前に、必ずロックする必要があります。
これはドキュメント要件であり、実行時にエラーや終了防止によって強制されるもCopyright © 2024 wolfSSL Inc. All rights reserved.
4

のではありません。 終了する前にキーを再ロックしないと、アプリケーションは「FIPS に準拠していない」ことになります。
c. アプリケーションをwolfSSL FIPS版と非FIPS版の両方にリンクできるようにするには、次のように実装します。
#if !defined(PRIVATE_KEY_LOCK) && !defined(PRIVATE_KEY_UNLOCK)#define PRIVATE_KEY_LOCK() do {} while (0)#define PRIVATE_KEY_UNLOCK() do {} while (0)#endifwolfCrypt FIPS Ready API Documentation
以下は、wolfCrypt FIPS Ready API の概要です。 詳細はwolfCrypt API ドキュメントを参照
してください。

詳細

API名
デジタル署名InitRsaKey_fips

オプションのヒープ ヒント p で使用するRSA鍵オブジェクトを初期化します。
成功すると 0、エラーの場合は負値を返します。

FreeRsaKey_fips

RSA鍵リソースを解放します。
成功すると 0、エラーの場合は負値を返します。

RsaSSL_Sign_fips

サイズ inLen の入力 in に対して RSA鍵署名操作を実行
し、rng を使用してサイズ outLen の out に出力します。
成功すると 0、エラーの場合は負値を返します。

RsaSSL_VerifyInline_fips

サイズ inLen の入力 in に一時メモリを割り当てずに RSA
鍵検証を実行し、出力 out に書き込みます。
成功すると 0、エラーの場合は負値を返します。

RsaSSL_Verify_fips

サイズ inLen の入力 in に対して RSA鍵検証を実行し、サイズ outLen の出力 out に書き込みます。
成功すると 0、エラーの場合は負値を返します。

Copyright © 2024 wolfSSL Inc. All rights reserved.
5

RsaPSS_Sign_fips

サイズ inLen の入力 in に対して PSS パディングを使用してRSA鍵署名操作を実行し、rng を使用してサイズ outLen のout に出力します。 マスク生成関数 mgf を使用したハッシュアルゴリズム hash を使用します。
成功すると 0、エラーの場合は負値を返します。

RsaPSS_SignEx_fips

サイズ inLen の入力 in に対して PSS パディングを使用してRSA鍵署名操作を実行し、rng を使用してサイズ outLen のout に出力します。 これは、マスク生成関数 mgf とソルト長の SaltLen を備えたハッシュアルゴリズム hash を使用します。
成功すると 0、エラーの場合は負値を返します。

RsaPSS_VerifyInline_fips

サイズ inLen の入力 in に一時メモリを割り当てずに RSA
鍵検証を実行し、出力 out に書き込みます。 マスク生成
関数 mgf を使用したハッシュアルゴリズム hash を使用します。
成功すると 0、エラーの場合は負値を返します。

RsaPSS_VerifyInlineEx_fips

サイズ inLen の入力 in に対して RSA鍵検証を実行し、サイズ outLen の出力 out に書き込みます。 ハッシュアルゴ
リズム hash とマスク生成関数 mgf およびソルト長のSaltLen を使用します。
成功すると 0、エラーの場合は負値を返します。

RsaPSS_Verify_fips

サイズ inLen の入力 in に対して RSA鍵検証を実行し、サイズ outLen の出力 out に書き込みます。 ハッシュアルゴ
リズム hash とマスク生成関数 mgf を使用します。
成功すると 0、エラーの場合は負値を返します。

RsaPSS_VerifyEx_fips

サイズ inLen の入力 in に対して RSA鍵検証を実行し、サイズ outLen の出力 out に書き込みます。 ハッシュアルゴ
リズム hash とマスク生成関数 mgf およびソルト長のSaltLen を使用します。
成功すると 0、エラーの場合は負値を返します。

RsaPSS_CheckPadding_fips

ハッシュ hashType を使用して、サイズ sigSz の署名 sig を
サイズ inSz の入力 in での RSA鍵検証後のパディングをチェックします。
成功すると 0、エラーの場合は負値を返します。

Copyright © 2024 wolfSSL Inc. All rights reserved.
6

RsaPSS_CheckPaddingEx_fips

ハッシュ hashType と長さ saltLen の salt を使用して、サイズ sigSz の署名 sig をサイズ inSz の入力 in での RSA鍵検証後のパディングをチェックします。
成功すると 0、エラーの場合は負値を返します。

RsaEncryptSize_fips

RSA鍵の出力サイズを取得します。
成功した場合は鍵の出力サイズ(正値)、エラーの場合は負値を返します。

wc_RsaPrivateKeyDecode

サイズ inSz のインデックス inOutIdx で始まるバッファ入力
in から RSA秘密鍵をデコードします。
成功すると 0、エラーの場合は負値を返します。

wc_RsaPublicKeyDecode

サイズ inSz のインデックス inOutIdx で始まるバッファ入力
in から RSA公開鍵をデコードします。
成功すると 0、エラーの場合は負値を返します。

ecc_init_fips

ECC鍵オブジェクトを使用するために初期化します。
成功すると 0、エラーの場合は負値を返します。

ecc_free_fips

ECC鍵オブジェクトのリソースを解放します。
成功すると 0、エラーの場合は負値を返します。

ecc_import_x963_fips

サイズ inLen の入力 in から ANSI X9.63 形式の ECC公開鍵
をインポートします。
成功すると 0、エラーの場合は負値を返します。

ecc_sign_hash_fips

長さ inlen の入力 in に対して ECC鍵署名操作を実行し、rng を使用して長さ outlen の out に出力します。
成功すると 0、エラーの場合は負値を返します。

ecc_verify_hash_fips

長さ hashlen のハッシュを使用して、サイズ siglen の sig のECC鍵検証を実行します。
署名検証結果はresで返します。
成功すると 0、エラーの場合は負値を返します。
鍵生成

MakeRsaKey_fips

乱数発生器 rng にモジュラス長 size と指数 e を使用してRSA鍵を生成します。
成功すると 0、エラーの場合は負値を返します。

Copyright © 2024 wolfSSL Inc. All rights reserved.
7

CheckProbablePrime_fips

長さ nlen のポテンシャル係数については、サイズ
pRawSz の候補数 pRaw とサイズ qRawSz の qRaw をチェックして、それらがおそらく素数であるかどうかを確認します。 両方とも、サイズ eRawSz が 1 の指数 eRaw を持つ GCD を持つ必要があります。主な候補はMiller-Rabin でチェックします。 結果は isPrime に書き込みます。
成功すると 0、エラーの場合は負値を返します。

RsaExportKey_fips

RSA鍵を、eSz の e、nSz の n、dSz の d、pSz の p、qSzの q のコンポーネントとして出力します。 サイズはバッ
ファのサイズである必要があり、数値の実際の長さに更新されます。
成功すると 0、エラーの場合は負値を返します。

ecc_make_key_fips

rng を使用して、サイズ keysize の鍵 key に対して ECC
鍵生成操作を実行します。
成功すると 0、エラーの場合は負値を返します。

ecc_make_key_ex_fips

rng を使用して、楕円曲線 curve_id を持つサイズ
keysize の鍵 key に対して ECC鍵生成操作を実行します。
成功すると 0、エラーの場合は負値を返します。

ecc_export_x963_fips

ECC公開鍵を ANSI X9.63 形式でサイズ outLen の outに出力します。
成功すると 0、エラーの場合は負値を返します。

InitDhKey_fips

DH鍵オブジェクトを使用できるように初期化します。
成功すると 0、エラーの場合は負値を返します。

FreeDhKey_fips

DH鍵リソースを解放します。
成功すると 0、エラーの場合は負値を返します。

DhSetKeyEx_fips

サイズ pSz の符号なしバイナリ入力 p、サイズ qSz の q、およびサイズ gSz の g から DH鍵のグループパラメー
ターを設定します。
成功すると 0、エラーの場合は負値を返します。

DhGenerateKeyPair_fips

DH鍵の rng を使用して、サイズ pubSz の公開鍵 pub、
サイズ privSz の秘密鍵 priv を生成します。
成功すると 0、エラーの場合は負値を返します。

CheckRsaKey_fips

RSA鍵に対してペアごとの鍵検証を実行します。
成功すると 0、エラーの場合は負値を返します。

Copyright © 2024 wolfSSL Inc. All rights reserved.
8ecc_check_key_fips

ECC鍵に対してペアごとの鍵検証を実行します。
成功すると 0、エラーの場合は負値を返します。

DhCheckPubKeyEx_fips

鍵内のドメインパラメーターまたはサイズ primeSz の素
数 prime を用いて、サイズ pubSz の pub 値に対して数学的鍵検証を実行します。

DhCheckPrivKeyEx_fips

鍵内のドメインパラメーターまたはサイズ primeSz の素
数 prime を用いて、サイズ privSz の priv 値に対して数学的鍵検証を実行します。

DhCheckKeyPair_fips

ドメインパラメーターを使用して、サイズ pubSz の pub 値とサイズ privSz の priv 値の間でペアごとの鍵検証を実行します。
成功すると 0、エラーの場合は負値を返します。

HKDF_fips

ハッシュ type とサイズ inKeySz の inKey、長さ saltSz の
ソルト salt と infoSz の情報 info を使用して、HMAC ベースの鍵導出関数を実行します。 鍵はサイズ outSz の出
力 out に書き込みます。
成功すると 0、エラーの場合は負値を返します。
鍵合意

ecc_shared_secret_fips

privKey とペアの pubKey を使用して ECDHE 鍵合意操作を実行し、結果を長さsharedSzのsharedSecretに保存します。
成功すると 0、エラーの場合は負値を返します。

DhAgree_fips

サイズ privSz の DH秘密鍵 priv とサイズ pubSz のペアの
公開鍵 otherPub を使用して、サイズ acceptSz の合意
agree を作成します。
成功すると 0、エラーの場合は負値を返します。
鍵転送

RsaPublicEncrypt_fips

サイズ inLen の入力 in に対してRSA公開鍵を用いて暗号化し、rng を使用してサイズ outLen の出力 out に書き込みます。
成功すると 0、エラーの場合は負値を返します。

RsaPublicEncryptEx_fips

サイズ inLen の入力 in に対してRSA公開鍵を用いて暗号化し、rng を使用してサイズ outLen の出力 out に書き込みます。ハッシュtype のパディングを使用します。 PSS パ
ディングを使用する場合は、サイズ labelSz のラベル label

Copyright © 2024 wolfSSL Inc. All rights reserved.
9

を持つハッシュと mgf を使用します。
成功すると 0、エラーの場合は負値を返します。
サイズ inLen の入力 in に一時メモリを割り当てずにRSA秘密鍵を用いて復号し、出力 out に書き込みます。

RsaPrivateDecryptInline_fips

成功すると 0、エラーの場合は負値を返します。
RsaPrivateDecryptInlineEx_fips

サイズ inLen の入力 in に一時メモリを割り当てずにRSA秘密鍵を用いて復号し、出力 out に書き込みます。 typeのパディングを使用します。 PSS パディングを使用する場合
は、サイズ labelSz のラベル label を持つハッシュと mgf を使用します。
成功すると 0、エラーの場合は負値を返します。

RsaPrivateDecrypt_fips

サイズ inLen の入力 in に対して RSA秘密鍵を用いて復号し、サイズ outLen の出力 out に書き込みます。
成功すると 0、エラーの場合は負値を返します。

RsaPrivateDecryptEx_fips

サイズ inLen の入力 in に対して RSA秘密鍵を用いて復号し、サイズ outLen の出力 out に書き込みます。 type のパディングを使用します。 PSS パディングを使用する場合
は、サイズ labelSz のラベル label を持つハッシュと mgf を使用します。
成功すると 0、エラーの場合は負値を返します。
鍵付きハッシュ

HmacSetKey_fips

ハッシュ type を使用して、サイズ keySz の鍵 keyで hmac
オブジェクトを初期化します。
成功すると 0、エラーの場合は負値を返します。

HmacUpdate_fips

サイズ len の入力 data に対して hmac Update を実行します。
成功すると 0、エラーの場合は負値を返します。

HmacFinal_fips

hmac
す。

Finalを実行し、ダイジェストをハッシュに出力しま成功すると 0、エラーの場合は負値を返します。

Copyright © 2024 wolfSSL Inc. All rights reserved.
10Gmac_fips

サイズ authInSz の入力 authIn に対して GMAC を実行し、
サイズ authTagSz の authTag を出力します。 長さ keySz の
鍵 key を使用し、乱数発生器 rng を使用して iv に格納す
る長さ ivSz の IV をランダムに生成します。
成功すると 0、エラーの場合は負値を返します。

GmacVerify_fips

長さ keySz の鍵 key と長さ ivSz の iv を使用して、サイズ
authInSz の入力 authIn 上の長さ authTagSz の GMAC
authTag を検証します。
成功すると 0、エラーの場合は負値を返します。

InitCmac_fips

ハッシュ type を使用して、サイズ keySz の鍵 key で cmac
オブジェクトを初期化します。
成功すると 0、エラーの場合は負値を返します。

CmacUpdate_fips

サイズ inSz の入力 in に対して cmac Update を実行します。
成功すると 0、エラーの場合は負値を返します。

CmacFinal_fips

cmac Final を実行し、サイズ outSz の出力 outにダイジェス
トを出力します。これは実際の出力サイズで更新されます。
成功すると 0、エラーの場合は負値を返します。
メッセージダイジェスト

InitSha_fips

sha オブジェクトを使用できるように初期化します。
成功すると 0、エラーの場合は負値を返します。

ShaUpdate_fips

サイズ len の入力 data に対して SHA-Update を実行します。
成功すると 0、エラーの場合は負値を返します。

ShaFinal_fips

sha Finalを実行し、ダイジェストをハッシュに出力します。
成功すると 0、エラーの場合は負値を返します。

InitSha224_fips

sha224 オブジェクトを使用できるように初期化します。
成功すると 0、エラーの場合は負値を返します。

Sha224Update_fips

サイズ len の入力 data に対して sha224 Update を実行します。
成功すると 0、エラーの場合は負値を返します。

Copyright © 2024 wolfSSL Inc. All rights reserved.
11

Sha224Final_fips

sha224す。

Finalを実行し、ダイジェストをハッシュに出力しま成功すると 0、エラーの場合は負値を返します。
InitSha256_fips

sha256 オブジェクトを使用できるように初期化します。
成功すると 0、エラーの場合は負値を返します。

Sha256Update_fips

サイズ len の入力 data に対して sha256 Update を実行します。
成功すると 0、エラーの場合は負値を返します。

Sha256Final_fips

sha256す。

Finalを実行し、ダイジェストをハッシュに出力しま成功すると 0、エラーの場合は負値を返します。
InitSha384_fips

sha384 オブジェクトを使用できるように初期化します。
成功すると 0、エラーの場合は負値を返します。

Sha384Update_fips

サイズ len の入力 data に対して sha384 Update を実行します。
成功すると 0、エラーの場合は負値を返します。

Sha384Final_fips

sha384す。

Finalを実行し、ダイジェストをハッシュに出力しま成功すると 0、エラーの場合は負値を返します。
InitSha512_fips

sha512 オブジェクトを使用できるように初期化します。
成功すると 0、エラーの場合は負値を返します。

Sha512Update_fips

サイズ len の入力 data に対して sha512 Update を実行します。
成功すると 0、エラーの場合は負値を返します。

Sha512Final_fips

sha512す。

Finalを実行し、ダイジェストをハッシュに出力しま成功すると 0、エラーの場合は負値を返します。
InitSha3_224_fips

sha3 (224 ビット) オブジェクトを使用できるように初期化します。
成功すると 0、エラーの場合は負値を返します。

Copyright © 2024 wolfSSL Inc. All rights reserved.
12

Sha3_224_Update_fips

サイズ len の入力 data に対して sha3 (224 ビット) 更新を実行します。
成功すると 0、エラーの場合は負値を返します。

Sha3_224_Final_fips

sha3 (224 ビット) Final を実行し、ダイジェストをハッシュに出力します。
成功すると 0、エラーの場合は負値を返します。

InitSha3_256_fips

sha3 (256 ビット) オブジェクトを使用できるように初期化します。
成功すると 0、エラーの場合は負値を返します。

Sha3_256_Update_fips

サイズ len の入力 data に対して sha3 (256 ビット) 更新を実行します。
成功すると 0、エラーの場合は負値を返します。

Sha3_256_Final_fips

sha3 (256 ビット) Final を実行し、ダイジェストをハッシュに出力します。
成功すると 0、エラーの場合は負値を返します。

InitSha3_384_fips

sha3 (384 ビット) オブジェクトを使用できるように初期化します。
成功すると 0、エラーの場合は負値を返します。

Sha3_384_Update_fips

サイズ len の入力 data に対して sha3 (384 ビット) 更新を実行します。
成功すると 0、エラーの場合は負値を返します。

Sha3_384_Final_fips

sha3 (384 ビット) Final を実行し、ダイジェストをハッシュに出力します。
成功すると 0、エラーの場合は負値を返します。

InitSha3_512_fips

sha3 (512 ビット) オブジェクトを使用できるように初期化します。
成功すると 0、エラーの場合は負値を返します。

Sha3_512_Update_fips

サイズ len の入力 data に対して sha3 (512 ビット) 更新を実行します。
成功すると 0、エラーの場合は負値を返します。

Sha3_512_Final_fips

sha3 (512 ビット) Final を実行し、ダイジェストをハッシュに出力します。

Copyright © 2024 wolfSSL Inc. All rights reserved.
13成功すると 0、エラーの場合は負値を返します。
乱数生成
InitRng_fips

RNG オブジェクトを使用できるように初期化します。
成功すると 0、エラーの場合は負値を返します。

InitRngNonce_fips

サイズ nonceSz の nonce で使用するために RNG オブジェ
クトを初期化します。
成功すると 0、エラーの場合は負値を返します。

FreeRng_fips

RNG リソースを解放し、状態をゼロにします。
成功すると 0、エラーの場合は負値を返します。
ゼロライズサービスの一部でもあります。

RNG_GenerateBlock_fips

ユーザー用の RNG 出力のブロックを bufSz バイトの bufに取得します。
成功すると 0、エラーの場合は負値を返します。

RNG_HealthTest_fips

reseed が 0 の場合、entropyASz バイトのシードバッファ
entropyA を使用して、outputSz バイトの予想される出力に対して RNG の一時インスタンスの出力をテストします。
このとき、entropyB と entropyBSz は無視されます。
reseed が 1 の場合、テストではサイズ entropyBSz のシー
ド バッファ entropyB を使用して RNG の一時インスタンスも再シードし、サイズが outSz バイトの予想される出力に対して RNG をテストします。
成功すると 0、エラーの場合は負値を返します。
ステータス出力

wolfCrypt_GetStatus_fips

モジュールの現在のステータスを返します。返り値 0 は、
モジュールがエラーのない状態にあることを意味します。
その他の返り値は、モジュールが特定のエラー状態にあることを示します。

wolfCrypt_GetVersion_fips

wolfCryptライブラリバージョンのnull終端文字列へのポインタを返します。

wolfCrypt_GetCoreHash_fips

コアハッシュのnull終端文字列へのポインタを 16 進数で
返します。
共通鍵暗号
Copyright © 2024 wolfSSL Inc. All rights reserved.
14

AesSetKey_fips

長さ keylen の userKey を使用して AES オブジェクトを初期化します。dir は方向(暗号化/復号)を示し、iv はオプションです。
成功すると 0、エラーの場合は負値を返します。

AesSetIV_fips

ユーザー iv を使用して AES オブジェクトを初期化します。
成功すると 0、エラーの場合は負値を返します。

AesCbcEncrypt_fips

入力 in に対してAES CBC 暗号化を実行し、サイズ sz のout に出力します。
成功すると 0、エラーの場合は負値を返します。

AesCbcDecrypt_fips

入力 in に対してAES CBC 復号を実行し、サイズ sz の outに出力します。
成功すると 0、エラーの場合は負値を返します。

AesEcbEncrypt_fips

入力 in に対してAES ECB 暗号化を実行し、サイズ sz のout に出力します。
成功すると 0、エラーの場合は負値を返します。

AesEcbDecrypt_fips

入力 in に対してAES ECB 復号を実行し、サイズ sz の outに出力します。

AesCtrEncrypt_fips

入力 in に対してAES CTR 暗号化を実行し、サイズ sz のout に出力します。
成功すると 0、エラーの場合は負値を返します。
この API は CTR 復号も実行します。

AesGcmSetKey_fips

長さ len の鍵を使用して AES オブジェクトを初期化します。
成功すると 0、エラーの場合は負値を返します。

AesGcmSetExtIV_fips

外部で生成された長さ ivSz の iv を使用して AES オブジェ
クトを初期化します。
成功すると 0、エラーの場合は負値を返します。

AesGcmSetIV_fips

最初の ivFixedSz バイトとして ivFixed を使用し、残りは rng
からのランダム バイトであることを使用して、長さ ivSz の内部生成された IV で AES オブジェクトを初期化します。
成功すると 0、エラーの場合は負値を返します。

Copyright © 2024 wolfSSL Inc. All rights reserved.
15

AesGcmEncrypt_fips

入力 in からサイズ outSz の 出力 outに対して AES GCM 暗号化を実行します。 現在の IV は、長さ ivOutSz のバッファ
ivOut に格納します。 認証タグは、サイズ authTagSz のバッファ authTag に格納します。 authIn からの authInSz バ
イトが計算されて認証タグに組み込まれます。
成功すると 0、エラーの場合は負値を返します。

AesGcmDecrypt_fips

サイズ ivSz の iv を使用して、入力 in に対して AES GCM 復号を実行し、サイズ sz の out に出力します。 サイズ
authTagSz の authTag は、authInSz バイトの入力 authIn を使用してチェックします。
成功すると 0、エラーの場合は負値を返します。

AesCcmSetKey_fips

長さ keySz の鍵 key を使用して AES オブジェクトを初期化します。
成功すると 0、エラーの場合は負値を返します。

AesCcmSetNonce_fips

外部で生成された長さ nonceSz の nonce を使用して AES
オブジェクトを初期化します。
成功すると 0、エラーの場合は負値を返します。

AesCcmEncrypt_fips

入力 in からサイズ outSz の 出力 outに対して AES CCM 暗号化を実行します。 現在の IV は、長さ nonceSz のバッ
ファ nonce に格納します。 認証タグは、サイズ authTagSzのバッファ authTag に格納します。 authIn からの authInSz
バイトが計算されて認証タグに組み込まれます。
成功すると 0、エラーの場合は負値を返します。

AesCcmDecrypt_fips

サイズ nonceSz の nonce を使用して、サイズ inSz の入力
in に対して AES CCM 復号を実行し、out に出力します。 サイズ authTagSz の authTag は、authIn の入力バイトとauthInSz バイトを使用してチェックします。
成功すると 0、エラーの場合は負値を返します。

Des3_SetKey_fips

des3 オブジェクトを鍵 key で初期化します。dir は方向(暗号化/復号)を示し、iv はオプションです。
成功すると 0、エラーの場合は負値を返します。

Des3_SetIV_fips

des3 オブジェクトをユーザー iv で初期化します。
成功すると 0、エラーの場合は負値を返します。

Des3_CbcEncrypt_fips

サイズ sz の入力 in から出力 out へ DES3 CBC 暗号化を実行します。
Copyright © 2024 wolfSSL Inc. All rights reserved.
16成功すると 0、エラーの場合は負値を返します。
Des3_CbcDecrypt_fips

サイズ sz の入力 in から出力 out へ DES3 CBC 復号を実行します。
成功すると 0、エラーの場合は負値を返します。
ゼロライズ

FreeRng_fips

RNG CSP を破棄します。 他のすべてのサービスは、メモリバインドされた CSP を自動的に上書きします。
成功すると 0、エラーの場合は負値を返します。
スタックのクリーンアップはアプリケーションの義務です。
汎用コンピュータを再起動すると、RAM 内のすべての CSPがクリアされます。

表 1: Map of FIPS 140-3 Services to API Entry Points

Copyright © 2024 wolfSSL Inc. All rights reserved.
17