Skip to content

Commit 8b827f4

Browse files
authored
Merge pull request #228 from tamasan238/pr216
[JA] wolfProvider - general documentation update
2 parents dfdbdaf + 81c4ed2 commit 8b827f4

File tree

8 files changed

+317
-273
lines changed

8 files changed

+317
-273
lines changed

wolfProvider/mkdocs-ja.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ site_name: wolfProvider マニュアル
22
site_url: https://wolfssl.com/
33
docs_dir: build/html/
44
site_dir: html/
5-
copyright: Copyright © 2024 wolfSSL Inc.
5+
copyright: Copyright © 2025 wolfSSL Inc.
66
nav:
77
- "1. イントロダクション": index.md
88
- "2. OpenSSLとの互換性": chapter02.md

wolfProvider/src-ja/chapter01.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ wolfProviderの概要図、そしてアプリケーションやOpenSSLとどの
1010

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

13-
![wolfProvider Overview](../png/wolfProvider_overview.png)
13+
![wolfProvider Overview](wolfProvider_overview.png)
1414

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

wolfProvider/src-ja/chapter02.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
wolfProviderは、以下のバージョンのOpenSSLを使用してテストを実行しています。
44
これ以外のバージョンでは、変更や調整が必要になる場合があります。
55

6-
- OpenSSL 1.0.2h
7-
- OpenSSL 1.1.1b
6+
- OpenSSL 3.0.0
7+
- OpenSSL 3.5.0
88

99
他のOpenSSLバージョンのサポート追加を希望される場合は、[[email protected]](mailto:[email protected]) にご連絡ください。

wolfProvider/src-ja/chapter03.md

Lines changed: 106 additions & 107 deletions
Large diffs are not rendered by default.

wolfProvider/src-ja/chapter05.md

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,7 @@ autoconfを使用している場合、これは`./configure`に`--enable-debug`
88
./configure --enable-debug
99
```
1010

11-
autoconf/configureを使用しない場合は、wolfProviderライブラリをコンパイルする際に `WOLFPROVIDER_DEBUG` を定義します。
12-
13-
## デバッグログの有効化/無効化
14-
15-
デバッグサポートを有効化してコンパイルを行った後、以下に示すwolfProviderコントロールコマンドを使用して実行時にデバッグを有効にする必要があります。
16-
"0" を指定すると、ログ出力が無効になります。
17-
`PROVIDER_ctrl_cmd()` APIを使用してログ出力を有効にする例を以下に示します。
18-
19-
```
20-
int ret = 0;
21-
ret = PROVIDER_ctrl_cmd(e, “enable_debug”, 1, NULL, NULL, 0);
22-
if (ret != 1) {
23-
printf(“Failed to enable debug logging\n”);
24-
}
25-
```
26-
27-
wolfProviderがデバッグサポート無効の状態でコンパイルされた場合、`PROVIDER_ctrl_cmd()``enable_debug`を設定しようとすると失敗(0)が返されます。
11+
autoconf/configureを使用しない場合は、wolfProviderライブラリをコンパイルする際に `WOLFPROV_DEBUG` を定義します。
2812

2913
## ログ出力レベルの制御
3014

@@ -70,9 +54,10 @@ wolfProviderでは、コンポーネントごとにログを出力できます
7054
| WP_LOG_CIPHER | 暗号化コンポーネント(AES, 3DES) | 0x0008 |
7155
| WP_LOG_PK | 公開鍵コンポーネント (RSA, ECC) | 0x0010 |
7256
| WP_LOG_KE | 鍵合意コンポーネント (DH, ECDH) | 0x0020 |
73-
| WP_LOG_PROVIDER | エンジン特有 | 0x0040 |
74-
| WP_LOG_COMPONENTS_ALL | 全コンポーネント | WP_LOG_RNG | WP_LOG_DIGEST | WP_LOG_MAC | WP_LOG_CIPHER | WP_LOG_PK | WP_LOG_KE | WP_LOG_PROVIDER |
75-
| WP_LOG_COMPONENTS_DEFAULT | デフォルトコンポーネント (all). | WP_LOG_COMPONENTS_ALL |
57+
| WP_LOG_KDF | パスワードベースの鍵導出コンポーネント | 0x0040 |
58+
| WP_LOG_PROVIDER | すべてのプロバイダー固有ログを有効化 | 0x0080 |
59+
| WP_LOG_COMPONENTS_ALL | すべてのコンポーネントログを有効化 | WP_LOG_RNG | WP_LOG_DIGEST | WP_LOG_MAC | WP_LOG_CIPHER | WP_LOG_PK | WP_LOG_KE | WP_LOG_PROVIDER |
60+
| WP_LOG_COMPONENTS_DEFAULT | デフォルト構成 (すべてのログを有効化) | WP_LOG_COMPONENTS_ALL |
7661

7762
デフォルトでは、すべてのコンポーネントを対象としてログを出力します(`WP_LOG_COMPONENTS_DEFAULT`)。
7863

@@ -120,7 +105,7 @@ const char* const logMessage)
120105
fprintf(stderr, “wolfProvider log message: %d\n”, logMessage);
121106
}
122107
123-
int **main** (void)
108+
int main (void)
124109
{
125110
int ret;
126111
PROVIDER* e;

wolfProvider/src-ja/chapter07.md

Lines changed: 34 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,45 @@
11
# wolfProviderのロード
22

3-
## OpenSSLをエンジンを利用できるように構成
3+
## OpenSSLをエンジンプロバイダーを利用できるように構成
44

5-
アプリケーションがOpenSSLエンジンを使用および使用する方法については、OpenSSLのドキュメントをご参照ください
5+
アプリケーションがOpenSSLプロバイダーを使用するための手順については、OpenSSLドキュメントをご参照ください
66

7-
- [OpenSSL 1.0.2](https://www.openssl.org/docs/man1.0.2/man3/provider.html)
8-
- [OpenSSL 1.1.1](https://www.openssl.org/docs/man1.1.1/man3/PROVIDER_add.html)
9-
10-
アプリケーションがエンジンを使用するための方法はいくつかあります。
11-
最も単純なものとして、OpenSSLにバンドルされているすべてのPROVIDER実装をロードして登録し、アプリケーションで次のコードを呼び出す方法があります。
12-
(上記のOpenSSLドキュメントから引用しています)
13-
```
14-
/* For OpenSSL 1.0.2, need to make the “dynamic” PROVIDER available */
15-
PROVIDER_load_dynamic();
16-
17-
/* Load all bundled PROVIDERs into memory and make them visible */
18-
PROVIDER_load_builtin_providers();
19-
20-
/* Register all of them for every algorithm they collectively implement */
21-
PROVIDER_register_all_complete();
22-
```
7+
- [OpenSSL 3.0](https://www.openssl.org/docs/man3.0/man7/provider.html)
8+
- [OpenSSL 3.5](https://www.openssl.org/docs/man3.5/man7/provider.html)
239

2410
アプリケーションがOpenSSL設定ファイルを使用するように設定されている場合、
2511
追加のプロバイダー設定ステップをそこで行うことができます。
2612
OpenSSLを構成する方法については、OpenSSLドキュメントをご覧ください。
2713

28-
- [OpenSSL 1.0.2 ドキュメント](https://www.openssl.org/docs/man1.0.2/man3/OPENSSL_config.html)
29-
- [OpenSSL 1.1.1 ドキュメント](https://www.openssl.org/docs/man1.1.1/man3/OPENSSL_config.html)
14+
- [OpenSSL 3.0](https://www.openssl.org/docs/man3.0/man5/config.html)
15+
- [OpenSSL 3.5](https://www.openssl.org/docs/man3.5/man5/config.html)
3016

3117
アプリケーションはデフォルトのOpenSSL構成ファイル (`openssl.cnf`)や、
3218
`OPENSSL_CONF`環境変数によって設定された構成の `[openssl_conf]` セクションを呼び出して、読み取り、使用できます。
3319

34-
```
35-
OPENSSL_config(NULL);
36-
```
37-
38-
OpenSSLコンフィギュレーションファイルを使用する代わりに、アプリケーションは`PROVIDER_*` APIを使用して明示的に wolfProviderの初期化やアルゴリズムの登録を行うこともできます。
20+
OpenSSLコンフィギュレーションファイルを使用する代わりに、アプリケーションは`OSSL_PROVIDER_*` APIを使用して明示的に wolfProviderの初期化やアルゴリズムの登録を行うこともできます。
3921
一例として、wolfProviderの初期化とすべてのアルゴリズムの登録を行う場合を以下に示します。
4022

4123
```
42-
PROVIDER* e = NULL;
43-
44-
e = PROVIDER_by_id(“wolfprovider”);
45-
if (e == NULL) {
46-
printf(“Failed to find wolfProvider\n”);
47-
/* error */
48-
}
49-
PROVIDER_set_default(e, PROVIDER_METHOD_ALL);
50-
51-
/* アプリケーションの実装 */
52-
53-
PROVIDER_finish(e);
54-
PROVIDER_cleanup();
24+
OSSL_PROVIDER *prov = NULL;
25+
const char *build = NULL;
26+
OSSL_PARAM request[] = {
27+
{ "buildinfo", OSSL_PARAM_UTF8_PTR, &build, 0, 0 },
28+
{ NULL, 0, NULL, 0, 0 }
29+
};
30+
31+
if ((prov = OSSL_PROVIDER_load(NULL, "libwolfprov")) != NULL
32+
&& OSSL_PROVIDER_get_params(prov, request))
33+
printf("Provider 'libwolfprov' buildinfo: %s\n", build);
34+
else
35+
ERR_print_errors_fp(stderr);
36+
37+
if (OSSL_PROVIDER_self_test(prov) == 0)
38+
printf("Provider selftest failed\n");
39+
else
40+
printf("Provider selftest passed\n");
41+
42+
OSSL_PROVIDER_unload(prov);
5543
```
5644

5745
## OpenSSLコンフィギュレーションファイルによるwolfProviderのロード
@@ -60,28 +48,18 @@ OpenSSLを使用するアプリケーションがコンフィギュレーショ
6048
wolfProviderはOpenSSLコンフィギュレーションファイルからロードできます。
6149

6250
wolfProviderライブラリをコンフィギュレーションファイルに追加する方法の例を以下に示します。
63-
`[wolfssl_section]`は、必要に応じてエンジン制御コマンド(`enable_debug`)を設定するように変更できます。
6451

6552
```
6653
openssl_conf = openssl_init
6754
6855
[openssl_init]
69-
providers = provider_section
70-
71-
[provider_section]
72-
wolfSSL = wolfssl_section
73-
74-
[wolfssl_section]
75-
# If using OpenSSL <= 1.0.2, change provider_id to wolfprovider
76-
(drop the "lib").
77-
provider_id = libwolfprovider
78-
# dynamic_path = .libs/libwolfprovider.so
79-
init = 1
80-
# Use wolfProvider as the default for all algorithms it provides.
81-
default_algorithms = ALL
82-
# Only enable when debugging application - produces large
83-
amounts of output.
84-
# enable_debug = 1
56+
providers = provider_sect
57+
58+
[provider_sect]
59+
libwolfprov = libwolfprov_sect
60+
61+
[libwolfprov_sect]
62+
activate = 1
8563
```
8664

8765
## wolfProvider静的エントリポイント
@@ -91,5 +69,5 @@ wolfProviderをロードできます。
9169

9270
```
9371
#include <wolfprovider/wp_wolfprovider.h>
94-
PROVIDER_load_wolfprovider();
72+
wolfssl_provider_init(const OSSL_CORE_HANDLE* handle, const OSSL_DISPATCH* in, const OSSL_DISPATCH** out, void** provCtx);
9573
```

wolfProvider/src-ja/chapter08.md

Lines changed: 70 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2,58 +2,76 @@
22

33
wolfProviderは次のソースファイルで構成され、すべてwolfProviderパッケージの`src`サブディレクトリの下にあります。
44

5-
| ソースファイル | 詳細 |
6-
| ---- | ---------------- |
7-
| wp_wolfprovider.c | ライブラリエントリポイントが含まれます。 OpenSSLエンジンフレームワークを使用してライブラリを動的にロードするために、OpenSSL IMPLEMENT_DYNAMIC_BIND_FNを呼び出します。コンパイルして静的ライブラリとして使用する場合のスタティックエントリポイントも含みます。 |
8-
| wp_internal.c | エンジンアルゴリズムコールバックの登録を処理する`wolfprovider_bind()`関数が含まれています。他のwolfProviderの内部機能も含みます。 |
9-
| wp_logging.c | wolfProviderログ出力フレームワークと関数の実装 |
10-
| wp_openssl_bc.c | wolfProvider OpenSSLバイナリ互換抽象化レイヤーです。複数のOpenSSLバージョンでwolfProviderをサポートするために使用します。 |
11-
| wp_aes_block.c | wolfProvider AES-ECBおよびAES-CBC実装 |
12-
| wp_aes_cbc_hmac.c | wolfProvider AES-CBC-HMAC実装 |
13-
| wp_aes_ccm.c | wolfProvider AES-CCM実装 |
14-
| wp_aes_ctr.c | wolfProvider AES-CTR実装 |
15-
| wp_aes_gcm.c | wolfProvider AES-GCM実装 |
16-
| wp_des3_cbc.c | wolfProvider 3DES-CBCの実装 |
17-
| wp_dh.c | wolfProvider DHの実装 |
18-
| wp_digest.c | wolfProvider メッセージダイジェストの実装(SHA-1、SHA-2、SHA-3) |
19-
| wp_ecc.c | wolfProvider ECDSAおよびECDHの実装 |
20-
| wp_mac.c | wolfProvider HMACおよびCMACの実装 |
21-
| wp_random.c | wolfProvider RAND実装 |
22-
| wp_rsa.c | wolfProvider RSA実装 |
23-
| wp_tls_prf.c | wolfProvider TLS 1.0 PRF実装 |
5+
| ソースファイル | 説明 |
6+
| ------ | ---------------- |
7+
| wp_wolfprov.c | ライブラリのエントリポイントが含まれています。OpenSSL プロバイダフレームワークを使用してライブラリを動的にロードするために、OpenSSL IMPLEMENT_DYNAMIC_BIND_FN を呼び出します。コンパイルして静的ライブラリとして使用する場合は、静的エントリポイントも含みます。 |
8+
| wp_internal.c | プロバイダアルゴリズムのコールバックの登録を処理する wolfprovider_bind() 関数が含まれています。また、その他の wolfprovider 内部機能も含みます。 |
9+
| wp_logging.c | wolfProvider のロギングフレームワークと関数の実装 |
10+
| wp_aes_aead.c | wolfProvider AES-AEAD (Authenticated Encryption with Associated Data) の実装 |
11+
| wp_aes_block.c | wolfProvider AES-ECB および AES-CBC 実装 |
12+
| wp_aes_stream.c | wolfProvider AES ストリーム暗号実装 |
13+
| wp_aes_wrap.c | wolfProvider AES キーラッピング実装 |
14+
| wp_cmac.c | wolfProvider CMAC (暗号ベースメッセージ認証コード) 実装 |
15+
| wp_dec_epki2pki.c | wolfProvider 暗号化された秘密鍵から秘密鍵への変換実装 |
16+
| wp_dec_pem2der.c | wolfProvider PEM から DER 形式への変換実装 |
17+
| wp_des.c | wolfProvider DES 実装 |
18+
| wp_dh_exch.c | wolfProvider DH 鍵交換実装 |
19+
| wp_dh_kmgmt.c | wolfProvider DH 鍵管理実装 |
20+
| wp_digests.c | wolfProvider メッセージ ダイジェスト実装 (SHA-1、SHA-2、SHA-3、...)|
21+
| wp_drbg.c | wolfProvider DRBG (決定論的乱数ビット ジェネレーター) 実装|
22+
| wp_ecc_kmgmt.c | wolfProvider ECC キー管理実装|
23+
| wp_ecdh_exch.c | wolfProvider ECDH キー交換実装|
24+
| wp_ecdsa_sig.c | wolfProvider ECDSA 署名実装|
25+
| wp_ecx_exch.c | wolfProvider ECX キー交換実装 (X25519、X448、...)|
26+
| wp_ecx_kmgmt.c | wolfProvider ECX キー管理実装|
27+
| wp_ecx_sig.c | wolfProvider ECX 署名実装 (Ed25519、Ed448、...)|
28+
| wp_file_store.c | wolfProvider ファイルストレージ実装|
29+
| wp_fips.c | wolfProvider FIPS 検証実装|
30+
| wp_gmac.c | wolfProvider GMAC (Galois/Counter Mode) 実装|
31+
| wp_hkdf.c | wolfProvider HKDF (HMAC ベースの鍵導出関数) 実装|
32+
| wp_hmac.c | wolfProvider HMAC 実装|
33+
| wp_kbkdf.c | wolfProvider KBKDF (鍵ベースの鍵導出関数) 実装|
34+
| wp_kdf_exch.c | wolfProvider KDF 鍵交換実装|
35+
| wp_kdf_kmgmt.c | wolfProvider KDF 鍵管理実装|
36+
| wp_krb5kdf.c | wolfProvider Kerberos 5 KDF 実装|
37+
| wp_mac_kmgmt.c | wolfProvider MAC キー管理実装|
38+
| wp_mac_sig.c | wolfProvider MAC 署名実装|
39+
| wp_params.c | wolfProvider パラメータ処理実装|
40+
| wp_pbkdf2.c | wolfProvider PBKDF2 (パスワードベースのキー導出関数 2) 実装|
41+
| wp_rsa_asym.c | wolfProvider RSA 非対称暗号化実装|
42+
| wp_rsa_kem.c | wolfProvider RSA KEM (キーカプセル化メカニズム) 実装|
43+
| wp_rsa_kmgmt.c | wolfProvider RSA キー管理実装|
44+
| wp_rsa_sig.c | wolfProvider RSA 署名実装|
45+
| wp_tls1_prf.c | wolfProvider TLS 1.0 PRF 実装|
46+
| wp_tls_capa.c | wolfProvider TLS 機能の実装 |
2447

2548
## wolfProviderエントリーポイント
2649

27-
wolfProviderライブラリへの主なエントリポイントは、**wolfprovider_bind** () または **PROVIDER_load_wolfprovider** () のいずれかです。
28-
wolfProviderが動的にロードされている場合、`wolfprovider_bind()`はOpenSSL によって自動的に呼び出されます。
29-
`PROVIDER_load_wolfprovider()` はwolfProvider静的に構築および使用されている場合に、アプリケーションが呼び出す必要があるエントリポイントです。
30-
31-
## wolfProviderアルゴリズムコールバック登録
32-
33-
wolfProviderは、FIPS版wolfCryptでサポートしているすべてのコンポーネントに対して、アルゴリズム構造体とコールバックを OpenSSLエンジンフレームワークに登録します。
34-
この登録は、`wp_internal.c``wolfprovider_bind()` 内で行われます。
35-
`wolfprovider_bind()`は、wolfProvider エンジンを表す`PROVIDER`構造体ポインタを受け取ります。
36-
次に、個々のアルゴリズム/コンポーネントのコールバックまたは構造体が、`<openssl/provider.h>`の適切なAPIを使用してその`PROVIDER`構造体に登録されます。
37-
38-
これらのAPI呼び出しには、以下のものが含まれます。
39-
40-
```
41-
PROVIDER_set_id(e, wolfprovider_id)
42-
PROVIDER_set_name(e, wolfprovider_name)
43-
PROVIDER_set_digests(e, wp_digests)
44-
PROVIDER_set_ciphers(e, wp_ciphers)
45-
PROVIDER_set_RAND(e, wp_random_method)
46-
PROVIDER_set_RSA(e, wp_rsa())
47-
PROVIDER_set_DH(e, wp_dh_method)
48-
PROVIDER_set_ECDSA(e, wp_ecdsa())
49-
PROVIDER_set_pkey_meths(e, wp_pkey)
50-
PROVIDER_set_pkey_asn1_meths(e, wp_pkey_asn1)
51-
PROVIDER_set_EC(e, wp_ec())
52-
PROVIDER_set_ECDH(e, wp_ecdh())
53-
PROVIDER_set_destroy_function(e, wolfprovider_destroy)
54-
PROVIDER_set_cmd_defns(e, wolfprovider_cmd_defns)
55-
PROVIDER_set_ctrl_function(e, wolfprovider_ctrl)
56-
```
57-
58-
上記の呼び出しで使用される各アルゴリズム/コンポーネントのコールバック関数または構造体
59-
(例: wp_digests、wp_ciphers など) は、`wp_internal.c` またはそれぞれのアルゴリズムソースファイルに実装しています。
50+
wolfProvider ライブラリへの主要なエントリポイントは、**OSSL_provider_init()****wolfssl_provider_init()** です。
51+
52+
**OSSL_provider_init()** は、プロバイダが動的にロードされた際に OpenSSL によって自動的に呼び出される標準のOpenSSLプロバイダエントリポイントです。
53+
この関数は `wp_wolfprov.c` で定義されており、`wolfssl_provider_init()` を呼び出すラッパーとして機能します。
54+
55+
**wolfssl_provider_init()** は、以下の機能を実行するコア初期化関数です。
56+
57+
- プロバイダーコンテキストをセットアップします。
58+
- プロバイダー関数でディスパッチテーブルを初期化します。
59+
- FIPS モード設定を処理します。
60+
- デバッグが有効になっている場合は、デバッグをセットアップします。
61+
- 以下の関数ポインタを含むプロバイダーのディスパッチテーブルを返します。
62+
63+
* `wolfprov_teardown` - プロバイダーのクリーンアップ
64+
* `wolfprov_gettable_params` - パラメーターテーブルの取得
65+
* `wolfprov_get_params` - パラメーターの取得
66+
* `wolfprov_query` - 操作のクエリ
67+
* `wolfssl_prov_get_capabilities` - 機能レポート
68+
69+
アプリケーションがwolfProviderアルゴリズムを要求すると、OpenSSLによってプロバイダーがロードされます。
70+
ディスパッチテーブルは、OpenSSLが暗号操作に適切なwolfProvider関数を呼び出すことを可能にします。
71+
72+
## wolfProvider ディスパッチテーブル関数
73+
74+
wolfProviderディスパッチテーブルには、プロバイダー操作のさまざまな側面を処理するいくつかの主要な関数が含まれています。
75+
各関数は、OpenSSLプロバイダフレームワークにおいて特定の目的を果たします。
76+
77+
**OSSLパラメータに関する注意(後述):** OSSLパラメータは、OpenSSLがプロバイダと設定データや機能情報を交換するための標準化された方法です。

0 commit comments

Comments
 (0)