diff --git a/wolfSSL/src-ja/appendix01.md b/wolfSSL/src-ja/appendix01.md index 7a960065..342a8bb3 100644 --- a/wolfSSL/src-ja/appendix01.md +++ b/wolfSSL/src-ja/appendix01.md @@ -1,3 +1 @@ - - # wolfSSL APIリファレンス diff --git a/wolfSSL/src-ja/appendix02.md b/wolfSSL/src-ja/appendix02.md index e5091fba..bb04aeb3 100644 --- a/wolfSSL/src-ja/appendix02.md +++ b/wolfSSL/src-ja/appendix02.md @@ -1,3 +1 @@ - - -# WolfCrypt APIリファレンス +# wolfCrypt APIリファレンス diff --git a/wolfSSL/src-ja/appendix03.md b/wolfSSL/src-ja/appendix03.md index 1df2164a..0e6a9f74 100644 --- a/wolfSSL/src-ja/appendix03.md +++ b/wolfSSL/src-ja/appendix03.md @@ -1,3 +1 @@ - - # APIヘッダーファイル diff --git a/wolfSSL/src-ja/appendix04.md b/wolfSSL/src-ja/appendix04.md index 41e88905..8a1f7698 100644 --- a/wolfSSL/src-ja/appendix04.md +++ b/wolfSSL/src-ja/appendix04.md @@ -1,196 +1,101 @@ - - # SSL/TLSの概要 +## アーキテクチャ +組み込み向けSSL/TLSライブラリであるwolfSSL(旧称:Cyassl)は、SSL 3.0、TLS 1.0、TLS 1.1、TLS 1.2、TLS 1.3プロトコルを実装しています。 +TLS 1.3は、標準化されている最も安全な最新バージョンです。 +SSL 2.0は数年間不安定であることから、サポートしていません。 +wolfSSLのTLSプロトコルは、[RFC 5246](https://tex2e.github.io/rfc-translater/html/rfc5246) で定義されている通りに実装されています。 +TLSには、メッセージ層とハンドシェーク層の2つのレコード層プロトコルが存在します。 +ハンドシェイクメッセージは、共通の暗号スイートのネゴシエーション、シークレットの作成、および安全な接続の有効化に使用されます。 +メッセージレイヤーはハンドシェイクレイヤーをカプセル化すると同時に、アラート処理とアプリケーションデータ転送もサポートします。 -## 全体アーキテクチャ - - - -組み込み向けSSL/TLSライブラリであるwolfSSL(旧称:Cyassl)は、SSL 3.0、TLS 1.0、TLS 1.1、TLS 1.2、およびTLS 1.3プロトコルを実装しています。TLS 1.3は現在、標準化されている最も安全な最新バージョンです。wolfSSLは、数年間不安定であるという事実により、SSL 2.0をサポートしていません。 - - -wolfSSLのTLSプロトコルは、[RFC 5246 (https://tools.ietf.org/html/rfc5246).](https://tools.ietf.org/html/rfc5246) で定義されているとおりに実装しています.TLSには、メッセージ層とハンドシェーク層の2つのレコード層プロトコルが存在します。ハンドシェイクメッセージは、共通の暗号スイートのネゴシエーション、シークレットの作成、および安全な接続の有効化に使用されます。メッセージレイヤーはハンドシェイクレイヤーをカプセル化すると同時に、アラート処理とアプリケーションデータ転送もサポートします。 - - -SSLプロトコルが既存のプロトコルにどのように適合するかを、**図1**に示します。SSLは、OSIモデルのトランスポート層とアプリケーション層の間に位置し、多くのプロトコル (TCP/IP、Bluetooth などを含む) がトランスポートメディアとして機能します。アプリケーションプロトコルは、SSL (HTTP、FTP、SMTP など) の上に階層化されています。 - -![SSL Protocol Diagram](sslprotocol.png "SSL Protocol Diagram") - - +SSLプロトコルが既存のプロトコルにどのように適合するかを、**図1**に示します。 +SSLは、OSIモデルのトランスポート層とアプリケーション層の間に位置し、多くのプロトコル (TCP/IP、Bluetoothなど) がトランスポートメディアとして機能します。 +HTTP、FTP、SMTPなどのアプリケーションプロトコルは、SSLの上に階層化されています。 +![概要図](sslprotocol.png) ## SSLハンドシェイク - SSLハンドシェイクプロセスの簡略を以下の**図2**に示します。 なお、SSLクライアントとサーバーの構成オプションによってはいくつかのステップは実行されません。 -![SSL Handshake Diagram](sslhandshake.png "SSL Handshake Diagram") - - +![ハンドシェイク](sslhandshake.png) +## SSL/TLSにおける、バージョンごとの違い -## SSLプロトコルバージョンとTLSプロトコルバージョンの違い - - - -SSL (Secure Sockets Layer) と TLS (Transport Security Layer) はどちらも、ネットワーク上で安全な通信を提供する暗号化プロトコルです。 これら2つのプロトコル (および、それぞれのいくつかのバージョン) は、今日、Webブラウジングから電子メール、インスタントメッセージング、VoIP に至るまで、さまざまなアプリケーションで広く使用されています。SSLとTLS、そしてそれぞれに含まれる各バージョン間にはいくつかの違いがあります。 - - -以下に、SSL および TLS プロトコルの各バージョンについての解説と主な相違点を示します。 各プロトコルの具体的な詳細については、記載されている RFC 仕様を参照してください。 - +SSL (Secure Sockets Layer) と TLS (Transport Security Layer) はどちらも、ネットワーク上で安全な通信を提供する暗号化プロトコルです。 +これら2つのプロトコルは、今日、WebブラウジングからEメール、インスタントメッセージング、VoIPに至るまで、さまざまなアプリケーションで広く使用されています。 +SSLとTLS、そしてそれぞれに含まれる各バージョン間にはいくつかの違いがあります。 +以下に、SSL および TLS プロトコルの各バージョンについての解説と主な相違点を示します。 +各プロトコルの具体的な詳細については、記載されているRFC仕様を参照してください。 ### SSL 3.0 +このプロトコルはNetscapeによって開発されたSSL 1.0から始まり、1996年にリリースされました。 +バージョン1.0はリリースされておらず、バージョン2.0には多くのセキュリティ上の欠陥があり、SSL 3.0のリリースにつながりました。 +SSL 2.0 に対する SSL 3.0 のいくつかの主要な改善点は次のとおりです。 - - -このプロトコルはNetscapeによって開発されたSSL 1.0から始まり、1996年にリリースされました。バージョン1.0はリリースされておらず、バージョン2.0には多くのセキュリティ上の欠陥があり、SSL 3.0のリリースにつながりました。SSL 2.0 に対する SSL 3.0 のいくつかの主要な改善点は次のとおりです。 - - - -* メッセージ層からのデータ転送の分離 - - +* データ転送をメッセージレイヤーから分離 * Export Cipherを使用している場合でも、128ビットのキーイングマテリアルを使用 - - * クライアントとサーバーが証明書のチェーンを送信し、組織は2つ以上の証明書の証明書階層を使用可能に - - * 一般化された鍵交換プロトコルを実装し、Diffie-HellmanとFortezzaの鍵交換と非RSA証明書を許可 - - * レコードの圧縮と解凍を可能に - - * 2.0 クライアントが検出されたときに SSL 2.0 にフォールバック - - - ### TLS 1.0 - - - -このプロトコルは1999年1月にRFC 2246で最初に定義されました。これは SSL 3.0 からのアップグレードであり劇的な違いはありませんが、SSL 3.0 と TLS 1.0 は相互運用できない程度の変更を含んでいます。SSL 3.0とTLS 1.0の間の大きな違いとして、以下が挙げられます。 - - +このプロトコルは1999年1月に[RFC 2246](https://tex2e.github.io/rfc-translater/html/rfc2246)で最初に定義されました。 +これは SSL 3.0 からのアップグレードであり劇的な違いはありませんが、SSL 3.0 と TLS 1.0 は相互運用できない程度の変更を含んでいます。 +SSL 3.0とTLS 1.0の間の大きな違いとして、以下が挙げられます。 * 鍵導出関数の変更 - - * MACの変更 - SSL 3.0は初期HMACの変更を使用し、TLS 1.0はHMACを使用します。 - - * 完了(Finished)メッセージの変更 - - * アラートの増加 - - * DSS/DHサポートの要求 - - - ### TLS 1.1 - - - -このプロトコルは、2006年4月にTLS 1.0の後継としてRFC 4346で定義されました。主な変更点は次のとおりです。 - - +このプロトコルは、2006年4月にTLS 1.0の後継として[RFC 4346](https://tex2e.github.io/rfc-translater/html/rfc4346)で定義されました。 +主な変更点は次のとおりです。 * 暗黙の初期化ベクトル(IV)は、暗号ブロック連鎖(CBC)攻撃から保護するために明示的なIVに置き換えられました。 - - -* パディングエラーの取り扱いは、CBC攻撃から保護するためにdecryption_failedアラートではなくbad_record_macアラートを使用するよう変更されました。 - - +* パディングエラーの取り扱いは、CBC攻撃から保護するために`decryption_failed`アラートではなく`bad_record_mac`アラートを使用するよう変更されました。 * IANAレジストリは、プロトコルパラメーター用に定義されました。 - - * 早期終了によってセッションが再開できなくなることがなくなりました。 - - - ### TLS 1.2 - - - -このプロトコルは、2008 年 8 月に RFC 5246 で定義されました。TLS 1.1 をベースとして、いくつかの改善が行われました。主な相違点は次のとおりです。 - - +このプロトコルは、2008年8月に[RFC 5246](https://tex2e.github.io/rfc-translater/html/rfc5246)で定義されました。 +TLS 1.1 をベースとして、いくつかの改善が行われました。 +主な相違点は次のとおりです。 * 擬似ランダム関数(PRF)のMD5/SHA-1の組み合わせを、暗号スイート指定PRFに置き換えました。 - - * デジタル署名要素のMD5/SHA-1の組み合わせは、単一のハッシュに置き換えられました。署名された要素には、使用されるハッシュアルゴリズムを明示的に指定するフィールドが含まれます。 - - * クライアントとサーバーが受け入れるハッシュおよび署名アルゴリズムの組み合わせが整理されました。 - - * 追加のデータモードを使用した、認証された暗号化のためのサポートが追加されました。 - - * TLS拡張機能の定義とAES暗号スイートがマージされました。 - - * EncryptedPremasterSecretバージョン番号が厳しくチェックされるようになりました。 - - * 多くの要件が厳しくなりました。 - - * `Verify_data`の長さは暗号スイートに依存します - - * Bleichenbacher/Dlima 攻撃防御の説明が簡潔になりました。 - - - ### TLS 1.3 - - - -このプロトコルは、2018年8月にRFC 8446で定義されました。主に、セキュリティ性能とスピードが向上しています。主な違いは次のとおりです。 - - +このプロトコルは、2018年8月に[RFC 8446](https://tex2e.github.io/rfc-translater/html/rfc8446)で定義されました。 +主に、セキュリティ性能とスピードが向上しています。 +主な違いは次のとおりです。 * サポートされている対称アルゴリズムのリストは、すべての従来のアルゴリズムから整理されました。残りのアルゴリズムはすべて、認証タグ付き暗号(AEAD) アルゴリズムを使用します。 - - -* ゼロ RTT (0-RTT) モードが追加され、一部のセキュリティ属性を犠牲にすることで、一部のアプリケーションデータのための接続時のラウンドトリップが削減されました。 - - -* ServerHello の後のすべてのハンドシェイクメッセージが暗号化されるようになりました。 - - +* ゼロRTT (0-RTT) モードが追加され、一部のセキュリティ属性を犠牲にすることで、一部のアプリケーションデータのための接続時のラウンドトリップが削減されました。 +* `ServerHello`の後のすべてのハンドシェイクメッセージが暗号化されるようになりました。 * HMACベースの抽出および拡張鍵導出機能(HKDF)がプリミティブとして使用されているため、鍵導出機能が再設計されました。 - - * ハンドシェイクステートマシンが再構築され、一貫性が向上し、余分なメッセージが削除されました。 - - -* ECC は基本仕様になり、新しい署名アルゴリズムが含まれるようになりました。各曲線の単一のポイント形式を支持して、ポイント形式のネゴシエーションを削除しました。 - - +* ECCは基本仕様になり、新しい署名アルゴリズムが含まれるようになりました。各曲線の単一のポイント形式を支持して、ポイント形式のネゴシエーションを削除しました。 * 圧縮、カスタムDHEグループ、およびDSAが削除されました、RSAパディングはPSSを使用するようになりました。 - - * TLS 1.2 バージョンネゴシエーション検証メカニズムは廃止され、拡張機能のバージョンリストが採用されました。 - - -* サーバー側の状態の有無にかかわらず、セッションの再開と、TLS の以前のバージョンの PSK ベースの暗号スイートは、単一の新しい PSK 交換に置き換えられました。 +* サーバー側の状態の有無にかかわらず、セッションの再開と、TLSの以前のバージョンのPSKベースの暗号スイートは、単一の新しいPSK交換に置き換えられました。 diff --git a/wolfSSL/src-ja/appendix05.md b/wolfSSL/src-ja/appendix05.md index 86944046..4bcdf37c 100644 --- a/wolfSSL/src-ja/appendix05.md +++ b/wolfSSL/src-ja/appendix05.md @@ -1,132 +1,48 @@ - - -# RFC、仕様、および参照 - - - +# RFC・仕様・リファレンス ## プロトコル - - - -* SSL v3.0 - [IETFドラフト](https://tools.ietf.org/id/draft-ietf-tls-ssl-version3-00.txt) - - -* TLS V1.0-[RFC2246](https://www.ietf.org/rfc/rfc2246.txt) - - -* TLS V1.1-[RFC4346](https://www.ietf.org/rfc/rfc4346.txt) - - -* TLS V1.2-[RFC5246](https://www.ietf.org/rfc/rfc5246.txt) - - -* TLS V1.3 - [RFC8446.](https://www.ietf.org/rfc/rfc8446.txt) - - -* DTLS - [RFC4347](https://tools.ietf.org/html/rfc4347) [仕様文書](https://crypto.stanford.edu/~nagendra/papers/dtls.pdf) - - -* IPv4 -[ウィキペディア](https://en.wikipedia.org/wiki/IPv4) - - -* IPv6 - [ウィキペディア](https://en.wikipedia.org/wiki/IPv6) - - - +* SSL v3.0 - [IETF Draft](https://tools.ietf.org/id/draft-ietf-tls-ssl-version3-00.txt) +* TLS v1.0 - [RFC2246](https://www.ietf.org/rfc/rfc2246.txt) +* TLS v1.1 - [RFC4346](https://www.ietf.org/rfc/rfc4346.txt) +* TLS v1.2 - [RFC5246](https://www.ietf.org/rfc/rfc5246.txt) +* TLS v1.3 - [RFC8446](https://www.ietf.org/rfc/rfc8446.txt) +* DTLS - [RFC4347](https://tools.ietf.org/html/rfc4347) [仕様文書](https://crypto.stanford.edu/~nagendra/papers/dtls.pdf) +* IPv4の概要 - [Wikipedia](https://en.wikipedia.org/wiki/IPv4) +* IPv6の概要 - [Wikipedia](https://en.wikipedia.org/wiki/IPv6) ## ストリーム暗号 - - - -* ストリーム暗号情報-[ウィキペディア](https://en.wikipedia.org/wiki/Stream_cipher) - - -* RC4/ARC4 - [IETFドラフト](https://tools.ietf.org/id/draft-kaukonen-cipher-arcfour-03.txt) [ウィキペディア](https://en.wikipedia.org/wiki/Rc4) - - - +* 概要 - [Wikipedia](https://en.wikipedia.org/wiki/Stream_cipher) +* RC4 / ARC4 - [IETF Draft](https://tools.ietf.org/id/draft-kaukonen-cipher-arcfour-03.txt) [Wikipedia](https://en.wikipedia.org/wiki/Rc4) ## ブロック暗号 +* 概要 - [Wikipedia](https://en.wikipedia.org/wiki/Block_cipher) +* AES - [NIST Publication](https://csrc.nist.gov/publications/fips/fips197/fips-197.pdf) [Wikipedia](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) +* AES-GCM - [NIST Specification](https://csrc.nist.rip/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-spec.pdf) +* AES-NI - [Intel Software Network](https://software.intel.com/en-us/articles/intel-advanced-encryption-standard-instructions-aes-ni/) +* DES/3DES - [NIST Publication](https://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf) [Wikipedia](https://en.wikipedia.org/wiki/Data_Encryption_Standard) +## ハッシュ - -* ブロック暗号情報 - [ウィキペディア](https://en.wikipedia.org/wiki/Block_cipher) - - -* AES - [NIST出版](https://csrc.nist.gov/publications/fips/fips197/fips-197.pdf) [ウィキペディア](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) - - -* AES-GCM - [NIST仕様](https://csrc.nist.rip/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-spec.pdf) - - -* AES -NI -[インテルソフトウェアネットワーク](https://software.intel.com/en-us/articles/intel-advanced-encryption-standard-instructions-aes-ni/) - - -* DES/3DES -[NIST出版](https://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf) [ウィキペディア](https://en.wikipedia.org/wiki/Data_Encryption_Standard) - - - - -## ハッシュ機能 - - - - -* SHA -[NIST FIPS180-1発表](https://www.itl.nist.gov/fipspubs/fip180-1.htm">https://www.itl.nist.gov/fipspubs/fip180-1.htm) [NIST FIPS180-2出版物](https://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf) [ウィキペディア](https://en.wikipedia.org/wiki/SHA_hash_functions) - - -* MD4 -[RFC1320](https://tools.ietf.org/html/rfc1320) - - -* MD5 -[RFC1321](https://tools.ietf.org/html/rfc1321) - - -* RIPEMD -160-[仕様文書](https://homes.esat.kuleuven.be/~bosselae/ripemd160.html) - - - +* SHA - [NIST FIPS180-1 Publication](https://www.itl.nist.gov/fipspubs/fip180-1.htm">https://www.itl.nist.gov/fipspubs/fip180-1.htm) [NIST FIPS180-2 Publication](https://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf) [Wikipedia](https://en.wikipedia.org/wiki/SHA_hash_functions) +* MD4 - [RFC1320](https://tools.ietf.org/html/rfc1320) +* MD5 - [RFC1321](https://tools.ietf.org/html/rfc1321) +* RIPEMD-160 - [Specification document](https://homes.esat.kuleuven.be/~bosselae/ripemd160.html) ## 公開鍵暗号 - - - -* Diffie -Hellman -[ウィキペディア](https://en.wikipedia.org/wiki/Diffie-Hellman_key_exchange) - - -* RSA - [MIT紙](https://people.csail.mit.edu/rivest/Rsapaper.pdf) [ウィキペディア](https://en.wikipedia.org/wiki/RSA) - - -* DSA/DSS -[NIST FIPS186-3](https://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf) - - -* ECDSA - [仕様書](https://www.cs.miami.edu/home/burt/learning/Csc609.142/ecdsa-cert.pdf) - - -* X.509-[RFC3279](https://www.ietf.org/rfc/rfc3279.txt) - - -* ASN.1 - [仕様書](https://luca.ntop.org/Teaching/Appunti/asn1.html) [ウィキペディア](https://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One) - - -* PSK -[RFC4279](https://tools.ietf.org/html/rfc4279) - - - +* Diffie-Hellman - [Wikipedia](https://en.wikipedia.org/wiki/Diffie-Hellman_key_exchange) +* RSA - [MIT Paper](https://people.csail.mit.edu/rivest/Rsapaper.pdf) [Wikipedia](https://en.wikipedia.org/wiki/RSA) +* DSA/DSS - [NIST FIPS186-3](https://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf) +* ECDSA - [Specification Document](https://www.cs.miami.edu/home/burt/learning/Csc609.142/ecdsa-cert.pdf) +* X.509 - [RFC3279](https://www.ietf.org/rfc/rfc3279.txt) +* ASN.1 - [Specification Document](https://luca.ntop.org/Teaching/Appunti/asn1.html) [Wikipedia](https://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One) +* PSK - [RFC4279](https://tools.ietf.org/html/rfc4279) ## その他 - - - -* PKCS#5、PBKDF1、PBKDF2-[RFC2898](https://tools.ietf.org/html/rfc2898) - - -* PKCS#8-[RFC5208.](https://tools.ietf.org/html/rfc5208) - - -* PKCS#12 - [ウィキペディア](https://en.wikipedia.org/wiki/PKCS_12) +* PKCS#5, PBKDF1, PBKDF2 - [RFC2898](https://tools.ietf.org/html/rfc2898) +* PKCS#8 - [RFC5208](https://tools.ietf.org/html/rfc5208) +* PKCS#12 - [Wikipedia](https://en.wikipedia.org/wiki/PKCS_12) diff --git a/wolfSSL/src-ja/appendix06.md b/wolfSSL/src-ja/appendix06.md index e9e6ba9d..4c5de11b 100644 --- a/wolfSSL/src-ja/appendix06.md +++ b/wolfSSL/src-ja/appendix06.md @@ -1,364 +1,338 @@ - - # エラーコード +## wolfSSL エラーコード +wolfSSLのエラーコードは、`wolfssl/ssl.h`に記載しています。 +以下のエラーの詳細な説明については、OpenSSLのマニュアルページ`SSL_get_error`(`man SSL_get_error`)をご参照ください。 +| エラーコード列挙型 | エラーコード | +| --------------- | ---------- | +| `SSL_ERROR_WANT_READ` | 2 | +| `SSL_ERROR_WANT_WRITE` | 3 | +| `SSL_ERROR_WANT_CONNECT` | 7 | +| `SSL_ERROR_WANT_ACCEPT` | 8 | +| `SSL_ERROR_SYSCALL` | 5 | +| `SSL_ERROR_WANT_X509_LOOKUP` | 83 | +| `SSL_ERROR_ZERO_RETURN` | 6 | +| `SSL_ERROR_SSL` | 85 | -## wolfSSLエラーコード - - - -wolfSSL(以前のCyassl)エラーコードは`wolfssl/ssl.h`にあります。次のエラーの詳細な説明については、`SSL_get_error`(`man SSL_get_error`)のOpenSSL Manページを参照してください。 +wolfSSLの追加のエラーコードは、`wolfssl/error-ssl.h`に記載しています。 -|エラーコード列挙|エラーコード|エラー説明| +| エラーコード列挙型 | エラーコード | エラーの説明 | | --------------- | ---------- | ----------------- | -| `SSL_ERROR_WANT_READ` |2|| -| `SSL_ERROR_WANT_WRITE` | 3 | | -| `SSL_ERROR_WANT_CONNECT` | 7 | | -| `SSL_ERROR_WANT_ACCEPT` | 8 | | -| `SSL_ERROR_SYSCALL` | 5 | | -| `SSL_ERROR_WANT_X509_LOOKUP` | 83 | | -| `SSL_ERROR_ZERO_RETURN` | 6 | | -| `SSL_ERROR_SSL` | 85 | | - - - - -追加のwolfSSLエラーコードは`wolfssl/error-ssl.h`にあります - -|エラーコード列挙|エラーコード|エラー説明| +| `INPUT_CASE_ERROR` | -301 | プロセス入力状態エラー | +| `PREFIX_ERROR` | -302 | 鍵ラウンドへの不正なインデックス | +| `MEMORY_ERROR` | -303 | メモリ確保失敗 | +| `VERIFY_FINISHED_ERROR` | -304 | Finishedメッセージ検証に失敗 | +| `VERIFY_MAC_ERROR` | -305 | MAC検証に失敗 | +| `PARSE_ERROR` | -306 | ヘッダーの解析エラー | +| `UNKNOWN_HANDSHAKE_TYPE` | -307 | 不正なハンドシェイクタイプ | +| `SOCKET_ERROR_E` | -308 | ソケットがエラー状態 | +| `SOCKET_NODATA` | -309 | 予想されるデータが存在しない | +| `INCOMPLETE_DATA` | -310 | タスクを完了するのに十分なデータがない | +| `UNKNOWN_RECORD_TYPE` | -311 | レコードヘッダーの不明なタイプ | +| `DECRYPT_ERROR` | -312 | 復号中のエラー | +| `FATAL_ERROR` | -313 | 致命的なエラーアラートを受信 | +| `ENCRYPT_ERROR` | -314 | 暗号化中のエラー | +| `FREAD_ERROR` | -315 | freadでエラー | +| `NO_PEER_KEY` | -316 | ピアの鍵が存在しない | +| `NO_PRIVATE_KEY` | -317 | 秘密鍵が存在しない | +| `RSA_PRIVATE_ERROR` | -318 | RSA秘密鍵操作中のエラー | +| `NO_DH_PARAMS` | -319 | サーバーがDHパラメータを送信してこない | +| `BUILD_MSG_ERROR` | -320 | メッセージの作成に失敗 | +| `BAD_HELLO` | -321 | ClientHelloメッセージが不正 | +| `DOMAIN_NAME_MISMATCH` | -322 | ピアのサブジェクト名の不一致 | +| `WANT_READ` | -323 | データ再読み取りが必要 | +| `NOT_READY_ERROR` | -324 | ハンドシェイクレイヤーがReadyでない | +| `VERSION_ERROR` | -326 | レコードレイヤーのバージョンエラー | +| `WANT_WRITE` | -327 | データの再送が必要 | +| `BUFFER_ERROR` | -328 | 不正な形式のバッファ入力 | +| `VERIFY_CERT_ERROR` | -329 | 証明書検証エラー | +| `VERIFY_SIGN_ERROR` | -330 | 署名検証エラー | +| `CLIENT_ID_ERROR` | -331 | PSKクライアントIDエラー | +| `SERVER_HINT_ERROR` | -332 | PSKサーバーヒントエラー | +| `PSK_KEY_ERROR` | -333 | PSK鍵エラー | +| `GETTIME_ERROR` | -337 | gettimeofdayが失敗 | +| `GETITIMER_ERROR` | -338 | getitimerが失敗 | +| `SIGACT_ERROR` | -339 | sigactionが失敗 | +| `SETITIMER_ERROR` | -340 | setitimerが失敗 | +| `LENGTH_ERROR` | -341 | レコードレイヤーの長さが不正 | +| `PEER_KEY_ERROR` | -342 | ピア鍵のデコードに失敗 | +| `ZERO_RETURN` | -343 | ピアがclose notifyを送信 | +| `SIDE_ERROR` | -344 | クライアント/サーバータイプが不正 | +| `NO_PEER_CERT` | -345 | ピアが鍵を送信しなかった | +| `ECC_CURVETYPE_ERROR` | -350 | 不正なECC曲線タイプ | +| `ECC_CURVE_ERROR` | -351 | 不正なECC曲線 | +| `ECC_PEERKEY_ERROR` | -352 | 不正なピアECC鍵 | +| `ECC_MAKEKEY_ERROR` | -353 | 不正なECC鍵の作成 | +| `ECC_EXPORT_ERROR` | -354 | 不正なECCエクスポート鍵 | +| `ECC_SHARED_ERROR` | -355 | 不正なECC共有秘密 | +| `NOT_CA_ERROR` | -357 | CA証明書ではない | +| `BAD_CERT_MANAGER_ERROR` | -359 | 不正な証明書マネージャー | +| `OCSP_CERT_REVOKED` | -360 | OCSP証明書が失効 | +| `CRL_CERT_REVOKED` | -361 | CRL証明書が失効 | +| `CRL_MISSING` | -362 | CRLが読み込まれていない | +| `MONITOR_SETUP_E` | -363 | CRLモニターのセットアップエラー | +| `THREAD_CREATE_E` | -364 | スレッド作成エラー | +| `OCSP_NEED_URL` | -365 | OCSPは検索用のURLが必要 | +| `OCSP_CERT_UNKNOWN` | -366 | OCSPレスポンダーが不明 | +| `OCSP_LOOKUP_FAIL` | -367 | OCSP検索が失敗 | +| `MAX_CHAIN_ERROR` | -368 | 最大チェーン深度を超えた | +| `COOKIE_ERROR` | -369 | DTLSクッキーエラー | +| `SEQUENCE_ERROR` | -370 | DTLSシーケンスエラー | +| `SUITES_ERROR` | -371 | スイートポインタエラー | +| `OUT_OF_ORDER_E` | -373 | 順序外のメッセージ | +| `BAD_KEA_TYPE_E` | -374 | 不正なKEAタイプが見つかった | +| `SANITY_CIPHER_E` | -375 | 暗号のサニティチェックエラー | +| `RECV_OVERFLOW_E` | -376 | 受信コールバックが要求以上のデータを返却した | +| `GEN_COOKIE_E` | -377 | クッキー生成エラー | +| `NO_PEER_VERIFY` | -378 | 検証すべきピア証明書が存在しない | +| `FWRITE_ERROR` | -379 | fwriteエラー | +| `CACHE_MATCH_ERROR` | -380 | キャッシュHRD不一致 | +| `UNKNOWN_SNI_HOST_NAME_E` | -381 | 認識されないホスト名 | +| `UNKNOWN_MAX_FRAG_LEN_E` | -382 | 認識されない最大フラグメント | +| `KEYUSE_SIGNATURE_E` | -383 | KeyUse digSignatureエラー | +| `KEYUSE_ENCIPHER_E` | -385 | KeyUse KeyEncipherエラー | +| `EXTKEYUSE_AUTH_E` | -386 | ExtKeyUse server・client_auth | +| `SEND_OOB_READ_E` | -387 | 送信コールバックが境界外読み取り | +| `SECURE_RENEGOTIATION_E` | -388 | 無効な再ネゴシエーション情報 | +| `SESSION_TICKET_LEN_E` | -389 | セッションチケットが大きすぎる | +| `SESSION_TICKET_EXPECT_E` | -390 | セッションチケットがない | +| `SCR_DIFFERENT_CERT_E` | -391 | SCR異なる証明書エラー | +| `SESSION_SECRET_CB_E` | -392 | セッション秘密CB関数の失敗 | +| `NO_CHANGE_CIPHER_E` | -393 | Cipher変更前に終了 | +| `SANITY_MSG_E` | -394 | メッセージ順序のサニティチェックエラー | +| `DUPLICATE_MST_E` | -395 | 重複メッセージエラー | +| `SNI_UNSUPPORTED` | -396 | SSL 3.0はSNIをサポートしていない | +| `SOCKET_PEER_CLOSED_E` | -397 | トランスポート層がクローズされた | +| `BAD_TICKET_KEY_CB_SZ` | -398 | 不正なセッションチケット鍵cbサイズ | +| `BAD_TICKET_MSG_SZ` | -399 | 不正なセッションチケットmsgサイズ | +| `BAD_TICKET_ENCRYPT` | -400 | 不正なユーザーチケット暗号化 | +| `DH_KEY_SIZE_E` | -401 | DH鍵が小さすぎる | +| `SNI_ABSENT_ERROR` | -402 | SNIリクエストなし | +| `RSA_SIGN_FAULT` | -403 | RSA署名障害 | +| `HANDSHAKE_SIZE_ERROR` | -404 | ハンドシェイクメッセージが大きすぎる | +| `UNKNOWN_ALPN_PROTOCOL_NAME_E` | -405 | 認識されないプロトコル名 | +| `BAD_CERTIFICATE_STATUS_ERROR` | -406 | 不正な証明書ステータスメッセージ | +| `OCSP_INVALID_STATUS` | -407 | 無効なOCSPステータス | +| `OCSP_WANT_READ` | -408 | OCSPコールバックレスポンス | +| `RSA_KEY_SIZE_E` | -409 | RSA鍵が小さすぎる | +| `ECC_KEY_SIZE_E` | -410 | ECC鍵が小さすぎる | +| `DTLS_EXPORT_VER_E` | -411 | エクスポートバージョンエラー | +| `INPUT_SIZE_E` | -412 | 入力サイズが大きすぎる | +| `CTX_INIT_MUTEX_E` | -413 | コンテキストミューテックス初期化エラー | +| `EXT_MASTER_SECRET_NEEDED_E` | -414 | 再開するにはEMSを有効にする必要がある | +| `DTLS_POOL_SZ_E` | -415 | DTLSプールサイズを超えた | +| `DECODE_E` | -416 | ハンドシェイクメッセージのデコードエラー | +| `HTTP_TIMEOUT` | -417 | OCSPまたはCRLリクエストのHTTPタイムアウト | +| `WRITE_DUP_READ_E` | -418 | 書き込み複製の書き込み側が読み込めない | +| `WRITE_DUP_WRITE_E` | -419 | 書き込み複製の読み込み側が書き込めない | +| `INVALID_CERT_CTX_E` | -420 | TLS証明書コンテキストが一致しない | +| `BAD_KEY_SHARE_DATA` | -421 | 鍵共有データが無効 | +| `MISSING_HANDSHAKE_DATA` | -422 | ハンドシェイクメッセージにデータがない | +| `BAD_BINDER` | -423 | バインダーが一致しない | +| `EXT_NOT_ALLOWED` | -424 | 拡張子がメッセージで許可されていない | +| `INVALID_PARAMETER` | -425 | セキュリティパラメータが無効 | +| `MCAST_HIGHWATER_CB_E` | -426 | マルチキャストハイウォーターcbエラー | +| `ALERT_COUNT_E` | -427 | アラートカウントを超えた | +| `EXT_MISSING` | -428 | 必要な拡張機能が見つからない | +| `UNSUPPORTED_EXTENSION` | -429 | TLSXはクライアントから要求されていない | +| `PRF_MISSING` | -430 | PRFがコンパイルされていない | +| `DTLS_RETX_OVER_TX` | -431 | DTLSフライトを再送信 | +| `DH_PARAMS_NOT_FFDHE_E` | -432 | サーバーからのDHパラメータがFFDHEでない | +| `TCA_INVALID_ID_TYPE` | -433 | TLSX TCA IDタイプが無効 | +| `TCA_ABSENT_ERROR` | -434 | TLSX TCA IDレスポンスなし | + +ネゴシエーションパラメータエラー + +| エラーコード列挙型 | エラーコード | エラーの説明 | | --------------- | ---------- | ----------------- | -|`INPUT_CASE_ERROR` |-301 |プロセス入力状態エラー| -|`PREFIX_ERROR` |-302 |キーラウンドの悪いインデックス| -|`MEMORY_ERROR` |-303 |メモリ確保失敗| -|`VERIFY_FINISHED_ERROR` |-304 |Finishedメッセージ検証に失敗| -|`VERIFY_MAC_ERROR` |-305 |Mac検証に失敗| -|`PARSE_ERROR` |-306 |ヘッダーの解析エラー| -|`UNKNOWN_HANDSHAKE_TYPE` |-307 |不明なハンドシェークタイプ| -|`SOCKET_ERROR_E` |-308 |ソケットがエラー状態| -|`SOCKET_NODATA` |-309 |予想されるデータがソケットにない| -|`INCOMPLETE_DATA` |-310 |タスク完了のための十分なデータがない| -|`UNKNOWN_RECORD_TYPE` |-311 |レコードHDRに未知のタイプ | -|`DECRYPT_ERROR` |-312 |復号中のエラー| -|`FATAL_ERROR` |-313 |致命的なエラーアラートを受信| -|`ENCRYPT_ERROR` |-314 |暗号化中のエラー| -|`FREAD_ERROR` |-315 |freadでエラー| -|`NO_PEER_KEY` |-316 |ピアの鍵が存在しない| -|`NO_PRIVATE_KEY` |-317 |秘密鍵が存在しない| -|`RSA_PRIVATE_ERROR` |-318 |RSA秘密鍵操作中のエラー| -|`NO_DH_PARAMS` |-319 |サーバーがDHパラメータを送ってこない| -|`BUILD_MSG_ERROR` |-320 |メッセージの作成に失敗| -|`BAD_HELLO` |-321 |ClientHelloメッセージが不正| -|`DOMAIN_NAME_MISMATCH` |-322 |ピアのサブジェクト名がミスマッチ| -|`WANT_READ` |-323 |データ再読み取りが必要| -|`NOT_READY_ERROR` |-324 |ハンドシェイクレイヤーがReadyでない | -|`VERSION_ERROR` |-326 |レコードレイヤーバージョンエラー| -|`WANT_WRITE` |-327 |データ再送が必要| -|`BUFFER_ERROR` |-328 |不正なバッファー入力| -|`VERIFY_CERT_ERROR` |-329 |verify certエラ| -|`VERIFY_SIGN_ERROR` |-330 |verify signエラー| -|`CLIENT_ID_ERROR` |-331 |PSKクライアントIDエラー| -|`SERVER_HINT_ERROR` |-332 |PSKサーバーヒントエラー| -|`PSK_KEY_ERROR` |-333 |PSK鍵エラー| -|`GETTIME_ERROR` |-337 |GetTimeOfdayが失敗| -|`GETITIMER_ERROR` |-338 |Getitimerが失敗| -|`SIGACT_ERROR` |-339 |sigactionが失敗| -|`SETITIMER_ERROR` |-340 |setitimerが失敗| -|`LENGTH_ERROR` |-341 |レコードレイヤーの長さが不正| -|`PEER_KEY_ERROR` |-342 |ピアの鍵をデコードできず| -|`ZERO_RETURN` |-343 |ピアがclose notifyを送信| -|`SIDE_ERROR` |-344 |クライアント/サーバータイプが不正| -|`NO_PEER_CERT` |-345 |ピアが鍵を送信しなかった| -|`ECC_CURVETYPE_ERROR` |-350 |ECCカーブタイプが不正| -|`ECC_CURVE_ERROR` |-351 |ECC曲線が不正| -|`ECC_PEERKEY_ERROR` |-352 |ピアECC鍵が不正| -|`ECC_MAKEKEY_ERROR` |-353 |Make ECC鍵が不正| -|`ECC_EXPORT_ERROR` |-354 |ECCエクスポート鍵が不正| -|`ECC_SHARED_ERROR` |-355 |ECCシェアードシークレットが不正| -|`NOT_CA_ERROR` |-357 |CA証明書ではない| -|`BAD_CERT_MANAGER_ERROR` |-359 |Cert Managerが不正| -|`OCSP_CERT_REVOKED` |-360 |OCSP証明書が取り消されました| -|`CRL_CERT_REVOKED` |-361 |CRL証明書が取り消されました -|`CRL_MISSING` |-362 |CRLロードされていない| -|`MONITOR_SETUP_E` |-363 |CRLモニターセットアップエラー| -|`THREAD_CREATE_E` |-364 |スレッド作成でエラー| -|`OCSP_NEED_URL` |-365 |OCSP |検索用のURLが必要| -|`OCSP_CERT_UNKNOWN` |-366 |OCSPレスポンダーが不明| -|`OCSP_LOOKUP_FAIL` |-367 |OCSPルックアップが失敗| -|`MAX_CHAIN_ERROR` |-368 |最大チェーンの深さを超えた| -|`COOKIE_ERROR` |-369 |DTLSクッキーエラー| -|`SEQUENCE_ERROR` |-370 |DTLSシーケンスエラー| -|`SUITES_ERROR` |-371 |スイートポインタエラー| -|`OUT_OF_ORDER_E` |-373 |Out of Orderメッセージ受信| -|`BAD_KEA_TYPE_E` |-374 |悪いKEAタイプが見つかりました| -|`SANITY_CIPHER_E` |-375 |SANITYチェック暗号エラー| -|`RECV_OVERFLOW_E` |-376 |受信コールバックが要求以上のデータを返却した| -|`GEN_COOKIE_E` |-377 |クッキーエラーを生成| -|`NO_PEER_VERIFY` |-378 |検証すべきピア証明書が無い| -|`FWRITE_ERROR` |-379 |fwriteエラー| -|`CACHE_MATCH_ERROR` |-380 |キャッシュHRD不一致| -|`UNKNOWN_SNI_HOST_NAME_E` |-381 |認識されていないホスト名| -|`UNKNOWN_MAX_FRAG_LEN_E` |-382 |認識されない最大フラグ長| -|`KEYUSE_SIGNATURE_E` |-383 |KeyUse digSignatureエラー| -|`KEYUSE_ENCIPHER_E` |-385 |KeyUse KeyEncipherエラー| -|`EXTKEYUSE_AUTH_E` |-386 |ExtKeyUse server| -|`SEND_OOB_READ_E` |-387 |送信コールバックが帯域外データ受信| -|`SECURE_RENEGOTIATION_E` |-388 |無効な再ネゴシエーション情報| -|`SESSION_TICKET_LEN_E` |-389 |セッションチケットが大きすぎ| -|`SESSION_TICKET_EXPECT_E` |-390 |セッションチケットがありません| -|`SCR_DIFFERENT_CERT_E` |-391 |SCR異なる証明書エラー| -|`SESSION_SECRET_CB_E` |-392 |セッションシークレットCB FCN障害| -|`NO_CHANGE_CIPHER_E` |-393 |Cipherを変更する前に終了| -|`SANITY_MSG_E` |-394 |メッセージ順のサニティチェックでエラー| -|`DUPLICATE_MST_E` |-395 |重複メッセージエラー| -|`SNI_UNSUPPORTED` |-396 |SSL 3.0はSNIをサポートしません| -|`SOCKET_PEER_CLOSED_E` |-397 |トランスポート層がクローズされた| -|`BAD_TICKET_KEY_CB_SZ` |-398 |セッションチケットキーCBサイズ不正| -|`BAD_TICKET_MSG_SZ` |-399 |セッションチケットMSGサイズ不正| -|`BAD_TICKET_ENCRYPT` |-400 |ユーザーチケット暗号化不正| -|`DH_KEY_SIZE_E` |-401 |DHキーが小さすぎる| -|`SNI_ABSENT_ERROR` |-402 |SNIリクエストはありません| -|`RSA_SIGN_FAULT` |-403 |RSA署名障害| -|`HANDSHAKE_SIZE_ERROR` |-404 |ハンドシェークメッセージが大きすぎる| -|`UNKNOWN_ALPN_PROTOCOL_NAME_E` |-405 |認識されていないプロトコル名エラー| -|`BAD_CERTIFICATE_STATUS_ERROR` |-406 |証明書ステータスメッセージ| -|`OCSP_INVALID_STATUS` |-407 |OCSPステータスが無効です -|`OCSP_WANT_READ` |-408 |OCSPコールバック応答| -|`RSA_KEY_SIZE_E` |-409 |RSAキーが小さすぎる| -|`ECC_KEY_SIZE_E` |-410 |ECCキーが小さすぎる| -|`DTLS_EXPORT_VER_E` |-411 |バージョンエラーをエクスポートする| -|`INPUT_SIZE_E` |-412 |入力サイズ大きすぎます| -|`CTX_INIT_MUTEX_E` |-413 |CTXミューテックスエラーを初期化します| -|`EXT_MASTER_SECRET_NEEDED_E` |-414 |EMSが再開することができます| -|`DTLS_POOL_SZ_E` |-415 |DTLSプールサイズを超えました| -|`DECODE_E` |-416 |ハンドシェイクメッセージエラーをデコードします| -|`HTTP_TIMEOUT` |-417 |OCSPまたはCRL REQのHTTPタイムアウト| -|`WRITE_DUP_READ_E` |-418 |書き込みdup write sideは読めない| -|`WRITE_DUP_WRITE_E` |-419 |dup読み取りsideは書くことができません| -|`INVALID_CERT_CTX_E` |-420 |TLS CERT CTXは一致していません| -|`BAD_KEY_SHARE_DATA` |-421 |キー共有データ無効| -|`MISSING_HANDSHAKE_DATA` |-422 |ハンドシェイクメッセージ欠落データ| -|`BAD_BINDER` |-423 |バインダーが一致しません| -|`EXT_NOT_ALLOWED` |-424 |MSGでは許可されていない拡張| -|`INVALID_PARAMETER` |-425 |セキュリティパラメーター無効| -|`MCAST_HIGHWATER_CB_E` |-426 |マルチキャストハイウォーターCB err | -|`ALERT_COUNT_E` |-427 |アラート数を超えました| -|`EXT_MISSING` |-428 |必要な拡張機能が見つかりません| -|`UNSUPPORTED_EXTENSION` |-429 |TLSXはクライアントから要求されていません| -|`PRF_MISSING` |-430 ||にコンパイルされていないPRF| -|`DTLS_RETX_OVER_TX` |-431 |DTLSフライトを再送信| -|`DH_PARAMS_NOT_FFDHE_E` |-432 |ffdheではなくサーバーからのdhパラメーション| -|`TCA_INVALID_ID_TYPE` |-433 |TLSX TCA IDタイプ無効| -|`TCA_ABSENT_ERROR` |-434 |TLSX TCA ID応答なし| - - - -ネゴシエーションパラメーターエラー - -|エラーコード列挙|エラーコード|エラー説明| -| --------------- | ---------- | ----------------- | -|`UNSUPPORTED_SUITE` |-500 |サポートされていない暗号スイート| -|`MATCH_SUITE_ERROR` |-501 |暗号スイートと一致することはできません| -|`COMPRESSION_ERROR` |-502 |圧縮ミスマッチ| -|`KEY_SHARE_ERROR` |-503 |キーシェアミスマッチ| -|`POST_HAND_AUTH_ERROR` |-504 |クライアントはポストハンド認証を行いません| -|`HRR_COOKIE_ERROR` |-505 |HRR MSGクッキーミスマッチ| - - - +| `UNSUPPORTED_SUITE` | -500 | サポートされていない暗号スイート | +| `MATCH_SUITE_ERROR` | -501 | 暗号スイートの不一致 | +| `COMPRESSION_ERROR` | -502 | 圧縮の不一致 | +| `KEY_SHARE_ERROR` | -503 | 鍵共有の不一致 | +| `POST_HAND_AUTH_ERROR` | -504 | クライアントがポストハンド認証を行わない | +| `HRR_COOKIE_ERROR` | -505 | HRRメッセージクッキーの不一致 | ## wolfCryptエラーコード +wolfCryptのエラーコードは、`wolfssl/wolfcrypt/error.h`に記載しています。 - -wolfCryptエラーコードは`wolfssl/wolfcrypt/error.h`にあります。 - -|エラーコード列挙|エラーコード|エラー説明| +| エラーコード列挙型 | エラーコード | エラーの説明 | | --------------- | ---------- | ----------------- | -|`OPEN_RAN_E` |-101 |ランダムデバイスを開く際にエラー| -|`READ_RAN_E` |-102 |ランダムデバイスのリード時にエラー| -|`WINCRYPT_E` |-103 |Windows Crypt initエラー| -|`CRYPTGEN_E` |-104 |Windows暗号化エラー| -|`RAN_BLOCK_E` |-105 |ランダムデバイスの読み取りでwould block| -|`BAD_MUTEX_E` |-106 |ミューテックス操作で失敗| -|`MP_INIT_E` |-110 |mp_initエラー状態| -|`MP_READ_E` |-111 |mp_readエラー状態| -|`MP_EXPTMOD_E` |-112 |MP_EXPTMODエラー状態| -|`MP_TO_E` |-113 |MP_TO_XXXエラー状態、変換できません| -|`MP_SUB_E` |-114 |MP_SUBエラー状態、減算できません -|`MP_ADD_E` |-115 |MP_ADDエラー状態、追加できません| -|`MP_MUL_E` |-116 |MP_MULエラー状態、|マイトルアップできません -|`MP_MULMOD_E` |-117 |MP_MULMODエラー状態、Morply MOD |を乗算できません -|`MP_MOD_E` |-118 |mp_modエラー状態、mod | -|`MP_INVMOD_E` |-119 |MP_INVMODエラー状態、INV MOD |を招くことはできません -|`MP_CMP_E` |-120 |MP_CMPエラー状態| -|`MP_ZERO_E` |-121 |予想されない、MPゼロ結果を得た -|`MEMORY_E` |-125 |メモリのエラー| -|`RSA_WRONG_TYPE_E` |-130 |RSA関数のRSA間違ったブロックタイプ| -|`RSA_BUFFER_E` |-131 |RSAバッファーエラー、出力が小さすぎる、または入力が大きすぎる| -|`BUFFER_E` |-132 |出力バッファーが小さすぎるか、入力が大きすぎる| -|`ALGO_ID_E` |-133 |ALGO IDエラーの設定| -|`PUBLIC_KEY_E` |-134 |公開キーエラーの設定| -|`DATE_E` |-135 |日付有効性エラー| -|`SUBJECT_E` |-136 |件名名の設定エラー| -|`ISSUER_E` |-137 |発行者名エラーの設定| -|`CA_TRUE_E` |-138 |CA Basic Constraint True Error |を設定する -|`EXTENSIONS_E` |-139 |拡張機能の設定エラー| -|`ASN_PARSE_E` |-140 |ASN解析エラー、無効な入力| -|`ASN_VERSION_E` |-141 |ASNバージョンエラー、無効な数値| -|`ASN_GETINT_E` |-142 |ASNは大きなINTエラーを取得し、データが無効なデータ| -|`ASN_RSA_KEY_E` |-143 |ASNキーINITエラー、無効な入力| -|`ASN_OBJECT_ID_E` |-144 |ASNオブジェクトIDエラー、無効なID | -|`ASN_TAG_NULL_E` |-145 |asnタグエラー、null |ではありません -|`ASN_EXPECT_0_E` |-146 |asnはゼロではなく、エラーを期待します -|`ASN_BITSTR_E` |-147 |ASNビット文字列エラー、間違ったID | -|`ASN_UNKNOWN_OID_E` |-148 |ASN OIDエラー、不明な合計ID | -|`ASN_DATE_SZ_E` |-149 |ASN日付エラー、悪いサイズ| -|`ASN_BEFORE_DATE_E` |-150 |ASN日付エラー、現在の日付| -|`ASN_AFTER_DATE_E` |-151 |ASN日付エラー、現在の日付| -|`ASN_SIG_OID_E` |-152 |ASNシグネチャエラー、OIDの不一致| -|`ASN_TIME_E` |-153 |ASNタイムエラー、不明な時間タイプ| -|`ASN_INPUT_E` |-154 |ASN入力エラー、十分なデータがありません| -|`ASN_SIG_CONFIRM_E` |-155 |ASN SIGエラー、失敗の確認| -|`ASN_SIG_HASH_E` |-156 |ASN SIGエラー、サポートされていないハッシュタイプ| -|`ASN_SIG_KEY_E` |-157 |ASN SIGエラー、サポートされていないキータイプ| -|`ASN_DH_KEY_E` |-158 |ASNキーINITエラー、無効な入力| -|`ASN_CRIT_EXT_E` |-160 |サポートされていない批判的拡張| -|`ECC_BAD_ARG_E` |-170 |間違ったタイプのECC入力引数| -|`ASN_ECC_KEY_E` |-171 |ASN ECC不良入力| -|`ECC_CURVE_OID_E` |-172 |サポートされていないECC OIDカーブタイプ| -|`BAD_FUNC_ARG` |-173 |提供された悪い関数引数| -|`NOT_COMPILED_IN` |-174 |機能がコンパイルされていない| -|`UNICODE_SIZE_E` |-175 |Unicodeパスワード|マウサー| -|`NO_PASSWORD` |-176 |ユーザーが提供するパスワードはありません| -|`ALT_NAME_E` |-177 |Alt Name Sizeの問題、大きすぎます -|`AES_GCM_AUTH_E` |-180 |AES-GCM認証チェックの失敗| -|`AES_CCM_AUTH_E` |-181 |AES-CCM認証チェック不良| -|`CAVIUM_INIT_E` |-182 |キャビウムinitタイプエラー| -|`COMPRESS_INIT_E` |-183 |init Errorを圧縮します| -|`COMPRESS_E` |-184 |エラーを圧縮する| -|`DECOMPRESS_INIT_E` |-185 |initエラーを減圧します| -|`DECOMPRESS_E` |-186 |解凍エラー| -|`BAD_ALIGN_E` |-187 |操作のための悪いアライメント、Allocのない| -|`ASN_NO_SIGNER_E` |-188 |ASN SIGエラー、証明書を検証するためのCA署名者はありません| -|`ASN_CRL_CONFIRM_E` |-189 |ASN CRL失敗を確認する署名者はありません| -|`ASN_CRL_NO_SIGNER_E` |-190 |ASN CRL失敗を確認する署名者はありません| -|`ASN_OCSP_CONFIRM_E` |-191 |ASN OCSPシグネチャーの確認失敗| -|`BAD_ENC_STATE_E` |-192 |悪いECC ENC状態操作| -|`BAD_PADDING_E` |-193 |悪いパディング、MSGは正しい長さ| -|`REQ_ATTRIBUTE_E` |-194 |CERT要求属性の設定エラー| -|`PKCS7_OID_E` |-195 |PKCS#7、不一致のOIDエラー| -|`PKCS7_RECIP_E` |-196 |PKCS#7、受信者エラー| -|`FIPS_NOT_ALLOWED_E` |-197 |FIPSは許可されていません| -|`ASN_NAME_INVALID_E` |-198 |ASN名制約エラー| -|`RNG_FAILURE_E` |-199 |RNGが失敗し、再生| -|`HMAC_MIN_KEYLEN_E` |-200 |FIPSモードHMAC最小キー長エラー| -|`RSA_PAD_E` |-201 |RSAパディングエラー| -|`LENGTH_ONLY_E` |-202 |出力の長さのみを返す| -|`IN_CORE_FIPS_E` |-203 |コアの整合性チェックの失敗(障害)| -|`AES_KAT_FIPS_E` |-204 |AESカット失敗| -|`DES3_KAT_FIPS_E` |-205 |DES3 KAT障害| -|`HMAC_KAT_FIPS_E` |-206 |HMAC KAT障害| -|`RSA_KAT_FIPS_E` |-207 |RSA KAT失敗| -|`DRBG_KAT_FIPS_E` |-208 |ハッシュDRBG KAT障害| -|`DRBG_CONT_FIPS_E` |-209 |ハッシュDRBG連続テスト障害| -|`AESGCM_KAT_FIPS_E` |-210 |AESGCM KAT障害| -|`THREAD_STORE_KEY_E` |-211 |スレッドローカルストレージキーは障害を作成します| -|`THREAD_STORE_SET_E` |-212 |スレッドローカルストレージキーセット障害| -|`MAC_CMP_FAILED_E` |-213 |Macの比較に失敗しました| -|`IS_POINT_E` |-214 |ECCは曲線上のポイントに失敗しました| -|`ECC_INF_E` |-215 |ECCポイントインフィニティエラー| -|`ECC_PRIV_KEY_E` |-216 |ECC秘密鍵が無効なエラー| -|`SRP_CALL_ORDER_E` |-217 |SRP機能が間違っている -|`SRP_VERIFY_E` |-218 |SRPプルーフ検証失敗| -|`SRP_BAD_KEY_E` |-219 |SRPの悪い一時的な値| -|`ASN_NO_SKID` |-220 |ASN主題のキー識別子| | -|`ASN_NO_AKID` |-221 |ASN認証鍵識別子を見つけません| -|`ASN_NO_KEYUSAGE` |-223 |ASNキー使用量は見つかりませんでした| -|`SKID_E` |-224 |件名キー識別子エラーの設定| -|`AKID_E` |-225 |権限キー識別子エラー| -|`KEYUSAGE_E` |-226 |悪いキー使用率値| -|`CERTPOLICIES_E` |-227 |証明書ポリシーの設定エラー| -|`WC_INIT_E` |-228 |wolfCryptは初期化に失敗しました| -|`SIG_VERIFY_E` |-229 |wolfCryptシグネチャーの検証エラー| -|`BAD_PKCS7_SIGNEEDS_CHECKCOND_E` |-230 |悪条件変数演算| -|`SIG_TYPE_E` |-231 |署名タイプが有効/利用可能な| -|`HASH_TYPE_E` |-232 |ハッシュタイプは有効/利用可能ではありません| -|`WC_KEY_SIZE_E` |-234 |キーサイズエラー、小さすぎるか大きすぎる| -|`ASN_COUNTRY_SIZE_E` |-235 |ASN CERT GEN、無効な国コードサイズ| -|`MISSING_RNG_E` |-236 |RNGは必要ですが、提供されていません| -|`ASN_PATHLEN_SIZE_E` |-237 |ASN CAパスの長さ大きすぎます| -|`ASN_PATHLEN_INV_E` |-238 |ASN CAパスの長さ反転誤差| -|`BAD_KEYWRAP_ALG_E` |-239 |KeyWrapのアルゴリズムエラー| -|`BAD_KEYWRAP_IV_E` |-240 |復号化されたAESキーラップIV不正| -|`WC_CLEANUP_E` |-241 |wolfCryptのクリーンアップに失敗しました| -|`ECC_CDH_KAT_FIPS_E` |-242 |ECC CDH既知の回答テスト失敗| -|`DH_CHECK_PUB_E` |-243 |DH公開キーエラーを確認します| -|`BAD_PATH_ERROR` |-244 |Opendirの悪い道| -|`ASYNC_OP_E` |-245 |非同期操作エラー| -|`ECC_PRIVATEONLY_E` |-246 |プライベートのみのECCキーの無効な使用| -|`EXTKEYUSAGE_E` |-247 |大幅なキー使用率値| -|`WC_HW_E` |-248 |ハードウェア暗号を使用するエラー| -|`WC_HW_WAIT_E` |-249 |リソースを待っているハードウェア| -|`PSS_SALTLEN_E` |-250 |PSSの塩の長さはハッシュには長すぎます| -|`PRIME_GEN_E` |-251 |プライムを見つける障害| -|`BER_INDEF_E` |-252 |無期限の長さのBERを復号することはできません| -|`RSA_OUT_OF_RANGE_E` |-253 |範囲外の暗号化への暗号文| -|`RSAPSS_PAT_FIPS_E` |-254 |RSA-PSSパット障害| -|`ECDSA_PAT_FIPS_E` |-255 |ECDSA PAT FALION | -|`DH_KAT_FIPS_E` |-256 |DH KAT障害| -|`AESCCM_KAT_FIPS_E` |-257 |AESCCM KAT障害| -|`SHA3_KAT_FIPS_E` |-258 |SHA-3 KAT障害| -|`ECDHE_KAT_FIPS_E` |-259 |ECDHE KAT失敗| -|`AES_GCM_OVERFLOW_E` |-260 |AES-GCM呼び出しカウンターオーバーフロー| -|`AES_CCM_OVERFLOW_E` |-261 |AES-CCM呼び出しカウンタオーバーフロー| -|`RSA_KEY_PAIR_E` |-262 |RSAキーペアワイズコンシステンシチェックフェイル| -|`DH_CHECK_PRIVE_E` |-263 |DH秘密鍵エラーを確認します| -|`WC_AFALG_SOCK_E` |-264 |AF_ALGソケットエラー| -|`WC_DEVCRYPTO_E` |-265 |/dev/cryptoエラー| -|`ZLIB_INIT_ERROR` |-266 |ZLIB INITエラー| -|`ZLIB_COMPRESS_ERROR` |-267 |Zlib圧縮エラー| -|`ZLIB_DECOMPRESS_ERROR` |-268 |ZLIB伸張エラー| -|`PKCS7_NO_SIGNER_E` |-269 |PKCS7署名データMSGの署名者はいません| -|`WC_PKCS7_WANT_READ_E` |-270 |PKCS7ストリーム操作では、より多くの入力が必要です| -|`CRYPTOCB_UNAVAILABLE` |-271 |Crypto Callbackが利用できません| -|`PKCS7_SIGNEEDS_CHECK` |-272 |発信者によって検証された署名のニーズ| -|`ASN_SELF_SIGNED_E` |-275 |ASN自己署名証明書エラー| -|`MIN_CODE_E` |-300 |エラー-101- -299 | - - - +| `OPEN_RAN_E` | -101 | ランダムデバイスを開く際にエラー | +| `READ_RAN_E` | -102 | ランダムデバイスの読み取りエラー | +| `WINCRYPT_E` | -103 | Windows crypt初期化エラー | +| `CRYPTGEN_E` | -104 | Windows crypt暗号化エラー | +| `RAN_BLOCK_E` | -105 | ランダムデバイスの読み取りがブロックされる | +| `BAD_MUTEX_E` | -106 | ミューテックス操作で失敗 | +| `MP_INIT_E` | -110 | mp_initエラー | +| `MP_READ_E` | -111 | mp_readエラー | +| `MP_EXPTMOD_E` | -112 | mp_exptmodエラー | +| `MP_TO_E` | -113 | mp_to_xxxエラー、変換できない | +| `MP_SUB_E` | -114 | mp_subエラー、引き算できない | +| `MP_ADD_E` | -115 | mp_addエラー、足し算できない | +| `MP_MUL_E` | -116 | mp_mulエラー、掛け算できない | +| `MP_MULMOD_E` | -117 | mp_mulmodエラー、mod掛け算できない | +| `MP_MOD_E` | -118 | mp_modエラー、modできない | +| `MP_INVMOD_E` | -119 | mp_invmodエラー、invmodできない | +| `MP_CMP_E` | -120 | mp_cmpエラー | +| `MP_ZERO_E` | -121 | 予期しないmp zeroの結果を取得 | +| `MEMORY_E` | -125 | メモリ不足エラー | +| `RSA_WRONG_TYPE_E` | -130 | RSA関数に対する不正なブロックタイプ | +| `RSA_BUFFER_E` | -131 | RSAバッファエラー、出力が小さすぎるか入力が大きすぎる | +| `BUFFER_E` | -132 | 出力バッファが小さすぎるか入力が大きすぎる | +| `ALGO_ID_E` | -133 | アルゴリズムID設定エラー | +| `PUBLIC_KEY_E` | -134 | 公開鍵設定エラー | +| `DATE_E` | -135 | 日付有効性エラー | +| `SUBJECT_E` | -136 | サブジェクト名設定エラー | +| `ISSUER_E` | -137 | 発行者名設定エラー | +| `CA_TRUE_E` | -138 | CA基本制約をtrueに設定するエラー | +| `EXTENSIONS_E` | -139 | 拡張設定エラー | +| `ASN_PARSE_E` | -140 | ASN解析エラー、無効な入力 | +| `ASN_VERSION_E` | -141 | ASNバージョンエラー、無効な番号 | +| `ASN_GETINT_E` | -142 | ASN大きな整数取得エラー、無効なデータ | +| `ASN_RSA_KEY_E` | -143 | ASN鍵初期化エラー、無効な入力 | +| `ASN_OBJECT_ID_E` | -144 | ASNオブジェクトIDエラー、無効なID | +| `ASN_TAG_NULL_E` | -145 | ASNタグエラー、nullでない | +| `ASN_EXPECT_0_E` | -146 | ASN期待値エラー、ゼロでない | +| `ASN_BITSTR_E` | -147 | ASNビット文字列エラー、不正なID | +| `ASN_UNKNOWN_OID_E` | -148 | ASN OIDエラー、不明な合計ID | +| `ASN_DATE_SZ_E` | -149 | ASN日付エラー、不正なサイズ | +| `ASN_BEFORE_DATE_E` | -150 | ASN日付エラー、現在の日付が前 | +| `ASN_AFTER_DATE_E` | -151 | ASN日付エラー、現在の日付が後 | +| `ASN_SIG_OID_E` | -152 | ASN署名エラー、OIDが一致しない | +| `ASN_TIME_E` | -153 | ASN時間エラー、不明な時間タイプ | +| `ASN_INPUT_E` | -154 | ASN入力エラー、データ不足 | +| `ASN_SIG_CONFIRM_E` | -155 | ASN署名エラー、確認失敗 | +| `ASN_SIG_HASH_E` | -156 | ASN署名エラー、サポートされていないハッシュタイプ | +| `ASN_SIG_KEY_E` | -157 | ASN署名エラー、サポートされていない鍵タイプ | +| `ASN_DH_KEY_E` | -158 | ASN鍵初期化エラー、無効な入力 | +| `ASN_CRIT_EXT_E` | -160 | ASNサポートされていない重要な拡張 | +| `ECC_BAD_ARG_E` | -170 | ECC入力引数の型が間違っている | +| `ASN_ECC_KEY_E` | -171 | ASN ECC不正な入力 | +| `ECC_CURVE_OID_E` | -172 | サポートされていないECC OID曲線タイプ | +| `BAD_FUNC_ARG` | -173 | 不正な関数引数が提供された | +| `NOT_COMPILED_IN` | -174 | 機能がコンパイルされていない | +| `UNICODE_SIZE_E` | -175 | Unicodeパスワードが大きすぎる | +| `NO_PASSWORD` | -176 | ユーザーからのパスワード提供なし | +| `ALT_NAME_E` | -177 | Alt Nameのサイズ問題、大きすぎる | +| `AES_GCM_AUTH_E` | -180 | AES-GCM認証チェック失敗 | +| `AES_CCM_AUTH_E` | -181 | AES-CCM認証チェック失敗 | +| `CAVIUM_INIT_E` | -182 | Cavium初期化タイプエラー | +| `COMPRESS_INIT_E` | -183 | 圧縮初期化エラー | +| `COMPRESS_E` | -184 | 圧縮エラー | +| `DECOMPRESS_INIT_E` | -185 | 解凍初期化エラー | +| `DECOMPRESS_E` | -186 | 解凍エラー | +| `BAD_ALIGN_E` | -187 | 操作の不正なアライメント、割り当てなし | +| `ASN_NO_SIGNER_E` | -188 | ASN署名エラー、証明書を検証するCAの署名者なし | +| `ASN_CRL_CONFIRM_E` | -189 | ASN CRL失敗を確認する署名者なし | +| `ASN_CRL_NO_SIGNER_E` | -190 | ASN CRL失敗を確認する署名者なし | +| `ASN_OCSP_CONFIRM_E` | -191 | ASN OCSP署名確認失敗 | +| `BAD_ENC_STATE_E` | -192 | 不正なECC暗号化状態操作 | +| `BAD_PADDING_E` | -193 | 不正なパディング、メッセージ長が不正 | +| `REQ_ATTRIBUTE_E` | -194 | 証明書リクエスト属性設定エラー | +| `PKCS7_OID_E` | -195 | PKCS#7、OIDの不一致エラー | +| `PKCS7_RECIP_E` | -196 | PKCS#7、受信者エラー | +| `FIPS_NOT_ALLOWED_E` | -197 | FIPSは許可されていません | +| `ASN_NAME_INVALID_E` | -198 | ASN名前制約エラー | +| `RNG_FAILURE_E` | -199 | RNG失敗、再初期化 | +| `HMAC_MIN_KEYLEN_E` | -200 | FIPSモードHMAC最小鍵長エラー | +| `RSA_PAD_E` | -201 | RSAパディングエラー | +| `LENGTH_ONLY_E` | -202 | 出力長のみを返す | +| `IN_CORE_FIPS_E` | -203 | コア整合性チェック失敗 | +| `AES_KAT_FIPS_E` | -204 | AES KAT失敗 | +| `DES3_KAT_FIPS_E` | -205 | DES3 KAT失敗 | +| `HMAC_KAT_FIPS_E` | -206 | HMAC KAT失敗 | +| `RSA_KAT_FIPS_E` | -207 | RSA KAT失敗 | +| `DRBG_KAT_FIPS_E` | -208 | HASH DRBG KAT失敗 | +| `DRBG_CONT_FIPS_E` | -209 | HASH DRBG継続テスト失敗 | +| `AESGCM_KAT_FIPS_E` | -210 | AESGCM KAT失敗 | +| `THREAD_STORE_KEY_E` | -211 | スレッドローカルストレージキー作成失敗 | +| `THREAD_STORE_SET_E` | -212 | スレッドローカルストレージキー設定失敗 | +| `MAC_CMP_FAILED_E` | -213 | MAC比較失敗 | +| `IS_POINT_E` | -214 | ECC曲線上の点判定失敗 | +| `ECC_INF_E` | -215 | ECC点無限大エラー | +| `ECC_PRIV_KEY_E` | -216 | ECC秘密鍵が無効エラー | +| `SRP_CALL_ORDER_E` | -217 | SRP関数が間違った順序で呼び出された | +| `SRP_VERIFY_E` | -218 | SRP証明検証失敗 | +| `SRP_BAD_KEY_E` | -219 | SRP不正な一時値 | +| `ASN_NO_SKID` | -220 | ASNサブジェクト鍵識別子なし | +| `ASN_NO_AKID` | -221 | ASN権限鍵識別子なし | +| `ASN_NO_KEYUSAGE` | -223 | ASN鍵用途なし | +| `SKID_E` | -224 | サブジェクト鍵識別子設定エラー | +| `AKID_E` | -225 | 権限鍵識別子設定エラー | +| `KEYUSAGE_E` | -226 | 不正な鍵用途値 | +| `CERTPOLICIES_E` | -227 | 証明書ポリシー設定エラー | +| `WC_INIT_E` | -228 | wolfCrypt初期化失敗 | +| `SIG_VERIFY_E` | -229 | wolfCrypt署名検証エラー | +| `BAD_PKCS7_SIGNEEDS_CHECKCOND_E` | -230 | 不正な条件変数操作 | +| `SIG_TYPE_E` | -231 | 署名タイプが有効でない/利用不可 | +| `HASH_TYPE_E` | -232 | ハッシュタイプが有効でない/利用不可 | +| `WC_KEY_SIZE_E` | -234 | 鍵サイズエラー、小さすぎるか大きすぎる | +| `ASN_COUNTRY_SIZE_E` | -235 | ASN証明書生成、無効な国コードサイズ | +| `MISSING_RNG_E` | -236 | RNGが必要だが提供されていない | +| `ASN_PATHLEN_SIZE_E` | -237 | ASN CAパス長が大きすぎるエラー | +| `ASN_PATHLEN_INV_E` | -238 | ASN CAパス長反転エラー | +| `BAD_KEYWRAP_ALG_E` | -239 | キーラップのアルゴリズムエラー | +| `BAD_KEYWRAP_IV_E` | -240 | 復号化されたAESキーラップIVが不正 | +| `WC_CLEANUP_E` | -241 | wolfCryptクリーンアップに失敗 | +| `ECC_CDH_KAT_FIPS_E` | -242 | ECC CDH既知解テスト失敗 | +| `DH_CHECK_PUB_E` | -243 | DH公開鍵チェックエラー | +| `BAD_PATH_ERROR` | -244 | opendirのパスが不正 | +| `ASYNC_OP_E` | -245 | 非同期操作エラー | +| `ECC_PRIVATEONLY_E` | -246 | 秘密専用ECC鍵の無効な使用 | +| `EXTKEYUSAGE_E` | -247 | 不正な拡張鍵用途値 | +| `WC_HW_E` | -248 | ハードウェア暗号使用のエラー | +| `WC_HW_WAIT_E` | -249 | ハードウェアがリソース待ち | +| `PSS_SALTLEN_E` | -250 | PSSのsaltの長さがハッシュに対して長すぎる | +| `PRIME_GEN_E` | -251 | 素数発見に失敗 | +| `BER_INDEF_E` | -252 | 不定長BERをデコードできない | +| `RSA_OUT_OF_RANGE_E` | -253 | 復号する暗号文が範囲外 | +| `RSAPSS_PAT_FIPS_E` | -254 | RSA-PSS PAT失敗 | +| `ECDSA_PAT_FIPS_E` | -255 | ECDSA PAT失敗 | +| `DH_KAT_FIPS_E` | -256 | DH KAT失敗 | +| `AESCCM_KAT_FIPS_E` | -257 | AESCCM KAT失敗 | +| `SHA3_KAT_FIPS_E` | -258 | SHA-3 KAT失敗 | +| `ECDHE_KAT_FIPS_E` | -259 | ECDHE KAT失敗 | +| `AES_GCM_OVERFLOW_E` | -260 | AES-GCM呼び出しカウンターオーバーフロー | +| `AES_CCM_OVERFLOW_E` | -261 | AES-CCM呼び出しカウンターオーバーフロー | +| `RSA_KEY_PAIR_E` | -262 | RSA鍵ペアーワイズ整合性チェック失敗 | +| `DH_CHECK_PRIVE_E` | -263 | DH秘密鍵チェックエラー | +| `WC_AFALG_SOCK_E` | -264 | AF_ALGソケットエラー | +| `WC_DEVCRYPTO_E` | -265 | /dev/cryptoエラー | +| `ZLIB_INIT_ERROR` | -266 | Zlib初期化エラー | +| `ZLIB_COMPRESS_ERROR` | -267 | Zlib圧縮エラー | +| `ZLIB_DECOMPRESS_ERROR` | -268 | Zlib解凍エラー | +| `PKCS7_NO_SIGNER_E` | -269 | PKCS7署名データメッセージに署名者なし | +| `WC_PKCS7_WANT_READ_E` | -270 | PKCS7ストリーム操作でより多くの入力が必要 | +| `CRYPTOCB_UNAVAILABLE` | -271 | 暗号コールバック利用不可 | +| `PKCS7_SIGNEEDS_CHECK` | -272 | 署名は呼び出し元による検証が必要 | +| `ASN_SELF_SIGNED_E` | -275 | ASN自己署名証明書エラー | +| `MIN_CODE_E` | -300 | エラー -101 - -299 | ## 一般的なエラーコードとその解決策 - - -アプリケーションをwolfSSLで起動して実行するときに一般的に起こるエラーコードがいくつかあります。 - - +アプリケーションでwolfSSLを使用する際に起こしやすい、いくつかのエラーについてご説明します。 ### `ASN_NO_SIGNER_E` (-188) +このエラーは、証明書を使用する際に、署名したCA証明書が読み込まれていない場合に発生します。 +これは、wolfSSLのサンプルサーバーやクライアントを、別のクライアントやサーバーに対して使用する場合に見られることがあります。 - - -このエラーは証明書を使用して署名CA証明書をロードしていない場合に発生します。これは、wolfSSLサンプルクライアントを使用してGoogleへの接続など、wolfSSLのサンプルサーバーまたはクライアントを別のクライアントまたはサーバーに使用して見ることができます。 - - +例えば、wolfSSLのサンプルクライアントを使用してGoogleに接続する場合、次のように実行したくなるかもしれません。 ```sh ./examples/client/client -g -h www.google.com -p 443 ``` - - -GoogleのCA証明書には「`-A`」コマンドラインオプションがロードされていないため、これはエラー-188で失敗します。 - - +しかしこれは、GoogleのCA証明書が「`-A`」コマンドラインオプションで読み込まれていないため、エラー-188で失敗します。 ### `WANT_READ` (-323) - - -`WANT_READ`エラーは、非ブロッキングソケットを使用する場合に頻繁に発生し、非ブロッキングソケットを使用する場合は実際にはエラーではありませんが、エラーとして発信者に渡されます。I/Oコールバックからデータを受信する呼び出しが現在受信できるデータがないため、ブロックされると、I/Oコールバックは`WANT_READ`を返します。発信者は、後で待って再度受信してみてください。これは通常、[`wolfSSL_read()`](group__IO.md#function-wolfssl_read)、[`wolfSSL_negotiate()`](group__IO.md#function-wolfssl_negotiate)、[`wolfSSL_accept()`](group__IO.md#function-wolfssl_accept)、および[`wolfSSL_connect()`](group__IO.md#function-wolfssl_connect)への呼び出しから見られます。クライアントとサーバーのサンプルは、デバッグが有効になっているときの`WANT_READ`インシデントを示します。 +`WANT_READ`エラーは、ノンブロッキングソケットを使用する場合によく発生します。 +ノンブロッキングソケットを使用する場合において、実際にはエラーではありませんが、エラーとして出力されます。 +I/Oコールバックからデータを受信する呼び出しが、現在受信可能なデータがないためブロックされる場合、I/Oコールバックは`WANT_READ`を返します。 +呼び出し元は待機し、後で再度受信を試みてください。 +これは通常、[`wolfSSL_read()`](group__IO.md#function-wolfssl_read)、[`wolfSSL_negotiate()`](group__IO.md#function-wolfssl_negotiate)、[`wolfSSL_accept()`](group__IO.md#function-wolfssl_accept)、および[`wolfSSL_connect()`](group__IO.md#function-wolfssl_connect)の呼び出しから見られます。 +サンプルクライアントとサーバーは、デバッグ出力が有効である場合に`WANT_READ`を出力します。 \ No newline at end of file diff --git a/wolfSSL/src-ja/appendix08.md b/wolfSSL/src-ja/appendix08.md index 4f1761ff..326b6f56 100644 --- a/wolfSSL/src-ja/appendix08.md +++ b/wolfSSL/src-ja/appendix08.md @@ -18,7 +18,7 @@ wolfSSLドキュメント第2章に示した手順に加えて、特定のプラ `./wolfssl/wolfcrypt/settings.h` ファイルには、さまざまなオペレーティングシステム、TCP/IPスタック、およびチップセット (例: MBED、FREESCALE_MQX、MICROCHIP_PIC32、MICRIUM、EBSNET など) に固有の定義がいくつかあります。wolfSSLをコンパイルして新しいプラットフォームに移植するときに、`#defines` を配置する主な場所は2つあります。 -1. オペレーティングシステムまたはTCP/IPスタックに対応するための新たなマクロ定義は、通常、wolfSSLのポーティングが完了すると、`settings.h` ファイルに追加しています。これにより、機能のオン/オフを簡単に切り替えたり、そのビルドの「デフォルト」となるビルド設定をカスタマイズしたりできます。wolfSSLを新しいプラットフォームに移植する際にも、このファイルに新しいカスタム定義を追加することでお使いいただけます。新しいプラットフォームへの移植が完了した際,もし差し支えなければ,wolfSSLの [Gitリポジトリ](https://www.github.com/wolfssl/wolfssl) にPull Requestを送信していただけると嬉しく思います。これにより、より多くの環境でwolfSSLを使用しやすくなります。 +1. オペレーティングシステムまたはTCP/IPスタックに対応するための新たなマクロ定義は、通常、wolfSSLのポーティングが完了すると、`settings.h` ファイルに追加しています。これにより、機能のオン/オフを簡単に切り替えたり、そのビルドの「デフォルト」となるビルド設定をカスタマイズしたりできます。wolfSSLを新しいプラットフォームに移植する際にも、このファイルに新しいカスタム定義を追加することでお使いいただけます。新しいプラットフォームへの移植が完了した際、もし差し支えなければ、wolfSSLの [Gitリポジトリ](https://www.github.com/wolfssl/wolfssl) にPull Requestを送信していただけると嬉しく思います。これにより、より多くの環境でwolfSSLを使用しやすくなります。 2. wolfSSL自体に変更を加えたくない場合、または追加のプリプロセッサ定義を使用して wolfSSLビルドをカスタマイズしたい場合、wolfSSLはカスタムヘッダーファイル`user_settings.h`の使用を推奨します。 wolfSSLソースファイルをコンパイルするときに `WOLFSSL_USER_SETTINGS` が定義されている場合、wolfSSLはカスタムヘッダーファイル `user_settings.h` を自動的にインクルードします。このヘッダーはユーザーが作成し、インクルードパスに配置する必要があります。これにより、ユーザーはwolfSSLビルド用に1つのファイルのみを管理すればよく、wolfSSLの新しいバージョンへの更新がはるかに簡単になります。 @@ -66,7 +66,7 @@ wolfSSLのfastmathライブラリは、`fp_digit` および `fp_word` 型を使 `fp_word` は `fp_digit` の2倍のサイズである必要があります。デフォルトのケースがプラットフォームに当てはまらない場合は、`settings.h` または `user_settings.h` で `WOLFSSL_BIGINT_TYPES` を定義し、`fp_word` および `fp_digit` に独自のカスタムtypedefを割り当てる必要があります。 -wolfSSLは、一部の操作において使用可能な場合は64ビット型を使用します。ビルド時には、`SIZEOF_LONG` および `SIZEOF_LONG_LONG` の設定に基づいて、`word64` の正しいデータ型を検出して設定しようとします。 真の64ビット型を持たない一部のプラットフォームでは、2つの32ビット型を合わせて使用するため、パフォーマンスが低下する可能性があります。コンパイル時に`NO_64BIT`を定義することで,64ビット型を使用しないこともできます。 +wolfSSLは、一部の操作において使用可能な場合は64ビット型を使用します。ビルド時には、`SIZEOF_LONG` および `SIZEOF_LONG_LONG` の設定に基づいて、`word64` の正しいデータ型を検出して設定しようとします。 真の64ビット型を持たない一部のプラットフォームでは、2つの32ビット型を合わせて使用するため、パフォーマンスが低下する可能性があります。コンパイル時に`NO_64BIT`を定義することで、64ビット型を使用しないこともできます。 ### エンディアン @@ -75,7 +75,7 @@ wolfSSLは、一部の操作において使用可能な場合は64ビット型 A: あなたのプラットフォームがビッグエンディアンの場合です。 -お使いのプラットフォームはビッグエンディアンとリトルエンディアン,どちらでしょうか.wolfSSLはデフォルトでリトルエンディアンを使用しています。システムがビッグエンディアンの場合は、wolfSSL をビルドする際に `BIG_ENDIAN_ORDER` を定義します。例えば,`settings.h` で次のように設定できます. +お使いのプラットフォームはビッグエンディアンとリトルエンディアン、どちらでしょうか。wolfSSLはデフォルトでリトルエンディアンを使用しています。システムがビッグエンディアンの場合は、wolfSSL をビルドする際に `BIG_ENDIAN_ORDER` を定義します。例えば、`settings.h` で次のように設定できます。 ```c #ifdef MY_NEW_PLATFORM @@ -107,7 +107,7 @@ wolfSSLはデフォルトでBSDスタイルのソケットインターフェイ wolfSSLはカスタムI/O抽象化レイヤーを提供し、ユーザーはwolfSSLのI/O機能をシステムに合わせて調整できます。詳細については、[5.1.2節](chapter05.md#custom-inputoutput-abstraction-layer) をご参照ください。 -具体的には `WOLFSSL_USER_IO` を定義し、wolfSSLデフォルトの `EmbedSend()` と `EmbedReceive()` をテンプレートとして使用し,独自のI/Oコールバック関数を記述します。これら2つの関数は `./src/io.c` にあります。 +具体的には `WOLFSSL_USER_IO` を定義し、wolfSSLデフォルトの `EmbedSend()` と `EmbedReceive()` をテンプレートとして使用し、独自のI/Oコールバック関数を記述します。これら2つの関数は `./src/io.c` にあります。 wolfSSLは、入力と出力に動的バッファを使用します。このバッファのデフォルトは0バイトです。バッファよりも大きいサイズの入力レコードを受信した場合、動的バッファが一時的にリクエストの処理に使用され、その後解放されます。 @@ -124,7 +124,7 @@ A: ファイルシステムを利用できない、あるいは標準のファ wolfSSLは、TLSセッションまたはコンテキストに鍵と証明書をロードするためにファイルシステムを使用します。wolfSSLでは、これらをメモリバッファからロードすることもできます。メモリバッファのみを使用する場合、ファイルシステムは必要ありません。 -ライブラリをビルドするときに `NO_FILESYSTEM` を定義することで、wolfSSLによるファイルシステムの使用を無効にできます。つまり、証明書と鍵はファイルではなくメモリバッファからロードする必要があります。`settings.h` で,以下のように設定できます. +ライブラリをビルドするときに `NO_FILESYSTEM` を定義することで、wolfSSLによるファイルシステムの使用を無効にできます。つまり、証明書と鍵はファイルではなくメモリバッファからロードする必要があります。`settings.h` で、以下のように設定できます。 ```c @@ -138,7 +138,7 @@ wolfSSLは、TLSセッションまたはコンテキストに鍵と証明書を テスト用の鍵と証明書バッファーは、`./wolfssl/certs_test.h` ヘッダーファイルにあります。これらは、`./certs` ディレクトリにある対応する証明書や鍵と一致します。 -`certs_test.h` ヘッダーファイルは、必要に応じて `./gencertbuf.pl` スクリプトを使用して更新できます。`gencertbuf.pl` 内には、`fileList_1024` と `fileList_2048` の2つの配列があります。鍵サイズに応じて、追加の証明書またはキーをそれぞれの配列に追加できます。なお,DER形式である必要があります。上記の配列は、証明書・鍵ファイルの場所を目的のバッファー名にマップします。`gencertbuf.pl` を変更した後、wolfSSLルートディレクトリから実行すると、`./wolfssl/certs_test.h` の証明書・鍵のバッファーが更新されます。 +`certs_test.h` ヘッダーファイルは、必要に応じて `./gencertbuf.pl` スクリプトを使用して更新できます。`gencertbuf.pl` 内には、`fileList_1024` と `fileList_2048` の2つの配列があります。鍵サイズに応じて、追加の証明書またはキーをそれぞれの配列に追加できます。なお、DER形式である必要があります。上記の配列は、証明書・鍵ファイルの場所を目的のバッファー名にマップします。`gencertbuf.pl` を変更した後、wolfSSLルートディレクトリから実行すると、`./wolfssl/certs_test.h` の証明書・鍵のバッファーが更新されます。 ```sh @@ -227,7 +227,7 @@ wolfSSLは、クロックティック関数にデフォルトで `time(0)` を **Q: どんな場合にこの章の内容が役立ちますか?** -A: C標準ライブラリを使用できない、あるいは独自のライブラリがある場合です. +A: C標準ライブラリを使用できない、あるいは独自のライブラリがある場合です。 wolfSSLは、開発者に高いレベルの移植性と柔軟性を提供するために、C標準ライブラリなしで構築できるようにしています。その場合、ユーザーはC標準の関数の代わりに使用したい関数をマップする必要があります。 @@ -241,9 +241,9 @@ wolfSSLは、開発者に高いレベルの移植性と柔軟性を提供する A: デバッグメッセージを有効にしたいが、stderr を使用できない場合です。 -デフォルトでは、wolfSSLはstderrを介してデバッグ出力を提供します。デバッグメッセージを有効にするには、wolfSSLを `DEBUG_WOLFSSL` を定義してコンパイルし、アプリケーションコードから `wolfSSL_Debugging_ON()` を呼び出す必要があります。同様に,アプリケーションから`wolfSSL_Debugging_OFF()` を呼び出すことで、wolfSSLデバッグメッセージをオフにすることもできます。 +デフォルトでは、wolfSSLはstderrを介してデバッグ出力を提供します。デバッグメッセージを有効にするには、wolfSSLを `DEBUG_WOLFSSL` を定義してコンパイルし、アプリケーションコードから `wolfSSL_Debugging_ON()` を呼び出す必要があります。同様に、アプリケーションから`wolfSSL_Debugging_OFF()` を呼び出すことで、wolfSSLデバッグメッセージをオフにすることもできます。 -stderrを使用できない,あるいは別の出力ストリームや別の形式でデバッグメッセージを出力したい環境には、独自のコールバック関数を使用できるようにしています. +stderrを使用できない、あるいは別の出力ストリームや別の形式でデバッグメッセージを出力したい環境には、独自のコールバック関数を使用できるようにしています。 詳細については、[8.1章](chapter08.md) をご覧ください。 @@ -254,7 +254,7 @@ stderrを使用できない,あるいは別の出力ストリームや別の A: wolfSSLで独自の公開鍵実装を使用したい場合です。 -wolfSSLでは、SSL/TLSレイヤーが公開鍵操作を行う必要があるときに呼び出される,独自の公開鍵コールバックをユーザーが作成できます。 ユーザーはオプションで6つの機能を定義できます。 +wolfSSLでは、SSL/TLSレイヤーが公開鍵操作を行う必要があるときに呼び出される、独自の公開鍵コールバックをユーザーが作成できます。 ユーザーはオプションで6つの機能を定義できます。 @@ -276,12 +276,12 @@ A: レコードレイヤーの処理、特にMAC/暗号化および復号/検証 デフォルトでは、wolfSSLは暗号ライブラリwolfCryptを使用し、ユーザーに代わってレコードレイヤーの処理を行います。wolfSSLは、SSL/TLS接続中に MAC/暗号化および復号/検証機能をより細かく制御したいユーザーのために、アトミックレコード処理コールバックを提供します。 -ユーザーは2つの関数を定義できます. +ユーザーは2つの関数を定義できます。 1. MAC/暗号化コールバック関数 2. 復号/検証コールバック関数 -詳細については、[6.3章](chapter06.md#user-atomic-record-layer-processing) をご覧ください. +詳細については、[6.3章](chapter06.md#user-atomic-record-layer-processing) をご覧ください。 ### 機能 @@ -289,7 +289,7 @@ A: レコードレイヤーの処理、特にMAC/暗号化および復号/検証 A: 特定の機能を無効にしたい場合です。 -wolfSSLをビルドする際,マクロ定義を使用して特定の機能を無効化できます。 +wolfSSLをビルドする際、マクロ定義を使用して特定の機能を無効化できます。 使用可能なマクロ定義については、[2章](chapter02.md) をご覧ください。 diff --git a/wolfSSL/src-ja/chapter01.md b/wolfSSL/src-ja/chapter01.md index 0f5924e6..3c8a3bf8 100644 --- a/wolfSSL/src-ja/chapter01.md +++ b/wolfSSL/src-ja/chapter01.md @@ -1,17 +1,12 @@ - - # 序章 - - このマニュアルは、wolfSSL組み込みSSL/TLSライブラリの技術ガイドとして書かれており、wolfsslのビルド、実行方法、ビルドオプションの概要、提供機能、移植性の向上の方法、サポートなどに関する情報を提供します。 - -このドキュメントのPDFバージョンは[こちら](https://www.wolfssl.com/documentation/wolfSSL-Manual.pdf)を参照下さい。 - - +このドキュメントのPDFバージョンは[こちら](https://www.wolfssl.com/documentation/manuals/jp/wolfssl/wolfSSL-Manual-jp.pdf)を参照下さい。 ## なぜwolfSSLを選ぶのですか? - -組み込み機器向けのSSLソリューションとしてwolfSSLを選択する理由はたくさんあります。最大の理由としてはそのサイズ(典型的なフットプリントサイズが20~100 KBの範囲)と、サポートであるといえるでしょう。加えて、最新の標準(SSL 3.0、TLS 1.0、TLS 1.1、TLS 1.2、TLS 1.3、DTLS 1.0、DTLS 1.2およびDTLS1.3)に準拠している点、先進的な暗号アルゴリズムのサポート(ストリーム暗号を含む)、マルチプラットフォーム、ロイヤリティフリー、およびOpenSSLパッケージを使用した既存のアプリケーションの移植を容易にするためのOpenSSL互換性APIの提供などが理由として挙げられます。完全な機能リストは、[機能の概要](chapter04.md#features-overview)を参照下さい。 +組み込み機器向けのSSLソリューションとしてwolfSSLを選択する理由はたくさんあります。 +最大の理由としてはそのサイズ(典型的なフットプリントサイズが20~100 KBの範囲)と、サポートであるといえるでしょう。 +加えて、最新の標準(SSL 3.0、TLS 1.0、TLS 1.1、TLS 1.2、TLS 1.3、DTLS 1.0、DTLS 1.2およびDTLS1.3)に準拠している点、先進的な暗号アルゴリズムのサポート(ストリーム暗号を含む)、マルチプラットフォーム、ロイヤリティフリー、およびOpenSSLパッケージを使用した既存のアプリケーションの移植を容易にするためのOpenSSL互換性APIの提供などが理由として挙げられます。 +[第4章](chapter04.md)にて、より詳しくご紹介しています。 diff --git a/wolfSSL/src-ja/chapter03.md b/wolfSSL/src-ja/chapter03.md index 5513b515..1f31c172 100644 --- a/wolfSSL/src-ja/chapter03.md +++ b/wolfSSL/src-ja/chapter03.md @@ -1,54 +1,36 @@ - - # 入門 - - - ## 概要 +wolfSSL(旧称CyaSSL)は、[第2章](chapter02.md)に示したコンパイルオプションを使用した場合、yaSSLの約10倍小さく、OpenSSLの20倍小さくなります。 +ユーザーによるベンチマークとフィードバックからも、標準的なSSL操作のほとんどにおいて、wolfSSLはOpenSSLと比較して劇的に優れたパフォーマンスを示していると報告されています。 +ビルドプロセスの手順については、[第2章](chapter02.md)をご覧ください。 -以前のCyaSSLであったwolfSSLは、[第2章](chapter02.md#building-wolfssl)で説明されているコンパイルオプションを使用する場合、yaSSLの約10倍小さく、OpenSSLの20倍小さくなります。ユーザーのベンチマークとフィードバックからも、大部分の標準 SSL 操作で wolfSSL と OpenSSL のパフォーマンスが大幅に向上したことが報告されています。 - - -ビルドプロセスの指示については、[第2章](chapter02.md#building-wolfssl)を参照してください。 - - - -## TestSuite - - - -TestSuiteプログラムは、wolfSSLとその暗号化ライブラリであるwolfCryptがシステムで実行する能力をテストするように設計されています。 - - -wolfSSLのすべてのサンプルプログラムとテストを実行する際には、wolfSSLホームディレクトリから実行することが必要です。これは、./certsから証明書と鍵を見つけるために必要です。TestSuiteを実行するには次のように実行してください: +## テストスイート +テストスイートプログラムは、wolfSSLとその暗号化ライブラリであるwolfCryptが、システム上で正常に実行できるかをテストします。 +サンプルプログラムとテストや実行する際は、wolfSSLのホームディレクトリからコマンドを投入する必要があります。 +これは`./certs`から証明書と鍵を見つけるためです。 +テストスイートを実行するには、次のコマンドを実行してください。 ```sh ./testsuite/testsuite.test ``` - - -またはautoconfを使用する場合: - - +autoconfを使用して、次のように実行することもできます。 ```sh make test ``` +*nixまたはWindows環境においては、サンプルプログラムやテストスイートは現在のディレクトリがソースディレクトリかどうかを確認し、そうであれば、wolfSSLホームディレクトリに変更しようとします。 +これはほとんどのセットアップケースで動作するはずです。 +もしうまく実行できない場合には、上記の最初の方法を使用してフルパスを指定してください。 - -\*nixまたはWindowsでは、サンプルプログラムとTestSuiteが現在のディレクトリがソースディレクトリであるかどうかを確認し、もしそうなら、wolfSSL Home Directoryに変更しようとします。これは、ほとんどのセットアップケースで動作するはずです。そうでない場合は、上記の最初の方法を使用して、フルパスを指定するだけです。 - - -テストに成功した場合、このような出力が表示されるはずです。ユニットテストと暗号スイートテストのための追加の出力があります。 - - +正常に実行されると、次のような出力が表示されるはずです。 +ユニットテストと暗号スイートテストのための追加の出力も含んでいます。 ```text ------------------------------------------------------------------------------ @@ -98,64 +80,56 @@ mutex test passed! memcb test passed! Test complete Alternate cert chain used - issuer:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.wolfssl.com/emailAddress=info@wolfssl.com + issuer : /C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.wolfssl.com/emailAddress=info@wolfssl.com subject: /C=US/ST=Montana/L=Bozeman/O=wolfSSL/OU=Support/CN=www.wolfssl.com/emailAddress=info@wolfssl.com - altname=example.com + altname = example.com Alternate cert chain used - issuer:/C=US/ST=Montana/L=Bozeman/O=wolfSSL_2048/OU=Programming-2048/CN=www.wolfssl.com/emailAddress=info@wolfssl.com + issuer : /C=US/ST=Montana/L=Bozeman/O=wolfSSL_2048/OU=Programming-2048/CN=www.wolfssl.com/emailAddress=info@wolfssl.com subject: /C=US/ST=Montana/L=Bozeman/O=wolfSSL_2048/OU=Programming-2048/CN=www.wolfssl.com/emailAddress=info@wolfssl.com - altname=example.com + altname = example.com serial number:01 SSL version is TLSv1.2 SSL cipher suite is TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 SSL signature algorithm is RSA-SHA256 SSL curve name is SECP256R1 Session timeout set to 500 seconds -Client Random: serial number:f1:5c:99:43:66:3d:96:04 +Client Random : serial number:f1:5c:99:43:66:3d:96:04 SSL version is TLSv1.2 SSL cipher suite is TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 SSL signature algorithm is RSA-SHA256 SSL curve name is SECP256R1 -1DC16A2C0D3AC49FC221DD5B8346B7B38CB9899B7A402341482183Server Random:1679E50DBBBB3DB88C90F600C4C578F4F5D3CEAEC9B16BCCA215C276B448 +1DC16A2C0D3AC49FC221DD5B8346B7B38CB9899B7A402341482183Server Random : 1679E50DBBBB3DB88C90F600C4C578F4F5D3CEAEC9B16BCCA215C276B448 765A1385611D6A Client message: hello wolfssl! I hear you fa shizzle! sending server shutdown command: quit! client sent quit command: shutting down! -ciphers=TLS13-AES128-GCM-SHA256:TLS13-AES256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305-OLD:ECDHE-ECDSA-CHACHA20-POLY1305-OLD:DHE-RSA-CHACHA20-POLY1305-OLD +ciphers = TLS13-AES128-GCM-SHA256:TLS13-AES256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305-OLD:ECDHE-ECDSA-CHACHA20-POLY1305-OLD:DHE-RSA-CHACHA20-POLY1305-OLD 33bc1a4570f4f1abccd5c48aace529b01a42ab51293954a297796e90d20970f0 input 33bc1a4570f4f1abccd5c48aace529b01a42ab51293954a297796e90d20970f0 /tmp/output-gNQWZL All tests passed! ``` +これは、すべてが正しく構成およびビルドされていることを示しています。 +いずれかのテストに失敗した場合は、ビルドシステムが正しく設定されていることをご確認ください。 +エンディアンが間違っていたり、64ビットタイプが適切に設定されていなかったりする可能性があります。 +デフォルトの構成からオプションを変更している場合は、それらを削除してwolfSSLを再ビルドし、改めてテストを実行してください。 +## クライアントサンプルプログラム -これは、すべてが設定され正しくビルドされていることを示しています。いずれかのテストが失敗した場合は、ビルドシステムが正しく設定されていることを確認してください。おそらく、誤ったエンディアンを持つこと、または64ビットタイプを正しく設定しないことが含まれます。デフォルト以外の設定に設定した場合は、それらを削除して、wolfSSLを再ビルドしてから再テストしてください。 - - - -## Clientサンプルプログラム - - - -examples/clientフォルダにあるクライアントのサンプルプログラムを使用して、任意のSSLサーバーに対してwolfSSLをテストできます。利用可能なコマンドラインランタイムオプションのリストを表示するには、`--help`引数でクライアントを実行します: - - +`examples/client`にあるクライアントのサンプルプログラムを使用して、任意のSSL/TLSサーバーに対してwolfSSLをテストできます。 +利用可能なコマンドラインオプションのリストを表示するには、`--help`を付けてクライアントを実行します。 ```sh ./examples/client/client --help ``` - - -出力表示: - - +出力例 ```text wolfSSL client 4.8.1 NOTE: All files relative to wolfSSL home dir -Max RSA key size in bits for build is set at:4096 +Max RSA key size in bits for build is set at : 4096 -? Help, print this usage 0: English, 1: Japanese --help Help, in English @@ -199,40 +173,33 @@ Max RSA key size in bits for build is set at:4096 -7 Set minimum downgrade protocol version [0-4] SSLv3(0) - TLS1.3(4) ``` - - -example.com:443に対してテストするには、次のことを試してください。これは、`--enable-opensslextra`および`--enable-supportedcurves`ビルドオプションでコンパイルされたwolfSSLを使用しています。 - - +example.com:443に対してテストするには、次のようにします。 +ここでは、ビルドオプション`--enable-opensslextra`と`--enable-supportedcurves`を使用してコンパイルしたwolfSSLを使用しています。 ```sh ./examples/client/client -h example.com -p 443 -d -g ``` - - -出力表示: - - +出力例 ```text Alternate cert chain used - issuer:/C=US/O=DigiCert Inc/CN=DigiCert TLS RSA SHA256 2020 CA1 + issuer : /C=US/O=DigiCert Inc/CN=DigiCert TLS RSA SHA256 2020 CA1 subject: /C=US/ST=California/L=Los Angeles/O=Internet Corporation for Assigned Names and Numbers/CN=www.example.org - altname=www.example.net - altname=www.example.edu - altname=www.example.com - altname=example.org - altname=example.net - altname=example.edu - altname=example.com - altname=www.example.org + altname = www.example.net + altname = www.example.edu + altname = www.example.com + altname = example.org + altname = example.net + altname = example.edu + altname = example.com + altname = www.example.org serial number:0f:be:08:b0:85:4d:05:73:8a:b0:cc:e1:c9:af:ee:c9 SSL version is TLSv1.2 SSL cipher suite is TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 SSL curve name is SECP256R1 Session timeout set to 500 seconds -Client Random:20640B8131D8E542646D395B362354F9308057B1624C2442C0B5FCDD064BFE29 +Client Random : 20640B8131D8E542646D395B362354F9308057B1624C2442C0B5FCDD064BFE29 SSL connect ok, sending GET... HTTP/1.0 200 OK Accept-Ranges: bytes @@ -244,107 +211,83 @@ Content-Length: 94 Connection: close ``` +これにより、クライアントはexample.com(`-h`)のHTTPSポート443(`-p`)に接続し、一般的なGETリクエスト(`-g`)を送信するように指示します。 +(`-d`)オプションにより、クライアントにサーバー証明書の検証をスキップするよう指示しています。 +このオプションを付加している理由については、以下の`-188`エラーに関する説明をご覧ください。 +残りは読み取りバッファに収められたサーバーからの初期出力です。 +コマンドライン引数が指定されていない場合、クライアントはlocalhost上のwolfSSLデフォルトポート11111に接続を試みます。 +また、サーバーがクライアント認証を実行したい場合を想定しクライアント証明書も読み込みます。 -これにより、クライアントは443のHTTPSポート(`-p`)の(`-h`)Example.comに接続し、Generic(`-g`)GETリクエストを送信するように指示します。(`-d`)オプションは、クライアントにサーバー証明書の認証をしないように指示します。残りは、読み取りバッファーに収まるサーバーからの初期出力です。 - - -コマンドライン引数が指定されていない場合、クライアントは11111のwolfSSLデフォルトポートのLOCALHOSTへの接続を試みます。サーバーがクライアント認証を実行したい場合には、クライアント証明書もロードします。 - - -クライアントは、`-b `引数を使用するときに接続をベンチマークすることができます。使用されると、クライアントは引数回数を指定したサーバー/ポートへの接続を試み、その平均時間をミリ秒単位で`SSL_connect()`で実行します。例: - +クライアントは引数`-b <整数>`を使用して接続のベンチマークを実行できます。 +このオプションを使用すると、クライアントは引数として渡された回数の接続を試行し、`SSL_connect()`の実行にかかった平均時間をミリ秒単位で表示します。 +例えば、以下のように実行します。 ```sh /examples/client/client -b 100 -h example.com -p 443 -d ``` - - -出力表示: - - +出力例 ```text wolfSSL_connect avg took: 296.417 milliseconds ``` +`/wolfssl/test.h`を編集することで、デフォルトのホストやポートをlocalhost・11111から任意の値に変更できます。 +変数wolfSSLIP / wolfSSLPortを編集してください。 +なお、これらの設定を変更した場合は、testsuiteを含むすべてのサンプルプログラムを再ビルドする必要があります。 +そうしないと、テストプログラムは互いに接続できません。 +デフォルトでは、クライアントサンプルプログラムはTLS 1.2を使用して指定されたサーバーに接続しようとします。 +ユーザーは`-v`コマンドラインオプションを使用して、クライアントが使用するSSL/TLSバージョンを変更できます。 +このオプションでは、以下の値を指定できます。 -LocalHostからデフォルトのホスト、または11111からデフォルトポートを変更する場合は、これらの設定を`/wolfssl/test.h`で変更できます。これらの設定を変更する際のテストスイートを含むすべての例を再ビルドします。そうしないと、テストプログラムが互いに接続できません。 - - -デフォルトでは、wolfSSLの例クライアントは、TLS 1.2を使用して指定されたサーバーに接続しようとします。ユーザーは、`-v`コマンドラインオプションを使用してクライアントが使用するSSL/TLSバージョンを変更できます。このオプションでは、次の値が利用できます。 - - - -* `-v 0` - SSL 3.0(デフォルトでは無効) - - -* `-v 1` - TLS 1.0 - - -* `-v 2` -TLS 1.1 - - -* `-v 3` -TLS 1.2(デフォルトで選択) - - -* `-v 4` -TLS 1.3 - - - -一般的に見るエラーはクライアントのサンプルを使用する場合、-188です。 - +* `-v 0` - SSL 3.0(デフォルトでは無効) +* `-v 1` - TLS 1.0 +* `-v 2` - TLS 1.1 +* `-v 3` - TLS 1.2(デフォルトで選択) +* `-v 4` - TLS 1.3 +クライアントサンプルプログラムを実行する際、次のように`error -188`が出力される場合があります。 ```text wolfSSL_connect error -188, ASN no signer error to confirm failure wolfSSL error: wolfSSL_connect failed ``` - - -これは通常、wolfSSLクライアントが接続しているサーバーの証明書を確認できないことによって引き起こされます。デフォルトでは、wolfSSLクライアントは、yaSSL Test CA証明書を信頼できるルート証明書としてロードします。このテストCA証明書は、別のCAによって署名された外部サーバー証明書を確認することができません。そのため、この問題を解決するには、ユーザーは`-d`オプションを使用して、ピア(サーバー)の検証をオフにする必要があります。 - - +これは通常、wolfSSLクライアントが接続先のサーバー証明書を検証できないことが原因です。 +デフォルトでは、wolfSSLクライアントは「yaSSLテストCA証明書」を信頼されたルート証明書として使用します。 +これはテスト用のCA証明書であり、外部のCAによって署名されたサーバー証明書を検証することはできません。 +そのため、この問題を解決するには、ユーザーは`-d`オプションを使用してサーバーの検証をオフにするか、 ```sh ./examples/client/client -h myhost.com -p 443 -d ``` - - -または、`-A`コマンドラインオプションを使用して、正しいCA証明書をwolfSSLクライアントにロードします。 - - +`-A`コマンドラインオプションを使用して、正しいCA証明書をwolfSSLクライアントに読み込ませる必要があります。 ```sh ./examples/client/client -h myhost.com -p 443 -A serverCA.pem ``` +## サーバーサンプルプログラム +サーバーサンプルプログラムは、クライアント認証も実行可能なシンプルなSSL/TLSサーバーです。 +1つのクライアント接続のみが受け入れられ、その後サーバーは終了します。 +コマンドライン引数なしのクライアントサンプルプログラムは、サーバーサンプルプログラムに対して問題なく接続できます。 +しかし、クライアントサンプルプログラムにコマンドライン引数を指定すると、クライアント証明書が読み込まれず、`wolfSSL_connect()`が失敗します。 +このとき、サーバーは`error -245, peer didn't send cert`を出力します。 +これを回避するためには、`-d`オプションを使用してクライアント証明書チェックを無効にしてください。 -## Serverサンプルプログラム - - - -サーバーのサンプルプログラムは、クライアント認証をオプションで実行する単純なSSLサーバーを示しています。1つのクライアント接続のみが受け入れられ、サーバーが終了します。通常モードのクライアントのサンプルプログラム(コマンドライン引数なし)は、サンプルサーバーに対して正常に動作しますが、クライアントのサンプルプログラムにコマンドライン引数を指定すると、クライアント証明書が読み込まれず、[`wolfSSL_connect()`](group__IO.md#function-wolfssl_connect)が失敗します(クライアント証明書がない限り`-d`オプションを使用してチェックが無効になります)。サーバーはエラー「-245、PeerはCERTを送信しませんでした」を報告します。サンプルプログラムのクライアントと同様に、サーバーはいくつかで使用できます -コマンドラインの引数も同様です。 - - +サンプルプログラムのクライアントと同様に、サーバーもいくつかのコマンドライン引数で使用できます。 ```sh ./examples/server/server --help ``` - - -出力表示: - - +出力例 ```text server 4.8.1 NOTE: All files relative to wolfSSL home dir @@ -389,48 +332,34 @@ server 4.8.1 NOTE: All files relative to wolfSSL home dir -7 Set minimum downgrade protocol version [0-4] SSLv3(0) - TLS1.3(4) ``` - - - ## エコーサーバーのサンプルプログラム +エコーサーバーのサンプルプログラムは、無限ループで無制限のクライアント接続を待ち続けます。 +そしてクライアントが送信したものをすべてエコーバックします。 +クライアント認証は実行されません。 +したがって、クライアントサンプルプログラムはすべてのモードでエコーサーバーに接続できます。 -エコーサーバのサンプルプログラムは、無制限の数のクライアント接続を待っている無限ループに収まります。クライアントがEchoServer Echoesを返送します。クライアント認証は実行されませんので、サンプルクライアントをすべてのモードでエコーサーバーに対して使用できます。4つの特別なコマンドは返送しないで、エコーサーバーに別の行動をとるように指示します。 - - - -1. `quit` - エコーサーバーが文字列 "Quit"を受信した場合は、シャットダウンします。 - - -2. `break`エコーサーバーが文字列 "break"を受信した場合、現在のセッションは停止しますが、要求を処理し続けます。これはDTLSテストに特に便利です。 - - -3. - エコーサーバーが文字列 "PrintStats"を受信した場合は、セッションキャッシュの統計を印刷します。 - - -4. `GET` -ECHOSERVERが文字列を「取得」すると、HTTPを取得して処理し、「wolfSSLからのグリーティング」というメッセージで簡単なページを送り返します。これにより、Safari、IE、Firefox、GnutlsなどのさまざまなTLS/SSLクライアントのテストが可能になります。 - - - -`NO_MAIN_DRIVER`が定義されていない限り、エコーサーバーの出力はSTDOUTにエコーされます。シェルを介して、または最初のコマンドライン引数を介して出力をリダイレクトできます。EchoServer Runからの出力を指定してoutput.txtという名前のファイルを作成するには: +なお、以下に示す4つの特別なコマンドはエコーバックされず、エコーサーバーに異なる処理を実行するよう指示します。 +1. `quit` - エコーサーバーが文字列「quit」を受信すると、シャットダウンします。 +2. `break` - エコーサーバーが文字列「break」を受信すると、現在のセッションを停止しますが、リクエストの処理は継続します。これはDTLSテストに特に役立ちます。 +3. `printstats` - エコーサーバーが文字列「printstats」を受信すると、セッションキャッシュの統計情報を出力します。 +4. `GET` - エコーサーバーが文字列「GET」を受信すると、HTTPのGETとして処理し、「greeting from wolfSSL」というメッセージを含む簡単なページを送り返します。これにより、Safari、IE、Firefox、GnuTLSといったさまざまなTLS/SSLクライアントのテストが可能になります。 +`NO_MAIN_DRIVER`が定義されていない限り、エコーサーバーの出力は標準出力にエコーされます。 +シェルを通して、または1番目のコマンドライン引数を使用して出力をリダイレクトすることもできます。 +エコーサーバーからの出力を`output.txt`という名前のファイルに保存したい場合には、次のように実行します。 ```sh ./examples/echoserver/echoserver output.txt ``` - - - ## エコークライアントのサンプルプログラム +エコークライアントのサンプルプログラムは、インタラクティブモードまたはファイルによるバッチモードで実行できます。 - -EchoClientの例は、Interactive ModeまたはBatch Modeで実行できます。インタラクティブモードで実行して3つの文字列 "HELLO"、 "WOLFSSL"、および "QUIT"の結果を書き込んでください。 - - +インタラクティブモードで実行し、3つの文字列「hello」、「wolfssl」、および「quit」を書き込むと、結果は以下のようになります。 ```text ./examples/echoclient/echoclient @@ -442,91 +371,80 @@ quit sending server shutdown command: quit! ``` - - -入力ファイルを使用するには、最初の引数としてコマンドラインのファイル名を指定します。ファイルの内容をエコーするには`input.txt`問題: - - +ファイル入力を使用するには、コマンドライン上で最初の引数としてファイル名を指定します。 +ファイル`input.txt`の内容をエコーするには、以下のように実行します。 ```sh ./examples/echoclient/echoclient input.txt ``` - - -結果をファイルに書き出す場合は、追加のコマンドライン引数として出力ファイル名を指定できます。次のコマンドはファイル`input.txt`の内容をエコーし、その結果をサーバーから`output.txt`に書きます。 - - +結果をファイルに書き出したい場合は、追加のコマンドライン引数として出力ファイル名を指定できます。 +ファイル`input.txt`の内容をエコーし、サーバーからの結果を`output.txt`に書き込むには、次のように実行します。 ```sh ./examples/echoclient/echoclient input.txt output.txt ``` +テストスイートプログラムではこの動作を行いますが、クライアントとサーバーが期待される結果を正しく送信/受信できていることを確認するため、入力・出力ファイルをハッシュ化しています。 +## ベンチマーク -TestSuiteプログラムはそれを行いますが、クライアントとサーバーが正しい結果と期待された結果を取得/送信していることを確認するために、入力ファイルと出力ファイルをハッシュします。 - - - -## Benchmark - - - -多くのユーザーは、組み込み機器向けwolfSSLLライブラリが特定のハードウェアデバイスまたは特定の環境でどのように機能するかに興味があります。現在、組み込み、企業、クラウドベースの環境で使用されているさまざまなプラットフォームとコンパイラがあるため、全面的に一般的なパフォーマンス計算を提供することは困難です。 +組み込み向けSSL/TLSライブラリwolfSSLが、使用を検討しているハードウェアデバイスや特定の環境で、果たしてどれほどのパフォーマンスを発揮できるのかは非常に気になるものです。 +しかし、今日の組み込み / エンタープライズ / クラウド環境では、非常に多数のプラットフォーム・コンパイラが使用されています。 +これらの全てに対応できる、一般的なパフォーマンス指標の算出式を提供することは非常に困難です。 +そこで、ユーザーがwolfSSL / wolfCryptのパフォーマンスを容易に判断できるように、ベンチマークアプリケーションをバンドルしています。 +wolfSSLは、SSL/TLSの基盤であるすべての暗号操作にwolfCrypt暗号ライブラリを使用します。 +したがって、ベンチマークアプリケーションはwolfCryptのパフォーマンステストを実行します。 -wolfSSL/WolfCryptのSSLパフォーマンスを決定する際のwolfSSLユーザーと顧客を支援するために、wolfSSLにバンドルされているベンチマークアプリケーションが提供されています。wolfSSLは、デフォルトですべての暗号操作に対してwolfCrypt暗号化ライブラリを使用します。基礎となる暗号はSSL/TLSの非常にパフォーマンスが重要な側面であるため、ベンチマークアプリケーションはwolfCryptのアルゴリズムでパフォーマンステストを実行します。 - - -wolfcrypt/benchmark にあるベンチマーク ユーティリティ (`./wolfcrypt/benchmark/benchmark`) を使用して、wolfCrypt の暗号機能のベンチマークを行うことができます。 典型的な出力は次のようになります (この出力では、ECC、SHA-256、SHA-512、AES-GCM、AES-CCM、Camellia など、いくつかのオプションのアルゴリズム/暗号が有効になっています)。 +wolfcrypt/benchmark(`./wolfcrypt/benchmark/benchmark`)にあるベンチマークユーティリティを使用して、wolfCryptの暗号処理のベンチマークを実行できます。 ```sh ./wolfcrypt/benchmark/benchmark ``` - -出力結果: - +以下のような出力がなされます。 +なお、ここでは、ECC、SHA-256、SHA-512、AES-GCM、AES-CCM、およびCamelliaを含むいくつかのオプションのアルゴリズム/暗号が有効になっています。 ```text ------------------------------------------------------------------------------ wolfSSL version 4.8.1 ------------------------------------------------------------------------------ wolfCrypt Benchmark (block bytes 1048576, min 1.0 sec each) -RNG 105 MB took 1.004 seconds, 104.576 MB/s Cycles per byte= 20.94 -AES-128-CBC-enc 310 MB took 1.008 seconds, 307.434 MB/s Cycles per byte= 7.12 -AES-128-CBC-dec 290 MB took 1.002 seconds, 289.461 MB/s Cycles per byte= 7.56 -AES-192-CBC-enc 265 MB took 1.010 seconds, 262.272 MB/s Cycles per byte= 8.35 -AES-192-CBC-dec 240 MB took 1.013 seconds, 236.844 MB/s Cycles per byte= 9.24 -AES-256-CBC-enc 240 MB took 1.011 seconds, 237.340 MB/s Cycles per byte= 9.22 -AES-256-CBC-dec 235 MB took 1.018 seconds, 230.864 MB/s Cycles per byte= 9.48 -AES-128-GCM-enc 160 MB took 1.011 seconds, 158.253 MB/s Cycles per byte= 13.83 -AES-128-GCM-dec 160 MB took 1.016 seconds, 157.508 MB/s Cycles per byte= 13.90 -AES-192-GCM-enc 150 MB took 1.022 seconds, 146.815 MB/s Cycles per byte= 14.91 -AES-192-GCM-dec 150 MB took 1.039 seconds, 144.419 MB/s Cycles per byte= 15.16 -AES-256-GCM-enc 130 MB took 1.017 seconds, 127.889 MB/s Cycles per byte= 17.12 -AES-256-GCM-dec 140 MB took 1.030 seconds, 135.943 MB/s Cycles per byte= 16.10 -GMAC Table 4-bit 321 MB took 1.002 seconds, 320.457 MB/s Cycles per byte= 6.83 -CHACHA 420 MB took 1.002 seconds, 419.252 MB/s Cycles per byte= 5.22 -CHA-POLY 330 MB took 1.013 seconds, 325.735 MB/s Cycles per byte= 6.72 -MD5 655 MB took 1.007 seconds, 650.701 MB/s Cycles per byte= 3.36 -POLY1305 1490 MB took 1.002 seconds, 1486.840 MB/s Cycles per byte= 1.47 -SHA 560 MB took 1.004 seconds, 557.620 MB/s Cycles per byte= 3.93 -SHA-224 240 MB took 1.011 seconds, 237.474 MB/s Cycles per byte= 9.22 -SHA-256 250 MB took 1.020 seconds, 245.081 MB/s Cycles per byte= 8.93 -SHA-384 380 MB took 1.005 seconds, 377.963 MB/s Cycles per byte= 5.79 -SHA-512 380 MB took 1.007 seconds, 377.260 MB/s Cycles per byte= 5.80 -SHA3-224 385 MB took 1.009 seconds, 381.679 MB/s Cycles per byte= 5.74 -SHA3-256 360 MB took 1.004 seconds, 358.583 MB/s Cycles per byte= 6.11 -SHA3-384 270 MB took 1.020 seconds, 264.606 MB/s Cycles per byte= 8.27 -SHA3-512 185 MB took 1.019 seconds, 181.573 MB/s Cycles per byte= 12.06 -HMAC-MD5 665 MB took 1.004 seconds, 662.154 MB/s Cycles per byte= 3.31 -HMAC-SHA 590 MB took 1.004 seconds, 587.535 MB/s Cycles per byte= 3.73 -HMAC-SHA224 240 MB took 1.018 seconds, 235.850 MB/s Cycles per byte= 9.28 -HMAC-SHA256 245 MB took 1.013 seconds, 241.805 MB/s Cycles per byte= 9.05 -HMAC-SHA384 365 MB took 1.006 seconds, 362.678 MB/s Cycles per byte= 6.04 -HMAC-SHA512 365 MB took 1.009 seconds, 361.674 MB/s Cycles per byte= 6.05 -PBKDF2 30 KB took 1.000 seconds, 29.956 KB/s Cycles per byte=74838.56 +RNG 105 MB took 1.004 seconds, 104.576 MB/s Cycles per byte = 20.94 +AES-128-CBC-enc 310 MB took 1.008 seconds, 307.434 MB/s Cycles per byte = 7.12 +AES-128-CBC-dec 290 MB took 1.002 seconds, 289.461 MB/s Cycles per byte = 7.56 +AES-192-CBC-enc 265 MB took 1.010 seconds, 262.272 MB/s Cycles per byte = 8.35 +AES-192-CBC-dec 240 MB took 1.013 seconds, 236.844 MB/s Cycles per byte = 9.24 +AES-256-CBC-enc 240 MB took 1.011 seconds, 237.340 MB/s Cycles per byte = 9.22 +AES-256-CBC-dec 235 MB took 1.018 seconds, 230.864 MB/s Cycles per byte = 9.48 +AES-128-GCM-enc 160 MB took 1.011 seconds, 158.253 MB/s Cycles per byte = 13.83 +AES-128-GCM-dec 160 MB took 1.016 seconds, 157.508 MB/s Cycles per byte = 13.90 +AES-192-GCM-enc 150 MB took 1.022 seconds, 146.815 MB/s Cycles per byte = 14.91 +AES-192-GCM-dec 150 MB took 1.039 seconds, 144.419 MB/s Cycles per byte = 15.16 +AES-256-GCM-enc 130 MB took 1.017 seconds, 127.889 MB/s Cycles per byte = 17.12 +AES-256-GCM-dec 140 MB took 1.030 seconds, 135.943 MB/s Cycles per byte = 16.10 +GMAC Table 4-bit 321 MB took 1.002 seconds, 320.457 MB/s Cycles per byte = 6.83 +CHACHA 420 MB took 1.002 seconds, 419.252 MB/s Cycles per byte = 5.22 +CHA-POLY 330 MB took 1.013 seconds, 325.735 MB/s Cycles per byte = 6.72 +MD5 655 MB took 1.007 seconds, 650.701 MB/s Cycles per byte = 3.36 +POLY1305 1490 MB took 1.002 seconds, 1486.840 MB/s Cycles per byte = 1.47 +SHA 560 MB took 1.004 seconds, 557.620 MB/s Cycles per byte = 3.93 +SHA-224 240 MB took 1.011 seconds, 237.474 MB/s Cycles per byte = 9.22 +SHA-256 250 MB took 1.020 seconds, 245.081 MB/s Cycles per byte = 8.93 +SHA-384 380 MB took 1.005 seconds, 377.963 MB/s Cycles per byte = 5.79 +SHA-512 380 MB took 1.007 seconds, 377.260 MB/s Cycles per byte = 5.80 +SHA3-224 385 MB took 1.009 seconds, 381.679 MB/s Cycles per byte = 5.74 +SHA3-256 360 MB took 1.004 seconds, 358.583 MB/s Cycles per byte = 6.11 +SHA3-384 270 MB took 1.020 seconds, 264.606 MB/s Cycles per byte = 8.27 +SHA3-512 185 MB took 1.019 seconds, 181.573 MB/s Cycles per byte = 12.06 +HMAC-MD5 665 MB took 1.004 seconds, 662.154 MB/s Cycles per byte = 3.31 +HMAC-SHA 590 MB took 1.004 seconds, 587.535 MB/s Cycles per byte = 3.73 +HMAC-SHA224 240 MB took 1.018 seconds, 235.850 MB/s Cycles per byte = 9.28 +HMAC-SHA256 245 MB took 1.013 seconds, 241.805 MB/s Cycles per byte = 9.05 +HMAC-SHA384 365 MB took 1.006 seconds, 362.678 MB/s Cycles per byte = 6.04 +HMAC-SHA512 365 MB took 1.009 seconds, 361.674 MB/s Cycles per byte = 6.05 +PBKDF2 30 KB took 1.000 seconds, 29.956 KB/s Cycles per byte = 74838.56 RSA 2048 public 18400 ops took 1.004 sec, avg 0.055 ms, 18335.019 ops/sec RSA 2048 private 300 ops took 1.215 sec, avg 4.050 ms, 246.891 ops/sec DH 2048 key gen 1746 ops took 1.000 sec, avg 0.573 ms, 1745.991 ops/sec @@ -538,159 +456,94 @@ ECDSA [ SECP256R1] 256 verify 1300 ops took 1.012 sec, avg 0.779 ms Benchmark complete ``` +これは、数学ライブラリを変更する前後で公開鍵演算の速度を比較するのに特に役立ちます。 +通常の数学ライブラリ(`./configure`)、fastmathライブラリ(`./configure --enable-fastmath`)、fasthugemathライブラリ(`./configure --enable-fasthugemath`)に対して、それぞれテストを実行できます。 +詳細とベンチマーク結果については、wolfSSLベンチマークページを参照してください。 -これは、数学ライブラリを変更する前後に公開キーの速度を比較するのに特に役立ちます。通常の数学ライブラリ(`./configure`)、Fastmath Library(`./configure --enable-fastmath`)、およびFasthugemath Library(`./configure --enable-fasthugemath`)を使用して結果をテストできます。 - - -詳細やベンチマークの結果については、wolfSSLベンチマークページを参照してください。 - - + ### 相対パフォーマンス +個々の暗号やアルゴリズムのパフォーマンスはホストプラットフォームによって異なりますが、wolfCryptの暗号間の相対的なパフォーマンスを以下のグラフに示します。 +このテストは、2.2 GHz Intel Core i7を搭載したMacbook Pro(OS X 10.6.8)で実施されました。 +![ベンチマーク](benchmark.png) -個々の暗号とアルゴリズムの性能はホストプラットフォームによって異なりますが、次のグラフはwolfCryptの暗号の間の相対性能を示しています。これらのテストは、2.2 GHz Intel Core I7を実行しているMacBook Pro(OS X 10.6.8)で行われました。 - -![Benchmark](benchmark.png) - - - -暗号のサブセットのみを使用する場合は、SSL/TLS接続を作成するときにwolfSSLが使用する特定の暗号スイートおよび/またはCiphersをカスタマイズできます。たとえば、128ビットAESを強制するには、コールの後に[`wolfSSL_CTX_new(SSL_CTX_new)`](group__Setup.md#function-wolfssl_ctx_new)に次の行を追加します。 - - +暗号のサブセットのみを使用したい場合は、SSL/TLS接続を行う際にwolfSSLが使用する特定の暗号スイートやCipherをカスタマイズできます。 +例えば128ビットAESを強制するには、`wolfSSL_CTX_new(SSL_CTX_new)`の呼び出しの後に、次の行を追加します。 ```c -wolfSSL_CTX_set_cipher_list(ctx, “AES128-SHA”); +wolfSSL_CTX_set_cipher_list(ctx, "AES128-SHA"); ``` +### ベンチマークに関する補足 - - -### Benchmarkの補足 - - - - -1. プロセッサネイティブレジスタサイズ(32対64ビット)は、1000ビット以上の公開キー操作を実行する場合、大きな違いを生じる可能性があります。 - - -2. ** keygen **(`--enable-keygen`)では、ベンチマークユーティリティを実行するときに鍵生成速度をベンチマークすることもできます。 - - -3. ** FastMath **(`--enable-fastmath`)は動的メモリ使用量を減らし、公開鍵操作を高速化します。FastMathを使用して32ビットプラットフォームでビルドするのに問題がある場合は、PICがレジスタを占有しないように共有ライブラリビルドを無効にしてみてください。(ReadMeのノートも参照)。 - - - +1. プロセッサのネイティブレジスタサイズ(32ビット対64ビット)は、1000ビット以上の公開鍵操作を行う際、大きな違いをもたらす可能性があります。 +2. **keygen**(`--enable-keygen`)により、ベンチマークユーティリティを実行する際、鍵生成速度もベンチマークすることができます。 +3. **fastmath**(`--enable-fastmath`)は動的メモリ使用量を削減し、公開鍵操作を高速化します。32ビットプラットフォームでfastmathを使用してビルドする際に問題がある場合は、PICがレジスタを占有しないように共有ライブラリを無効にしてください。このとき、READMEの注意事項も併せてご参照ください。 ```sh ./configure --enable-fastmath --disable-shared make clean make ``` + + **注意**:wolfSSLで構成オプションを切り替える際には、`make clean`を実行することを推奨しています。 +4. デフォルトでは、fastmathは可能であればアセンブリ最適化を使用しようとします。アセンブリ最適化が機能しない場合でも、wolfSSLをビルドする際に`CFLAGS`に`TFM_NO_ASM`を追加することで、アセンブリ最適化なしでfastmathを使用できます。 + ```sh + ./configure --enable-fastmath C_EXTRA_FLAGS="-DTFM_NO_ASM" + ``` - -**注**:wolfSSLで設定オプションを切り替える際に、`make clean`をすることは良い習慣です。 - -4. デフォルトでは、FastMathは可能であればアセンブリ最適化を使用しようとします。アセンブリの最適化が機能しない場合は、wolfSSLをビルドするときに`TFM_NO_ASM`から`CFLAGS`を追加することで、FastMathを使用することができます。 - - - - - ```sh - ./configure --enable-fastmath C_EXTRA_FLAGS=”-DTFM_NO_ASM” - ``` - - - - -5. fasthugemathを使用すると、組み込みプラットフォームで実行されていないユーザーのために、Fastmathをさらにプッシュしようとすることができます。 - - - +5. fasthugemathを使用すると、組み込みプラットフォームで実行していないユーザー向けにfastmathをさらに強化できます。 ```sh ./configure --enable-fasthugemath ``` +6. デフォルトのwolfSSLビルドでは、メモリ使用量とパフォーマンスのバランスを取るよう努めています。どちらかをより重視する場合は、追加のwolfSSL構成オプションについて[第2章](chapter02.md)「ビルドオプション」節を参照してください。 +7. **バルク転送**:wolfSSLはデフォルトで128バイトのI/Oバッファを使用します。SSLトラフィックの約80%がこのサイズに収まり、動的メモリの使用を制限するためです。バルク転送が必要な場合は、16Kバッファ(SSLの最大サイズ)を使用するように構成できます。 +### 組み込みシステムでのベンチマーク - - -6. デフォルトのwolfSSLビルドを使用すると、メモリ使用量とパフォーマンスのバランスをうまくとろうとしています。メモリ使用量とパフォーマンスのいずれかに関心がある場合は、追加のwolfSSL設定オプションについて[ビルドオプション](chapter02.md#build-options)を参照してください。 - - -7. **バルク転送**:wolfSSLはデフォルトで128バイトI/Oバッファーを使用します。SSLトラフィックの約80%はこのサイズ内で、動的メモリの使用を制限します。バルク転送が必要な場合は、16Kバッファー(最大SSLサイズ)を使用するように構成できます。 - - - - -### 組み込みシステムのベンチマーク - - - -組み込みシステムにベンチマークアプリケーションをビルドするために、いくつかのビルドオプションがあります。これらには以下が含まれます: - - +組み込みシステム上で容易にベンチマークアプリケーションをビルドできるように、複数のビルドオプションがあります。 #### BENCH_EMBEDDED - - - -この定義を有効にすると、ベンチマークアプリケーションがメモリ使用量をメガバイトの使用からキロバイトの使用へ切り替えるため使用量が削減されます。デフォルトでは、この定義を使用する場合、暗号とアルゴリズムは25KBでベンチマークを実行します。公開鍵アルゴリズムは、1回以上の反復を超えてのみベンチマークされます(一部の組み込みプロセッサの公開鍵操作がかなり遅くなる可能性がある)。`numBlocks`と`times`を変更することで、`numBlocks`と`times`を変更することで`benchmark.c`で調整できます。 - - +この定義を有効にすると、ベンチマークアプリケーションはメモリ使用量をメガバイトからキロバイトに切り替えます。 +具体的には、暗号処理と各アルゴリズムは25kBでベンチマークを実行します。 +また、一部の組み込みプロセッサでは公開鍵操作に非常に長い時間を要するため、公開鍵アルゴリズムは1回のみベンチマークを実行します。 +メモリ使用量や繰り返し回数の値は、`benchmark.c`内の`BENCH_EMBEDDED`定義内にある変数`numBlocks`と`times`を変更することで調整できます。 #### USE_CERT_BUFFERS_1024 - - - -この定義を有効にすると、ベンチマークアプリケーションがファイルシステムからのテスト用鍵と証明書のロードから切り替えられ、代わりに`/wolfssl/certs_test.h`にある1024ビット鍵と証明書バッファを使用します。組み込みプラットフォームにファイルシステムがない場合([`NO_FILESYSTEM`](chapter02.md#no_filesystem))で2048ビットの公開鍵操作が合理的でない程遅いプロセッサにこの定義を使用するのは便利です。 - - +この定義を有効にすると、ベンチマークアプリケーションはファイルシステムからテスト鍵と証明書を読み込む代わりに、`/wolfssl/certs_test.h`にある1024ビットの鍵と証明書バッファを使用します。 +これは組み込みプラットフォームにファイルシステムがなく(`NO_FILESYSTEM`と併用)、2048ビット公開鍵操作が現実的でないほど遅いプロセッサの場合に役立ちます。 #### USE_CERT_BUFFERS_2048 +`USE_CERT_BUFFERS_1024`と似ていますが、1024ビットの代わりに2048ビットの鍵と証明書バッファを使用します。 +プロセッサが2048ビット公開鍵操作を行うのに十分な速度を持っているものの、ファイルシステムがなくファイルから鍵と証明書を読み込むことが難しいケースに役立ちます。 +## クライアントアプリケーションでwolfSSLを使用する +この節では、wolfSSLネイティブAPIを使用して、クライアントアプリケーションにwolfSSLを追加するための基本的な手順について説明します。 +サーバーの説明については、本章の「サーバーアプリケーションでwolfSSLを使用する」節をご参照ください。 +より詳しい手順とサンプルコードは[第11章 SSLチュートリアル](chapter11.md)に掲載しています。 +OpenSSL互換性レイヤーの詳細については、[第13章](chapter13.md)を参照してください。 -この定義を有効にすることは、[`USE_CERT_BUFFERS_1024`](#use_cert_buffers_1024)と同様に2048ビット公開鍵と証明書を受け入れます。この定義は、プロセッサが十分な速さでできる場合に役立ちます -2048ビット公開キー操作ですが、ファイルからキーと証明書をロードできるファイルシステムがない場合。 - - - -## クライアントアプリケーションを変更してwolfSSLを使用します - - - -このセクションでは、wolfSSLネイティブAPIを使用して、クライアントアプリケーションにwolfSSLを追加するために必要な基本的な手順について説明します。サーバーの説明については、[wolfSSLを使用するためにサーバーアプリケーションを変更します](#changing-a-server-application-to-use-wolfssl)を参照してください。11章のSSLチュートリアルに例を挙げたより完全なウォークスルーがあります。OpenSSL互換性レイヤーの詳細については、[OpenSSL互換性](chapter13.md#openssl-compatibility)を参照してください。 - - - -1. wolfSSLヘッダーを含める: - - - +1. wolfSSLヘッダーをインクルードします。 ```c #include ``` - - - -2. wolfSSLと`WOLFSSL_CTX`を初期化します。最終的に作成する WOLFSSL オブジェクトの数に関係なく、1 つの WOLFSSL_CTX を使用できます。基本的に、接続しているサーバーを確認するためにCA証明書を読み込む必要があります。基本的な初期化は次のようになります: - - - +2. wolfSSLと`WOLFSSL_CTX`を初期化します。最終的に作成する`WOLFSSL`オブジェクトの数に関係なく、1つの`WOLFSSL_CTX`を使用します。基本的には、接続先のサーバーを検証するためにCA証明書を読み込む必要があります。基本的な初期化手順は次のようになります。 ```c wolfSSL_Init(); WOLFSSL_CTX* ctx; - if ((ctx=wolfSSL_CTX_new(wolfTLSv1_client_method())) == NULL) + if ((ctx = wolfSSL_CTX_new(wolfTLSv1_client_method())) == NULL) { fprintf(stderr, "wolfSSL_CTX_new error.\n"); exit(EXIT_FAILURE); @@ -702,161 +555,92 @@ wolfSSL_CTX_set_cipher_list(ctx, “AES128-SHA”); } ``` - - - -3. 各TCP接続後にwolfSSLオブジェクトを作成し、ファイル記述子をセッションに関連付けます。 - - - +3. TCP接続ごとに`WOLFSSL`オブジェクトを作成し、ファイルディスクリプタをセッションに関連付けます。 ```c /*after connecting to socket fd*/ - WOLF SSL* ssl; - if ((ssl=wolfSSL_new(ctx)) == NULL) { + WOLFSSL* ssl; + if ((ssl = wolfSSL_new(ctx)) == NULL) { fprintf(stderr, "wolfSSL_new error.\n"); exit(EXIT_FAILURE); } wolfSSL_set_fd(ssl, fd); ``` - - - -4. すべての呼び出しを`read()`(または`recv()`)から[`wolfSSL_read()`](group__IO.md#function-wolfssl_read)に変更します。 - - - +4. すべての`read()`(または`recv()`)の呼び出しを`wolfSSL_read()`に変更します。例えば以下の場合、 ```c - result=read(fd, buffer, bytes); + result = read(fd, buffer, bytes); ``` - - - 次のようになります - - + 次のように変更します。 ```c - result=wolfSSL_read(ssl, buffer, bytes); + result = wolfSSL_read(ssl, buffer, bytes); ``` - - - -5. すべての呼び出しを`write()`(または`send()`)から[`wolfSSL_write()`](group__IO.md#function-wolfssl_write)に変更します。 - - - +5. すべての`write()`(または`send()`)の呼び出しを`wolfSSL_write()`に変更します。例えば以下の場合、 ```c - result=write(fd, buffer, bytes); + result = write(fd, buffer, bytes); ``` - - - 次のようになります - - + 次のように変更します。 ```c - result=wolfSSL_write(ssl, buffer, bytes); + result = wolfSSL_write(ssl, buffer, bytes); ``` - - - -6. [`wolfSSL_connect()`](group__IO.md#function-wolfssl_connect)を手動で呼び出すことはできますが、それは必要ありません。[`wolfSSL_read()`](group__IO.md#function-wolfssl_read)または[`wolfSSL_write()`](group__IO.md#function-wolfssl_write)の最初の呼び出しは、まだ行われていない場合は[`wolfSSL_connect()`](group__IO.md#function-wolfssl_connect)を開始します。 - - -7. エラーチェック。各[`wolfSSL_read()`](group__IO.md#function-wolfssl_read)および[`wolfSSL_write()`](group__IO.md#function-wolfssl_write)呼び出しは、`read()`と`write()`と同じように、成功時に0、接続クロージャーの場合は0、およびエラーの間のバイト数を返します。エラーが発生した場合は、2つの関数を使用してエラー情報を入手できます: - - - +6. `wolfSSL_connect()`を手動で呼び出すこともできますが、必ずしも必要ではありません。最初の`wolfSSL_read()`または`wolfSSL_write()`の呼び出し時に、必要に応じて`wolfSSL_connect()`を実行します。 +7. エラーチェックは以下のように実装します。それぞれの`wolfSSL_read()`と`wolfSSL_write()`呼び出しは、成功時にはバイト数を返し、接続終了時には0を、エラー時には-1を返します。これは`read()`と`write()`と同様です。エラーが発生した場合、次の2つの関数を使用して詳しい情報を入手できます。 ```c char errorString[80]; - int err=wolfSSL_get_error(ssl, 0); + int err = wolfSSL_get_error(ssl, 0); wolfSSL_ERR_error_string(err, errorString); ``` - - - ノンブロッキング ソケットを使用している場合は、errno EAGAIN/EWOULDBLOCK をテストできます。より正確には、`SSL_ERROR_WANT_READ` または `SSL_ERROR_WANT_WRITE` に対して [`wolfSSL_get_error()`](group__Debug.md#function-wolfssl_get_error) によって返される特定のエラー コードをテストできます。 - -8. 後処理。各wolfSSLオブジェクトが使用された後、それらを解放します。 - - 呼び出し: - - + ノンブロッキングソケットを使用している場合は、errno `EAGAIN`/`EWOULDBLOCK`をテストするか、より正確には`wolfSSL_get_error()`が返す特定のエラーコードが`SSL_ERROR_WANT_READ`または`SSL_ERROR_WANT_WRITE`であるかをテストできます。 +8. クリーンアップは次のように実装します。各`WOLFSSL`オブジェクトの使用が終了したら、以下を呼び出して解放してください。 ```c wolfSSL_free(ssl); ``` - - - SSL/TLS の使用が完全に終了したら、WOLFSSL_CTX オブジェクトを呼び出して解放できます。 - - + SSL/TLSの使用が完全に終了したら、以下を呼び出して`WOLFSSL_CTX`オブジェクトを解放してください。 ```c wolfSSL_CTX_free(ctx); wolfSSL_Cleanup(); ``` +wolfSSLを使用したクライアントアプリケーションのサンプルプログラムについては、`/examples/client.c`をご参照ください。 +## サーバーアプリケーションでwolfSSLを使用する -wolfSSLを使用したクライアントアプリケーションの例については、`/examples/client.c`ファイルにあるクライアントの例を参照してください。 - - - -## wolfSSLを使用するためにサーバーアプリケーションを変更します - - - -このセクションでは、wolfSSLネイティブAPIを使用してwolfSSLをサーバーアプリケーションに追加するために必要な基本的な手順について説明します。クライアントの説明については、[クライアントアプリケーションを変更してwolfSSLを使用します](#changing-a-client-application-to-use-wolfssl)をご覧ください。 - - - -1. ステップ5でクライアントメソッド呼び出しをサーバーに変更する以外のクライアントの手順に従ってください。 - - +この節では、wolfSSLネイティブAPIを使用してサーバーアプリケーションにwolfSSLを追加するための基本的な手順について説明します。 +クライアントの説明については、本章の「クライアントアプリケーションでwolfSSLを使用する」節を参照してください。 +より詳しい手順とサンプルコードは[第11章 SSLチュートリアル](chapter11.md#ssl-tutorial)に掲載しています。 +1. 概ね上記のクライアントの手順と同様です。ただし、ステップ5のクライアントメソッド呼び出しをサーバーのものに変更します。例えば以下の行を、 ```c wolfSSL_CTX_new(wolfTLSv1_client_method()); ``` - - - 次のようになります - - + 次のように変更します。 ```c wolfSSL_CTX_new(wolfTLSv1_server_method()); ``` - - - あるいは: - - + SSLv3やTLSv1を使用するクライアントの接続も受け付ける場合には、以下のようにします。 ```c wolfSSL_CTX_new(wolfSSLv23_server_method()); ``` - - - - SSLV3およびTLSV1+クライアントがサーバーに接続できるようにします。 - -2. 上記のステップ5の初期化にサーバーの証明書とキーファイルを追加します。 - - - + +2. 上記のステップ5の初期化に、サーバーの証明書と鍵ファイルを追加します。 ```c if (wolfSSL_CTX_use_certificate_file(ctx,"./server-cert.pem", SSL_FILETYPE_PEM) != SSL_SUCCESS) { @@ -871,8 +655,7 @@ wolfSSLを使用したクライアントアプリケーションの例につい } ``` +ファイルシステムが利用できない場合は、バッファから証明書と鍵を読み込むこともできます。 +詳しい情報は`wolfSSL_CTX_use_certificate_buffer()`と`wolfSSL_CTX_use_PrivateKey_buffer()`のAPIドキュメントをご参照ください。 - -使用可能なファイルシステムがない場合は、バッファーから証明書とキーをロードすることもできます。この場合、詳細については、ここにリンクされている[`wolfSSL_CTX_use_certificate_buffer()`](group__CertsKeys.md#function-wolfssl_ctx_use_certificate_buffer)および[`wolfSSL_CTX_use_PrivateKey_buffer()`](group__CertsKeys.md#function-wolfssl_ctx_use_privatekey_buffer) APIドキュメントを参照してください。 - -wolfSSLを使用したサーバーアプリケーションの例については、`/examples/server.c`ファイルにあるサーバーの例を参照してください。 +wolfSSLを使用したサーバーアプリケーションのサンプルプログラムは、`/examples/server.c`ファイルを参照してください。 \ No newline at end of file diff --git a/wolfSSL/src-ja/chapter08.md b/wolfSSL/src-ja/chapter08.md index 25443d85..f9b11c09 100644 --- a/wolfSSL/src-ja/chapter08.md +++ b/wolfSSL/src-ja/chapter08.md @@ -1,20 +1,15 @@ - - # デバッグ - - - ## デバッグとロギング +wolfSSLは、デバッグが制限されている環境でのログメッセージによるデバッグをサポートしています。 +ロギングをオンにするには関数`wolfSSL_Debugging_ON()`を使用し、 +オフにするには`wolfSSL_Debugging_OFF()`を使用します。 +通常のビルド(リリースモード)では、これらの関数は効果がありません。 +デバッグビルドでは、これらの関数が確実にオンになるように`DEBUG_WOLFSSL`を定義してください。 - -wolfSSL(以前のCyassl)は、デバッグが制限されている環境でログメッセージを介したデバッグをサポートしています。ロギングをオンにするには、機能[`wolfSSL_Debugging_ON()`](group__Debug.md#function-wolfssl_debugging_on)を使用し、それをオフにするために[`wolfSSL_Debugging_OFF()`](group__Debug.md#function-wolfssl_debugging_off)をオフにします。通常のビルド(リリースモード)では、これらの関数は効果がありません。デバッグビルドで、これらの機能がオンになっていることを確認するために`DEBUG_WOLFSSL`を定義します。 - - -wolfSSL 2.0以降、ロギングコールバック関数はランタイムに登録されて、ログ記録の完了方法をより柔軟に提供することができます。ロギングコールバックは機能[`wolfSSL_SetLoggingCb()`](group__Logging.md#function-wolfssl_setloggingcb)に登録できます。 - - +wolfSSL 2.0以降では、ロギングの方法についてより柔軟性を提供するために、ランタイムでロギングコールバック関数を登録できます。 +ロギングコールバックは関数`wolfSSL_SetLoggingCb()`で登録できます。 ```c int wolfSSL_SetLoggingCb(wolfSSL_Logging_cb log_function); @@ -23,43 +18,33 @@ typedef void (*wolfSSL_Logging_cb)(const int logLevel, const char *const logMessage); ``` - - -ログレベルは`wolfssl/wolfcrypt/logging.h`にあり、実装は`logging.c`にあります。デフォルトでは、wolfsslは`stderr`に`fprintf`でロギングします。 - - +ログレベルは`wolfssl/wolfcrypt/logging.h`にあり、実装は`logging.c`にあります。 +デフォルトでは、wolfSSLは`fprintf`を使用して`stderr`にログを出力します。 ## エラーコード +デバッグを支援するために、有益なエラーメッセージを提供するよう努めています。 +`wolfSSL_read()`と`wolfSSL_write()`の呼び出しは、成功時にはバイト数、接続終了時には0、エラー時には-1を返します。 +これは`read()`や`write()`と同様です。 +エラーが発生した場合には、以下の2つのAPIを使用してより詳しい情報を入手できます。 -wolfSSLは、デバッグを支援するために、有益なエラーメッセージを提供します。 - - -各[`wolfSSL_read()`](group__IO.md#function-wolfssl_read)および[`wolfSSL_write()`](group__IO.md#function-wolfssl_write)呼び出しは、`read()`と`write()`と同じように、成功時に0、接続クロージャーの場合は0、およびエラーの間のバイト数を返します。エラーが発生した場合は、2つのAPIを使用して、エラーの情報を入手できます。 - - -関数[`wolfSSL_get_error()`](group__Debug.md#function-wolfssl_get_error)は現在のエラーコードを返します。現在の`WOLFSSL`オブジェクト、および[`wolfSSL_read()`](group__IO.md#function-wolfssl_read)または[`wolfSSL_write()`](group__IO.md#function-wolfssl_write)の結果値を引数として取得し、対応するエラーコードを返します。 - - +関数`wolfSSL_get_error()`は、現在のエラーコードを返します。 +現在の`WOLFSSL`オブジェクトと`wolfSSL_read()`または`wolfSSL_write()`の結果値を引数として取り、対応するエラーコードを返します。 ```c -int err=wolfSSL_get_error(ssl, result); +int err = wolfSSL_get_error(ssl, result); ``` - - -より読み取り可能なエラーコードの説明を取得するには、[`wolfSSL_ERR_error_string()`](group__Debug.md#function-wolfssl_err_error_string)関数を使用できます。[`wolfSSL_get_error`](group__Debug.md#function-wolfssl_get_error)からのリターンコードとストレージバッファーを引数として取得し、対応するエラーの説明をストレージバッファー(以下の例の`errorString`)に配置します。 - - +人間が読みやすいエラーコードの説明を得るには、`wolfSSL_ERR_error_string()`を使用します。 +この関数は`wolfSSL_get_error`の戻り値と出力保存用のバッファを引数として取り、対応するエラーの説明をそのバッファ(以下の例では`errorString`)に出力します。 ```c char errorString[80]; wolfSSL_ERR_error_string(err, errorString); ``` +ノンブロッキングソケットを使用している場合、`errno EAGAIN/EWOULDBLOCK`をテストするか、 +より正確には特定のエラーコード`SSL_ERROR_WANT_READ`または`SSL_ERROR_WANT_WRITE`をテストできます。 - -ノンブロッキングソケットを使用している場合は、EEAGAIN/EWOULDBLOCKをテストするか、`SSL_ERROR_WANT_READ`または`SSL_ERROR_WANT_WRITE`の特定のエラーコードをテストできます。 - -wolfSSLとWolfCryptエラーコードのリストについては、付録C(エラーコード)を参照してください。 +[付録F エラーコード](appendix06.md)に、wolfSSLとwolfCryptのエラーコード一覧を掲載しています。 diff --git a/wolfSSL/src-ja/chapter09.md b/wolfSSL/src-ja/chapter09.md index 251e9bbb..abebefce 100644 --- a/wolfSSL/src-ja/chapter09.md +++ b/wolfSSL/src-ja/chapter09.md @@ -1,118 +1,75 @@ - - # ライブラリデザイン - - - ## ライブラリヘッダー +wolfSSL 2.0.0 RC3以降のリリースでは、ライブラリヘッダファイルを以下の場所に配置しています。 +* wolfSSL: `wolfssl/` +* wolfCrypt: `wolfssl/wolfcrypt/` +* wolfSSL OpenSSL互換レイヤー: `wolfssl/openssl/` -wolfSSL 2.0.0 RC3のリリースにより、ライブラリヘッダーファイルは次の場所にあります。 - - - -* Wolfssl:`wolfssl/` - - -* wolfcrypt:`wolfssl/wolfcrypt/` - - -* wolfSSL OpenSSL互換レイヤー:`wolfssl/openssl/` - - - -OpenSSL互換レイヤーを使用する場合([OpenSSL互換性](chapter13.md#openssl-compatibility)参照)、`/wolfssl/openssl/ssl.h`ヘッダーを含める必要があります。 - - +OpenSSL互換レイヤーを使用する場合、`/wolfssl/openssl/ssl.h`ヘッダーをインクルードする必要があります。 +[第13章 OpenSSL互換性](chapter13.md)も併せてご参照ください。 ```c #include ``` - - -wolfSSLネイティブAPIのみを使用する場合は、`/wolfssl/ssl.h`ヘッダーのみを含める必要があります。 - - +wolfSSLネイティブAPIのみを使用する場合は、`/wolfssl/ssl.h`ヘッダーのみをインクルードする必要があります。 ```c #include ``` - - - ## 起動と終了 +すべてのアプリケーションは、ライブラリを使用する前に`wolfSSL_Init()`、プログラム終了時に`wolfSSL_Cleanup()`を呼び出す必要があります。 +現在、これらの関数はマルチユーザーモードでセッションキャッシュ用の共有ミューテックスを初期化および解放するだけです。 +しかし、将来的にはより多くの処理を実行する可能性があるため、常にこれらを実行することをお勧めします。 +## 構造体の使用 -すべてのアプリケーションは、ライブラリを使用する前に[`wolfSSL_Init()`](group__TLS.md#function-wolfssl_init)を呼び出し、プログラム終了時に[`wolfSSL_Cleanup()`](group__TLS.md#function-wolfssl_cleanup)を呼び出す必要があります。現在、これらの機能は、マルチユーザーモードでセッションキャッシュの共有ミューテックスを初期化して解放しますが、将来的にはより多くのことをするかもしれないので、それらを使用することは常に良い考えです。 - - - -## 構造の使用 - - - -ヘッダーファイルの場所の変更に加えて、wolfSSL 2.0.0 RC3のリリースは、ネイティブのwolfSSL APIとwolfSSL OpenSSL互換層の間でより目に見える区別を作成しました。この区別により、ネイティブのwolfSSL APIによって使用される主なSSL/TLS構造は、名前が変更されました。新しい構造は次のとおりです。OpenSSL互換層を使用するときは、前の名前はまだ使用されます([OpenSSL互換性](chapter13.md#openssl-compatibility)参照)。 - - - -* `WOLFSSL`(以前のSSL) - - -* `WOLFSSL_CTX`(以前はSSL_CTX) - - -* `WOLFSSL_METHOD`(以前はssl_method) - - -* `WOLFSSL_SESSION`(以前はssl_session) - - -* `WOLFSSL_X509`(以前はx509) - - -* `WOLFSSL_X509_NAME`(以前x509_name) - - -* `WOLFSSL_X509_CHAIN`(以前はx509_chain) - - - - -## スレッドの安全性 - - - -wolfssl(以前のCyassl)は、設計によりスレッドセーフです。wolfSSL はグローバル データ、静的データ、およびオブジェクトの共有を回避するため、複数のスレッドが競合を発生させることなくライブラリに同時に入ることができます。ユーザーは、2つの領域で潜在的な問題を回避するように注意する必要があります。 - - - -1. クライアントは、複数のスレッドにわたってwolfSSLオブジェクトを共有することができますが、アクセスは同期する必要があります。すなわち、同じSSLポインタを持つ2つの異なるスレッドから同時にRead/Writeすることはできません。 - - -wolfSSLは、共有できない関数に入ったときにより積極的な(制限的な)スタンスを取り、他のユーザーをロックアウトする可能性がありますが、このレベルの粒度は直感に反しているようです。すべてのユーザー(シングルスレッドでさえ)はロックの負荷を負担し、マルチスレッドはスレッド間でオブジェクトを共有していなくてもライブラリーに再入力できません。このペナルティは高すぎるように思われが、wolfSSLは共有オブジェクトを同期する責任をユーザーの手に委ねます。 - - +wolfSSL 2.0.0 RC3リリースではヘッダーファイルの場所の変更に加え、wolfSSLのネイティブAPIとOpenSSL互換レイヤーをより明確に区別するようにしました。 +これに伴い、wolfSSLのネイティブAPIで使用されるSSL/TLS構造体の名前を変更しています。 +新しい構造体は以下の通りです。 +なおOpenSSL互換レイヤーを使用する場合は、引き続き旧称を使用します。 +詳細は [第13章 OpenSSL互換性](chapter13.md) をご参照ください。 -2. wolfSSLのポインターを共有するだけでなく、ユーザーは[`wolfSSL_new()`](group__Setup.md#function-wolfssl_new)に渡す前に`WOLFSSL_CTX`を完全に初期化するように注意する必要があります。同じ`WOLFSSL_CTX`は複数の`WOLFSSL`構造体を作成できますが、`WOLFSSL_CTX`の作成中には[`wolfSSL_new()`](group__Setup.md#function-wolfssl_new)の作成中にのみ読み取られます(または`WOLFSSL_CTX`の将来の変化(または同時的な変化)`WOLFSSL`オブジェクトが作成されると、反映されません。 +* `WOLFSSL` (旧称:SSL) +* `WOLFSSL_CTX` (旧称:SSL_CTX) +* `WOLFSSL_METHOD` (旧称:SSL_METHOD) +* `WOLFSSL_SESSION` (旧称:SSL_SESSION) +* `WOLFSSL_X509` (旧称:X509) +* `WOLFSSL_X509_NAME` (旧称:X509_NAME) +* `WOLFSSL_X509_CHAIN` (旧称:X509_CHAIN) -3. 一部の最適化では、スレッドごとにメモリが割り当てられます。 固定小数点 ECC キャッシュが有効になっている場合 (`FP_ECC`)、スレッドは、スレッドが終了する前に `wc_ecc_fp_free()` を使用してキャッシュされたバッファを解放する必要があります。 +## スレッドセーフ -繰り返しになりますが、複数のスレッドは`WOLFSSL_CTX`への書き込みアクセスを同期させる必要があり、単一のスレッドが`WOLFSSL_CTX`を初期化して上述の同期および更新の問題を回避することをお勧めします。 +wolfSSLはスレッドセーフとなるよう設計しています。 +グローバルデータ、静的データ、オブジェクトの共有を避けているため、複数のスレッドが競合せず同時にライブラリに入ることができます。 +ユーザーは、いくつかの領域で潜在的な問題を避けるよう注意する必要があります。 +1. クライアントは複数のスレッド間で`WOLFSSL`オブジェクトを共有できますが、アクセスは同期する必要があります。つまり、同じSSLポインタを持つ2つの異なるスレッドから同時にRead/Writeすることはできません。 + wolfSSLは共有できない関数に入ったときにより積極的(制約的)な姿勢をとり、他のユーザーをロックアウトする可能性があります。 + すべてのユーザー(シングルスレッドのユーザーでさえ)はロックの負荷を負担し、マルチスレッドユーザーはスレッド間でオブジェクトを共有していなくても、ライブラリに再入力できません。 + このペナルティは高すぎるように思えますが、wolfSSLは共有オブジェクトを同期する責任をユーザーの手に委ねています。 -## 入力および出力バッファー +2. `WOLFSSL`ポインタの共有に加えて、ユーザーは構造体を`wolfSSL_new()`に渡す前に`WOLFSSL_CTX`を完全に初期化する必要があります。同じ`WOLFSSL_CTX`で複数の`WOLFSSL`構造体を作成できますが、`WOLFSSL_CTX`は`wolfSSL_new()`作成時にのみ読み取られ、`WOLFSSL`オブジェクトが作成されると、`WOLFSSL_CTX`への将来の(または同時の)変更は反映されません。 + 繰り返しになりますが、複数のスレッドは`WOLFSSL_CTX`への書き込みアクセスを同期させるべきであり、上記の同期と更新の問題を避けるために、単一のスレッドが`WOLFSSL_CTX`を初期化することをお勧めします。 +3. 一部の最適化では、スレッドごとにメモリが割り当てられます。固定小数点ECCキャッシュが有効になっている場合(`FP_ECC`)、スレッドはスレッド終了前に`wc_ecc_fp_free()`を使用してキャッシュされたバッファをリリースする必要があります。 -wolfSSLは、入力と出力に動的バッファーを使用するようになりました。デフォルトは0バイトになり、`wolfssl/internal.h`で`RECORD_SIZE`定義によって制御されます。静的バッファーよりもサイズが大きい入力レコードを受信した場合、動的バッファーは一時的にリクエストを処理して解放されます。静的バッファーサイズを2^16または16,384の`MAX_RECORD_SIZE`に設定できます。 +## 入力と出力バッファ +wolfSSLは、入力と出力に動的バッファを使用しています。 +これらはデフォルトで0バイトであり、`wolfssl/internal.h`の`RECORD_SIZE`定義によって制御されます。 +静的バッファよりも大きな入力レコードを受信した場合、一時的に動的バッファが使用され、その後解放されます。 +静的バッファサイズは`MAX_RECORD_SIZE`(2^16または16,384)にて設定できます。 -wolfsslが操作された前の方法を好む場合は、ダイナミックメモリを必要としない16kbの静的バッファを使用して、`LARGE_STATIC_BUFFERS`を定義することでそのオプションを取得できます。 +以前のwolfSSLの動作方法(動的メモリを必要としない16Kbの静的バッファ)を希望する場合は、`LARGE_STATIC_BUFFERS`を定義することで、その動作を引き続き使用できます。 -動的バッファーが使用され、ユーザーがバッファサイズよりも大きい[`wolfSSL_write()`](group__IO.md#function-wolfssl_write)を要求する場合、最大`MAX_RECORD_SIZE`までの動的ブロックを使用してデータを送信します。最大`RECORD_SIZE`サイズのチャンクでデータを送信したいユーザーは、`STATIC_CHUNKS_ONLY`を定義することでこれを行うことができます。これにより、wolfSSLは、デフォルトで128バイトの`RECORD_SIZE`まで成長するI/Oバッファーを使用します。 +動的バッファが使用され、ユーザーがバッファサイズより大きい`wolfSSL_write()`をリクエストした場合、`MAX_RECORD_SIZE`までの動的ブロックがデータを送信するために使用されます。 +データを最大で`RECORD_SIZE`サイズのチャンクでのみ送信したいユーザーは、`STATIC_CHUNKS_ONLY`を定義してください。 +これにより、wolfSSLは`RECORD_SIZE`(デフォルトでは128バイト)まで拡大するI/Oバッファを使用するようになります。 diff --git a/wolfSSL/src-ja/chapter12.md b/wolfSSL/src-ja/chapter12.md index 8abf65df..5c014ad2 100644 --- a/wolfSSL/src-ja/chapter12.md +++ b/wolfSSL/src-ja/chapter12.md @@ -1,82 +1,48 @@ - - # 組み込みデバイスのベストプラクティス +## 秘密鍵の作成 +秘密鍵をファームウェアに埋め込むと誰でも鍵を抽出でき、安全性が保たれなくなってしまいます。 +SSL/TLSを使用するデバイスの秘密鍵作成に関して、いくつかのアイデアがあります。 -## プライベートキーの作成 - - - -秘密キーをファームウェアに埋め込むことで、誰でもキーを抽出し、それ以外の場合は安全な接続をTCPよりも安全なものに変えることができます。 - - -SSL対応デバイス用のプライベートキーの作成について、いくつかのアイデアがあります。 - - - -1. サーバーとして機能する各デバイスは、非組み込みの世界のように、ユニークな秘密鍵を持つ必要があります。 - - -2. 配信前にキーをデバイスに配置できない場合は、セットアップ中に生成されます。 - - -3. セットアップ中にデバイスに独自のキーを生成する機能がない場合は、デバイスをセットアップしているクライアントにキーを生成させ、それをデバイスに送信してもらいます。 - - -4. クライアントに秘密キーを生成する機能がない場合、クライアントに、既知のWebサイト(たとえば)からSSL/TLS接続を介して一意の秘密キーを取得します。 - - - -wolfSSL(以前のCyassl)は、これらすべてのステップで使用して、組み込みデバイスに安全な一意の秘密キーを確保するのに役立ちます。これらのステップを踏むことは、SSL接続自体の保護に大いに役立ちます。 - - - -## wolfSSL によるデジタル署名と認証 - - - -wolfSSLは、組み込みデバイス上でそれらをロードする前に、アプリケーション、ライブラリ、またはファイルにデジタル署名するための一般的なツールです。ほとんどのデスクトップおよびサーバー オペレーティング システムでは、システム ライブラリを介してこのタイプの機能を作成できますが、機能を取り除いた組み込みオペレーティング システムでは作成できません。Embedded RTOS環境にデジタル署名機能が含まれていないため、歴史的にほとんどの組み込みアプリケーションが必要ではなかったためです。Connected Devicesの世界では、セキュリティ上の懸念を高め、埋め込みまたはモバイルデバイスにロードされているものにデジタル署名しています。 - - -この要件が過去に見つからなかった組み込み接続されたデバイスの例には、セットトップボックス、DVR、POIPシステム、VoIPおよび携帯電話、接続ホーム、さらには自動車ベースのコンピューティングシステムが含まれます。wolfSSLは、主要な組み込みおよびリアルタイムオペレーティングシステム、暗号化標準、および認証機能をサポートしているため、デジタル署名機能を追加する際に組み込みシステム開発者が使用することは自然な選択です。 - - -一般に、埋め込みデバイスでコードとファイルの署名を設定するプロセスは次のとおりです。 - - - -1. 組み込みシステム開発者はRSAキーペアを生成します。 - - -2. サーバー側のスクリプトベースのツールが開発されています - -1.サーバー側のツールは、デバイスにロードされるコードのハッシュを作成します(たとえばSHA-256を使用)。 - 2.その後、ハッシュがデジタルで署名され、RSAプライベート暗号化とも呼ばれます。 - 3.デジタル署名とともにコードを含むパッケージが作成されます。 - -3. パッケージは、RSAの公開キーを取得する方法とともに、デバイスにロードされています。ハッシュは、デバイスに再作成され、既存のデジタル署名に対してデジタル検証(RSA public Decryptとも呼ばれます)。 - - - -デバイスでデジタル署名を有効にするための利点は次のとおりです。 - - - -1. サードパーティがファイルをデバイスにロードできるようにするための安全な方法を簡単に有効にします。 +1. サーバーとして動作する各デバイスは、非組み込み環境と同様に、固有の秘密鍵を持つ必要があります。 +2. デバイスの配布前に鍵を配置できない場合は、セットアップ中に生成させます。 +3. デバイスがセットアップ中に独自の鍵を生成できない場合、デバイスを設定するクライアントで鍵を生成し、デバイスに送信させます。 +4. クライアントが秘密鍵を生成できない場合、クライアントにデバイスの既知のウェブサイトからSSL/TLS接続を通じて固有の秘密鍵を取得させます。 +wolfSSLはこれらのすべてのステップで使用でき、すべての組み込みデバイス内に秘密鍵を安全に配置するのに役立ちます。 +これらの手順を踏むことで、SSL/TLS接続自体の安全性を大幅に高めることができます。 -2. 悪意のあるファイルがデバイスに侵入するのを防ぎます。 +## wolfSSLによるデジタル署名と認証 +wolfSSLは、アプリケーション、ライブラリ、ファイルを組み込みデバイスにロードする前にデジタル署名するためにも使用されます。 +なお、デスクトップマシンやサーバーを対象としたほとんどのOSでは、システムライブラリを通じてこのような処理を実行できます。 +しかし、組み込み向けのRTOSでは省略されていることも少なくありません。 +歴史的にほとんどの組み込みアプリケーションにおいて、実行する必要がなかったためです。 +今日ではデバイスをネットワークに接続することは一般的となり、これに伴ってセキュリティリスクは日々増大しています。 +したがって、ターゲットデバイスが組み込みまたはモバイルデバイスであっても、配布するものにあらかじめデジタル署名を施し、検証を行うことが非常に重要となっています。 -3. デジタルで安全なファームウェア アップデート +この流れは、セットトップボックス、DVR、POSシステム、VoIPや携帯電話、スマートホームデバイス、さらには自動車向けのコンピューティングシステムで特に顕著です。 +wolfSSLは主要な組み込みおよびリアルタイムオペレーティングシステム、暗号標準、認証機能をサポートしています。 +組み込みシステム開発者がデジタル署名機能を追加する際、wolfSSLは非常に優れた選択肢となります。 +一般的に、組み込みデバイスでコードやファイルに署名を行うには、次のステップを実行します。 -4. 権限のない第三者によるファームウェアの更新を防ぐ +1. 組み込みシステム開発者が、RSA鍵ペアを生成します。 +2. サーバー側で、スクリプトベースのツールを実行します。 + 1. デバイスにロードされるコードのハッシュ(例:SHA-256)を作成します。 + 2. ハッシュにデジタル署名を行います。 + 3. コードとデジタル署名を含むパッケージを作成します。 +3. パッケージをRSA公開鍵とともにデバイスにロードします。デバイス上では再度ハッシュを作成し、デジタル署名を用いて検証を行います。 +デバイスでデジタル署名を有効にする利点は、次の通りです。 +1. サードパーティがファイルをデバイスにロードできる、安全な方法を簡単に構築できます。 +2. 悪意のあるファイルがデバイスに侵入するのを防ぐことができます。 +3. ファームウェアアップデートを電子的に保護できます。 +4. 権限のない第三者によるファームウェアアップデートを防ぐことができます。 -コード署名に関する一般情報: +コード署名に関する一般的な情報は、以下のページからご確認いただけます。 - + diff --git a/wolfSSL/src-ja/chapter13.md b/wolfSSL/src-ja/chapter13.md index 90fd17c6..7e8710cd 100644 --- a/wolfSSL/src-ja/chapter13.md +++ b/wolfSSL/src-ja/chapter13.md @@ -1,206 +1,152 @@ - - # OpenSSL互換性 - - - ## OpenSSLとの互換性 +wolfSSLはwolfSSLネイティブAPIに加えて、OpenSSL互換性ヘッダー `wolfssl/openssl/ssl.h` を提供しています。 +これを用いることで、既存のOpenSSLアプリケーションを簡単にwolfSSLに移植したり、移行したりすることができます。 +OpenSSL互換性レイヤーの概要については、以下をご覧ください。 +wolfSSLがサポートするOpenSSL関数の一覧は、`wolfssl/openssl/ssl.h`ファイルをご確認ください。 +OpenSSL互換性レイヤーは、よく使用されるOpenSSLコマンドのサブセットをwolfSSLのネイティブAPI関数にマッピングします。 +これにより、アプリケーションコードにわずかな変更を加えるだけで、OpenSSLをwolfSSLへ簡単に置き換えることができます。 -wolfSSL(以前のCyassl)は、wolfSSLネイティブAPIに加えて、OpenSSL互換性ヘッダー`wolfssl/openssl/ssl.h`を提供し、wolfSSLの使用を容易にしたり、既存のOpenSSLアプリケーションをwolfSSLに移植するのを支援します。OpenSSL互換性レイヤーの概要については、以下をご覧ください。wolfSSLがサポートするOpenSSL関数の完全なセットを表示するには、`wolfssl/openssl/ssl.h`ファイルを参照してください。 - - -OpenSSL互換性レイヤーは、wolfSSLのネイティブAPI関数に最も一般的に使用されているOpenSSLコマンドのサブセットをマップします。これにより、多くのコードを変更せずに、アプリケーションまたはプロジェクトでOpenSSLをOpenSSLに簡単に交換できるようになります。 - - -OpenSSL互換性のための私達のテストベッドはStunnelとLighttpdです。これは、OpenSSL互換性APIをテストする方法としてWolfsslを使ってそれらの両方をビルドすることを意味します。 - - -互換性レイヤーを備えたwolfSSLのビルド: - - - -1. ([`--enable-opensslextra`](chapter02.md#--enable-opensslextra))またはマクロ`OPENSSL_EXTRA`を定義することによって有効にします。 - +私たちは、OpenSSL互換性のテストベッドとしてstunnelとLighttpdを使用しています。 +これらを弊社でビルドして、OpenSSL互換APIが正しく機能するか検証しています。 +互換性レイヤーを有効にしたwolfSSLのビルド手順。 +1. `--enable-opensslextra`を有効化するか、マクロ`OPENSSL_EXTRA`を定義します。 ```sh ./configure --enable-opensslextra ``` - - - - -2. 最初のwolfSSLヘッダーとして``を含めます - - -3. 移行のヘッダーファイルは以下にあります。 - -* `./wolfssl/openssl/*.h` - *例:`` - - + +2. 最初のwolfSSLヘッダーとして``をインクルードします。 +3. 移行用のヘッダーファイルは、以下の場所にあります。 + * `./wolfssl/openssl/*.h` + * 例。`` ## wolfSSLとOpenSSLの違い +wolfSSLとOpenSSLにはどのような違いがあるのか、組み込み向けに最適化されたTLSライブラリを使用することで、どのような利点がもたらされるのか、よくご質問をいただきます。 +OpenSSLは確かに無料で使い始めることができますが、wolfSSLはより柔軟性が高く、既存のプラットフォームに容易にTLSなどの機能を統合できます。 +このほか多くの最新アルゴリズムをサポートしており、以下に示すようなたくさんのメリットを、利用しやすいライセンスモデルでご提供しています。 +ここでは、wolfSSLとOpenSSLの主な違いをいくつかご説明します。 -多くの人々は、wolfSSL が OpenSSL とどのように比較され、組み込みプラットフォームで実行するように最適化された SSL/TLS ライブラリを使用する利点があるかについて興味があります。明らかに、OpenSSLは無料で、使用を開始するための最初のコストはありませんが、wolfSSLはあなたの柔軟性、SSL/TLSの既存のプラットフォームへのより簡単な統合、現在の標準サポート、その他の多くの機能を非常に使いやすいライセンスモデルで提供します。 - -以下の点は、wolfSSLとOpenSSLの間の主な違いのいくつかを概説します。 - - - -1. wolfSSL のビルドサイズは大体20~100kB で、条件がそろえばOpenSSLの20分の1ほどの大きさになります。wolfSSLはリソースに制約の厳しい環境に適した選択肢です。 - - -2. Wolfsslは、DTLSを使用したTLS 1.3の最新規格に対応しています。wolfSSL チームは、wolfSSL を現在の標準に合わせて継続的に最新の状態に保つことに専念しています。 - - -3. wolfSSLは、ストリーミングメディアサポートのための暗号を含む、今日利用可能な最高の現在の暗号と標準を提供しています。さらに、最近導入されたLIBOQS統合により、Quantum後の暗号化の実験を開始できます。 - - -4. wolfSSLは、GPLV2と商業ライセンスの両方でデュアルライセンスされており、OpenSSLは複数のソースからの独自のライセンスの下でのみ利用可能です。 - - -5. wolfSSLは、そのユーザーを気にかけている優れた会社と彼らのセキュリティについて、そして常に助けを喜んでいます。チームは、wolfSSL の改善と拡張に積極的に取り組んでいます。 wolfSSL チームは、主にモンタナ州ボーズマン、オレゴン州ポートランド、ワシントン州シアトルを拠点としており、世界中にいる他のチーム メンバーもいます。 - - -6. wolfSSLは、実際のプラットフォームサポートと組み込み環境上の実装の成功により、リアルタイム、モバイル、および組み込みシステムのための主要なSSL/TLSライブラリです。すでにあなたの環境に移植されている可能性があります。 そうでない場合はお知らせください。喜んでお手伝いさせていただきます。 - - -7. wolfSSLは、できるだけ簡単に環境やプラットフォームにSSLを統合するためのいくつかの抽象化レイヤーを提供しています。OOS レイヤー、カスタム I/O レイヤー、および C 標準ライブラリ抽象化レイヤーにより、統合がこれまでになく簡単になりました。 - -8. wolfSSLは、wolfSSL用のいくつかのサポートパッケージを提供しています。電話、電子メール、またはwolfSSL製品サポートフォーラムを介して直接利用できるように、あなたのプロジェクトをできるだけ早くあなたのプロジェクトを進歩させるのを助けるためにすばやく正確に答えられます。 - +1. wolfSSLのビルドサイズは概ね 20~100kB で、条件が揃えばOpenSSLの20分の1ほどの大きさになります。wolfSSLはリソースに制約の厳しい環境に適した選択肢です。 +2. wolfSSLはDTLSを含むTLS 1.3の最新標準に対応しています。wolfSSLチームは、wolfSSLを常に最新の標準に更新し続けることに専念しています。 +3. wolfSSLは、ストリーミングメディアサポート用の暗号を含め、今日利用可能な最高の暗号と標準を提供しています。さらに、liboqsの統合や各種の独自実装により、耐量子暗号アルゴリズムにも対応しています。 -## サポートされているOpenSSL構造 +4. wolfSSLは、GPLv2のオープンソースライセンスと商用ライセンスのデュアルライセンスで提供していますが、OpenSSLは複数のソースに基づく独自のライセンスでのみ利用可能です。 +5. wolfSSLは、ユーザーとその安全性を気にかけ、常に支援を惜しまない優れた企業によるサポートを提供しています。wolfSSLチームは主にモンタナ州ボーズマン、オレゴン州ポートランド、ワシントン州シアトルを拠点とし、その他世界中で多数のメンバーがwolfSSLの向上と拡張に積極的に取り組んでいます。 +6. wolfSSLは、多様なプラットフォームサポートと組み込み環境での実装実績を有する、RTOS、モバイル、組み込みシステム向けの優れたSSL/TLSライブラリです。これらの領域ではほとんどのデバイスに対する移植が完了しています。もし実行できない環境がございましたら、気兼ねなくお知らせください。速やかに対応いたします。 +7. wolfSSLは、プラットフォームへできるだけ簡単にSSL/TLSを統合するために、いくつかの抽象化レイヤーを提供しています。OSレイヤー、カスタムI/Oレイヤー、Cスタンダードライブラリ抽象化レイヤーにより、統合がこれまでになく簡単になりました。 -* `SSL_METHOD`はSSLバージョン情報を保持し、クライアントメソッドまたはサーバーのいずれかです。(ネイティブwolfSSL APIの`WOLFSSL_METHOD`と同じ)。 +8. wolfSSLは、複数のサポートパッケージを提供し、ユーザーに最適なものをお選びいただけるようにしています。 +電話、メール、サポートフォーラムを通じてお問い合わせいただくことが可能です。ご質問には迅速かつ正確に回答し、プロジェクトをできるだけ早く進められるようお手伝いいたします。 +## サポートしているOpenSSL構造体 -* `SSL_CTX`証明書を含むコンテキスト情報を保持します。(ネイティブwolfSSL APIの`WOLFSSL_CTX`と同じ)。 +* `SSL_METHOD` はSSLバージョン情報を保持し、クライアントメソッドかサーバーメソッドのいずれかです。 +(ネイティブwolfSSL APIでの `WOLFSSL_METHOD` と同等) +* `SSL_CTX` は証明書を含むコンテキスト情報を保持します。 +(ネイティブwolfSSL APIでの `WOLFSSL_CTX` と同等) -* `SSL`安全な接続のためにセッション情報を保持します。(ネイティブwolfSSL APIの`WOLFSSL`と同じ)。 - - - - -## サポートされているOpenSSL関数 - - - -上記の3つの構造は、通常、次の方法で初期化されます。 +* `SSL` は安全な接続のためのセッション情報を保持します。 +(ネイティブwolfSSL APIでの `WOLFSSL` と同等) +## サポートしているOpenSSL関数 +上記の3つの構造体は通常、次のように初期化されます。 ```c -SSL_METHOD* method=SSLv3_client_method(); -SSL_CTX* ctx=SSL_CTX_new(method); -SSL* ssl=SSL_new(ctx); +SSL_METHOD* method = SSLv3_client_method(); +SSL_CTX* ctx = SSL_CTX_new(method); +SSL* ssl = SSL_new(ctx); ``` +このコードは、クライアント側SSLバージョン3メソッドを確立し、そのメソッドに基づいてコンテキストを作成し、コンテキストでSSLセッションを初期化します。 +サーバー側のプログラムも同様ですが、`SSL_METHOD`は`SSLv3_server_method()`、または利用可能なその他の関数を使用して作成します。 +サポートしている関数についての詳細は、[第4章 機能](chapter04.md)をご参照ください。 +OpenSSL互換レイヤーを使用する場合、このセクションの関数は「wolf」プレフィックスを削除する必要があります。 -これはクライアント側のSSLバージョン3メソッドを確立し、メソッドに基づいてコンテキストを作成し、コンテキストとSSLセッションを初期化します。`SSL_METHOD`が`SSLv3_server_method()`、または利用可能な機能の1つを使用して作成されることを除いて、サーバーサイドプログラムは変わりません。サポートされている機能のリストについては、[プロトコルサポート](chapter04.md#protocol-support)セクションを参照してください。OpenSSL互換層を使用する場合、このセクションの関数は "wolf"プレフィックスを削除することで変更する必要があります。たとえば、ネイティブのwolfSSL API関数です。 - - +例えば、次に示すネイティブwolfSSL API関数であれば、 ```c wolfTLSv1_client_method() ``` - - -次のようになります - - +以下のように変更します。 ```c TLSv1_client_method() ``` - - -SSL接続が不要になった場合、次の呼び出しは初期化中に作成された構造を無料で解放します。 - - +SSL/TLS接続が不要となった場合、初期化中に作成された構造体を解放するために以下の関数を実行します。 ```c SSL_CTX_free(ctx); SSL_free(ssl); ``` +`SSL_CTX_free()`には、関連する`SSL_METHOD`を解放する追加の責任があります。 +`XXX_free()`関数を使用しないと、リソースリークが発生します。 +SSL/TLSのものではなくシステムの`free()`を使用すると、未定義の動作が発生します。 +必ず上記のようにご使用ください。 - -`SSL_CTX_free()`には、関連する`SSL_METHOD`を解放するという追加の責任があります。`XXX_free()`関数の使用に失敗すると、リソースリークが発生します。SSLのものの代わりにシステムの`free()`を使用すると、未定義の動作が生じます。 - - -アプリケーションが`SSL_new()`から有効なSSLポインタを持つと、SSLハンドシェイクプロセスが開始されます。クライアントのビューから、`SSL_connect()`は安全な接続を確立しようとします。 - - +アプリケーションが`SSL_new()`から有効なSSLポインタを取得すると、SSL/TLSハンドシェイクプロセスを開始できます。 +クライアントからは、`SSL_connect()`が安全な接続の確立を試みます。 ```c SSL_set_fd(ssl, sockfd); SSL_connect(ssl); ``` - - -`SSL_connect()`を発行する前に、ユーザーは上記の例で有効なソケットファイル記述子、SOCKFDをwolfSSLに提供する必要があります。`sockfd`は通常、TCP `socket()`の結果であり、後にTCP `connect()`を使用して確立されます。以下は、ポート11111でローカルwolfSSLサーバーで使用する有効なクライアントサイドソケット記述子を作成します。 - - +`SSL_connect()`を実行する前に、ユーザーはwolfSSLに有効なソケットファイルディスクリプタ(上の例ではsockfd)を提供する必要があります。 +sockfdは通常、TCPの`socket()`関数の返り値として取得され、その後TCPの`connect()`を使用して確立されます。 +以下は、ポート11111のローカルwolfSSLサーバーで使用するための、有効なクライアント側ソケット記述子を作成するサンプルコードです。 +簡略化のために。エラー処理は省略しています。 ```c -int sockfd=socket(AF_INET, SOCK_STREAM, 0); +int sockfd = socket(AF_INET, SOCK_STREAM, 0); sockaddr_in servaddr; memset(&servaddr, 0, sizeof(servaddr)); -servaddr.sin_family=AF_INET; -servaddr.sin_port=htons(11111); -servaddr.sin_addr.s_addr=inet_addr("127.0.0.1"); +servaddr.sin_family = AF_INET; +servaddr.sin_port = htons(11111); +servaddr.sin_addr.s_addr = inet_addr("127.0.0.1"); connect(sockfd, (const sockaddr*)&servaddr, sizeof(servaddr)); ``` - - -接続が確立されると、クライアントはサーバーに読み書きすることができます。TCP関数`send()`および`receive()`を使用する代わりに、wolfSSLおよびYASSLはSSL関数`SSL_write()`および`SSL_read()`を使用します。ここではクライアントデモからの簡単な例です。 - - +接続が確立されると、クライアントはサーバーに対して読み書きができるようになります。 +TCPの`send()`と`receive()`関数の代わりに、wolfSSLはSSL関数`SSL_write()`と`SSL_read()`を使用します。 +以下はクライアントデモから抜粋した簡単なサンプルコードです。 ```c -char msg[]="hello wolfssl!"; -int wrote=SSL_write(ssl, msg, sizeof(msg)); +char msg[] = "hello wolfssl!"; +int wrote = SSL_write(ssl, msg, sizeof(msg)); char reply[1024]; -int read=SSL_read(ssl, reply, sizeof(reply)); -reply[read]=0; +int read = SSL_read(ssl, reply, sizeof(reply)); +reply[read] = 0; printf("Server response: %s\n", reply); ``` +サーバーも同様に接続しますが、TCP APIに類似して、`SSL_connect()`の代わりに`SSL_accept()`を使用します。 +完全なサーバー/クライアントのサンプルプログラムについては、[第3章 入門](chapter03.md)をご参照ください。 -サーバーは同じ方法で接続しますが、TCP APIに類似した`SSL_connect()`の代わりに`SSL_accept()`を使用することを除きます。完全なサーバーデモプログラムについては、サーバーの例を参照してください。 - - - -## X509証明書 - - - -サーバーとクライアントの両方が、wolfSSLに** pem ** または ** der **のいずれかの証明書を提供できます。 - - -典型的な使用法は次のようなものです。 +## x509証明書 +wolfSSLではサーバーとクライアントの両方で、**PEM**または**DER**形式の証明書を使用できます。 +一般的な使用方法は次の通りです。 ```c SSL_CTX_use_certificate_file(ctx, "certs/cert.pem", @@ -209,11 +155,9 @@ SSL_CTX_use_PrivateKey_file(ctx, "certs/key.der", SSL_FILETYPE_ASN1); ``` - - -キーファイルは、どちらの形式でもコンテキストに表示することもできます。`SSL_FILETYPE_PEM`は、ファイルがフォーマットされていることを意味し、`SSL_FILETYPE_ASN1`はファイルがDER形式であると宣言します。キーファイルが証明書で使用するのに適していることを確認するために、次の関数を使用できます。 - - +鍵ファイルもどちらの形式でも使用できます。 +`SSL_FILETYPE_PEM`はファイルがPEM形式であることを示し、`SSL_FILETYPE_ASN1`はファイルがDER形式であることを宣言します。 +鍵ファイルが証明書での使用に適切であることを確認するために、次の関数を使用できます。 ```c SSL_CTX_check_private_key(ctx); diff --git a/wolfSSL/src-ja/chapter14.md b/wolfSSL/src-ja/chapter14.md index aef8565c..3addb0ed 100644 --- a/wolfSSL/src-ja/chapter14.md +++ b/wolfSSL/src-ja/chapter14.md @@ -1,32 +1,32 @@ - - # ライセンス - - - ## オープンソース +wolfSSL、wolfCrypt、wolfMQTT、wolfTPM、wolfBoot、wolfSentryは、無料でダウンロードできるソフトウェアです。 +ユーザーがGPLv2ライセンスに準拠する限り、ユーザーのニーズに合わせて変更を加えることができます。 +GPLv2ライセンスは、gnu.org のWebサイト () で確認できます。 +wolfSSHは無料でダウンロードできるソフトウェアです。 +ユーザーがGPLv3ライセンスに準拠する限り、ユーザーのニーズに合わせて変更を加えることができます。 +GPLv3ライセンスは、gnu.org のWebサイト () で確認できます。 -wolfSSL、wolfCrypt、wolfMQTT、wolfTPM、wolfBoot、および wolfSentry は無料のソフトウェア ダウンロードであり、ユーザーが GPL ライセンスのバージョン 2 に準拠している限り、ユーザーのニーズに合わせて変更できます。 GPLv2 ライセンスは、gnu.org の Web サイト にあります。 - -wolfSSHソフトウェアは無料のソフトウェアのダウンロードであり、ユーザーがGPLライセンスの3つのバージョン3に準拠している限り、ユーザーのニーズに変更される可能性があります。GPLV3ライセンスは、gnu.orgのWebサイト()にあります。 +## 商用ライセンス +再配布のためにwolfSSL製品を独自のアプライアンスやその他の商用ソフトウェア製品に組み込みたい企業は、商用バージョンのライセンスを取得する必要があります。 +wolfSSLとwolfCryptの商用ライセンスは、最終製品またはSKUごとに利用できます。 +通常、ライセンスは1つの製品に対して発行され、無制限のロイヤリティフリー配布が含まれます。 +カスタムライセンス条項も利用できます。 - -## 商業用ライセンス - - -再配布のために wolfSSL 製品を独自のアプライアンスまたはその他の商用ソフトウェア製品に組み込みたい企業は、商用バージョンのライセンスを取得する必要があります。 wolfSSL と wolfCrypt の商用ライセンスは、最終製品または SKU ごとに利用できます。 通常、ライセンスは 1 つの製品に対して発行され、無制限のロイヤリティ フリーの配布が含まれます。 カスタム ライセンス条項も利用できます。 - - -wolfMQTT、wolfSSH、wolfTPM、wolfBoot、wolfSentry の商用ライセンスも利用できます。 お問い合わせは[licensing@wolfssl.com](mailto:licensing@wolfssl.com)までお願いします。 +wolfMQTT、wolfSSH、wolfTPM、wolfBoot、wolfSentry の商用ライセンスもご用意しています。 +[info@wolfssl.jp](mailto:info@wolfssl.jp)までお問い合わせください。 ## FIPS 140-2/3 検証 -wolfSSL は現在、組み込み FIPS 証明書のリーダーです。 現在アクティブな FIPS 証明書と検証オプションの詳細については、[wolfCrypt FIPS FAQ](https://www.wolfssl.com/license/fips/) を参照するか、[fips@wolfssl.com](mailto:fips@) に連絡してください。 wolfSSL.com)。 +wolfSSLは現在、組み込みFIPS認証のリーダーです。 +現在アクティブなFIPS認証と検証オプションの詳細については、[FIPS 140のFAQ](https://wolfssl.jp/fips-faq/) をご覧いただくか、[info@wolfssl.jp](mailto:info@wolfssl.jp) までお問い合わせください。 ## サポートパッケージ - -wolfSSL 製品のサポート パッケージは、wolfSSL から直接年間ベースで入手できます。 4 つの異なるパッケージ オプションを使用して、それらを並べて比較し、特定のニーズに最適なパッケージを選択できます。 詳細については、サポート パッケージ ページ () をご覧ください。 \ No newline at end of file + +wolfSSL製品のサポートパッケージは、wolfSSLから直接年間ベースで利用可能です。 +複数のパッケージがあり、お客様のニーズに最適なパッケージを選ぶことができます。 +詳細については、[サポート・メンテナンスパッケージ](https://wolfssl.jp/license/support-packages/) をご覧ください。 diff --git a/wolfSSL/src-ja/chapter15.md b/wolfSSL/src-ja/chapter15.md index 8ff8af52..2bc211c4 100644 --- a/wolfSSL/src-ja/chapter15.md +++ b/wolfSSL/src-ja/chapter15.md @@ -1,92 +1,46 @@ - - # サポートとコンサルティング +## サポートの受け方 +一般的な製品サポートのために、wolfSSL製品ファミリー向けのオンラインフォーラムをご用意しています。 +ご質問がある場合はフォーラムに投稿するか、wolfSSLに直接お問い合わせください。 +* wolfSSLフォーラム: -## サポートを受ける方法 - - - -一般的な製品サポートのために、wolfSSL(以前のCyassl)は、wolfSSL製品ファミリーのオンラインフォーラムを維持しています。フォーラムに投稿するか、ご不明な点が表示されます。 - - - -* wolfssl(yassl)フォーラム: - - - - -* 電子メールサポート:[support@wolfssl.com](mailto:support@wolfssl.com) - - - -wolfSSL製品に関する情報、ライセンスに関する質問、または一般的なコメントについては、[info@wolfssl.com](mailto:info@wolfssl.com)をEメールにすることでWolfsslにお問い合わせください。サポートパッケージについては、[ライセンス](chapter14.md#licensing)をご覧ください。 - - - -### バグの報告とサポートの問題 - - - -バグレポートを提出したり、問題について尋ねている場合は、次の情報を提出に含めてください。 - - - -1. wolfSSLバージョン番号 +* Eメールサポート:[support@wolfssl.com](mailto:support@wolfssl.com) +wolfSSL製品に関する情報、ライセンスに関するご質問、または一般的なコメントについては、[info@wolfssl.jp](mailto:info@wolfssl.jp)へお問い合わせください。 +サポートパッケージについては、[第14章 ライセンス](chapter14.md)をご覧ください。 -2. オペレーティングシステムバージョン - - -3. コンパイラバージョン +### バグの報告とサポート +バグのご報告や、発生した問題についてご質問のある際は、以下の情報をお知らせください。 +1. wolfSSLのバージョン +2. オペレーティングシステムのバージョン +3. コンパイラのバージョン 4. 表示されている正確なエラー +5. この問題を再現するための手順 - -5. この問題を再現または再現しようとする方法の説明 - - - -上記の情報を使用すると、問題を解決するために最善を尽くします。この情報がなければ、問題の原因を特定するのは非常に困難です。wolfSSLはあなたのフィードバックを値し、できるだけ早くあなたに戻るのが最優先事項になります。 - - +これらの情報がなければ、問題の原因を特定することは非常に困難です。 +wolfSSLはお客様のフィードバックを大切にし、できるだけ早くご連絡を差し上げることを最優先事項としています。 ## コンサルティング - - -機能の追加、移植、競争力のあるアップグレードプログラム、およびデザインコンサルティングを提供します。 - -詳細は info@wolfssl.jp 宛にお問い合わせください。 - +機能の追加、移植、デザインコンサルティングを提供します。 ### 機能追加と移植 - - -現時点で、ご要望いただいているのに弊社製品で提供されていない機能を、契約または共同開発ベースで追加することができます。また、当社の製品を新しいホスト言語または新しい操作環境に移植するサービスも提供しています。 - -詳細は info@wolfssl.jp 宛にお問い合わせください。 - +現在当社の製品で提供していない機能を、契約または共同開発により追加することができます。 +詳細は [info@wolfssl.jp](mailto:info@wolfssl.jp) へお問い合わせください。 ### デザインコンサルティング +アプリケーションやフレームワークをSSL/TLSで保護するにあたって、どのように設計すべきかお困りでしたらお手伝いいたします。 +当社のコンサルタントは、以下のサービスを提供できます。 -あなたのアプリケーションまたはフレームワークをSSL/TLSで保護する必要があるが、あなたは保護されたシステムの最適設計がどのように構造化されるかについて不明なことがわかります。 - - -wolfSSLを使用して、SSL/TLSセキュリティをデバイスにビルドするためのデザインコンサルティングを提供しています。当社のコンサルタントは、次のサービスを提供できます。 - - - -1. _Assessment_:現在のSSL/TLS実装の評価。あなたの現在のセットアップについてアドバイスをすることができます。 - - -2. _Design_:お客様のシステム要件とパラメータを確認し、最適なセキュリティを提供するように wolfSSL をアプリケーションに実装する方法について、お客様と緊密に連携して推奨事項を作成します。 - +1. アセスメント:現在のSSL/TLS実装を評価し、アドバイスします。 +2. 設計:お客様のシステム要件とパラメータを確認し、最適なセキュリティを提供するためにwolfSSLをどのようにアプリケーションに実装するか、お客様と緊密に連携して推奨事項を作成します。 -アプリケーションやデバイスにSSLをビルドするためのデザインコンサルティングについて詳しく知りたい場合は、[info@wolfssl.com](mailto:info@wolfssl.com)にお問い合わせください。 +アプリケーションやデバイスへのSSL/TLS環境構築のためのデザインコンサルティングについて詳細を知りたい場合は、[info@wolfssl.jp](mailto:info@wolfssl.jp)までお問い合わせください。 diff --git a/wolfSSL/src-ja/chapter16.md b/wolfSSL/src-ja/chapter16.md index 4416e44a..e762a452 100644 --- a/wolfSSL/src-ja/chapter16.md +++ b/wolfSSL/src-ja/chapter16.md @@ -1,28 +1,23 @@ - - -# wolfSSL(以前のCyassl)の更新 - - - +# wolfSSL(旧称:Cyassl)の更新 ## 製品のリリース情報 +最新の情報は、公式X([@wolfSSL_Japan](https://x.com/wolfSSL_Japan), [@wolfSSL](https://x.com/wolfSSL))にてご確認いただけます。 +そのほか。GitHubリポジトリやブログポストもぜひご覧ください。 +ニュースレターも発行しています。 +ご希望の方は[info@wolfssl.jp](mailto:info@wolfssl.jp)までお問い合わせください。 -更新情報をTwitterに定期的に投稿しています。追加のリリース情報については、GitHubでプロジェクトを追跡したり、Facebookでフォローしたり、毎日のブログをフォローしたりできます。 - - - -* GithubのWolfssl -[https://www.github.com/wolfssl/wolfssl](https://www.github.com/wolfssl/wolfssl) - - -* Twitterのwolfssl -[https://twitter.com/wolfSSL](https://twitter.com/wolfSSL) - - -* Facebookのwolfssl -[https://www.facebook.com/wolfSSL](https://www.facebook.com/wolfSSL) +* GitHubリポジトリ - [https://www.github.com/wolfssl/wolfssl](https://www.github.com/wolfssl/wolfssl) +* X + * 日本 [https://x.com/wolfSSL_Japan](https://x.com/wolfSSL_Japan) + * グローバル [https://x.com/wolfSSL](https://x.com/wolfSSL) -* redditのwolfssl -[https://www.reddit.com/r/wolfssl/](https://www.reddit.com/r/wolfssl/) +* Facebook - [https://www.facebook.com/wolfSSL](https://www.facebook.com/wolfSSL) +* Reddit - [https://www.reddit.com/r/wolfssl/](https://www.reddit.com/r/wolfssl/) -* 毎日のブログ - [https://www.wolfssl.com/blog](https://www.wolfssl.com/blog) +* ブログ + * 日本 [https://wolfssl.jp/blog/](https://wolfssl.jp/blog/) + * グローバル [https://www.wolfssl.com/blog](https://www.wolfssl.com/blog)