Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions wolfProvider/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,13 @@ SOURCES = chapter01.md \
chapter07.md \
chapter08.md \
chapter09.md \
chapter10.md
chapter10.md \
chapter11.md

ifeq ($(DOC_LANG),JA)
PDF = wolfProvider-Manual-jp.pdf
else
PDF = wolfProvider-Manual.pdf
# chapter11 (Post-Quantum) is English-only until it is translated.
SOURCES += chapter11.md
endif

.PHONY: html-prep
Expand Down
2 changes: 1 addition & 1 deletion wolfProvider/header.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ header-includes:
# Fancy page headers
- \usepackage{fancyhdr}
- \pagestyle{fancy}
- \fancyfoot[LO,RE]{COPYRIGHT \copyright 2024 wolfSSL Inc.}
- \fancyfoot[LO,RE]{COPYRIGHT \copyright 2026 wolfSSL Inc.}
# Wrap long syntax highlighting code blocks
- \usepackage{fvextra}
- \DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,commandchars=\\\{\}}
Expand Down
5 changes: 3 additions & 2 deletions wolfProvider/mkdocs-ja.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,19 @@ site_name: wolfProvider マニュアル
site_url: https://wolfssl.com/
docs_dir: build/html/
site_dir: html/
copyright: Copyright © 2025 wolfSSL Inc.
copyright: Copyright © 2026 wolfSSL Inc.
nav:
- "1. イントロダクション": index.md
- "2. OpenSSLとの互換性": chapter02.md
- "3. wolfProviderのビルド": chapter03.md
- "4. FIPS 140-2のサポート": chapter04.md
- "4. FIPS 140-3のサポート": chapter04.md
- "5. ログ出力": chapter05.md
- "6. 移植性": chapter06.md
- "7. wolfProviderのロード": chapter07.md
- "8. wolfProviderの設計": chapter08.md
- "9. その他のオープンソースソフトウェアとの統合に関する注意事項": chapter09.md
- "10. サポートとOpenSSLバージョン追加": chapter10.md
- "11. ポスト量子暗号": chapter11.md
theme:
name: null
custom_dir: ../mkdocs-material/material
Expand Down
2 changes: 1 addition & 1 deletion wolfProvider/mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ site_name: wolfProvider Manual
site_url: https://wolfssl.com/
docs_dir: build/html/
site_dir: html/
copyright: Copyright © 2024 wolfSSL Inc.
copyright: Copyright © 2026 wolfSSL Inc.
nav:
- "1. Introduction": index.md
- "2. OpenSSL Version Compatability": chapter02.md
Expand Down
6 changes: 5 additions & 1 deletion wolfProvider/src-ja/chapter01.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,15 @@ wolfProviderは、wolfSSL(libwolfssl)とOpenSSLにリンクする個別のスタ
wolfProviderは、wolfCryptネイティブAPIを内部的にラップするOpenSSLエンジンです。
wolfProviderの概要図、そしてアプリケーションやOpenSSLとどのように関連しているかを下の図1に示します。

wolfProviderの設計とアーキテクチャの詳細については、[wolfProviderの設計](chapter09.md) の章をご覧ください。
wolfProviderの設計とアーキテクチャの詳細については、[wolfProviderの設計](chapter08.md) の章をご覧ください。

![wolfProvider Overview](wolfProvider_overview.png)

wolfProviderは、**libwolfprov** という名前の共有ライブラリとしてコンパイルされます。
これは、アプリケーションまたはコンフィギュレーションファイルを介してOpenSSLによって実行時に動的に登録できます。
wolfProviderは、アプリケーションが静的ビルドでコンパイルされたときにエンジンをロードするためのエントリポイントも提供します。

wolfProviderはクロスプラットフォームであり、Linuxおよびその他の*nix系システム、macOS、Windows(Visual Studio 2022による`libwolfprov.dll`のビルドを含む)で動作します。
OpenSSL 3.xのすべてのリリースバージョンに対応しており、FIPSおよび非FIPSの両方の構成で使用できます。
サポートされているプラットフォームの一覧については、[移植性](chapter06.md)の章をご覧ください。

11 changes: 7 additions & 4 deletions wolfProvider/src-ja/chapter02.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
# OpenSSLとの互換性

wolfProviderは、以下のバージョンのOpenSSLを使用してテストを実行しています
これ以外のバージョンでは、変更や調整が必要になる場合があります
wolfProviderは、OpenSSL 3.xのすべてのリリースバージョンをサポートしています
OpenSSL 3.0.6から最新の3.xリリースまでの幅広いバージョンに対して、FIPSビルドおよび非FIPSビルドの両方で継続的にテストを行っています

- OpenSSL 3.0.0
- OpenSSL 3.5.0
一部の機能には、OpenSSLの最小バージョン要件があります。

- ポスト量子アルゴリズム(ML-KEM、ML-DSA)およびLMSを使用するには、OpenSSL 3.6以降が必要です。

OpenSSL 3.0.3から3.0.5については、上流のECX `EVP_PKEY_cmp` に関する不具合があるため推奨していません。3.0.xシリーズをご利用の場合は、OpenSSL 3.0.6以降をご使用ください。

他のOpenSSLバージョンのサポート追加を希望される場合は、[info@wolfssl.jp](mailto:info@wolfssl.jp) にご連絡ください。
32 changes: 29 additions & 3 deletions wolfProvider/src-ja/chapter03.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ wolfProviderパッケージは、以下のように構成しています。

```
certs/ (ユニットテストで使用されるテスト用証明書、鍵)
docs/ (インテグレーションガイドおよびFIPSインテグレーションガイド)
examples/ (実装例)
include/
wolfprovider/ (wolfProviderヘッダーファイル)
Expand Down Expand Up @@ -39,13 +40,13 @@ user_settings.h (user_settings.hサンプル)
スクリプトを呼び出す前に、各種環境変数を設定する方法:

```
OPENSSL_TAG=openssl-3.2.0 WOLFSSL_TAG=v5.7.2-stable WOLFPROV_DEBUG=1 ./scripts/build-wolfprovider.sh
OPENSSL_TAG=openssl-3.5.0 WOLFSSL_TAG=v5.9.2-stable WOLFPROV_DEBUG=1 ./scripts/build-wolfprovider.sh
```

スクリプトの引数として指定する方法:

```
./scripts/build-wolfprovider.sh --openssl-ver=openssl-3.2.0 --wolfssl-ver=v5.7.2-stable --debug
./scripts/build-wolfprovider.sh --openssl-ver=openssl-3.5.0 --wolfssl-ver=v5.9.2-stable --debug
```

これらの方法を組み合わせて、目的のビルドの組み合わせを実現することもできます。
Expand Down Expand Up @@ -236,6 +237,25 @@ Visual StudioでwolfProviderプロジェクトをロードします。
この実行可能ファイルに`--help`の引数をつけて実行すると、オプションの一覧を表示できます。
wolfProviderを静的エンジンとして使用するには`--static`を付けて実行する必要があります。

## Windows上でのビルド (Visual Studio)

wolfProviderには、`IDE/WINVS/wolfprovider.sln` にVisual Studio 2022ソリューションが含まれており、wolfSSLをバックエンドとするOpenSSL 3.xプロバイダーである **`libwolfprov.dll`** をビルドします。
DLL名は重要です。`-provider libwolfprov` は `libwolfprov.dll` に解決されます。
Windows上では`configure`ステップはなく、wolfSSLは`user_settings.h`を介して構成します。

前提条件:

* C++ツールセット (v143) およびMASM (`ml64.exe`) を含むVisual Studio 2022
* OpenSSLをビルドするためのPerl、NASM、git(Strawberry PerlにはNASMが含まれています)

このソリューションは4つのx64構成を提供します。
`DLL Release` と `DLL Debug` は、実際に配布されるプロバイダー (`libwolfprov.dll`) をビルドします。
`Static Release` と `Static Debug` は、単体テストを実行するための `unit-test.exe` をビルドします
(OpenSSLは`LoadLibraryA`でプロバイダーをロードしてから`OSSL_provider_init`を探すため、静的ライブラリはプロバイダーとして動作できません)。
wolfProvider、wolfSSL、OpenSSLは同じ階層に並べて配置されていることを前提としています。
パスは`wolfprovider.props`で設定されており、コマンドラインから上書きできます(例: `/p:wolfCryptDir=D:\wolfssl`)。
非FIPS版・FIPS版いずれのwolfSSLビルドもサポートしています。

## ビルドオプション (./configure に指定するオプション)

ライブラリの構築方法をカスタマイズするために`./configure`スクリプトに追加できるオプションを以下に示します。
Expand All @@ -261,7 +281,10 @@ wolfProviderを静的エンジンとして使用するには`--static`を付け
| --enable-usersettings | **無効** | user_settings.h を使用し、MakefileのCFLAGSを使用しない |
| --enable-dynamic | 有効 | wolfProviderをダイナミックプロバイダーとしてロードできるようにする |
| --enable-singlethreaded | **無効** | wolfProviderをシングルスレッド環境で使用する |
| --enable-pqc | **無効** | ポスト量子アルゴリズム (ML-KEM、ML-DSA、SLH-DSA) をすべて有効にする |
| --enable-debug-silent | **無効** | デバッグログをコンパイルには含めるが、実行時に WOLFPROV_LOG_LEVEL / WOLFPROV_LOG_COMPONENTS で有効化するまで出力を抑制する |
| --enable-replace-default | **無効** | wolfProviderがOpenSSLのデフォルトプロバイダーとなるよう、置き換え用デフォルトプロバイダーをビルドする (CFLAGSに -DWOLFPROV_REPLACE_DEFAULT を指定することでも有効化可能) |
| --enable-seed-src | **無効** | フォークセーフなエントロピーのために、/dev/urandom キャッシュを使用する SEED-SRC エントロピーソースを有効にする |
| --enable-pqc | **無効** | ML-KEM、ML-DSA、SLH-DSA (FIPS 203/204/205) を有効にする。wolfSSL master/v5.9.2以降およびOpenSSL 3.6以降が必要 |
| --enable-mlkem | **無効** | ML-KEM (FIPS 203) のみを有効にする |
| --enable-mldsa | **無効** | ML-DSA (FIPS 204) のみを有効にする |
| --enable-slhdsa | **無効** | SLH-DSA (FIPS 205) のみを有効にする |
Expand Down Expand Up @@ -306,6 +329,7 @@ wolfProviderは、お客様がwolfProviderのビルド方法を設定できる
| WP_HAVE_GMAC | GMAC (ガロア/カウンターモード認証) を有効化 |
| WP_HAVE_HKDF | HKDF (HMACベースの鍵導出関数) を有効化 |
| WP_HAVE_HMAC | HMAC (ハッシュベースのメッセージ認証コード) を有効化 |
| WP_HAVE_KBKDF | KBKDF (鍵ベースの鍵導出関数) を有効化 |
| WP_HAVE_KRB5KDF | Kerberos 5 鍵導出関数を有効化 |
| WP_HAVE_LMS | LMS (RFC 8554 / SP 800-208) 検証を有効化 |
| WP_HAVE_MD5 | MD5 ハッシュアルゴリズムを有効化 |
Expand All @@ -315,6 +339,7 @@ wolfProviderは、お客様がwolfProviderのビルド方法を設定できる
| WP_HAVE_PBE | パスワードベースの暗号化を有効化 |
| WP_HAVE_RANDOM | 乱数生成を有効化 |
| WP_HAVE_RSA | RSA 暗号化と署名を有効化 |
| WP_HAVE_SEED | SEED-SRC エントロピーソースを有効化 |
| WP_HAVE_SHA1 | SHA1 ハッシュアルゴリズムを有効化 |
| WP_HAVE_SHA224 | SHA224 ハッシュアルゴリズムを有効化 |
| WP_HAVE_SHA256 | SHA256 ハッシュアルゴリズムを有効化 |
Expand All @@ -328,6 +353,7 @@ wolfProviderは、お客様がwolfProviderのビルド方法を設定できる
| WP_HAVE_SHA512_224 | SHA512/224 ハッシュアルゴリズムを有効化 |
| WP_HAVE_SHA512_256 | SHA512/256 ハッシュアルゴリズムを有効化 |
| WP_HAVE_SHAKE_256 | SHAKE256 拡張出力関数を有効化 |
| WP_HAVE_SSHKDF | SSHKDF (SSH 鍵導出関数) を有効化 |
| WP_HAVE_SLHDSA | SLH-DSA (FIPS 205) ポスト量子署名を有効化 |
| WP_HAVE_TLS1_PRF | TLS1 擬似乱数関数を有効化 |
| WP_HAVE_X25519 | X25519 楕円曲線を有効化 |
Expand Down
8 changes: 6 additions & 2 deletions wolfProvider/src-ja/chapter04.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# FIPS 140-2のサポート
# FIPS 140-3のサポート

wolfProviderは、FIPSで検証されたバージョンのwolfCryptに対して適切にコンパイルされた場合にのみ、FIPS140-2に対応した動作を行うよう設計しています
wolfProviderは、FIPSで検証されたバージョンのwolfCryptに対して適切にコンパイルされた場合にのみ、FIPS140-3に対応した動作を行うよう設計しています
この使用シナリオには、wolfSSL Inc. から入手した、適切にライセンスされ、検証されたバージョンのwolfCryptが必要です。

wolfCrypt FIPSライブラリは、非FIPSモードに「切り替える」ことができません。
Expand All @@ -15,4 +15,8 @@ OpenSSL構成に基づいて、デフォルトのOpenSSLエンジンまたは他
それらのアルゴリズムはwolfProviderおよびFIPS版wolfCryptのスコープに含みません。
FIPS認証取得に際し、問題となる可能性があります。

完全なFIPS適合を実現するには、wolfProviderは通常、置き換え用デフォルトモード(`--enable-replace-default`)でビルドされます。
これにより、wolfProviderがOpenSSLのデフォルトプロバイダーとなり、アプリケーションが誤って非FIPSアルゴリズムにフォールバックすることを防ぎます。
置き換え用デフォルトモードについては[wolfProviderのロード](chapter07.md)の章を、FIPSベースライン検証や本番FIPSビルドのワークフロー(wolfCrypt FIPSモジュールの世代(例: v5、v6、v7)やFIPS Readyバンドルを含む)についてはwolfProvider FIPSインテグレーションガイド(wolfProviderパッケージ内の`docs/FIPS_INTEGRATION_GUIDE.md`)をご参照ください。

FIPS版wolfCrypt(140-2/140-3)の使用に関する詳細については、wolfSSL(info@wolfssl.jp)までお問い合わせください。
12 changes: 6 additions & 6 deletions wolfProvider/src-ja/chapter05.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ wolfProviderは以下のログ出力レベルをサポートします。
ret = PROVIDER_ctrl_cmd(e, “log_level”, WP_LOG_ERROR | WP_LOG_INFO,
NULL, NULL, 0);
if (ret != 1) {
printf(Failed to set logging level\n);
printf("Failed to set logging level\n");
}
```

Expand Down Expand Up @@ -71,7 +71,7 @@ wolfProviderでは、コンポーネントごとにログを出力できます
ret = PROVIDER_ctrl_cmd(e, “log_components”, WP_LOG_DIGEST | WP_LOG_CIPHER,
NULL, NULL, 0);
if (ret != 1) {
printf(Failed to set log components\n);
printf("Failed to set log components\n");
}
```

Expand All @@ -80,7 +80,7 @@ if (ret != 1) {
デフォルトでは、wolfProviderは **fprintf()** を使用してデバッグログメッセージを **stderr** に出力します。

ログメッセージの出力方法や出力場所を変更したい場合は、カスタムログ出力コールバック関数を記述してwolfProviderに登録します。
その際、`include/wolfprovider/wp_logging.h`に示す`wolfProvider_Logging_cb`のプロトタイプ宣言と一致させる必要があります。
その際、`include/wolfprovider/wp_logging.h`に示す`wolfProv_Logging_cb`のプロトタイプ宣言と一致させる必要があります。

```
/**
Expand All @@ -89,7 +89,7 @@ if (ret != 1) {
* component - [IN] - Component that log message is coming from
* logMessage - [IN] - Log message
*/
typedef void (*wolfProvider_Logging_cb)(const int logLevel, const int component, const char *const logMessage);
typedef void (*wolfProv_Logging_cb)(const int logLevel, const int component, const char *const logMessage);
```

その後、"**set_logging_cb**"エンジン制御コマンドを使用して、コールバック関数をwolfProviderに登録できます。
Expand All @@ -102,15 +102,15 @@ const char* const logMessage)
{
(void)logLevel;
(void)component;
fprintf(stderr, wolfProvider log message: %d\n”, logMessage);
fprintf(stderr, "wolfProvider log message: %s\n", logMessage);
}

int main (void)
{
int ret;
PROVIDER* e;
...
ret = PROVIDER_ctrl_cmd(e, “set_logging_cb”, 0, NULL, (void(*)(void))my_Logging_cb, 0);
ret = PROVIDER_ctrl_cmd(e, “set_logging_cb”, 0, NULL, (void(*)(void))customLogCallback, 0);
if (ret != 1) {
/* failed to set logging callback */
}
Expand Down
12 changes: 12 additions & 0 deletions wolfProvider/src-ja/chapter06.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,18 @@

wolfProviderは、関連するwolfCryptおよびOpenSSLライブラリの移植性を活用するように設計しています。

## 対応プラットフォーム

wolfProviderはクロスプラットフォームであり、wolfSSLおよびOpenSSLがサポートする主要なプラットフォーム上でビルドできます。
対応プラットフォームは以下の通りです。

* Linuxおよびその他の*nix系システム。autoconfシステムを使用してビルドします([wolfProviderのビルド](chapter03.md)を参照)
* macOS
* Windows。`libwolfprov.dll`をビルドするVisual Studio 2022ソリューションを使用します([wolfProviderのビルド](chapter03.md)を参照)
* Windows CE

これらのプラットフォームでは、FIPSビルドと非FIPSビルドの両方をサポートしています。

## スレッド対応

wolfProviderはスレッドセーフであり、必要に応じてwolfCryptのミューテックスロックメカニズム`wc_LockMutex()`、`wc_UnLockMutex()`を使用します。
Expand Down
17 changes: 17 additions & 0 deletions wolfProvider/src-ja/chapter07.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,20 @@ wolfProviderをロードできます。
#include <wolfprovider/wp_wolfprovider.h>
wolfssl_provider_init(const OSSL_CORE_HANDLE* handle, const OSSL_DISPATCH* in, const OSSL_DISPATCH** out, void** provCtx);
```

## 置き換え用デフォルトモード

wolfProviderは、OpenSSLのデフォルトプロバイダーと並行してロードされるのではなく、それを*置き換える*形でビルドすることができます。
置き換え用デフォルトモードでは、`default`、`fips`、`wolfProvider` のいずれのプロバイダーへのOpenSSL側の要求もすべてwolfProviderに解決されるため、
アプリケーションはコードや構成を変更することなくwolfSSLの暗号処理を使用でき、OpenSSLネイティブの暗号処理へのフォールバックも発生しません。

ビルド時には、configureオプション `--enable-replace-default`、`scripts/build-wolfprovider.sh` の引数 `--replace-default`、
または `CFLAGS` に `-DWOLFPROV_REPLACE_DEFAULT` を定義することで有効化できます(Yocto系のビルドで有用です)。
このモード向けにOpenSSLをビルドすると、OpenSSLの `crypto/provider_predefined.c` が置き換えられ、デフォルトプロバイダーがwolfProviderによってバックエンドされるようになります。

置き換え用デフォルトモードでは、wolfProviderがすでにデフォルトプロバイダーとなっているため、`OPENSSL_CONF` や `OPENSSL_MODULES` の構成は不要です。
`scripts/env-setup` ヘルパーはこのモードを自動的に検出し、これらの環境変数の設定をスキップします。

置き換え用デフォルトモードは、FIPS環境への展開において推奨されます。
FIPS認証はシステム全体に適用されるため、このモデルによってアプリケーションが誤って非FIPSのデフォルトプロバイダーを使用してしまうことがなくなります。
詳細については、FIPS 140-3のサポートの章およびwolfProvider FIPSインテグレーションガイドをご参照ください。
Loading
Loading