Skip to content

Commit 8e6df22

Browse files
authored
Merge pull request #87 from kojo1/porting-ja
2 parents 68a1759 + ffb429d commit 8e6df22

File tree

7 files changed

+376
-1
lines changed

7 files changed

+376
-1
lines changed

wolfSSL-Porting/Makefile

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,14 @@ SOURCES = section01.md \
88
section03.md \
99
section04.md
1010

11-
PDF = wolfSSL-Porting-Guide.pdf
11+
ifeq ($(DOC_LANG),JA)
12+
PDF = wolfSSL-Porting-Guide-ja.pdf
13+
DOXYFILE = Doxyfile-ja
14+
else
15+
PDF = wolfSSL-Porting-Guide.pdf
16+
DOXYFILE = Doxyfile
17+
endif
18+
1219

1320
.PHONY: html-prep
1421
html-prep:

wolfSSL-Porting/mkdocs-ja.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
site_name: wolfSSLポーティングガイド
2+
site_url: https://wolfssl.com/
3+
docs_dir: build/html/
4+
site_dir: html/
5+
copyright: Copyright © 2023 wolfSSL Inc.
6+
nav:
7+
- "1. はじめに": index.md
8+
- "2. wolfSSLのポーティング": section02.md
9+
- "3. 次のステップ": section03.md
10+
- "4. サポート": section04.md
11+
theme:
12+
name: null
13+
custom_dir: ../mkdocs-material/material
14+
language: en
15+
palette:
16+
primary: indigo
17+
accent: indigo
18+
font:
19+
text: roboto
20+
code: roboto mono
21+
icon: "logo.png"
22+
logo: logo.png
23+
favicon: logo.png
24+
feature:
25+
tabs: true
26+
extra_css: [skin.css]
27+
use_directory_urls: false
66.8 KB
Loading
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# 1 はじめに
2+
3+
組み込みプラットフォーム上でwolfSSLを実行するには、いくつかのステップが必要です。これらのステップのいくつかは、wolfSSL Manual(非標準環境でのビルド)のセクション2.4で概説されています。
4+
5+
wolfSSLマニュアルの第2章の手順とは別に、特定のプラットフォームに対応するために移植や修正が必要なコードがいくつかあります。 wolfSSLは、これらの分野の多くを抽象化して、wolfSSLを新しいプラットフォームに移植するのはできるだけ簡単にしようとしています。
6+
7+
8+
9+
## 想定する読者
10+
11+
このガイドは、デフォルトでサポートされていない新しいプラットフォームまたは環境に wolfSSL および wolfCrypt を移植する開発者またはエンジニアを対象としています。
12+
13+
## 概要
14+
15+
組み込みプラットフォームで wolfSSL を実行するには、いくつかの手順を繰り返す必要があります。 これらの手順のいくつかは、wolfSSL マニュアルのセクション 2.4 で概説されています。
16+
17+
wolfSSL マニュアルの第 2 章の手順とは別に、特定のプラットフォームに対応するために移植または変更が必要なコードの領域があります。 wolfSSL はこれらの領域の多くを抽象化し、wolfSSL を新しいプラットフォームにできるだけ簡単に移植できるようにします。
18+
19+
./wolfssl/wolfcrypt/settings.h ファイルには、さまざまなオペレーティング システム、TCP/IP スタック、およびチップセット (つまり、MBED、FREESCALE\_MQX、MICROCHIP\_PIC32、MICRIUM、EBSNET など) に固有の定義がいくつかあります。 wolfSSL をコンパイルして新しいプラットフォームに移植するときに \#defines を配置する主な場所は次の 2 つです。
20+
21+
まず、オペレーティング システムまたは TCP/IP スタック ポートの新しい定義は、通常、wolfSSL の新しいポートが完了すると、settings.h ファイルに追加されます。 これにより、機能をオン/オフしたり、そのビルドのデフォルトにする必要があるビルド設定をカスタマイズしたりする簡単な方法が提供されます。 wolfSSL を新しいプラットフォームに移植する際に、このファイルに新しいカスタム定義を追加できます。 ユーザーは、GitHub のマスター オープン ソース コード ブランチに wolfSSL のポートを提供することをお勧めします。 これにより、wolfSSL を最新の状態に保つことができ、wolfSSL プロジェクトが改善され前進するにつれて、さまざまなポートを最新の状態に保つことができます。
22+
23+
自分の変更を wolfSSLproper に戻したくないユーザー、または追加のプリプロセッサー定義で wolfSSL ビルドをカスタマイズしたいユーザーの場合、wolfSSL はカスタムの「user\_settings.h」ヘッダー ファイルの使用を推奨します。
24+
25+
wolfSSL ソース ファイルのコンパイル時に WOLFSSL\_USER\_SETTINGS が定義されている場合、wolfSSL は「user\_settings.h」と呼ばれるカスタム ヘッダー ファイルを自動的にインクルードします。このヘッダーはユーザーが作成し、インクルードパスに配置する必要があります。 これにより、ユーザーは自分の wolfSSLbuild 用に 1 つのファイルを維持でき、新しいバージョンの wolfSSL への更新がはるかに簡単になります。
26+
27+
wolfSSL は、直接の電子メール ([email protected]) または GitHub プル リクエストを通じて、パッチとコードの変更を提出することを奨励しています。
28+
29+
30+
31+
図1はwolfSSLライブラリが依存する主なプラットフォームコンポーネントを示しています。ポーティング作業ではこれらの依存コンポーネントについて、ユーザが実際に使用するものと整合をとる必要があります。以下に、主なコンポーネントについて概要をまとめます。詳細については、このユーザガイドの各項を参照してください。
32+
33+
![プラットフォーム依存性の概要](./platformDependency.png "プラットフォーム依存性の概要")
34+
35+
36+
37+
- ネットワーク送受信
38+
39+
wolfSSLライブラリはTCP層のメッセージ送受信のためのAPIを使用します。デフォルトではBSDソケットが使用されます。いくつかの代表的なTCP層APIのためには直接リンクできるためのビルドオプションが用意されています。それ以外のメッセージングAPIを使用する場合はWOLFSSL_USER_IOオプションを指定して、ユーザが用意したメッセージ送受信のコールバック関数を登録します。
40+
なお、TCP接続の確立(TCPのコネクトないしアクセプトまでの処理)は、ユーザプログラムの側で行います。
41+
42+
- ファイルI/O
43+
44+
ファイルI/Oは主に証明書や鍵の読み出し、生成時の書き込みのために使用されます。デフォルトではPOSIX APIが使用されます。それ以外のAPIを使用する場合はファイルオープン、クローズ、リード、ライト、シークなどのAPIをビルドオプションとして定義します。
45+
46+
- スレッド、排他制御
47+
48+
スレッドの生成、削除に関してはユーザプログラムの責任で行います。スレッド間の排他制御についてはライブラリ内で必要な箇所で、MUTEXロック、アンロックが呼ばれます。主要なOS、RTOSではビルド時にオプション指定することで所定のロック、アンロック関数とリンクできます。
49+
非RTOSアプリケーションや本ライブラリを単一のスレッドのみで使用する場合は、シングルスレッド・モードで動作するオプションを指定することができます。
50+
51+
- メモリー管理
52+
53+
デフォルトでは、C言語標準ライブラリのmalloc、free、reallocが使用されます。独自のライブラリを使用する場合は、ビルドオプション、または実行時に登録するユーザ独自の関数を使用することもできます。
54+
55+
- 時計
56+
57+
主に証明書の有効期間チェック、SSLセッションのタイムアウト管理などに使用されます。従って、高い正確性は要求されませんが、相対時間ではなく実時間である必要があります。デフォルトでは1970年からの秒数を返却するtime関数が使用されます。独自の関数を使用する場合はオプションで指定します。
58+
59+
- C言語標準ライブラリ
60+
61+
文字列関数などいくつかのC言語標準関数が使用されます。独自の関数を使用する場合はオプションで指定します。

0 commit comments

Comments
 (0)