@@ -202,6 +202,54 @@ extern unsigned int my_rng_seed_gen(void);
202202/* アプリケーションレベルにおけるmy_rng_seed_gen()実装 * /
203203```
204204
205+ ## wc_SetSeed_Cb() コールバックとカスタムシード生成関数について
206+
207+ 潜在的な実装バグを避けるため、以下の手順でカスタムシード関数を追加することを推奨しています。
208+
209+ ステップ 1) `user_settings.h` または `settings.h` に以下を追加します。
210+
211+ ```c
212+ /* シードソース */
213+ extern unsigned int my_rng_seed_gen(byte* output, word32 sz);
214+ #undef CUSTOM_RAND_GENERATE_SEED
215+ #define CUSTOM_RAND_GENERATE_SEED my_rng_seed_gen
216+ ```
217+
218+ ここで、FIPS 140-3暗号処理を使用するもののFIPS 140-3検証の対象ではない、
219+ モジュール境界外のあらゆるものを *** Consuming Application*** と定義します。
220+ (ESVの対象となる可能性はありますが、それは140-3とは別のものです。)
221+
222+ ステップ 2) *** Consuming Application*** レベルでコールバック関数を実装します。
223+
224+ ``` c
225+ /* @param output エントロピービットを1バイトずつ埋め込むバッファ。
226+ * ソリューションがバイトではなくビットを返す場合、
227+ * 'sz' ではなく、'sz' の8倍の値を取得するようにしてください。
228+ * @param sz 出力バッファが保持できるバイト数。
229+ * 使用アプリケーションで宣言されたサイズに基づきます。
230+ */
231+ unsigned int my_rng_seed_gen (byte* output, word32 sz)
232+ {
233+ /* 以下のように実装してください。 * /
234+
235+ /* バッファ 'output' に 'sz' バイトのエントロピーを書き込みます。
236+ * 埋め込みに失敗した場合は、このシステムの適切なエラーコードを返します。
237+ * それ以外の場合は、成功を示す 0 を返します。
238+ */
239+ }
240+ ```
241+
242+ ステップ 3) 最後に、シード生成メカニズムとして ***のみ*** wolfSSL提供のコールバック `wc_GenerateSeed()` を使用してください。
243+ これを ***Consuming Application*** 内で以下のように登録します。
244+
245+ ```c
246+ #ifdef WC_RNG_SEED_CB
247+ wc_SetSeed_Cb(wc_GenerateSeed);
248+ #else
249+ #error "Module was not compiled with required setting WC_RNG_SEED_CB"
250+ #endif
251+ ```
252+
205253## POST
206254
207255FIPS 140-2において、POSTは「Power On Self Test」を意味していました。
@@ -275,7 +323,7 @@ if (wc_RunCast_fips(FIPS_CAST_RSA_SIGN_PKCS1v15) != 0){
275323}
276324```
277325
278- ## `wc_SetSeedCb()`は少し特殊です
326+ ## ` wc_SetSeedCb() ` はCAST'sとの関係において少し特殊です
279327
280328` wc_SetSeed_Cb() ` はDRBGの最初のオペレーショナル使用であり、そのためコールバックが初めて設定されるときにCASTが実行されます。
281329CASTでの競合状態を避けるため、ユーザーはスレッドごとではなく起動時に1回シードコールバックを設定します。
@@ -384,7 +432,7 @@ static inline int true_lock(void)
384432#endif
385433```
386434
387- ### 使用前にアンロック、使用後に再ロックが必要なAPIリスト
435+ ## 使用前にアンロック、使用後に再ロックが必要なAPIリスト
388436
389437```
390438* wc_PRF
0 commit comments