移植性
wolfProviderは、関連するwolfCryptおよびOpenSSLライブラリの移植性を活用するように設計しています。
対応プラットフォーム
wolfProviderはクロスプラットフォームであり、wolfSSLおよびOpenSSLがサポートする主要なプラットフォーム上でビルドできます。 対応プラットフォームは以下の通りです。
- Linuxおよびその他の*nix系システム。autoconfシステムを使用してビルドします(wolfProviderのビルドを参照)
- macOS
- Windows。
libwolfprov.dllをビルドするVisual Studio 2022ソリューションを使用します(wolfProviderのビルドを参照) - Android。
IDE/Android以下のビルドスクリプトを使用します - Appleプラットフォーム。
IDE/XCODE以下のフレームワークビルドスクリプトを使用します
Linux、macOS、Windows、Androidでは、FIPSビルドと非FIPSビルドの両方をサポートしています(AndroidビルドはUSE_FIPSオプションによるFIPS Readyをサポートします)。
スレッド対応
wolfProviderはスレッドセーフであり、必要に応じてwolfCryptのミューテックスロックメカニズムwc_LockMutex()、wc_UnLockMutex()を使用します。
wolfCryptには、サポートしているプラットフォーム用に抽象化されたミューテックス操作があります。
ただし、グローバル構成の設定関数は例外です。ログ設定関数(wolfProv_SetLogLevel()、wolfProv_SetLogComponents()、wolfProv_SetLoggingCb())とFIPSチェック状態は、内部同期を行わずにプロセス全体の状態を更新します。他のスレッドがプロバイダーを使用する前に、初期化時に一度だけ設定してください。
動的メモリ使用
wolfProviderはOpenSSLのメモリ割り当て関数を使用して、OpenSSLの動作との一貫性を維持します。
wolfProviderの内部で使用される割り当て関数には、OPENSSL_malloc()、OPENSSL_free()、OPENSSL_zalloc()、OPENSSL_realloc()があります。
ログ出力
wolfProviderはデフォルトでfprintf()によりstderrにログを出力します。
アプリケーションは、カスタムロギング関数を登録することでこれをオーバーライドできます。
詳しくは5章をご覧ください。
wolfProviderをコンパイルする際、以下のマクロを追加することでログの動作を調整できます。
WOLFPROV_USER_LOG - ログ出力に使用する関数名を定義するマクロ。fprintfの代わりに使用するカスタムログ関数を指定できます。
WOLFPROV_LOG_PRINTF - fprintf(stderr)ではなくprintf(stdout)を使用するよう切り替えるマクロ。WOLFPROV_USER_LOGまたはカスタムログコールバックを使用している場合は適用されません。