Skip to content

Commit 40750bb

Browse files
authored
Merge pull request #92 from TakayukiMatsuo/cryptjni
2 parents 1032c41 + d4f38da commit 40750bb

File tree

10 files changed

+397
-1
lines changed

10 files changed

+397
-1
lines changed

wolfCrypt-JNI/Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ SOURCES = chapter01.md \
1212
chapter07.md \
1313
chapter08.md
1414

15-
PDF = wolfCrypt-JNI-JCE-Manual.pdf
15+
ifeq ($(DOC_LANG),JA)
16+
PDF = wolfCrypt-JNI-JCE-Manual-jp.pdf
17+
else
18+
PDF = wolfCrypt-JNI-JCE-Manual.pdf
19+
endif
1620

1721
.PHONY: html-prep
1822
html-prep:

wolfCrypt-JNI/mkdocs-ja.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
site_name: wolfCrypt JCE Provider & JNI マニュアル
2+
site_url: https://wolfssl.com/
3+
docs_dir: build/html/
4+
site_dir: html/
5+
copyright: wolfSSL Inc. 2021
6+
nav:
7+
- "1. イントロダクション": index.md
8+
- "2. システム要件": chapter02.md
9+
- "3. コンパイル": chapter03.md
10+
- "4. インストール": chapter04.md
11+
- "5. パッケージ構成": chapter05.md
12+
- "6. サポートしているアルゴリズムとクラス": chapter06.md
13+
- "7. JAR コードの署名": chapter07.md
14+
- "8. 使用方法": chapter08.md
15+
theme:
16+
name: null
17+
custom_dir: ../mkdocs-material/material
18+
language: en
19+
palette:
20+
primary: indigo
21+
accent: indigo
22+
font:
23+
text: Roboto
24+
code: Roboto Mono
25+
icon: "logo.png"
26+
logo: logo.png
27+
favicon: logo.png
28+
feature:
29+
tabs: true
30+
extra_css: [skin.css]
31+
extra:
32+
generator: false
33+
use_directory_urls: false

wolfCrypt-JNI/src-ja/chapter01.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# イントロダクション
2+
3+
4+
JCE (Java Cryptography Extension) フレームワークは、カスタムの暗号化サービス プロバイダーのインストールをサポートします。この仕組みにより、Java セキュリティ API によって使用される基本的な暗号化機能のサブセットを実装できます。
5+
6+
このドキュメントでは、wolfCrypt JCE プロバイダーの詳細と使用方法について説明します。 wolfCrypt JCE プロバイダー (wolfJCE) は、ネイティブの wolfCrypt 暗号化ライブラリーをラップして、Java Security API との互換性を確保します。 [こちら](https://github.com/wolfSSL/wolfcrypt-jni)のGithubリポジトリを参照してください。
7+
8+
wolfcrypt-jni パッケージには、JCE プロバイダーに加えて、wolfCrypt JNI ラッパーの両方が含まれています。 JNI ラッパーは、必要に応じて単独で使用できます。

wolfCrypt-JNI/src-ja/chapter02.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# システム要件
2+
3+
## Java / JDK
4+
wolfJCE では、ホストシステムに Java をインストールする必要があります。 Oracle JDK や OpenJDK など、ユーザーや開発者が利用できる JDK バリアントがいくつかあります。 wolfJCE は現在、OpenJDK、Oracle JDK、および Android でテストされています。 OpenJDK と Android では、JCE プロバイダーがコード署名されている必要はありませんが、Oracle JDK では必要です。 コード署名の詳細については、[第 7 章](chapter07.md#jar-code-signing)を参照してください。
5+
6+
参考までに、wolfJCE がテストされた OpenJDK の特定のバージョンは次のとおりです:
7+
8+
9+
```
10+
$ java -version
11+
Openjdk version “1.8.0_91”
12+
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1~b14)
13+
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
14+
```
15+
また、Oracle JDK 1.8.0_121 および Android 24 でもテストされています。
16+
17+
## JUnit
18+
単体テストを実行するには、JUnit が開発システムにインストールされている必要があります。 JUnit は、プロジェクトの Web サイト (www.junit.org) からダウンロードできます
19+
20+
Unix/Linux/OSX システムに JUnit をインストールするには:
21+
1. [junit.org/junit4/]() から "**junit-4.13.jar**" と "**hamcrest-all-1.3.jar**" をダウンロードします。 執筆時点では、前述の .jar ファイルは次のリンクからダウンロードできます:
22+
23+
リンク: [junit-4.13.jar](https://search.maven.org/search?q=g:junit%20AND%20a:junit)<br>
24+
リンク: [hamcrest-all-1.3.jar](https://search.maven.org/artifact/org.hamcrest/hamcrest-all/1.3/jar)
25+
26+
2. これらの JAR ファイルをシステムに配置し、その場所を指すように `JUNIT_HOME` を設定します:
27+
28+
```
29+
$ export JUNIT_HOME=/path/to/jar/files
30+
```
31+
32+
## make と ant
33+
34+
"make" と "ant" は、それぞれネイティブ C コードと Java コードのコンパイルに使用されます。
35+
36+
これらが開発マシンにインストールされていることを確認してください。
37+
38+
39+
## wolfSSL / wolfCrypt ライブラリ
40+
41+
ネイティブ wolfCrypt ライブラリのラッパーとして、wolfSSL をホスト プラットフォームにインストールし、インクルードおよびライブラリ検索パスに配置する必要があります。 wolfJCE は、wolfSSL/wolfCrypt ネイティブ ライブラリの FIPS または非 FIPS バージョンに対してコンパイルできます。
42+
43+
44+
### wolfSSL / wolfCrypt のコンパイル
45+
46+
wolfJCE で使用するために Unix/Linux 環境で wolfSSL をコンパイルおよびインストールするには、wolfSSL マニュアルのビルド手順に従ってください。 wolfSSL をコンパイルする最も一般的な方法は、Autoconf システムを使用することです。
47+
48+
wolfSSL (wolfssl-x.x.x)、wolfSSL FIPS リリース (wolfssl-x.x.x-commercial-fips)、または wolfSSL FIPS Ready リリースをインストールできます。いずれの場合も、 ./configure スクリプト実行時に`--enable-keygen` オプションが必要です。
49+
50+
51+
**wolfSSL 標準ビルド**:
52+
```
53+
$ cd wolfssl-x.x.x
54+
$ ./configure --enable-keygen
55+
$ make check
56+
$ sudo make install
57+
```
58+
59+
**wolfSSL FIPSv1 ビルド**:
60+
61+
```
62+
$ cd wolfssl-x.x.x-commercial-fips
63+
$ ./configure --enable-fips --enable-keygen
64+
$ make check
65+
$ sudo make install
66+
```
67+
68+
**wolfSSL FIPSv2 ビルド**:
69+
70+
```
71+
$ cd wolfssl-x.x.x-commercial-fips
72+
$ ./configure --enable-fips=v2 --enable-keygen
73+
$ make check
74+
$ sudo make install
75+
```
76+
77+
**wolfSSL FIPS Ready ビルド**:
78+
79+
```
80+
$ cd wolfssl-x.x.x-commercial-fips
81+
$ ./configure --enable-fips=ready --enable-keygen
82+
$ make check
83+
$ sudo make install
84+
```
85+
86+
これにより、システムのデフォルトのインストールロケーションに wolfSSL ライブラリがインストールされます。 多くのプラットフォームでは、これは次の場所になっています:
87+
88+
```
89+
/usr/local/lib
90+
/usr/local/include
91+
```

wolfCrypt-JNI/src-ja/chapter03.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# コンパイル
2+
3+
このセクションの手順を実行する前に、上記の [第 2 章](chapter02.md#requirements) の依存モジュールがインストールされていることを確認してください。
4+
5+
最初に、Linux または OSX のどちらを使用しているかに応じて、システムに適切な "makefile" をコピーします。
6+
7+
Linux を使用している場合:
8+
9+
```
10+
$ cd wolfcrypt-jni
11+
$ cp makefile.linux makefile
12+
```
13+
14+
Mac OSXにインストールする場合:
15+
16+
```
17+
$ cd wolfcrypt-jni
18+
$ cp makefile.macosx makefile
19+
```
20+
次に、 "make" を使用してネイティブ (C ソース) コードをコンパイルします:
21+
22+
```
23+
$ cd wolfcrypt-jni
24+
$ make
25+
```
26+
Java ソースのコンパイルには "ant" を使用します。 JNI または JCE (JNI を含む) パッケージをデバッグ モードまたはリリース モードでコンパイルするための ant ターゲットがいくつかあります。 ターゲットを指定せずに "ant" を実行すると、使用オプションが表示されます:
27+
28+
29+
```
30+
$ ant
31+
...
32+
build:
33+
[echo] wolfCrypt JNI and JCE
34+
[echo] ----------------------------------------------------------------------------
35+
[echo] USAGE:
36+
[echo] Run one of the following targets with ant:
37+
[echo] build-jni-debug | builds debug JAR with only wolfCrypt JNI classes
38+
[echo] build-jni-release | builds release JAR with only wolfCrypt JNI classes
39+
[echo] build-jce-debug | builds debug JAR with JNI and JCE classes
40+
[echo] build-jce-release | builds release JAR with JNI and JCE classes
41+
[echo] ----------------------------------------------------------------------------
42+
```
43+
必要に応じてビルドターゲットを指定してください。 たとえば、リリース モードで wolfJCE プロバイダーをビルドする場合は、次を実行します:
44+
45+
```
46+
$ ant build-jce-release
47+
```
48+
また、JUnit テストを実行するには、次のコマンドを実行します。 これにより、実行されたビルド (JNI と JCE) に一致するテストのみがコンパイルされ、それらのテストも実行されます。
49+
50+
51+
```
52+
$ ant test
53+
```
54+
Java JAR とネイティブ ライブラリの両方を消去するには:
55+
56+
```
57+
$ ant clean
58+
$ make clean
59+
```
60+
61+
## APIマニュアル(Javadoc)
62+
63+
`ant` を実行すると、`wolfcrypt-jni/docs` ディレクトリの下に一連の Javadoc が生成されます。 ルートドキュメントを表示するには、Web ブラウザで次のファイルを開きます:
64+
65+
`wolfcrypt-jni/docs/index.html`

wolfCrypt-JNI/src-ja/chapter04.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# インストール
2+
3+
wolfJCE をインストールして使用するには、次の 2 つの方法があります:
4+
5+
6+
## 実行時インストール
7+
8+
実行時に wolfJCE をインストールして使用するには、まず "**libwolfcryptjni.so**" がシステムのライブラリ検索パスにあることを確認してください。 Linux では、このパスを次のようにして変更できます:
9+
10+
11+
```
12+
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/add
13+
```
14+
次に、wolfCrypt JNI / wolfJCE JAR ファイル (**wolfcrypt-jni.jar**) を Java クラスパスに配置します。 これを行うには、システムのクラスパス設定を調整するか、コンパイル時と実行時に次のようにします:
15+
16+
17+
```
18+
$ javac -classpath <path/to/jar> ...
19+
$ java -classpath <path/to/jar> ...
20+
```
21+
最後に、Java アプリケーションで、プロバイダークラスをインポートし、Security.addProvider() を呼び出して、実行時にプロバイダーを追加します:
22+
23+
```
24+
import com.wolfssl.provider.jce.WolfCryptProvider;
25+
public class TestClass {
26+
public static void main(String args[]) {
27+
...
28+
Security.addProvider(new WolfCryptProvider());
29+
...
30+
}
31+
}
32+
```
33+
検証のためにインストールされているすべてのプロバイダーのリストを出力するには、次のようにします:
34+
35+
```
36+
Provider[] providers = Security.getProviders()
37+
for (Provider prov:providers) {
38+
System.out.println(prov);
39+
}
40+
```
41+
42+
## OS / システムレベルでのインストール
43+
44+
システム レベルで wolfJCE プロバイダーをインストールするには、JAR を OS の正しい Java インストール ディレクトリにコピーし、共有ライブラリがライブラリ検索パスにあることを確認します。
45+
46+
wolfJCE JAR ファイル (**wolfcrypt-jni.jar**) と共有ライブラリ (**libwolfcryptjni.so**) を次のディレクトリに追加します:
47+
48+
49+
```
50+
$JAVA_HOME/jre/lib/ext directory
51+
```
52+
53+
たとえば、OpenJDK を使用する Ubuntu では、次のようになります:
54+
55+
```
56+
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext
57+
```
58+
さらに、次のようなエントリを java.security ファイルに追加します:
59+
60+
```
61+
security.provider.N=com.wolfssl.provider.jce.WolfCryptProvider
62+
```
63+
ava.security ファイルは次の場所にあります:
64+
65+
```
66+
$JAVA_HOME/jre/lib/security/java.security
67+
```
68+
"N" を、ファイル内の他のプロバイダーと比較して WolfCryptProvider に持たせたい優先順位に置き換えます。
69+

wolfCrypt-JNI/src-ja/chapter05.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# パッケージ構成
2+
3+
wolfJCE は、"wolfcrypt-jni" JNI ラッパー ライブラリにバンドルされています。 wolfJCE は wolfCrypt の基礎となる JNI バインディングに依存するため、wolfcrypt-jni と同じネイティブ ライブラリ ファイルと JAR ファイルにコンパイルされます。
4+
5+
JNI ラッパーのみを使用したいユーザーの場合、JCE プロバイダー クラスを含まないバージョンの "wolfcrypt-jni.jar" をコンパイルすることができます。
6+
7+
wolfJCE / wolfCrypt JNI パッケージ構造:
8+
9+
10+
```
11+
wolfcrypt-jni /
12+
AUTHORS
13+
build.xml ant ビルドスクリプト
14+
COPYING
15+
docs / Javadoc
16+
jni / ネイティブC JNI バインディングソースファイル
17+
lib / コンパイル成果物(ライブラリ)の出力先
18+
LICENSING
19+
Makefile generic Makefile
20+
Makefile.linux Linux用 Makefile
21+
Makefile.osx OSX用 Makefile
22+
README_JCE.md
23+
README.md
24+
src /
25+
main/java/ Java ソースファイル
26+
test/java/ テストソースファイル
27+
```
28+
29+
wolfJCE プロバイダーのソース コードは "src/main/java/com/wolfssl/provider/jce" ディレクトリにあり、"**com.wolfssl.provider.jce**" Java パッケージの一部です。
30+
31+
wolfCrypt JNI ラッパーは "src/main/java/com/wolfssl/wolfcrypt" ディレクトリにあり、"**com.wolfssl.wolfcrypt**" Java パッケージの一部です。 このパッケージは wolfJCE クラスによって使用されるため、JCE のユーザーはこのパッケージを直接使用する必要はありません。
32+
33+
wolfCrypt-JNI と wolfJCE がコンパイルされると、出力 JAR とネイティブ共有ライブラリが "./lib" ディレクトリに配置されます。 これらには、JCE ビルドがコンパイルされると、wolfCrypt JNI ラッパーと wolfJCE プロバイダーの両方が含まれることに注意してください。
34+
35+
36+
```
37+
lib/
38+
libwolfcryptjni.so
39+
wolfcrypt-jni.jar
40+
```

wolfCrypt-JNI/src-ja/chapter06.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# サポートしているアルゴリズムとクラス
2+
3+
wolfJCE は現在、次のアルゴリズムとクラスをサポートしています:
4+
5+
MessageDigest Class
6+
MD5
7+
SHA-1
8+
SHA-256
9+
SHA-384
10+
SHA-512
11+
12+
SecureRandom Class
13+
HashDRBG
14+
15+
Cipher Class
16+
AES/CBC/NoPadding
17+
DESede/CBC/NoPadding
18+
RSA/ECB/PKCS1Padding
19+
20+
Mac Class
21+
HmacMD5
22+
HmacSHA1
23+
HmacSHA256
24+
HmacSHA384
25+
HmacSHA512
26+
27+
Signature Class
28+
MD5withRSA
29+
SHA1withRSA
30+
SHA256withRSA
31+
SHA384withRSA
32+
SHA512withRSA
33+
SHA1withECDSA
34+
SHA256withECDSA
35+
SHA384withECDSA
36+
SHA512withECDSA
37+
38+
KeyAgreement Class
39+
DiffieHellman
40+
DH
41+
ECDH
42+
43+
KeyPairGenerator Class
44+
EC
45+
DH
46+

0 commit comments

Comments
 (0)