diff options
Diffstat (limited to 'files/ja/mozilla/projects/nss')
23 files changed, 2858 insertions, 0 deletions
diff --git a/files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html b/files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html new file mode 100644 index 0000000000..c46cd20c9e --- /dev/null +++ b/files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html @@ -0,0 +1,102 @@ +--- +title: NSS 内部の概要 +slug: Mozilla/Projects/NSS/An_overview_of_NSS_Internals +tags: + - API + - Intermediate + - Intro + - NSS + - Tools +translation_of: Mozilla/Projects/NSS/An_overview_of_NSS_Internals +--- +<p style="margin-left: 40px;"><a href="/ja/docs/Mozilla/Projects/NSS">Network Security Services (NSS)</a> の内部をハイレベルで解説</p> + +<p style="margin-left: 40px;">Mozilla.org プロジェクトによって開発されたソフトウェアは、伝統的にセキュリティプロトコルと暗号化アルゴリズムの独自の実装を使用していましたが、元々は Netscape Security Services と呼ばれていましたが、現在では Network Security Services (NSS) と呼ばれています。NSSはC言語で書かれたライブラリです。フリーでオープンソースのソフトウェアであり、多くのソフトウェアプロジェクトが利用を決めています。複数のオペレーティングシステム (OS) をサポートするために、Netscape Portable Runtime (NSPR) と呼ばれるクロスプラットフォーム移植性レイヤーをベースにしており、ファイルシステムアクセス、メモリ管理、ネットワーク通信、マルチスレッドプログラミングなどの OS 固有の API のためのクロスプラットフォームアプリケーションプログラミングインターフェース (API) を提供しています。</p> + +<p style="margin-left: 40px;">NSS は多くの機能を提供していますが、ここではモジュールのリスト、設計原理、重要な関連規格について説明します。</p> + +<p style="margin-left: 40px;">暗号処理を行うソフトウェアとデバイス間の相互運用性を可能にするため、NSS は PKCS#11 と呼ばれる規格に準拠しています。(11という数字に注目することが重要であることに注意してください。異なる数字で全く異なるトピックを定義する他の PKCS 規格が存在するからです)。</p> + +<p style="margin-left: 40px;">PKCS#11 規格に準拠したソフトウェアまたはハードウェアモジュールは、モジュールの特性や提供されるサービスを問い合わせることができるCコールのインターフェースを実装しています。NSS 自身のモジュールの複数の要素がこのインタフェースで実装されており、NSS はそれらのモジュールと話すときにこのインタフェースを利用します。この戦略により、NSSは、PKCS#11インタフェースを実装した多くのハードウェアデバイス(例えば、暗号演算に必要な計算を高速化したり、秘密鍵を安全に保護するスマートカードにアクセスしたり)やソフトウェアモジュール(例えば、追加のアルゴリズムを提供したり、鍵や信頼情報を保存するプラグインとしてそのようなモジュールをロードできるようにする)と連携することが可能になります。</p> + +<p style="margin-left: 40px;">NSS の中核となる要素は、ハッシュ関数、大数計算、暗号アルゴリズムを提供するベースライブラリである FreeBL です。<br> + <br> + Softoken は、ほとんどの FreeBL の機能を PKCS#11 モジュールとして公開する NSS モジュールです。</p> + +<p style="margin-left: 40px;">暗号技術の中には、暗号化と復号化の両方に同じ秘密鍵を使用するものがあり、例えばパスワードベース暗号化 (PBE) などがあります。自分でデータを暗号化する場合はこれで十分な場合が多いですが、通信相手と署名/暗号化されたデータをやり取りする必要が出てきたら、公開鍵暗号化を使うことで鍵の管理が簡単になります。公開鍵暗号化を利用する方法を説明した環境を PKI (Public Key Infrastructure) と呼びます。パーティ間で交換される公開鍵は、コンテナを使って輸送されます。コンテナは、標準の X.509 バージョン 3 に従い、証明書と呼ばれています。例えば、証明書には、証明書の所有関係に対する信頼を表す第三者による署名が含まれている。第三者によって割り当てられた信頼は、証明書に含まれる証明書の拡張子に記載されている特定の用途に制限されている場合があります。</p> + +<p style="margin-left: 40px;">NSS によって実行される操作の多く (ほとんどではないにせよ) は、X.509 証明書 (しばしば "cert" と略されますが、残念ながら「コンピュータ緊急対応チーム」という用語と混同されやすいです) の使用を伴います。</p> + +<p style="margin-left: 40px;">証明書が信頼されているかどうかをチェックする際には、通常は認証局 (CA) と呼ばれる信頼された第三者の署名能力を表す関連するトラストアンカー (ルート証明書) を見つける必要があります。トラストアンカーとは、ソフトウェアベンダー、組織インフラストラクチャ内の管理者、またはソフトウェアユーザーによって、すでに知られており、意図的に信頼されているとマークされている別の X.509 証明書にすぎません。NSS は、事前に定義された CA 証明書のセットを出荷します。このセットは、信頼の割り当てを含め、NSS が CKBI (組み込みルート証明書) と呼ばれるソフトウェアモジュールとして提供し、PKCS#11 インターフェイスも実装しています。組織レベルでは、セットの内容は Mozilla CA ポリシーに従って管理されています。技術的なレベルでは、セットはバイナリソフトウェアモジュールです。</p> + +<p style="margin-left: 40px;">データ交換に関連した暗号化や復号化などの暗号化トランザクションは、通常、通信相手 (ピア) の X.509 認証を使用して行われます。また、自分の証明書に属する秘密鍵を安全に保管しておくことも求められます。秘密鍵の保管場所を PBE で保護したいと思うかもしれません。NSS が提供するデフォルトのトラストを変更することにするかもしれません。これらすべての作業には、データの保存、検索、取得が必要です。NSS はストレージと管理 API を提供することで、これらの操作を簡素化します。NSS は、プログラマーが個々の証明書や鍵を含む個々のファイルを管理する必要はありません。その代わりに、NSS は独自のデータベースを利用することができます。一度 NSS のデータベースに証明書や鍵をインポートしてしまえば、それらを簡単に検索して再利用することができます。</p> + +<p style="margin-left: 40px;">NSS は NSS データベースを使って操作することを期待しているため、初期化呼び出しを実行することが必須です。最も単純なシナリオでは、プログラマーはinit関数のパラメータとしてファイルシステム上のディレクトリを提供し、NSSは残りの部分を行うように設計されています。既存のデータベースを検出して開くか、新しいデータベースを作成します。また、証明書の永続的な記録を使用したくないと判断した場合は、データベースなしモードでNSSを初期化することもできます。通常、新しいデータが恒久的なストレージに追加されるとすぐに、NSS はすべてのデータをディスクにフラッシュする。ストレージは複数のファイルで構成されています。鍵データベースファイルには秘密鍵が格納され、証明書データベースファイルには、自分の証明書の公開部分、ピアや認証局の証明書、信頼決定のリスト(組み込みの認証局を信頼しない、他の認証局を明示的に信頼するなど)が格納されています。データベースファイルの例としては、key3.db と cert8.db があります。3番目のファイルには、NSS が使用するために登録された外部 PKCS#11 モジュールのリストが含まれています。このファイルは secmod.db という名前にすることもできますが、新しい世代のデータベースではpkcs11.txtという名前のファイルが使用されます。</p> + +<p style="margin-left: 40px;">これらのデータベースファイルに直接アクセスして操作できるのは NSS だけです。NSS を使用するプログラマーは、これらのファイルに保存されているデータを操作するために NSS が提供する API を経由しなければなりません。プログラマーの仕事は、必要なパラメータ (データベースなど) で NSS を初期化することであり、その後 NSS はデータベースファイルを透過的に管理します。</p> + +<p style="margin-left: 40px;">ほとんどの場合、証明書や鍵は NSS のデータベースに格納されることになっています。したがって、最初のインポートや作成の後、プログラマーは通常、それらの生のバイトを処理しません。その代わりに、プログラマはルックアップ関数を使用し、NSS はその後アプリケーションのコードで使用されるアクセスハンドルを提供します。これらのハンドルは参照カウントされます。NSS は通常、証明書がネットワークから受信され、ディスクから読み込まれ、データベースから検索されると、証明書のインメモリ (RAM) プレゼンテーションを作成し、証明書のプロパティを含むインメモリデータ構造を準備します。一旦、アプリケーションがハンドルを使用して終了すると、それは解放され、NSS が関連するリソースを解放することができるようになります。秘密鍵のハンドルを扱う場合、通常、アプリケーションが生の鍵データにアクセスすることは困難であり (望ましくない)、そのため NSS からそのようなデータを抽出することは難しいかもしれません。そのため、NSS からそのようなデータを抽出するのは難しいかもしれません。通常の最低限の要件は、秘密鍵を保護層 (パスワードベースの暗号化など) でラップすることです。これは、セキュリティのためのコードのレビューを容易にするための意図があります。生の秘密鍵にアクセスできるコードが少なければ少ないほど、レビューしなければならないコードは少なくなります。</p> + +<p style="margin-left: 40px;">NSS には、生の鍵を検索する機能が限られています。好ましいアプローチは証明書を利用することであり、含まれるサブジェクト名 (証明書の所有者を表す情報) などのプロパティで証明書を検索することです。例えば、NSS は新しい公開鍵/秘密鍵ペアのランダム計算 (生成) をサポートしていますが、このような生の鍵ペアを扱うのは難しいです。通常のアプローチは、アプリケーションの作成ステップが完了するとすぐに証明書署名要求 (CSR) を作成し、鍵ペアへのハンドルを作成します。通常のフォローアップ動作は、CA から署名された証明書を受け取ることです。(ただし、NSS の機能を使用して自己署名証明書を作成することも可能ですが、通常は他の当事者から信頼されません)。受信したら、NSS にそのような新しい証明書を NSS データベースにインポートするように指示すれば十分で、NSS は自動的に埋め込まれた公開鍵の検索を行い、関連する秘密鍵を見つけることができ、その後、それを個人証明書として扱うことができます (個人証明書とは、個人の証明書のことです)。(個人証明書とは、秘密鍵を保有している証明書で、データの署名やデータの復号に使用することができます) インポート時に証明書に一意のニックネームを割り当てることができます。</p> + +<p style="margin-left: 40px;">NSS が返すすべてのハンドルについて、NSS は厳密なクリーンアップを要求することに注意してください。アプリケーションは、ハンドルが不要になったら、常に適切な参照解除(破棄)関数を呼び出す必要があります。これは、再起動せずにデータベースを閉じ、別のデータベースを使用してNSSを再初期化する必要があるかもしれないアプリケーションにとって特に重要です。データ要素がまだ参照されている場合、このような操作は実行時に失敗する可能性があります。</p> + +<p style="margin-left: 40px;">FreeBL、Softoken、CKBI モジュールに加えて、一般的な操作 (データフォーマット間のエンコード/デコード、標準化されたオブジェクト識別子 (OID) のリストなど) のためのユーティリティライブラリがあります。NSS には、Secure Sockets Layer/Transport Layer Security ネットワークプロトコルを実装する SSL/TLS モジュール、セキュアなメールで使用される CMS メッセージングといくつかのインスタントメッセージング実装を実装する S/MIME モジュール、古典的なデータベースストレージを実装する DBM ライブラリ、そして最後に「その他すべて」の大きなセットのためのコア NSS ライブラリがあります。データベースの新世代は、複数のアプリケーションによる同時アクセスを可能にするために SQLite データベースを使用しています。</p> + +<p style="margin-left: 40px;">これらはすべて共有ライブラリとして提供されています。特定の種類の証明書要求を生成するために使用される CRMF ライブラリは、スタティックリンク専用のライブラリとして提供されています。</p> + +<p style="margin-left: 40px;">証明書 (X.509) 、PKCS#12 (証明書と鍵) 、PKCS#7 (署名データ) などのファイル形式、CMS としてのメッセージ形式を扱う場合、構造化されたデータを非常に効率的に (小さいサイズの) プレゼンテーションで格納するための構文である ASN.1 に言及しなければなりません。元々は通信システムのために開発されたもので、データをできるだけ少なくすることが重要な時代に開発されました (現在でもこの原理を使うことはパフォーマンスを上げるためには意味がありますが)。ASN.1 フォーマットで利用可能なデータを処理するためには、通常のアプローチでは、データを解析して、(入れ子になった) C データ構造のような、より多くのスペースを必要とするが作業しやすいプレゼンテーションに転送します。その間、NSS は3つの異なる ASN.1 パーサの実装を受け取ってきましたが、それぞれに固有の特性、長所と短所があり、それが今でも使われている理由です (副作用のリスクがあるため、古いものを新しいものに置き換える勇気はまだありません)。ASN.1 パーサを使用する場合、テンプレート定義がパーサに渡され、それに応じて ASN.1 データストリームを解析します。テンプレートは通常、RFC 文書に記載されている定義と密接に一致しています。</p> + +<p style="margin-left: 40px;">DER として記述されたデータブロックは通常 ASN.1 形式です。どのデータを期待しているかを把握し、ソフトウェアのインタラクションのコンテキストに基づいて、正しいテンプレートを使用して解析する必要があります。PEM として記述されたデータは DER の base64 エンコードされたプレゼンテーションで、通常は人間が読める BEGIN/END 行の間にラップされています。NSS はバイナリ表示を好みますが、特にファイルからデータをインポートする場合には、base64 または ASCII 表示を使用することができます。最近の開発では、秘密鍵を含む外部の PEM ファイルを読み込むためのサポートが追加されました。</p> + +<p style="margin-left: 40px;">コードレベルで見ると、NSS は常に生データのブロックを扱っています。このような型なしブロックを格納するための一般的な構造は SECItem で、サイズと型なし C ポインタ変数を含んでいます。</p> + +<p style="margin-left: 40px;">メモリを扱うとき、NSS はアリーナを利用しています。これは C 言語の限られた機能で管理を簡単にする試みです (デストラクタがないので)。これは、クリーンアップを簡単にするために、複数のメモリ割り当てをグループ化するという考えです。ある操作を実行すると、多くの個別のデータ項目を割り当てる必要があり、コードはロジック内の多くの位置でタスクを中止する必要があるかもしれません。アリーナはタスクの処理が開始されると要求され、そのタスクに論理的に関連付けられたすべてのメモリ割り当てが関連付けられたアリーナから要求されます。アリーナの実装により、すべての個々のメモリブロックが追跡されます。タスクが完了すると、それが完了したか中止されたかにかかわらず、プログラマはアリーナを解放するだけで、個々に割り当てられたすべてのブロックが自動的に解放されます。解放はしばしば、攻撃者がメモリダンプから鍵を取り出すことをより困難にするために、アリーナに関連するメモリを即座に消去 (ゼロ化、zfree) することと組み合わされます。<br> + <br> + NSS は多くの C 言語のデータ構造を使用しています。多くの場合、NSS は同じまたは類似した概念のために複数の実装を持っています。例えば、複数の証明書のプレゼンテーションがあり、NSS 内部 (そして時には NSS を使用するアプリケーション) はそれらの間で変換する必要があるかもしれません。<br> + <br> + NSS の鍵となる責任は、署名と証明書の検証です。デジタル署名を検証するためには、アプリケーションデータ (例えば、署名された文書)、署名データブロック (デジタル署名)、公開鍵 (署名者であると考えられる証明書に含まれるもので、署名とともに受信したメタデータによって識別されるものなど) を調べなければなりません。署名データブロックが公開鍵の所有者によって生成されたものでなければならないことを示すことができれば、署名は検証されます (関連する秘密鍵を持っているのはその所有者だけなので)。</p> + +<p style="margin-left: 40px;">証明書 (A) を検証するには、いくつかの追加ステップが必要です。まず、証明書 (A) の潜在的な署名者 (B) を特定しなければなりません。これは、証明書 (A) の “issuer name” 属性を読み取り、その発行者証明書(B)を見つけようとすることによって行われます (その名前を “subject name” として使用している証明書を探すことによって)。そして、(A) で見つけた署名を (B) で見つけた公開鍵を使って検証しようとします。同じサブジェクト名を持つ複数の証明書 (B1, B2, ...) をそれぞれ試してみる必要があるかもしれません。<br> + <br> + 成功した後、この手順を再帰的に繰り返す必要があるかもしれません。最終的には、適切なトラストが割り当てられている証明書 B (または C または...) を見つけることが目的です (例えば、CKBI モジュール内で見つけられ、ユーザがトラストの上書き決定を行っていない場合や、ユーザまたはローカル環境で管理されているNSS データベースファイル内で見つけられる場合など)。</p> + +<p style="margin-left: 40px;">(複数の) 発行者証明書の署名の検証に成功した後、証明書 A の検証はまだ終わっていません。例えば、署名が行われた時点で証明書が有効であること、証明書内の名前が予想される署名者と一致していること (サブジェクト名、一般名、メール、アプリケーションに基づくチェック) 、証明書内に記録されている信頼制限 (拡張子) が使用を許可していること (例えば、暗号化は許可されているかもしれないが、署名は許可されていない) 、環境/アプリケーションポリシーに基づいて、失効チェック (OCSP または CRL) を行う必要がある場合があります。<br> + <br> + CKBI モジュールに含まれるトラスト・アンカーは、通常、自己署名されたものであり、サブジェクト名と発行者名のフィールドが同一であると定義されます。自己署名付き証明書が明示的に信頼されているとマークされている場合、NSS は自己署名の有効性のチェックをスキップします。</p> + +<p style="margin-left: 40px;">NSSには、証明書の検証を行うための複数のAPIがあります。例えば、(B)発行者候補の証明書がすべて同じサブジェクト名と発行者名を持ち、有効期間によって異なる場合など、非常に安定しており、すべての単純なシナリオで問題なく動作する古典的なエンジンがありますが、より高度なシナリオでは限られた範囲でしか動作しません。残念ながら、最近の証明書の世界はより複雑になっています。新規の認証局が世界の PKI 市場に参入し、事業を開始するために、既存の認証局と取引を行い、いわゆる相互署名証明書を受け取ることがある。その結果、(A) から信頼できるアンカー (ルート) 証明書 (Z) への信頼パスを検索する際に、候補となる発行者証明書のセットが異なる発行者名 (2 番目以上の発行者レベルを参照) を持つ可能性があります。その結果、(Z) を検索しながら、再帰的に複数の異なる代替ルートを試す必要がある。新しい検証エンジン (内部的に libPKIX と名付けられています) だけがこれを適切に行うことができます。<br> + <br> + これは、ソフトウェアベンダと認証局が、ウェブサイト証明書の証明書を発行するためのより厳格なルールを定義するための努力です。証明書の要求者が希望するウェブサイトのドメインの管理メールアドレスを管理していることを単に検証するのではなく、認証局が実世界の身元確認書類 (国の当局による会社登録書類など) の検証を行うことが要求され、また、ブラウザソフトウェアが証明書の有効性を付与する前に、認証局との失効チェックを行うことが要求されている。EV 証明書を区別するために、CA は証明書にポリシー OID を埋め込み、ブラウザはトラストチェーンがエンドエンティティ (EE) 証明書がポリシーを利用することを許可しているかどうかを検証することが期待されています。ポリシーの検証を実行できるのは、新しい libPKIX エンジンの API だけです。<br> + <br> + これを機に、サーバへの SSL/TLS 接続について一般的に (EVに限らず、Web サイトに限らず) 話すことにしましょう。このドキュメントでSSLについて言及している場合は、必ず SSL か TLS のどちらかを指しています。(TLS は SSL の新しいバージョンで、機能が強化されています)。</p> + +<p style="margin-left: 40px;">サーバへの SSL 接続を確立する際には、(少なくとも) サーバ証明書 (とそのトラストチェーン) がサーバからクライアント (ブラウザなど) に交換され、クライアントはその証明書が検証可能であることを確認します (期待される宛先サーバの名前と一致することを含む)。両者間のハンドシェイクのもう一つの部分は、鍵の交換です。公開鍵暗号化は (双方が同じ鍵を使用する) 対称暗号化よりもコストがかかる (計算が必要) ため、鍵合意プロトコルが実行され、公開鍵と秘密鍵を使用して、交換された初期情報の証明と検証が行われます。鍵合意が行われると、対称暗号化が使用されます (既存のチャネル上で潜在的な再ハンドシェイクが行われるまで)。SSL 接続に使用されるハッシュと暗号化アルゴリズムの組み合わせは暗号化スイートと呼ばれます。</p> + +<p style="margin-left: 40px;">NSS は技術的なレベルでサポートしている暗号化スイートのセットを出荷しています。さらに、NSS はデフォルトでどの暗号化スイートを有効にするかを定義するデフォルトポリシーを持っています。アプリケーションは、有効になっている暗号スイートのセットを変更するための関数呼び出しを使用して、プログラム実行時に使用されるポリシーを変更することができます。</p> + +<p style="margin-left: 40px;">プログラマが NSS が証明書を検証する方法や、SSL 接続のハンドシェイクで提示されるデータを検証する方法に影響を与えたい場合、適切な時点で NSS によって呼び出されるアプリケーション定義のコールバック関数を登録することができ、NSS によって行われた決定を上書きするために使用することができます。</p> + +<p style="margin-left: 40px;">SSL を実装したツールキットとして NSS を使いたい場合は、まず NSS を init しなければならないことを覚えておいてください。しかし、デフォルトのトラストを恒久的に変更することを気にしない (ディスクに記録されている) 場合は、データベースなしの init コールを使用することができます。データ交換のためのネットワークソケットを作成する際には、NSPR と NSS が提供するオペレーティングシステムに依存しない API を使用しなければならないことに注意してください。NSPR ファイルディスクリプタのプロパティに触れておくと面白いかもしれません。これは、データ処理に関与する複数のレイヤーを定義できることを意味します。ファイル記述子は、データを扱う最初のレイヤーへのポインタを持っています。そのレイヤは、潜在的な第2のレイヤへのポインタを持ち、そのレイヤは第3のレイヤへの別のポインタを持っているかもしれません。各レイヤーは、open/close/read/write/poll/select (など) 関数のための独自の関数を定義しています。SSL ネットワーク接続を使用する場合、基本的な NSPR 層と SSL ライブラリ層の 2 つの層を既に持っています。Mozilla アプリケーションでは、アプリケーション固有の処理が行われる第三のレイヤーを定義しています。詳細は NSPR のリファレンスドキュメントを参照してください。</p> + +<p style="margin-left: 40px;">NSS は、アプリケーションから要求された接続に加えて、アウトバウンドネットワーク接続を作成しなければならないことがあります。例としては、OCSP (オンライン証明書ステータスプロトコル) 情報の取得や、CRL (証明書失効リスト) のダウンロードなどがあります。ただし、NSS にはネットワークプロキシを使用するための実装がありません。アプリケーションでプロキシをサポートする必要がある場合は、httpリクエストコールバックインターフェースの独自の実装を登録することができ、NSS はプロキシをサポートするアプリケーションコードを使用することができます。</p> + +<p style="margin-left: 40px;">ハッシュ化、暗号化、復号化関数を使用する場合は、(大容量バッファ上で動作するのとは対照的に) データをストリーム化することが可能です。操作に必要なすべてのパラメータを提供しながらコンテキストハンドルを作成し、"update" 関数を複数回呼び出して入力のサブセットを NSS に渡します。データは処理され、直接返されるか、コンテキストに登録されたコールバック関数に送られます。処理が終わったら、保留中のデータをフラッシュアウトしてリソースを解放する最終化関数を呼び出します。</p> + +<p style="margin-left: 40px;">この行は、今後のセクションで libpkix がどのように動作し、どのように設計されているかを説明するためのプレースホルダです。</p> + +<p style="margin-left: 40px;">NSS を使って作業したい場合は、NSS 開発者が提供しているコマンドラインユーティリティを使うと便利なことが多いです。NSS データベースの管理、証明書のダンプや検証、PKCS#11 モジュールをデータベースに登録するためのツール、CMS の暗号化/署名されたメッセージを処理するためのツールなどがあります。</p> + +<p style="margin-left: 40px;">例えば、あなた自身の鍵のペアを作成して CA から新しい証明書を要求したい場合、certutil を使って空のデータベースを作成し、あなたのデータベース上で操作して証明書要求を作成し (これは希望する鍵のペアを作成することを含む)、それをファイルにエクスポートし、要求ファイルを CA に提出し、CA からファイルを受け取り、あなたのデータベースに証明書をインポートすることができます。証明書をインポートする際には、後で参照しやすくするために、良いニックネームを割り当てる必要があります。</p> + +<p style="margin-left: 40px;">複数のアプリケーションで同時にアクセスできる最初のデータベース形式は key4.db/cert9.db であることに注意してください。つまり、ブラウザやサーバーが古い NSS のデータベース形式で動作している場合は、他のソフトウェアが実行している間は NSS ツールで操作しないようにしてください。執筆時点では、NSS と Mozilla アプリケーションは、各アプリケーションが独自の NSS データベースを持っている古いデータベースファイル形式をデフォルトで使用しています。</p> + +<p style="margin-left: 40px;">秘密鍵を含む NSS データベースに保存された証明書のコピーが必要な場合は、pk12util を使って PKCS#12 ファイル形式にエクスポートすることができます。PEM 形式の証明書が必要な場合は、openssl pkcs12 コマンド (これは NSS ではありません) を使用して PKCS#12 ファイルを PEM に変換することができます。</p> + +<p style="margin-left: 40px;">この行は、データベースの準備の仕方、証明書のダンプの仕方、データの変換の仕方のプレースホルダです。</p> + +<p style="margin-left: 40px;">Firefox や Thunderbird などの Mozilla アプリケーションで NSS が使われているので、NSS を使って作業する気になったかもしれません。Mozilla アプリケーションをビルドすれば、NSS ライブラリも自動的にビルドされます。しかし、NSS のコマンドラインツールで作業したい場合は、スタンドアロンの NSS のビルド手順に従って、Mozilla アプリケーションのソースの外で NSS をビルドする必要があります。</p> + +<p style="margin-left: 40px;">鍵データベースファイルには、少なくとも一つの対称鍵が含まれており、これは必要に応じて NSS が自動的に作成し、秘密鍵 (秘密鍵) を保護するために使用されます。この対称鍵は、データベースにマスターパスワードを設定することで PBE で保護することができます。マスターパスワードを設定するとすぐに、攻撃者がマスターパスワードを盗むことに成功しない限り、 鍵データベースを盗む攻撃者は秘密鍵にアクセスできなくなります。</p> + +<p style="margin-left: 40px;">今、あなたは <a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">NSS のソースを取得する方法、NSS を構築し、テストする方法</a>に興味があるかもしれません。</p> diff --git a/files/ja/mozilla/projects/nss/building/index.html b/files/ja/mozilla/projects/nss/building/index.html new file mode 100644 index 0000000000..01f2a7c355 --- /dev/null +++ b/files/ja/mozilla/projects/nss/building/index.html @@ -0,0 +1,112 @@ +--- +title: NSS のビルド +slug: Mozilla/Projects/NSS/Building +translation_of: Mozilla/Projects/NSS/Building +--- +<h2 id="Introduction">Introduction</h2> + +<p>This page has detailed information on how to build NSS. Because NSS is a cross-platform library that builds on many different platforms and has many options, it may be complex to build. Please read these instructions carefully before attempting to build.</p> + +<h2 id="Build_environment">Build environment</h2> + +<p>NSS needs a C and C++ compiler. It has minimal dependencies, including only standard C and C++ libraries, plus <a href="https://www.zlib.net/">zlib</a>.</p> + +<p>For building, you also need <a href="https://www.gnu.org/software/make/">make</a>. Ideally, also install <a href="https://gyp.gsrc.io/">gyp</a> and <a href="https://ninja-build.org/">ninja</a> and put them on your path. This is recommended, as the build is faster and more reliable.</p> + +<h3 id="Windows">Windows</h3> + +<p>NSS compilation on Windows uses the same shared build system as Mozilla Firefox. You must first install the <a href="/en-US/docs/Developer_Guide/Build_Instructions/Windows_Prerequisites">Windows Prerequisites</a>, including <strong>MozillaBuild</strong>.</p> + +<p>You can also build NSS on the Windows Subsystem for Linux, but the resulting binaries aren't usable by other Windows applications.</p> + +<h2 id="Get_the_source">Get the source</h2> + +<p>NSS and NSPR use Mercurial for source control like other Mozilla projects. To check out the latest sources for NSS and NSPR--which may not be part of a stable release--use the following commands:</p> + +<pre class="notranslate">hg clone https://hg.mozilla.org/projects/nspr +hg clone https://hg.mozilla.org/projects/nss +</pre> + +<p>To get the source of a specific release, see <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_Releases">NSS Releases</a>.</p> + +<dl> + <dd> + <dl> + </dl> + </dd> +</dl> + +<h2 id="Build">Build</h2> + +<p>Build NSS using our build script:</p> + +<pre class="notranslate">nss/build.sh +</pre> + +<p>This builds both NSPR and NSS.</p> + +<h2 id="Build_with_make">Build with make</h2> + +<p>Alternatively, there is a <code>make</code> target called "nss_build_all", which produces a similar result. This supports some alternative options, but can be a lot slower.</p> + +<pre class="notranslate">make -C nss nss_build_all USE_64=1 +</pre> + +<p>The make-based build system for NSS uses a variety of variables to control the build. Below are some of the variables, along with possible values they may be set to.</p> + +<dl> + <dt>BUILD_OPT</dt> + <dd> + <dl> + <dt>0</dt> + <dd>Build a debug (non-optimized) version of NSS. <em>This is the default.</em></dd> + <dt>1</dt> + <dd>Build an optimized (non-debug) version of NSS.</dd> + </dl> + </dd> + <dt>USE_64</dt> + <dd> + <dl> + <dt>0</dt> + <dd>Build for a 32-bit environment/ABI. <em>This is the default.</em></dd> + <dt>1</dt> + <dd>Build for a 64-bit environment/ABI. <em>This is recommended.</em></dd> + </dl> + </dd> + <dt>USE_ASAN</dt> + <dd> + <dl> + <dt>0</dt> + <dd>Do not create an <a href="http://clang.llvm.org/docs/AddressSanitizer.html">AddressSanitizer</a> build. <em>This is the default.</em></dd> + <dt>1</dt> + <dd>Create an AddressSanitizer build.</dd> + </dl> + </dd> +</dl> + +<h2 id="Unit_testing">Unit testing</h2> + +<p>NSS contains extensive unit tests. Scripts to run these are found in the <code>tests</code> directory. Run the standard suite by:</p> + +<pre class="notranslate">HOST=localhost DOMSUF=localdomain USE_64=1 nss/tests/all.sh</pre> + +<h3 id="Unit_test_configuration">Unit test configuration</h3> + +<p>NSS tests are configured using environment variables.<br> + The scripts will attempt to infer values for <code>HOST</code> and <code>DOMSUF</code>, but can fail. Replace <code>localhost</code> and <code>localdomain</code> with the hostname and domain suffix for your host. You need to be able to connect to <code>$HOST.$DOMSUF</code>.</p> + +<p>If you don't have a domain suffix you can add an entry to <code>/etc/hosts</code> (on Windows,<code> c:\Windows\System32\drivers\etc\hosts</code>) as follows:</p> + +<pre class="notranslate"><code>127.0.0.1 localhost.localdomain</code></pre> + +<p>Validate this opening a command shell and typing: <code>ping localhost.localdomain</code>.</p> + +<p>Remove the <code>USE_64=1</code> override if using a 32-bit build.</p> + +<h3 id="Test_results">Test results</h3> + +<p>Running all tests can take a considerable amount of time.</p> + +<p>Test output is stored in <code>tests_results/security/$HOST.$NUMBER/</code>. The file <code>results.html</code> summarizes the results, <code>output.log</code> captures all the test output.</p> + +<p>Other subdirectories of <code>nss/tests</code> contain scripts that run a subset of the full suite. Those can be run directly instead of <code>all.sh</code>, which might save some time at the cost of coverage.</p> diff --git a/files/ja/mozilla/projects/nss/getting_started_with_nss/index.html b/files/ja/mozilla/projects/nss/getting_started_with_nss/index.html new file mode 100644 index 0000000000..49c550df32 --- /dev/null +++ b/files/ja/mozilla/projects/nss/getting_started_with_nss/index.html @@ -0,0 +1,58 @@ +--- +title: NSS を始める +slug: Mozilla/Projects/NSS/Getting_started_with_NSS +translation_of: Mozilla/Projects/NSS/Getting_started_with_NSS +--- +<h2 id="NSSとの関わり方">NSSとの関わり方</h2> + +<p>Network Security Services (NSS) は、Mozilla ソフトウェアで使用されている暗号アルゴリズムやセキュアなネットワークプロトコルのベースライブラリです。</p> + +<p>Mozilla Firefox やその他の NSS を利用したアプリケーションのコアセキュリティを向上させるために、あなたも協力してみませんか?私たちはあなたの貢献を楽しみにしています!</p> + +<p>あなたの興味やスキルにマッチした分野を特定するために、私たちはあなたを支援することができます。<a href="/ja/docs/Archive/Mozilla/Getting_started_with_chat">Mozilla IRC</a> のチャンネル #nss や <a href="https://lists.mozilla.org/listinfo/dev-tech-crypto/">mozilla.dev.tech.crypto</a> ニュースグループで質問することができます。</p> + +<p>NSS ライブラリとそれをサポートするコマンドラインツールは C プログラミング言語で書かれています。ビルドシステムと自動テストは makefile と bash スクリプトに基づいています。</p> + +<p>時間の経過とともに、NSS のさまざまな側面を説明する多くのドキュメントが作成されてきました。まずは以下から始めてみてください。</p> + +<ul> + <li>現在の<a href="/ja/docs/Mozilla/Projects/NSS">主な NSS ドキュメントのページ</a>から他のドキュメントにリンクしています</li> + <li>NSS を使用するアプリケーションの<a href="/ja/docs/Mozilla/Projects/NSS/Overview_of_NSS">一般的な概要</a>と、NSS が提供する機能について説明します</li> + <li>ハイレベルで <a href="/ja/docs/Mozilla/Projects/NSS/An_overview_of_NSS_Internals">NSS の内部</a>を紹介します</li> + <li><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">NSS ソースの取得、構築、テスト</a>について学びます</li> + <li>アーカイブされた mozilla.org ウェブサイトにある<a href="https://www-archive.mozilla.org/projects/security/pki/nss/">古いドキュメント</a></li> +</ul> + +<p>(残念ながら、NSS プロジェクトには現時点でテクニカルライターがいないため、私たちのドキュメントは私たちが望むほど整理されていません。より良い方法でドキュメントを整理することで貢献できるかもしれません)。</p> + +<h2 id="NSS_サンプルコード">NSS サンプルコード</h2> + +<p>NSS アプリケーションの書き方を学ぶのに適した場所は、NSS 開発者によってメンテナンスされているコマンドラインツールです。サブディレクトリ mozilla/security/nss/cmd にあります。</p> + +<p>または、いくつかの基本的な <a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sample_Code">NSS サンプルコー</a>ドを見てみてください。</p> + +<p>新しいサンプルのセットは現在開発中で、<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">新しい NSS サンプルの作成</a>を参照してください。</p> + +<p>サンプルは以下の方法でダウンロードできます:: hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH</p> + +<h2 id="How_to_Contribute">How to Contribute</h2> + +<p>... (この部分はまだ工事中ですが、貢献の機会はたくさんあります)</p> + +<p>bugzilla アカウントをお持ちでない場合は、<a href="https://bugzilla.mozilla.org/">bugzilla.mozilla.org</a> でアカウントを開設してください。</p> + +<p>NSS :: Libraries コンポーネントを使用して、作業したい問題を探してください。私たちは <a href="https://bugzilla.mozilla.org/buglist.cgi?keywords=good-first-bug%2C%20&keywords_type=allwords&classification=Components&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=Libraries&product=NSS">"good-first-bug" というキーワードでマークされた NSS バグ</a>のリストを管理しています。</p> + +<h3 id="Creating_your_Patch">Creating your Patch</h3> + +<p>パッチの作成を始めるには、<a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">NSS のソース、ビルド、テスト</a>についてのセクションを参照してください。満足したら、コードレビューが必要になります。</p> + +<h3 id="Code_Review">Code Review</h3> + +<p><a href="https://phabricator.services.mozilla.com">http://phabricator.services.mozilla.com/</a> は、あなたのBugzilla アカウントを使用するコードレビューツールです。<a href="https://moz-conduit.readthedocs.io/en/latest/phabricator-user.html">レビューのためにパッチをアップロードするには、Phabricator のユーザーインストラクション</a>を使用してください。</p> + +<p>コードレビュー中に評価されるいくつかの項目は、<a href="https://github.com/mozilla/nss-tools/blob/master/nss-code-review-checklist.yaml">Githubのチェックリストフォーム</a>に記載されています。</p> + +<p>レビューを通過した後、あなたのパッチはNSSチームのメンバーによって着地することができます。<a href="/ja/docs/Archive/Mozilla/Getting_started_with_chat">Mozilla IRC</a> のチャンネル #nss で私たちを見つけることができます。</p> + +<p>レビューとテストの両方が行われていないコードは着地させないことに注意してください。コードはテストがあって初めて機能し、テストは自動化の一部であるときにのみ機能します。</p> diff --git a/files/ja/mozilla/projects/nss/index.html b/files/ja/mozilla/projects/nss/index.html new file mode 100644 index 0000000000..c72ab56cff --- /dev/null +++ b/files/ja/mozilla/projects/nss/index.html @@ -0,0 +1,180 @@ +--- +title: Network Security Services +slug: Mozilla/Projects/NSS +tags: + - NSS + - NeedsMigration +translation_of: Mozilla/Projects/NSS +--- +<p><strong>Network Security Services</strong> (<strong>NSS</strong>) は、セキュリティ対応のクライアントおよびサーバアプリケーションのクロスプラットフォーム開発をサポートするために設計されたライブラリのセットです。NSS を使用して構築されたアプリケーションは、SSL v3、TLS、PKCS #5、PKCS #7、PKCS #11、PKCS #12、S/MIME、X.509 v3 証明書、およびその他のセキュリティ標準をサポートすることができます。</p> + +<p>サポートされている規格の詳細については、<a href="/ja/docs/Mozilla/Projects/NSS/Overview_of_NSS">NSS の概要</a>を参照してください。よくある質問のリストについては、<a href="/ja/docs/Mozilla/Projects/NSS/NSS_FAQ">FAQ</a>を参照してください。</p> + +<p>NSS は Mozilla Public License の下で利用可能です。NSS のリリースを tar ファイルとしてダウンロードする方法については、<a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">Download PKI Source</a> を参照してください。</p> + +<p>開発者の方でNSSに貢献したいと思っている方は、NSSの内部の詳細についてのハイレベルな概要と、NSSを使い始めるためのドキュメントを読んでみてはいかがでしょうか。</p> + +<table class="topicpage-table"> + <tbody> + <tr> + <td> + <h2 class="Documentation" id="Documentation" name="Documentation">ドキュメント</h2> + + <h3 id="背景となる情報">背景となる情報</h3> + + <dl> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/Overview_of_NSS">NSS の概要</a></dt> + <dd>NSS とその能力の概要を説明します。</dd> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_FAQ">NSS FAQ</a></dt> + <dd>NSS に関する基本的な質問に答えます。</dd> + <dt><a href="/ja/docs/Introduction_to_Public-Key_Cryptography">公開鍵暗号入門</a></dt> + <dd>NSS の基礎となる公開鍵暗号の基本的な概念を解説します。</dd> + <dt><a href="/ja/docs/Introduction_to_SSL">SSL 入門</a></dt> + <dd>SSL でサポートされている暗号化方式や、SSL ハンドシェイクの手順など、SSL プロトコルを紹介しています。</dd> + </dl> + + <h3 id="はじめに">はじめに</h3> + + <dl> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Releases">NSS のリリース</a></dt> + <dd>このページでは、NSS の現在のリリース情報と過去のリリース情報を掲載しています。</dd> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">ソースコードを取得してビルドする</a></dt> + <dd>サポートされている異なるプラットフォーム上で NSS を構築する方法の説明書。</dd> + <dt><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Mercurial を使って Mozilla のソースコードを取得する</a></dt> + <dd>Mercurial との連携についての情報です。</dd> + <dt><a href="/ja/docs/Mozilla/Developer_Guide/Source_Code/CVS">CVS を使った Mozilla ソースコードの取得 (非推奨)</a></dt> + <dd>古い非推奨の CVS ドキュメント。</dd> + </dl> + + <h3 id="NSS_の_API">NSS の API</h3> + + <dl> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/Introduction_to_Network_Security_Services">Network Security Services のご紹介</a></dt> + <dd>NSS ライブラリの概要と使用するために知っておくべきことを紹介しています。</dd> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/SSL_functions">NSS SSL 公開関数</a></dt> + <dd>NSS 共有ライブラリがエクスポートした SSL API をまとめます。</dd> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_reference">NSS SSL リファレンス</a></dt> + <dd>SSL 操作を呼び出すためのAPIです。</dd> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_API_Guidelines">NSS API ガイドライン</a></dt> + <dd>ライブラリとコードがどのように構成されているか、コードを開発する際のガイドライン (命名規則、エラー処理、スレッドの安全性など) を説明します。</dd> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Tech_Notes">NSS 技術ノート</a></dt> + <dd>NSS の新機能に関する最新情報や、NSS を使ったプログラミングの高度なトピックについての補足資料を提供する NSS テクニカルノートのリンク集です。</dd> + </dl> + + <h3 id="ツール、テスト、その他技術的な詳細">ツール、テスト、その他技術的な詳細</h3> + + <dl> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/Building">NSS のビルド手順</a></dt> + <dd>NSS のリリースをチェックアウトしてビルドする方法を説明します。</dd> + </dl> + + <dl> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Developer_Tutorial">NSS 開発者向けチュートリアル</a></dt> + <dd>NSS での変更の仕方。コーディングスタイル、ABI 互換性の維持。</dd> + </dl> + + <dl> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/tools">NSS ツール</a></dt> + <dd>NSS を使用したアプリケーションの開発、デバッグ、管理のためのツールです。</dd> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sample_Code">サンプルコード</a></dt> + <dd>暗号処理、証明書の取り扱い、SSL などに NSS がどのように利用できるかを実演します。</dd> + <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Third-Party_Code">サードパーティコード</a></dt> + <dd>NSS ライブラリに含まれるサードパーティのコードの一覧です。</dd> + <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/testnss_32.html">NSS 3.2 Test Suite</a></dt> + <dd><strong>アーカイブ版</strong>。標準の NSS テストの実行方法について説明しています。</dd> + <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/performance_reports.html">NSS Performance Reports</a></dt> + <dd><strong>アーカイブ版</strong>。NSS 3.2 以降のリリースのパフォーマンスレポートへのリンクです。</dd> + <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">Encryption Technologies Available in NSS 3.11</a></dt> + <dd><strong>アーカイブ版</strong>。NSS 3.11 で使用されている暗号アルゴリズムの一覧です。</dd> + <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/loadable_certs.html">NSS 3.1 Loadable Root Certificates</a></dt> + <dd><strong>アーカイブ版</strong>。ルート CA 証明書をロードするスキームについて説明します。</dd> + <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/db_formats.html">cert7.db</a></dt> + <dd><strong>アーカイブ版</strong>。cert7.db データベースの一般的なフォーマット。</dd> + </dl> + + <h3 id="PKCS_11_情報">PKCS #11 情報</h3> + + <ul> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11" title="PKCS11">Documentation on PKCS #11 modules</a></li> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_Implement">Implementing PKCS #11 for NSS</a></li> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_Module_Specs" title="PKCS11_Module_Specs">The strings NSS uses to load PKCS #11 modules</a></li> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_FAQ">PKCS #11 FAQ</a></li> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_Jar_Install">Using the JAR Installation Manager to Install a PKCS #11 Cryptographic Module</a></li> + <li><a href="https://www-archive.mozilla.org/projects/security/pki/pkcs11/">PKCS #11 Conformance Testing - Archived version</a></li> + </ul> + + <dl> + </dl> + + <h3 id="NSS_にプリロードされた_CA_証明書">NSS にプリロードされた CA 証明書</h3> + + <ul> + <li><a href="https://www.mozilla.org/projects/security/certs/policy/">Mozilla CA certificate policy</a></li> + <li><a href="https://wiki.mozilla.org/CA/Included_Certificates">List of pre-loaded CA certificates</a> + <ul> + <li>このリストの消費者は、含まれる各ルート証明書のトラストビット設定を考慮する必要があります。<a href="https://www.imperialviolet.org/2012/01/30/mozillaroots.html">More Information</a>, <a href="https://github.com/agl/extract-nss-root-certs">root とそのトラストビットの抽出</a></li> + </ul> + </li> + </ul> + + <dl> + </dl> + + <h3 id="NSS_は_Netscape_Portable_Runtime_NSPR_の上に構築されています。">NSS は Netscape Portable Runtime (NSPR) の上に構築されています。</h3> + + <dl> + <dt><a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Projects/NSPR">Netscape Portable Runtime</a></dt> + <dd>NSPR project page.</dd> + <dt><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference">NSPR Reference</a></dt> + <dd>NSPR API documentation.</dd> + </dl> + + <h3 id="その他の情報">その他の情報</h3> + + <ul> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/JavaScript_crypto" title="JavaScript_crypto">Using the window.crypto object from JavaScript</a></li> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/HTTP_Delegation" title="HTTP_Delegation">Delegation of HTTP download for OCSP</a></li> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/TLS_Cipher_Suite_Discovery" title="TLS_Cipher_Suite_Discovery">TLS Cipher Suite Discovery</a></li> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/NSS_Certificate_Download_Specification" title="NSS_Certificate_Download_Specification">NSS Certificate Download Specification</a></li> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/NSS/FIPS_Mode_-_an_explanation" title="FIPS Mode - an explanation">FIPS Mode - an explanation</a></li> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/NSS_Key_Log_Format" title="NSS Key Log Format">Format of key log files</a></li> + <li>View <a href="https://wiki.developer.mozilla.org/en-US/docs/tag/NSS" title="/en-US/docs/tag/NSS">all NSS-related articles on MDN</a></li> + </ul> + + <h3 id="計画">計画</h3> + + <p>NSS の計画に関する情報は、<a class="external external-icon" href="https://wiki.mozilla.org/NSS">wiki.mozilla.org</a> に掲載されています。</p> + + <ul> + <li><a class="external external-icon" href="https://wiki.mozilla.org/FIPS_Validation">FIPS Validation</a></li> + <li><a class="external external-icon" href="https://wiki.mozilla.org/NSS:Roadmap">NSS Roadmap page</a></li> + <li><a href="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness" title="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness">NSS Improvement Project</a></li> + </ul> + </td> + <td> + <h2 class="Community" id="Community" name="Community">コミュニティ</h2> + + <ul> + <li>Mozilla Security フォーラムを見る...</li> + </ul> + + <p>{{ DiscussionList("dev-security", "mozilla.dev.security") }}</p> + + <ul> + <li>Mozilla Cryptography フォーラムを見る...</li> + </ul> + + <p>{{ DiscussionList("dev-tech-crypto", "mozilla.dev.tech.crypto") }}</p> + + <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">関連トピック</h2> + + <ul> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/Security" title="Security">Security</a></li> + </ul> + + <dl> + </dl> + </td> + </tr> + </tbody> +</table> diff --git a/files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html b/files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html new file mode 100644 index 0000000000..921b4d76ab --- /dev/null +++ b/files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html @@ -0,0 +1,152 @@ +--- +title: Network Security Services のご紹介 +slug: Mozilla/Projects/NSS/Introduction_to_Network_Security_Services +tags: + - NSS +translation_of: Mozilla/Projects/NSS/Introduction_to_Network_Security_Services +--- +<p><strong>Network Security Services (NSS)</strong> とは、SSL、S/MIME、その他インターネットセキュリティ規格をサポートするアプリケーションのクロスプラットフォーム開発を支援するように設計されたライブラリの一式です。NSS の一般的な概観やサポートしている規格についての情報は <a href="ja/Overview_of_NSS">NSS 概観</a> をご覧ください。</p> + +<h3 id=".E5.85.B1.E6.9C.89.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA" name=".E5.85.B1.E6.9C.89.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">共有ライブラリ</h3> + +<p>Network Security Services は、スタティックライブラリと共有ライブラリの両方を提供します。共有ライブラリを利用するアプリケーションは、ライブラリがエクスポートする API のみを利用しなければなりません。3 つの共有ライブラリは、共通機能をエクスポートします。</p> + +<ul> + <li>SSL ライブラリは SSL のコア機能をサポートします。</li> + <li>S/MIME ライブラリは S/MIME のコア機能をサポートします。</li> + <li>NSS ライブラリは暗号化のコア機能をサポートします。</li> +</ul> + +<p>エクスポートされた API を利用しているアプリケーションが、将来のバージョンのライブラリでも互換性を保てることを保証します。NSS 3.2 の共有ライブラリからエクスポートされた共通機能の完全なリストは、<a href="ja/NSS_functions">NSS の機能</a> をご覧ください。</p> + +<p>どの NSS 3.1.1 のスタティックライブラリが上記 NSS 3.2 の共有ライブラリに置き換わったのかは、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/release_notes_32.html#migration">Migration from NSS 3.1.1</a> をご覧ください。</p> + +<p>下の図 1 は、上に挙げられた 3 つの共有ライブラリと NSPR 間の関係を単純化したものを示しています。NSPR は、スレッド管理や I/O といった、低レベルでのクロスプラットフォームサポートを提供します。(NSPR は、別の Mozilla プロジェクトであることにご注意ください。詳細は、<a href="ja/NSPR">Netscape Portable Runtime</a> をご覧ください。)</p> + +<dl> + <dt>図 1 NSS コアライブラリ間および NSPR 間の関係</dt> +</dl> + + + +<h3 id=".E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87.E3.81.A8.E7.89.B9.E5.88.A5.E3.81.AA.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA" name=".E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87.E3.81.A8.E7.89.B9.E5.88.A5.E3.81.AA.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">命名規則と特別なライブラリ</h3> + +<p>Windows と Unix は、スタティックライブラリおよびダイナミックライブラリに対し、それぞれ違った命名規則を利用します。</p> + +<table style="text-align: left;"> + <tbody> + <tr> + <th></th> + <th>Windows</th> + <th>Unix</th> + </tr> + <tr> + <th>スタティック</th> + <td><code>.lib</code></td> + <td><code>.a</code></td> + </tr> + <tr> + <th>ダイナミック</th> + <td><code>.dll</code></td> + <td><code>.so</code> または <code>.sl</code></td> + </tr> + </tbody> +</table> + +<p>加えて、Windows はダイナミックライブラリにバインドされた「インポート」ライブラリを持っています。そのため NSS ライブラリは、次の形式になっています。</p> + +<ul> + <li><code>libnss3.so</code> - Unix 共有ライブラリ</li> + <li><code>libnss3.sl</code> - HP-UX 共有ライブラリ</li> + <li><code>libnss.a</code> - Unix スタティックライブラリ</li> + <li><code>nss3.dll</code> - Windows 共有ライブラリ</li> + <li><code>nss3.lib</code> - Windows import library binding to <code>nss3.dll</code> にバインドされた Windows インポートライブラリ</li> + <li><code>nss.lib</code> - Windows スタティックライブラリ</li> +</ul> + +<p>NSS、SSL、および S/MIME は、上記すべての形式を備えています。</p> + +<p>次のスタティックライブラリは、どの共有ライブラリにも含まれません。</p> + +<ul> + <li><code>libcrmf.a</code>/<code>crmf.lib</code> は、CRMF 操作に API を提供します。</li> + <li><code>libjar.a</code>/<code>jar.lib</code> は、JAR ファイルを生成するために API を提供します。</li> +</ul> + +<p>次のスタティックライブラリは、外部のロード可能な PKCS #11 モジュールにのみ含まれます。</p> + +<ul> + <li><code>libnssckfw.a</code>/<code>nssckfw.lib</code> は、PKCS #11 モジュールを書くための API を提供します。</li> + <li><code>libswfci.a</code>/<code>swfci.lib</code> は、FORTEZZA ソフトウェアをサポートします。</li> +</ul> + +<p>次の共有ライブラリは、独立ロード可能なモジュール (standalone loadable modules) で、直接リンクされることを目的にしていません。</p> + +<ul> + <li><code>libfort.so</code>/<code>libfort.sl</code>/<code>fort32.dll</code> は、FORTEZZA ハードウェアへのサポートを提供します。</li> + <li><code>libswft.so</code>/<code>libswft.sl</code>/<code>swft32.dll</code> は、FORTEZZA ハードウェアへのサポートを提供します。</li> + <li><code>libnssckbi.so</code>/<code>libnssckbi.sl</code>/<code>nssckbi.dll</code> は、信頼済みルート証明書のデフォルトセットを定義します。</li> +</ul> + +<h3 id="ILP32_.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88" name="ILP32_.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88">ILP32 のサポート</h3> + +<p>NSS 3.2 以降のバージョンでは、新たに 2 つの共有ライブラリが PARisc CPU 用 HP-UX プラットフォームおよび (Ultra) Sparc (非 x86) CPU 用 Solaris 用に加えられています。これら HP-UX および Solaris プラットフォームは、ILP32 プログラムモデルを 32 ビット CPU および 64 ビット CPU 上で走らせるプログラムを利用できます。新たに加えられた 2 つのライブラリは、それぞれこの 2 つの CPU で使用する際に最適化されたパフォーマンスを提供します。</p> + +<p>これら 2 つの共有ライブラリは他のプラットフォーム向けには提供されません。これらのライブラリの名前は、下の表に示すように、プラットフォームに依存しています。</p> + +<table style="text-align: left;"> + <tbody> + <tr> + <th>プラットフォーム</th> + <th>32 ビット CPU 向け</th> + <th>64 ビット CPU 向け</th> + </tr> + <tr> + <td>Solaris/Sparc</td> + <td><code>libfreebl_pure32_3.so</code></td> + <td><code>libfreebl_hybrid_3.so</code></td> + </tr> + <tr> + <td>HPUX/PARisc</td> + <td><code>libfreebl_pure32_3.sl</code></td> + <td><code>libfreebl_hybrid_3.sl</code></td> + </tr> + <tr> + <td>AIX (将来のリリースを計画)</td> + <td><code>libfreebl_pure32_3_shr.a</code></td> + <td><code>libfreebl_hybrid_3_shr.a</code></td> + </tr> + </tbody> +</table> + +<p>これらのライブラリにアプリケーションをリンクしないでください。ライブラリは NSS 作動時に動的にロードされます。プログラムをライブラリのうちどちらかにリンクさせた場合、アプリケーションプログラムが特定の CPU 上でしか作動しなくなったり (例: 64 ビット CPU 上のみで作動し、32 ビット CPU では作動しない)、または 64 ビット CPU 上のより効率的な 64 ビットコードを利用できなくなる場合があります。</p> + +<p>これらの共有ライブラリを受け入れることができるプラットフォーム上では、その共有ライブラリがないと NSS 3.2 は作動しません。そのため、アプリケーションがこれらのファイルを NSS 共有ライブラリのディストリビューションを含むようにしてください。これら共有ライブラリは、他の NSS 共有ライブラリ (例えば <code>libnss3.so</code>) がインストールされているディレクトリにインストールされていなければなりません。二つの共有ライブラリはともに、インストール先のシステムが 32 ビット CPU や 64 ビット CPU が使われている場合は、必ずインストールされます。NSS が作動時にローカルシステムに対して正しいファイルを選択します。</p> + +<p>NSS 3.x はまた、上記プラットフォーム向けの LP64 モデルも利用可能ですが、NSS 3.x の LP64 モデルはこれら二つの共有ライブラリを持たないことを念頭においてください。</p> + +<h3 id=".E7.9F.A5.E3.81.A3.E3.81.A6.E3.81.8A.E3.81.8F.E3.81.B9.E3.81.8D.E3.81.93.E3.81.A8" name=".E7.9F.A5.E3.81.A3.E3.81.A6.E3.81.8A.E3.81.8F.E3.81.B9.E3.81.8D.E3.81.93.E3.81.A8">知っておくべきこと</h3> + +<p>NSS を利用する前に、次の話題を理解していることが求められます。</p> + +<ul> + <li>公開鍵暗号の概念と技術</li> + <li>セキュリティつきソケット層 (SSL) プロトコル</li> + <li>暗号認証インターフェース (cryptographic token interfaces) の PKCS #11 規格</li> + <li>クロスプラットフォーム開発の要点および技術</li> +</ul> + +<h3 id=".E3.82.88.E3.82.8A.E5.A4.9A.E3.81.8F.E3.81.AE.E6.83.85.E5.A0.B1.E3.82.92.E5.BE.97.E3.82.8B.E3.81.AB.E3.81.AF" name=".E3.82.88.E3.82.8A.E5.A4.9A.E3.81.8F.E3.81.AE.E6.83.85.E5.A0.B1.E3.82.92.E5.BE.97.E3.82.8B.E3.81.AB.E3.81.AF">より多くの情報を得るには</h3> + +<p>NSS を利用する前に理解しておかなければならない PKI および SSL の情報は、以下のページをご覧ください。</p> + +<ul> + <li><a href="ja/Introduction_to_Public-Key_Cryptography">公開鍵暗号入門</a></li> + <li><a href="ja/Introduction_to_SSL">SSL 入門</a></li> +</ul> + +<p>API に関する参考文献、ビルドガイド、およびその他の有益な情報へのリンクは、<a href="ja/NSS">NSS プロジェクトのページ</a> をご覧ください。</p> + +<p>上で述べられているように、NSS は NSPR の上にビルドされています。NSPR 用 API に関する参考文献は、<a href="ja/NSPR_API_Reference">NSPR API リファレンス</a> をご覧ください。</p> + +<p>{{ languages( { "en": "en/Introduction_to_Network_Security_Services" } ) }}</p> diff --git a/files/ja/mozilla/projects/nss/new_nss_samples/index.html b/files/ja/mozilla/projects/nss/new_nss_samples/index.html new file mode 100644 index 0000000000..be47c481f4 --- /dev/null +++ b/files/ja/mozilla/projects/nss/new_nss_samples/index.html @@ -0,0 +1,36 @@ +--- +title: 新しい NSS サンプル +slug: Mozilla/Projects/NSS/New_NSS_Samples +tags: + - Example +translation_of: Mozilla/Projects/NSS/New_NSS_Samples +--- +<h2 id="New_NSS_Sample_Code">New NSS Sample Code</h2> + +<p>このサンプルコード集では、暗号処理、証明書の取り扱い、SSL などに NSS をどのように利用できるかを示しています。また、暗号技術の応用におけるベストプラクティスをいくつか示しています。</p> + +<p>These new examples are a work in progress. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">https://bugzilla.mozilla.org/show_bug.cgi?id=490238</a></p> + +<p>サンプルのダウンロード方法</p> + +<pre class="bz_comment_text notranslate" id="comment_text_42">hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH +</pre> + +<p>サンプル一覧。</p> + +<ol> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Sample1_-_Hashing">Sample Code 1: Hashing</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Sample2_-_Initialize_NSS_Database">Sample Code 2: Init NSS database</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Encrypt_Decrypt_MAC_Using_Token">Sample Code 3: Encrypt/Decrypt and Mac Using Token</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Encrypt_Decrypt_MAC_Keys_As_Session_Objects">Sample Code 4: Encrypt/Decrypt and Mac Using Session Objects</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Enc_Dec_MAC_Output_Plblic_Key_as_CSR">Sample Code 5: Encrypt/Decrypt/MAC Output Public Key as a CSR </a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Enc_Dec_MAC_Using_Key_Wrap_CertReq_PKCS10_CSR">Sample Code 6: Encrypt/Decrypt/MAC Generating a PKCS#11 CSR</a></li> +</ol> + +<p>これらのサンプルで使用されている共通のコード。</p> + +<ol> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Utiltiies_for_nss_samples">Sample Code 0: Utilities</a></li> +</ol> + +<p>これらのサンプルの主執筆者である Mozilla Community のメンバーである Shailendra Jain 氏に感謝します。</p> diff --git a/files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html b/files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html new file mode 100644 index 0000000000..b56f599981 --- /dev/null +++ b/files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html @@ -0,0 +1,94 @@ +--- +title: Notes on TLS - SSL 3.0 Intolerant Servers +slug: Mozilla/Projects/NSS/Notes_on_TLS_-_SSL_3.0_Intolerant_Servers +tags: + - Gecko + - NSS + - Security +translation_of: Mozilla/Projects/NSS/Notes_on_TLS_-_SSL_3.0_Intolerant_Servers +--- +<p> </p> + +<h3 id=".E4.B8.8D.E5.85.B7.E5.90.88" name=".E4.B8.8D.E5.85.B7.E5.90.88">不具合</h3> + +<p>多くの Netscape 6.x/7.x および Mozilla 利用者が、いくつかのセキュリティ保護されたサイト -- オンライントランザクションやオンラインバンクでHTTPSプロトコルを使っている一般的なサイト -- で何も表示されないと報告してきています。 接続は終わっているように見えますが空白ページが表示されます。これがMozillaベースのブラウザがTLS/SSL 3.0 狭量(不寛容)なサーバに遭遇したときの問題の主な症状です。</p> + +<h3 id="Cause" name="Cause">原因</h3> + +<p>現状、SSL 3.0 仕様の狭量な実装がされたいくつかのWebサーバがあります。 この狭量な実装は<strong>SSL 3.0</strong> および <strong>TLS (aka SSL 3.1)</strong> 仕様に従っているクライアントからの接続の試みを拒否します。 </p> + +<p>Netscape 6.x/7.x および Mozilla ブラウザ (0.9.1 以降のバージョン) は、TLSの仕様を正しく実装しており、ユーザはこの問題のあるサイトを利用できません。</p> + +<h3 id=".E6.8A.80.E8.A1.93.E6.83.85.E5.A0.B1" name=".E6.8A.80.E8.A1.93.E6.83.85.E5.A0.B1">技術情報</h3> + +<p>The <strong>SSL 3.0</strong> and <strong>TLS (aka SSL 3.1)</strong> specs both contain a provision -- the same provision -- for detecting "version rollback attacks". It is designed to permit a server to detect a man-in-the-middle that is altering the SSL client hello (connection) requests as they pass from the client to the server, altering them by changing the protocol version number to a lower version number. This feature was kind of meaningless until <strong>TLS (SSL 3.1)</strong> came along because there was no version higher than 3.0 from which to be rolled back. TLS is now available and used, and products that have implemented the roll-back detection incorrectly are not interoperable with TLS/SSL spec-compliant clients. Normally the servers which have this problem are not equipped to deal with the TLS protocol, but instead of rolling back to SSL 3.0 as the rollback provision provides, they terminate/drop the connection, thus resulting in most cases a blank page display.</p> + +<p>For up-to-date information, you can read a Bugzilla bug report which keeps track of this problem with Mozilla-based browsers. See {{ Bug(59321) }}.</p> + +<h3 id="Servers_currently_known_to_exhibit_this_intolerant_behavior" name="Servers_currently_known_to_exhibit_this_intolerant_behavior">Servers currently known to exhibit this intolerant behavior</h3> + +<p>As of this writing, this problem has been reported for the following servers: (Wherever there is an upgraded version which fixes the problem, it is indicated by an asterisked remark in the parentheses. )</p> + +<ul> + <li>Domino-Go-Webserver/4.6.2.6 (and perhaps some later versions)</li> + <li>IBM_HTTP_Server/1.3.6.3 or earlier (* Update to 1.3.6.4)</li> + <li>IBM_HTTP_Server/1.3.12.1 or earlier (* <a class="external" href="http://www6.software.ibm.com/dl/websphere/http-p">Update to 1.3.12.2</a>)</li> + <li>Java Web Server 2</li> + <li>OSU/3.2 - DECthreads HTTP server for OpenVM</li> + <li>Stronghold/2.2</li> + <li>Webmail v. 3.6.1 by Infinite Technologies (* Update available)</li> +</ul> + +<p>N.B. There might be servers other than those listed above which exhibit this problem. If you find such a server, feel free to add it to this page. For up-to-date information, you can read this {{bug(59321)}} which keeps a list of TLS/SSL 3.0 intolerant servers.</p> + +<h3 id="Users_.E3.81.93.E3.81.AE.E5.95.8F.E9.A1.8C.E3.82.92.E9.81.BF.E3.81.91.E3.82.8B.E3.81.AB.E3.81.AF.3F" name="Users:_.E3.81.93.E3.81.AE.E5.95.8F.E9.A1.8C.E3.82.92.E9.81.BF.E3.81.91.E3.82.8B.E3.81.AB.E3.81.AF.3F">Users: この問題を避けるには?</h3> + +<h4 id="Netscape_6.1_Preview_Release_1.2C_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.1_.E4.BB.A5.E5.89.8D" name="Netscape_6.1_Preview_Release_1.2C_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.1_.E4.BB.A5.E5.89.8D">Netscape 6.1 Preview Release 1, または Mozilla 0.9.1 以前</h4> + +<p>These versions shipped with the TLS option turned <strong>ON</strong> as the default but with no way to deal with the problem servers. If you are using these old versions, please update to the latest Netscape or Mozilla versions. You can also avoid such a problem by editing an existing profile -- check the preference option setting at: <code>Edit | Preferences | Privacy and Security | SSL | Enable TLS</code>, and turn it <strong>OFF</strong> if it is <strong>ON</strong> for these earlier browsers.</p> + +<h4 id="Netscape_6.1_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.2_.E4.BB.A5.E9.99.8D" name="Netscape_6.1_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.2_.E4.BB.A5.E9.99.8D">Netscape 6.1 または Mozilla 0.9.2 以降</h4> + +<p>These browsers shipped with the TLS option <strong>ON</strong> but also included a graceful rollback mechanism on the client side when they encounter known TLS/SSL 3.0 intolerant servers.</p> + +<h4 id="Firefox_2_.E4.BB.A5.E9.99.8D" name="Firefox_2_.E4.BB.A5.E9.99.8D">Firefox 2 以降</h4> + +<p>Firefox 2から、SSL 2.0のサポートは最初から無効にされています; unless it is expressly re-enabled by the user using about:config. See <a href="/ja/Security_in_Firefox_2" title="ja/Security_in_Firefox_2">Security in Firefox 2</a> for details.</p> + +<h3 id="Web.E3.82.B5.E3.82.A4.E3.83.88.E7.AE.A1.E7.90.86.E8.80.85_How_to_avoid_this_problem.3F" name="Web.E3.82.B5.E3.82.A4.E3.83.88.E7.AE.A1.E7.90.86.E8.80.85:_How_to_avoid_this_problem.3F">Webサイト管理者: この問題を避けるには?</h3> + +<ul> + <li>Upgrade to a newer version if available, which corrects this problem. There will be other network clients which implement TLS/SSL 3.0 specification correctly and have a problem with your site. Let's not perpetuate the problem servers.</li> + <li>Contact the manufacturer and inquire if there is a new version available which fixes this problem.</li> + <li>Post a note on your site instructing users of old versions of browsers like Netscape 6.0/6.01/6.1 Preview Release 1 and Mozilla 0.9.1 and earlier to turn <strong>OFF</strong> the TLS option at: <code>Edit | Preferences | Privacy and Security | SSL | Enable TLS</code>. However, this is a temporary workaround at best. We recommend strongly that you urge users to upgrade to the latest Netscape version (or at least Netscape 6.1) since the newer versions have the graceful rollback implemented in the code.</li> + <li>If you have questions concerning Netscape browsers and problem servers, please contact us using the feedback address at the top of this page.</li> +</ul> + +<h3 id="Detecting_intolerant_servers" name="Detecting_intolerant_servers">Detecting intolerant servers</h3> + +<p>Because newer versions of Netscape and Mozilla have built-in workaround for the problem servers, it is now unlikely that you will experience this problem. But if you're running Netscape 6.0/6.01/6.1 PR 1 or Mozilla build (prior to 6/11/2001), you should look out for the symptom described below. You may also run this test with versions later than the older versions of Netscape 6.x or Mozilla -- just in case code changes in Netscape 6.1/Mozilla 0.9.2 or later may not catch all problem servers.</p> + +<ul> + <li>When you find a secure site which simply does not display any page content or drops the connection, check to see if the preference option <code>Edit | Preferences | Privacy and Security | SSL | Enable TLS</code> is turned <strong>ON</strong>. If so, turn it <strong>OFF</strong>.</li> + <li>Now re-visit the problem site. If the content displays this time, you are most likely witnessing a TLS/SSL 3.0 intolerant server.</li> + <li>Report such a problem to the server's administrator.</li> +</ul> + +<h3 id="How_to_report_an_intolerant_server" name="How_to_report_an_intolerant_server">How to report an intolerant server</h3> + +<ul> + <li><em>Optional:</em> Get the name of the SSL server software used by the website. To do so, add <code><span class="nowiki">http://toolbar.netcraft.com/site_report?url=</span></code> to the beginning of the URL. The server software will appear next to <strong>Server</strong> under <strong>SSL Certificate Information</strong>.<br> + <br> + For instance, to check <code><span class="nowiki">https://bugzilla.mozilla.org/</span></code>, then visit <a class="external" href="http://toolbar.netcraft.com/site_report?url=https://bugzilla.mozilla.org/" rel="freelink">http://toolbar.netcraft.com/site_rep...a.mozilla.org/</a>.</li> + <li>Add the information on such a server (software, URL) to {{bug(59321)}} at Bugzilla. (Note: You will be asked to provide your email address before you can file a bug at Bugzilla.)</li> +</ul> + +<div class="originaldocinfo"> +<h3 id=".E5.8E.9F.E6.96.87.E6.83.85.E5.A0.B1" name=".E5.8E.9F.E6.96.87.E6.83.85.E5.A0.B1">原文情報</h3> + +<ul> + <li>著者 : 桃井 勝彦</li> + <li>最終更新日: 2003年1月27日</li> + <li>Copyright © 2001-2003 Netscape. All rights reserved.</li> +</ul> +</div> diff --git a/files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html b/files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html new file mode 100644 index 0000000000..707389d205 --- /dev/null +++ b/files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html @@ -0,0 +1,150 @@ +--- +title: NSS 3.18 release notes +slug: Mozilla/Projects/NSS/NSS_3.18_release_notes +translation_of: Mozilla/Projects/NSS/NSS_3.18_release_notes +--- +<h2 id="はじめに">はじめに</h2> + +<p>NSSチームはマイナーリリースであるNetwork Security Services (NSS) 3.18をリリースしました。</p> + +<h2 id="配布情報">配布情報</h2> + +<p>HGタグはNSS_3_18_RTMです。NSS 3.18はNSPR 4.10.8またはそれより新しいバージョンを必要とします。</p> + +<p>NSS 3.18のソースコードの配布物はftp.mozilla.orgまたは安全なHTTPSのダウンロードリンクから入手できます:</p> + +<ul> + <li>Source tarballs:<br> + <a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_18_RTM/src/">https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_18_RTM/src/</a></li> +</ul> + +<h2 id="NSS_3.18で新しくなった点">NSS 3.18で新しくなった点</h2> + +<h3 id="新機能">新機能</h3> + +<ul> + <li>When importing certificates and keys from a PKCS#12 source, it's now possible to override the nicknames, prior to importing them into the NSS database, using new API SEC_PKCS12DecoderRenameCertNicknames.</li> + <li>The tstclnt test utility program has new command-line options -C, -D, -b and -R.<br> + Use -C one, two or three times to print information about the certificates received from a server, and information about the locally found and trusted issuer certificates, to diagnose server side configuration issues. It is possible to run tstclnt without providing a database (-D). A PKCS#11 library that contains root CA certificates can be loaded by tstclnt, which may either be the nssckbi library provided by NSS (-b) or another compatible library (-R).</li> +</ul> + +<h4 id="新しい関数">新しい関数</h4> + +<ul> + <li><em>in certdb.h</em> + + <ul> + <li><strong>SEC_CheckCrlTimes</strong> - Check the validity of a CRL at the given time.</li> + <li><strong>SEC_GetCrlTimes</strong> - Extract the validity times from a CRL.</li> + </ul> + </li> + <li><em>in p12.h</em> + <ul> + <li><strong>SEC_PKCS12DecoderRenameCertNicknames</strong> - call an application provided callback for each certificate found in a SEC_PKCS12DecoderContext.</li> + </ul> + </li> + <li><em>in pk11pub.h</em> + <ul> + <li><strong>__PK11_SetCertificateNickname</strong> - this is an internal symbol for NSS use only, as with all exported NSS symbols that have a leading underscore '_'. Applications that use or depend on these symbols can and will break in future NSS releases.</li> + </ul> + </li> +</ul> + +<h4 id="新しい型">新しい型</h4> + +<ul> + <li><em>in p12.h</em> + + <ul> + <li><strong>SEC_PKCS12NicknameRenameCallback</strong> - a function pointer definition. An application that uses SEC_PKCS12DecoderRenameCertNicknames must implement a callback function that implements this function interface.</li> + </ul> + </li> +</ul> + +<h2 id="NSS_3.18での目立った変更点">NSS 3.18での目立った変更点</h2> + +<ul> + <li>既定の状態で有効なTLSのプロトコルバージョンの最大値がTLS 1.0からTLS 1.2に引き上げられました。同様に、既定の状態で有効なDTLSのプロトコルバージョンの最大値もDTLS 1.0からDTLS 1.2に引き上げられました。</li> + <li>RSA鍵ペアを生成する際にcertutilが使う鍵の既定のサイズが1024ビットから2048ビットに引き上げられました。</li> + <li>Mac OS Xでは、OSにsqliteのライブラリのバージョン3.5またはそれ以上がインストールされている場合、既定の状態でsoftokn共有ライブラリにリンクされるようになりました。</li> + <li>以下の認証局証明書について、コードとWebサイトの署名に対する<strong>信頼のビットが無効化されました。</strong> + <ul> + <li>OU = Equifax Secure Certificate Authority + <ul> + <li>SHA1 Fingerprint: D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A</li> + </ul> + </li> + <li>CN = Equifax Secure Global eBusiness CA-1 + <ul> + <li>SHA1 Fingerprint: 7E:78:4A:10:1C:82:65:CC:2D:E1:F1:6D:47:B4:40:CA:D9:0A:19:45</li> + </ul> + </li> + <li>CN = TC TrustCenter Class 3 CA II + <ul> + <li>SHA1 Fingerprint: 80:25:EF:F4:6E:70:C8:D4:72:24:65:84:FE:40:3B:8A:8D:6A:DB:F5</li> + </ul> + </li> + </ul> + </li> + <li>以下の認証局証明書が<strong>追加されました。</strong> + <ul> + <li>CN = Staat der Nederlanden Root CA - G3 + <ul> + <li>SHA1 Fingerprint: D8:EB:6B:41:51:92:59:E0:F3:E7:85:00:C0:3D:B6:88:97:C9:EE:FC</li> + </ul> + </li> + <li>CN = Staat der Nederlanden EV Root CA + <ul> + <li>SHA1 Fingerprint: 76:E2:7E:C1:4F:DB:82:C1:C0:A6:75:B5:05:BE:3D:29:B4:ED:DB:BB</li> + </ul> + </li> + <li>CN = IdenTrust Commercial Root CA 1 + <ul> + <li>SHA1 Fingerprint: DF:71:7E:AA:4A:D9:4E:C9:55:84:99:60:2D:48:DE:5F:BC:F0:3A:25</li> + </ul> + </li> + <li>CN = IdenTrust Public Sector Root CA 1 + <ul> + <li>SHA1 Fingerprint: BA:29:41:60:77:98:3F:F4:F3:EF:F2:31:05:3B:2E:EA:6D:4D:45:FD</li> + </ul> + </li> + <li>CN = S-TRUST Universal Root CA + <ul> + <li>SHA1 Fingerprint: 1B:3D:11:14:EA:7A:0F:95:58:54:41:95:BF:6B:25:82:AB:40:CE:9A</li> + </ul> + </li> + <li>CN = Entrust Root Certification Authority - G2 + <ul> + <li>SHA1 Fingerprint: 8C:F4:27:FD:79:0C:3A:D1:66:06:8D:E8:1E:57:EF:BB:93:22:72:D4</li> + </ul> + </li> + <li>CN = Entrust Root Certification Authority - EC1 + <ul> + <li>SHA1 Fingerprint: 20:D8:06:40:DF:9B:25:F5:12:25:3A:11:EA:F7:59:8A:EB:14:B5:47</li> + </ul> + </li> + <li>CN = CFCA EV ROOT + <ul> + <li>SHA1 Fingerprint: E2:B8:29:4B:55:84:AB:6B:58:C2:90:46:6C:AC:3F:B8:39:8F:84:83</li> + </ul> + </li> + </ul> + </li> + <li>ルート認証局リストのバージョン番号は2.3に更新されました。</li> +</ul> + +<h2 id="NSS_3.18で修正されたバグ">NSS 3.18で修正されたバグ</h2> + +<p>NSS 3.18で修正されたバグの一覧を返すBugzillaのクエリは以下の通りです:</p> + +<p><a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.18">https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.18</a></p> + +<h2 id="互換性">互換性</h2> + +<p>NSS 3.18共有ライブラリはすべての古いNSS 3.x共有ライブラリと後方互換性があります。古いNSS3.x共有ライブラリとリンクされたプログラムは、再コンパイルまたは再リンクなしでNSS 3.18と組み合わせて動作します。また、NSS公開関数に列挙された関数のみに限定してNSSのAPIを利用しているアプリケーションは、将来のバージョンのNSS共有ライブラリにおいても利用できます。</p> + +<h2 id="フィードバック">フィードバック</h2> + +<p>バグに遭遇した場合は<a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=NSS">、 bugzilla.mozilla.org</a> に(プロダクトとしてNSSを選択して)バグレポートを登録して下さい。</p> + +<p> </p> diff --git a/files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html b/files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html new file mode 100644 index 0000000000..31afee3691 --- /dev/null +++ b/files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html @@ -0,0 +1,118 @@ +--- +title: NSS 3.57 リリースノート +slug: Mozilla/Projects/NSS/NSS_3.57_release_notes +translation_of: Mozilla/Projects/NSS/NSS_3.57_release_notes +--- +<h2 id="Introduction">Introduction</h2> + +<p>The NSS team has released Network Security Services (NSS) 3.57 on <strong>18 September 2020</strong>, which is a minor release.</p> + +<p>The NSS team would like to recognize first-time contributors:</p> + +<ul> + <li><cite>Khem Raj</cite></li> +</ul> + +<h2 id="Distribution_Information">Distribution Information</h2> + +<p>The HG tag is NSS_3_57_RTM. NSS 3.57 requires NSPR 4.29 or newer.</p> + +<p>NSS 3.57 source distributions are available on ftp.mozilla.org for secure HTTPS download:</p> + +<ul> + <li>Source tarballs:<br> + <a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_57_RTM/src/">https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_57_RTM/src/</a></li> +</ul> + +<p>Other releases are available <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_Releases">in NSS Releases</a>.</p> + +<h2 id="Notable_Changes_in_NSS_3.57">Notable Changes in NSS 3.57</h2> + +<ul> + <li>NSPR dependency updated to 4.29.</li> +</ul> + +<h3 id="Certificate_Authority_Changes">Certificate Authority Changes</h3> + +<ul> + <li>The following CA certificates were Added: + <ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- CN=Trustwave Global Certification Authority + + <ul> + <li>SHA-256 Fingerprint: 97552015F5DDFC3C8788C006944555408894450084F100867086BC1A2BB58DC8</li> + </ul> + </li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- CN=Trustwave Global ECC P256 Certification Authority + <ul> + <li>SHA-256 Fingerprint: 945BBC825EA554F489D1FD51A73DDF2EA624AC7019A05205225C22A78CCFA8B4</li> + </ul> + </li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- CN=Trustwave Global ECC P384 Certification Authority + <ul> + <li>SHA-256 Fingerprint: 55903859C8C0C3EBB8759ECE4E2557225FF5758BBD38EBD48276601E1BD58097</li> + </ul> + </li> + </ul> + </li> + <li>The following CA certificates were Removed: + <ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1651211">Bug 1651211</a> - CN=EE Certification Centre Root CA + <ul> + <li>SHA-256 Fingerprint:<br> + 3E84BA4342908516E77573C0992F0979CA084E4685681FF195CCBA8A229B8A76</li> + </ul> + </li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656077">Bug 1656077</a> - O=Government Root Certification Authority; C=TW + <ul> + <li>SHA-256 Fingerprint:<br> + 7600295EEFE85B9E1FD624DB76062AAAAE59818A54D2774CD4C0B2C01131E1B3</li> + </ul> + </li> + </ul> + </li> + <li>Trust settings for the following CA certificates were Modified: + <ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653092">Bug 1653092</a> - CN=OISTE WISeKey Global Root GA CA + <ul> + <li>Websites (server authentication) trust bit removed.</li> + </ul> + </li> + </ul> + </li> +</ul> + +<h2 id="Bugs_fixed_in_NSS_3.57">Bugs fixed in NSS 3.57</h2> + +<ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1651211">Bug 1651211</a> - Remove EE Certification Centre Root CA certificate.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653092">Bug 1653092</a> - Turn off Websites Trust Bit for OISTE WISeKey Global Root GA CA.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656077">Bug 1656077 </a>- Remove Taiwan Government Root Certification Authority certificate.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- Add SecureTrust's Trustwave Global root certificates to NSS.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1659256">Bug 1659256</a> - AArch64 AES optimization shouldn't be enabled with gcc 4.8.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1651834">Bug 1651834 </a>- Fix Clang static analyzer warnings.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1661378">Bug 1661378</a> - Fix Build failure with Clang 11.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1659727">Bug 1659727</a> - Fix mpcpucache.c invalid output constraint on Linux/ARM.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1662738">Bug 1662738</a> - Only run freebl_fips_RNG_PowerUpSelfTest when linked with NSPR.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1661810">Bug 1661810</a> - Fix Crash @ arm_aes_encrypt_ecb_128 when building with Clang 11.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1659252">Bug 1659252</a> - Fix Make build with NSS_DISABLE_DBM=1.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660304">Bug 1660304</a> - Add POST tests for KDFs as required by FIPS.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663346">Bug 1663346</a> - Use 64-bit compilation on e2k architecture.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1605922">Bug 1605922</a> - Account for negative sign in mp_radix_size.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653641">Bug 1653641</a> - Cleanup inaccurate DTLS comments, code review fixes.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660372">Bug 1660372</a> - NSS 3.57 should depend on NSPR 4.29</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660734">Bug 1660734</a> - Fix Makefile typos.</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660735">Bug 1660735</a> - Fix Makefile typos.</li> +</ul> + +<p>This Bugzilla query returns all the bugs fixed in NSS 3.57:</p> + +<p><a class="external" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.57" rel="noopener">https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.57</a></p> + +<h2 id="Compatibility">Compatibility</h2> + +<p>NSS 3.57 shared libraries are backward compatible with all older NSS 3.x shared libraries. A program linked with older NSS 3.x shared libraries will work with NSS 3.57 shared libraries without recompiling or relinking. Furthermore, applications that restrict their use of NSS APIs to the functions listed in NSS Public Functions will remain compatible with future versions of the NSS shared libraries.</p> + +<h2 id="Feedback">Feedback</h2> + +<p>Bugs discovered should be reported by filing a bug report with<a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=NSS"> bugzilla.mozilla.org</a> (product NSS).</p> diff --git a/files/ja/mozilla/projects/nss/nss_api_guidelines/index.html b/files/ja/mozilla/projects/nss/nss_api_guidelines/index.html new file mode 100644 index 0000000000..d01fc56f20 --- /dev/null +++ b/files/ja/mozilla/projects/nss/nss_api_guidelines/index.html @@ -0,0 +1,534 @@ +--- +title: NSS API ガイドライン +slug: Mozilla/Projects/NSS/NSS_API_Guidelines +translation_of: Mozilla/Projects/NSS/NSS_API_Guidelines +--- +<h1 id="NSS_API_ガイドライン">NSS API ガイドライン</h1> + +<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p> + +<h2 id="Introduction">Introduction</h2> + +<p>This document describes how the NSS code is organized, the libraries that get built from the NSS sources, and guidelines for writing NSS code. These guidelines will familiarize you with some of the ways things can be done in the NSS code. This will help you understand existing NSS code. It should also help you understand how to write new code, and where to place it.</p> + +<p>Some of the guidelines in this document, are more forward-looking than documentary. These rules are here to help us all immediately achieve more consistent and usable code, but some existing code won't follow all these rules.</p> + +<p><a name="Structure"> </a></p> + +<h2 id="NSS_API_Structure"><a name="Structure">NSS API Structure</a></h2> + +<p>This section explains the structure and relationships of the NSS libraries. The <a href="#Layering">Layering</a> section explains how the NSS code is layered, and how higher-level functions wrap low-level functions. The <a href="#Libraries"> Libraries</a> section descibes the NSS libraries, the functionality each provides, and the layer in which the library (mostly) operates.</p> + +<h3 id="Layering_2"><a name="Layering"></a>Layering</h3> + +<p>Each separate component of the API should live in its own layer. The functions in these APIs should never call API layers above them. In addition, some low-level APIs may be completely opaque to higher level layers. That is, access to these functions should only be provided by the API directly above them. The NSS APIs are layered, as shown in this diagram:</p> + +<p><img alt='A diagram of the different layers that collectively make up "NSS". Dependencies are only permitted between siblings and layers below them.' src="https://mdn.mozillademos.org/files/5379/layer.gif" style="height: 507px; line-height: 1.572; width: 427px;"></p> + +<p><span style="line-height: 1.572;">The boxes in the gray section, towards the center, are exported only through PKCS #11. PKCS #11 is only exported through the Wrappers. The areas which need the most work (both here and throughout the code) is: </span></p> + +<ol> + <li><span style="line-height: 1.572;">The relationship of the Certificate library with just about every other component (most noticeably PKCS #12, PKCS #7, and PKCS #11)</span></li> + <li><span style="line-height: 1.572;">Splitting Low Key and High Key components more clearly</span></li> + <li><span style="line-height: 1.572;">The Crypto wrappers (PKCS #11 Wrappers) and High Key </span></li> + <li><span style="line-height: 1.572;">PKCS #12 and PKCS #5</span></li> +</ol> + +<p><a name="Libraries"> </a></p> + +<h3 id="Libraries_2"><a name="Libraries">Libraries</a></h3> + +<p>NSS compiles into the libraries described below. The Layer indicates the main layer, seen in the previous diagram, in which the library operates. The Directory is the location of the library code in the NSS source tree. The Public Headers is a list of header files that contain types, and functions, that are publicly available to higer-level APIs.</p> + +<table style="width: 75%;"> + <tbody> + <tr> + <th>Library</th> + <th>Description</th> + <th>Layer</th> + <th>Directory</th> + <th>Public Headers</th> + </tr> + <tr> + <td>certdb</td> + <td>Provides all certificate handling functions and types. The certdb library manipulates the certificate database (add, create, delete certificates and CRLs). It also provides general certificate-handling routines (create a certificate, verify, add/check certificate extensions).</td> + <td>Low Cert</td> + <td>lib/certdb</td> + <td>cdbhdl.h, certdb.h, cert.h, certt.h</td> + </tr> + <tr> + <td>certhi</td> + <td>Provides high-level certificate-related functions, that do not access the certificate database, nor individual certificate data directly. Currently, OCSP checking settings are exported through certhi.</td> + <td>High Cert</td> + <td>lib/certhigh</td> + <td>ocsp.h, ocspt.h</td> + </tr> + <tr> + <td>crmf</td> + <td>Provides functions, and data types, to handle Certificate Management Message Format (CMMF) and Certificate Request Message Format (CRMF, see <a href="https://tools.ietf.org/html/rfc2511"> RFC 2511</a>) data. CMMF no longer exists as a proposed standard; CMMF functions have been incorporated into the proposal for <a href="https://tools.ietf.org/html/rfc2510"> Certificate Management Protocols (CMP)</a>.</td> + <td>Same Level as SSL</td> + <td>lib/crmf</td> + <td>cmmf.h, crmf.h, crmft.h, cmmft.h, crmffut.h</td> + </tr> + <tr> + <td>cryptohi</td> + <td>Provides high-level cryptographic support operations: such as signing, verifying signatures, key generation, key manipulation, hashing; and data types. This code is above the PKCS #11 layer.</td> + <td>Sign/Verify</td> + <td>lib/cryptohi</td> + <td>cryptohi.h, cryptoht.h, hasht.h, keyhi.h, keythi.h, key.h, keyt.h, sechash.h</td> + </tr> + <tr> + <td>fort</td> + <td>Provides a PKCS #11 interface, to Fortezza crypto services. Fortezza is a set of security algorithms, used by the U.S. government. There is also a SWFT library that provides a software-only implementation of a PKCS #11 Fortezza token.</td> + <td>PKCS #11</td> + <td>lib/fortcrypt</td> + <td>cryptint.h, fmutex.h, fortsock.h, fpkcs11.h, fpkcs11f.h, fpkcs11t.h, fpkmem.h, fpkstrs.h, genci.h, maci.h</td> + </tr> + <tr> + <td>freebl</td> + <td>Provides the API to actual cryptographic operations. The freebl is a wrapper API. You must supply a library that implements the cryptographic operations, such as BSAFE from RSA Security. This is also known as the "bottom layer" API, or BLAPI.</td> + <td>Within PKCS #11, wraps Crypto</td> + <td>lib/freebl</td> + <td>blapi.h, blapit.h</td> + </tr> + <tr> + <td>jar</td> + <td>Provides support for reading and writing data in Java Archive (jar) format, including zlib compression.</td> + <td>Port</td> + <td>lib/jar</td> + <td>jar-ds.h, jar.h, jarfile.h</td> + </tr> + <tr> + <td>nss</td> + <td>Provides high-level initialiazation and shutdown of security services. Specifically, this library provides NSS_Init() for establishing default certificate, key, module databases, and initializing a default random number generator. NSS_Shutdown() closes these databases, to prevent further access by an application.</td> + <td>Above High Cert, High Key</td> + <td>lib/nss</td> + <td>nss.h</td> + </tr> + <tr> + <td>pk11wrap</td> + <td>Provides access to PKCS #11 modules, through a unified interface. The pkcs11wrap library provides functions for selecting/finding PKCS #11 modules and slots. It also provides functions that invoke operations in selected modules and slots, such as key selection and generation, signing, encryption and decryption, etc.</td> + <td>Crypto Wrapper</td> + <td>lib/pk11wrap</td> + <td>pk11func.h, secmod.h, secmodt.h</td> + </tr> + <tr> + <td>pkcs12</td> + <td>Provides functions and types for encoding and decoding PKCS #12 data. PKCS #12 can be used to to encode keys, and certificates, for export or import into other applications.</td> + <td>PKCS #12</td> + <td>lib/pkcs12</td> + <td>pkcs12t.h, pkcs12.h, p12plcy.h, p12.h, p12t.h</td> + </tr> + <tr> + <td>pkcs7</td> + <td>Provides functions and types for encoding and decoding encrypted data in PKCS #7 format. For example, PKCS #7 is used to encrypt certificate data to exchange between applications, or to encrypt S/MIME message data.</td> + <td>PKCS #7</td> + <td>lib/pkcs7</td> + <td>secmime.h, secpkcs7.h, pkcs7t.h</td> + </tr> + <tr> + <td>softoken</td> + <td>Provides a software implementation of a PKCS #11 module.</td> + <td>PKCS #11: implementation</td> + <td>lib/softoken</td> + <td>keydbt.h, keylow.h, keytboth.h, keytlow.h, secpkcs5.h, pkcs11.h, pkcs11f.h, pkcs11p.h, pkcs11t.h, pkcs11u.h</td> + </tr> + <tr> + <td>ssl</td> + <td>Provides an implementation of the SSL protocol using NSS and NSPR.</td> + <td>SSL</td> + <td>lib/ssl</td> + <td>ssl.h, sslerr.h, sslproto.h, preenc.h</td> + </tr> + <tr> + <td>secutil</td> + <td>Provides utility functions and data types used by other libraries. The library supports base-64 encoding/decoding, reader-writer locks, the SECItem data type, DER encoding/decoding, error types and numbers, OID handling, and secure random number generation.</td> + <td>Utility for any Layer</td> + <td>lib/util</td> + <td>base64.h, ciferfam.h, nssb64.h, nssb64t.h, nsslocks.h, nssrwlk.h, nssrwlkt.h, portreg.h, pqgutil.h, secasn1.h, secasn1t.h, seccomon.h, secder.h, secdert.h, secdig.h, secdigt.h, secitem.h, secoid.h, secoidt.h, secport.h, secrng.h, secrngt.h, secerr.h, watcomfx.h</td> + </tr> + </tbody> +</table> + +<h2 id="Naming_Conventions"><a name="Naming">Naming Conventions</a></h2> + +<p>This section describes the rules that (ideally) should be followed for naming and identifying new files, functions, and data types.</p> + +<p><a name="CVSID"> </a></p> + +<h3 id="CVS_ID"><a name="CVSID">CVS ID</a></h3> + +<p>Each file should include a CVS ID string for identification. The preferred format is:</p> + +<pre class="notranslate"> "@(#) $RCSfile: nss-guidelines.html, + v $ $Revision: 48936 $ $Date: 2009-08-11 07:45:57 -0700 (Tue, 11 Aug 2009) $ $Name$" +</pre> + +<p>You can put the string in a comment or in a static char array. Use #ifdef DEBUG to include the array in debug builds only. The advantage of using an array is that you can use strings(1) to pull the ID tags out of a (debug) compiled library. You can even put them in header files; the header files are protected from double inclusion. The only catch is that you have to determine the name of the array.</p> + +<p>Here is an example from lib/base/baset.h:</p> + +<pre class="notranslate"> #ifdef DEBUG + static const char BASET_CVS_ID[] = "@(#) $RCSfile: nss-guidelines.html, + v $ $Revision: 48936 $ $Date: 2009-08-11 07:45:57 -0700 (Tue, 11 Aug 2009) $ $Name$"; + #endif /* DEBUG */ +</pre> + +<p>The difference, between this and Id, is that Id has some useless information (<em>every</em> file is "experimental"), and doesn't have Name. Name is the tag (if any) from which this file was pulled. If you're good with tagging your releases, and then checking out (or exporting!) from the tag for your build, this saves you from messing around with specific files revision numbers.</p> + +<h3 id="Header_Files"><a name="HeaderFiles">Header Files</a></h3> + +<p>We have a preferred naming system for include files. We had been moving towards one, for some time, but for the NSS 3.0 project we finally wrote it down.<br> + </p> + +<table style="width: 90%;"> + <tbody> + <tr> + <th></th> + <th>Data Types</th> + <th>Function Prototypes</th> + </tr> + <tr> + <td>Public</td> + <td>nss____t.h</td> + <td>nss____.h</td> + </tr> + <tr> + <td>Friend (only if required)</td> + <td>nss____tf.h</td> + <td>nss____f.h</td> + </tr> + <tr> + <td>NSS-private</td> + <td>____t.h</td> + <td>____.h</td> + </tr> + <tr> + <td>Module-private</td> + <td>____tm.h</td> + <td>____m.h</td> + </tr> + </tbody> +</table> + +<p>The files on the right include the files to their left; the files in a row include the files directly above them. Header files always include what they need; the files are protected against double inclusion (and even double opening by the compiler).</p> + +<div class="note"> +<p>Note: It's not necessary all eight files exist. Further, this is a simple ideal, and often reality is more complex.</p> +</div> + +<p>We would like to keep names to 8.3, even if we no longer support win16. This usually gives us four characters to identify a module of NSS.</p> + +<p>In short:</p> + +<ol> + <li>Header files for consumption outside NSS start with "nss."</li> + <li>Header files with types have a trailing "t", header files with prototypes don't. "extern" declarations of data also go in the prototypes files.</li> + <li>"Friend" headers are for things that we really wish weren't used by non-NSS code, but which are. Those files have a trailing "f," and their use should be deprecated.</li> + <li>"Module" headers are for things used only within a specific subset of NSS; things which would have been "static" if we had combined separate C source files together. These header files have a trailing "m."<a name="FuncsAndTypes"></a></li> +</ol> + +<h3 id="Functions_and_Types"><a name="FuncsAndTypes">Functions and Types</a></h3> + +<p>There are a number of ways of doing things in our API, as well as naming decisions for functions that can affect the usefulness of our library. If our library is self-consistent with how we accomplish these tasks, it makes it easier for the developer to learn how to use our functions. This section of the document should grow as we develop our API.</p> + +<p>First some general rules. These rules are derived from existing coding practices inside the security library, since consistency is more important than debates about what might look nice.</p> + +<ol> + <li><strong>Public functions</strong> should have the form LAYER_Body(), where LAYER is an all caps prefix for what layer the function lives in, and Body is concatenated English words, where the beginning letter of each word is capitalized (also known as <a href="https://en.wikipedia.org/wiki/Camel_case">CamelCase</a>). For Example: LAYER_CapitalizedEnglishWords() or CERT_DestroyCertificate().</li> + <li><strong>Data types</strong> and typdefs should have the Form LAYERBody, with the same definitions for LAYER as public functions, and Body in camel case English words. For example: LAYERCapitalizedEnglishWords or SECKEYPrivateKey.</li> + <li><strong>Structures</strong> should have the same name as their typedefs, with the string Str added to the end. For example LAYERCapitalizedEnglishWordsStr or SECKEYPrivateKeyStr.</li> + <li><strong>Private functions</strong> should have the form layer_Body(), where layer is the all lower case prefix for what layer the function lives in, and Body is camel case English words. Private functions include functions that may be "public" in a C sense, but are not exported out of the layer. For example: layer_CapitalizedEnglishWords() or pk11_GenerateKeyID().</li> + <li><strong>Public macros</strong> should have the form LAYER_BODY(), where LAYER is an all caps prefix for what layer the macro lives in, and BODY is English words, all in upper case, separated by underscores. For example: LAYER_UPPER_CASE_ENGLISH_WORDS() or DER_CONVERT_BIT_STRING().</li> + <li><strong>Structure members</strong> for exposed data structures should have the form capitalizedEnglishWords (the first letter uncapitalized). For example: PK11RSAGenParamsStr.<strong>keySizeInBits</strong></li> + <li>For <strong>members of enums</strong>, our current API has no standard (typedefs for enums should follow the Data types standard). There seem to be three reasonable options: + <ol> + <li>Enum members have the same standard as exposed data structure members.</li> + <li>Enum members have the same standard as data types.</li> + <li>Enum members have the same standard as public macros (minus the '()' of course).</li> + </ol> + Options 2 and 3 are the more preferred options. Option 1, currently the most common used for enums, actually creates namespace pollution.</li> + <li><strong>Callback functions</strong>, and functions used in function tables, should have a typedef used to define the complete signature of the given function. Function typedefs should have the following format: LAYERBody(), with the same definitions for LAYER as public functions, and Body is camel case English words. For example: LAYERCapitalizedEnglishWords or SECKEYPrivateKey.<a name="Opaque"></a></li> +</ol> + +<h2 id="Opaque_Data_Structures"><a name="Opaque">Opaque Data Structures</a></h2> + +<p>There are many data structures in the security library whose definition is effectively private, to the portion of the security library that defines and operates on those data structures. External code does not have access to these definitions. The goal here is to increase the opaqueness of these structures. This will allow us to modify the size, definition, and format of these data structures in future releases, without interfering with the operation of existing applications that use the security library.</p> + +<p>The first task is to ensure the data structure definition lives in a private header file, while its declaration lives in the public. The current standard in the security library is to typedef the data structure name, the easiest way to accomplish this would be to add the typedef to the public header file.</p> + +<p>For example, for the structure SECMyOpaqueData you would add:</p> + +<pre class="notranslate"> typedef struct SECMyOpaqueDataStr SECMyOpaqueData;</pre> + +<p>and add the actual structure definition to the private header file. In this same example:</p> + +<pre class="notranslate"> struct SECMyOpaqueDataStr { + unsigned long myPrivateData1; + unsigned long myPrivateData2; + char *myName; + };</pre> + +<p>the second task is to determine if individual data fields, within the data structure, are part of the API. One example may be the peerCert field, in an SSL data structure. Accessor functions, for these data elements, should be added to the API.</p> + +<p>There can be legitimate exceptions to this 'make everything opaque' rule. For example, in container structures, such as SECItem, or maybe linked list data structures. These data structures need to be examined on a case by case basis, to determine if</p> + +<ol> + <li>They are truly stable and will not change in future release</li> + <li>It is necessary for the callers of the API to know the size of these structures, as they may allocate new ones and pass them down.<a name="Arenas"></a></li> +</ol> + +<h2 id="Memory_Allocation_with_Arenas"><a name="Arenas">Memory Allocation with Arenas</a></h2> + +<p>This section discusses memory allocation using arenas. NSS code uses arenas, and this section explains some of the improvements we are making.</p> + +<p>NSS makes use of traditional memory allocation functions, wrapping NSPR's PR_Alloc in a util function called PORT_Alloc. Though NSS makes further use of an NSPR memory-allocation facility which uses 'Arenas' and 'ArenaPools'. This was added via javascript; a fast, lightweight, non-thread-safe (though 'free-threaded') implementation.</p> + +<p>Experience shows that users of the security library expect arenas to be threadsafe, so we added locking, and other useful changes.</p> + +<ul> + <li>There has always been confusion as to the difference between Arenas and ArenaPools. We will simplify down to one logical 'memory bucket' type. Consensus called this type NSSArena.</li> + <li>We have lots of code which takes an optional arena pointer, using the arena if there is one, or alternatively the heap if there isn't. Therefore, we wrap that logic into the allocators. Knowing what to then free does takes discipline not to leak memory, but it simplifies things a lot. Also, the implementation of free works (doesn't crash), no matter if from an arena, or the heap, as long as from our allocators. Combined with purify, this also helps us catch cases where things being allocated by one allocator are freed by another, which is a common Windows pitfall.</li> + <li>The security code often wants to be sure to zero memory, when it's being freed; we'll add it to the primitives to deal with.</li> +</ul> + +<p>The ARENA_THREADMARK preprocessor definition (default in debug builds), and code it encloses, will add some checking for the following situation:</p> + +<ol> + <li>Thread A marks the arena, and allocates some memory from it.</li> + <li>Thread B allocates some memory from the arena.</li> + <li>Thread A releases the arena back to the mark.</li> + <li>Thread B now finds itself with a pointer to released data.</li> + <li>Some thread -- doesn't matter which -- allocates some data from the arena; this may overlap the chunk thread B has.</li> + <li>Boom!</li> +</ol> + +<p>Threadmark code notes the thread ID, whenever an arena is marked, and disallows any allocations or marks by any other thread. (Frees are allowed.)</p> + +<p>The ARENA_DESTRUCTOR_LIST preprocessor definition, and the code it encloses, are an effort to make the following work together:</p> + +<ol> + <li>Arenas, letting you allocate stuff and then removing them all at once</li> + <li>Lazy creation of pure-memory objects from ASN.1 blobs, for example use of NSSPKIXCertificate doesn't drag all the code in for all constituent objects, unless they're actually being used</li> + <li>Our agressive pointer-tracking facility</li> +</ol> + +<p>All these are useful, but they don't combine well. Now some of the pointer-tracking pressure has eased off, we can drop its use when it becomes too difficult.</p> + +<p>Many routines are defined to take an NSSArena *arenaOpt argument. This means if an arena is specified (non-null), it is used, otherwise (null) the routine uses the heap. You can think of the heap as a default arena you can't destroy.<a name="Errors"></a></p> + +<h2 id="Error_Handling"><a name="Errors">Error Handling</a></h2> + +<p>NSS 3.0 introduces the concept of an error stack. When something goes wrong, the call stack unwinds, with routines returning an error indication. Each level which flags a problem, adds its own error number to the stack. At the bottom of the stack is the fundamental error, for example: file not found, and on top is an error precisely relating to what you are doing.</p> + +<div class="note"> +<p>Note: Error stacks are vertical, and never horizontal. If multiple things go wrong simultaneously, and you want to report them all, use another mechanism.</p> +</div> + +<p>Errors, though not integers, are done as external constants, instead of preprocessor definitions. This is so any additional error doesn't trigger the entire tree to rebuild. Likewise, the external references to errors are made in the prototypes files, with the functions which can return them. Error stacks are thread-private.</p> + +<p>The usual semantic is that public routines clear the stack first, private routines don't. Usually, every public routine has a private counterpart, and the implementation of the public routine looks like this:</p> + +<pre class="notranslate"> NSSImplement rv * + NSSType_Method + ( + NSSType *t, + NSSFoo *arg1, + NSSBar *arg2 + ) + { + nss_ClearErrorStack(); + + #ifdef DEBUG + if( !nssFoo_verifyPointer(arg1) ) return (rv *)NULL; + if( !nssBar_verifyPointer(arg2) ) return (rv *)NULL; + #endif /* DEBUG */ + + return nssType_Method(t, arg1, arg2); + } +</pre> + +<p>Aside from error cases, all documented entry points should check pointers in a debug, wherever possible. Pointers to user-supplied buffers, and templates, should be checked against NULL. Pointers to context-style functions should be checked using special debug macros. These macros only define code when DEBUG is turned on, providing a way for systems to register, deregister, and check valid pointers.</p> + +<p>SECPORT_DECL_PTR_CLASS(<em>classname</em>,<em> size</em>) - declare a class of pointers (labelled<em> classname</em>) this object file needs to check. This class is local only to this object file.<em> Size</em> is the expected number of pointers of type<em> classname</em>.</p> + +<p>SECPORT_DECL_GLOBAL_PTR_CLASS(<em>classname</em>,<em> size</em>) - same as above except <em>classname</em> can be used in other object files.</p> + +<p>SECPORT_ADD_POINTER(<em>classname</em>, <em>pointer</em>) - Add <em>pointer</em> as a valid pointer for class<em>classname</em>. This is usually called by a Create function.</p> + +<p>SECPORT_VERIFY_POINTER(<em>classname</em>,<em> pointer</em>,<em> secError</em>,<em> returnValue</em>)- Check if a given <em>pointer</em> really belongs to the requested class. If it doesn't set the error<em> secError</em> and return the value<em> returnValue</em>.</p> + +<p>SECPORT_REMOVE_POINTER(<em>classname</em>,<em> pointer</em>) - Remove a pointer from the valid list. Usually called by a destroy function.</p> + +<p>Finally, error logging should be added an documented when debug is turned on. Interfaces for these are in NSPR.</p> + +<p><a name="ThreadSafety"> </a></p> + +<h2 id="Thread_Safety"><a name="ThreadSafety">Thread Safety</a></h2> + +<p>Code developed using the NSS APIs needs to make use of thread safety features. First to examine is <strong>object creation</strong> and <strong>deletion</strong>.</p> + +<p>Object creation is usually not a problem. No other threads have access to allocated memory just created. Exceptions to this include objects which are created on the fly, or as global objects.</p> + +<p>Deletion, on the other hand, may be trickier. Threads may be referencing the object at the same time a another thread tries to delete it. The semantics depend on the way the application uses the object, also how and when the application wants to destroy it. For some data structures, this problem can be removed by protected reference counting. The object does not disappear until all users have released it.</p> + +<p>Next we examine <strong>global data</strong>, including function local static structures. Just initialized, and never to be changed global data, does not need to protection from mutexes. We should also determine if global data should be moved to a session context (see <a href="#SessionContext">session context</a> and <a href="#GlobalEffects">global effects </a>below).</p> + +<div class="note"> +<p>Note: Permanent objects, like data in files, databases, tokens, etc. should be treated as global data. Global data which is changed rarely, should be protected by reader/writer locks.</p> +</div> + +<p>Aside from global data,<strong> allocated data</strong> that gets modified needs to be examined. Data that's just been allocated, within a function, is safe to modify. No other code has access to that data pointer. Once that data pointer is made visible to the 'outside', either by returning the pointer, or attaching the pointer to an existing visible data structure, access to the data should be protected. Data structures that are read only, like SECKEYPublicKeys or PK11SymKeys, need not be protected.</p> + +<p><a name="SessionContext">Many</a> of the data structures in the security code contain some sort of <strong>session state</strong> or <strong>session context</strong>. These data structures may be accessed without data protection as long as:</p> + +<ol> + <li>This semantic is documented in the functions which use these data structures.</li> + <li>These data structures are used for single streams, and not reused.</li> +</ol> + +<p>Examples of these data in structures may include things like the PKCS #7 ContentInfo structure. Example code should be included in the documentation, to show how to safely use these data objects.</p> + +<p>A major type of global and allocated data that should be examined is various <strong>data on lists</strong>. Queued, linked, and hash table stored objects should be examined with special care. Make sure adding, removing, accessing, and destroying these objects are all safe operations.</p> + +<p>There are a number of strategies, and entire books about how to safely access data on lists. Some simple strategies and their issues:</p> + +<ul> + <li><strong>Use hash tables:</strong> Hash table lookups are usually quite fast, limiting the contention on the lock. This is best for large lists of objects. Be sure to calculate the hash value first, then only lock over the hash table value itself. Be sure to increment the reference count, on the returned object, before unlocking. Examples of hash tables can be found in security/nss/lib/certdb/pcertdb.c</li> + <li><strong>Lock over the entire search: </strong>For small linked listed, queues, or arrays, you can lock over the entire search. This strategy is best when lists are short, or even better if lists are relatively read only (they don't change very often) and using reader/writer locks.</li> + <li><strong>Copy the linked list: </strong>Instead of operating on the global list, you can copy the list. This also requires small lists.</li> + <li><strong>Lock over single element with retry:</strong> For medium sized lists, you can secure the reference to each element, complete a test, then detect if the given element has been removed from the list. In the case of removal, the search can either be either restarted, or terminated. This method is a more complicated than the other methods: requiring the calling of search code tolerant to often repeated element inspection.</li> + <li>Examples of the previous strategies can be found in <a href="https://searchfox.org/mozilla-central/source/security/nss/lib/pk11wrap/pk11slot.c">security/nss/lib/pk11wrap/pk11slot.c.</a></li> +</ul> + +<p>Where possible use the NSPR list primitives. From these you can even set up SECUtil style thread-safe lists that use some combination of the above strategies.</p> + +<p><a name="ServiceFunctions"></a>In order to be fully thread safe, your code must understand the semantics of the <strong>service functions </strong>it calls, and whether they are thread safe. For now, we should internally document which service functions we call, and how we expect them to behave in a threaded environment.</p> + +<p><a name="GlobalEffects"></a>Finally, from an API point of view, we should examine functions which have <strong>global effects</strong>. Functions like XXX_SetDefaultYYY(); should not operate on global data, particularly if they may be called multiple times, to provide different semantics for different operations. For example, the following should be avoided :</p> + +<ul> + <li>SEC_SetKey(keyForOperation);<br> + SEC_Encrypt(Data,Length);</li> +</ul> + +<p>Instead, a context handle should be created, and the SEC_SetKey() function, above, made on that handle. Fortunately most of the existing API has the correct semantics.</p> + +<p>The exception to this global effects rule may be functions which set global state for an application at initialization time.</p> + +<p><a name="Design"> </a></p> + +<h2 id="MethodsFunctions_Design"><a name="Design">Methods/Functions Design</a></h2> + +<p><a name="Design"> </a><a name="InitShutdown"> </a></p> + +<h3 id="Init_Shutdown_Functions"><a name="InitShutdown">Init, Shutdown Functions</a></h3> + +<p>If a layer has some global initialization tasks, which need to be completed before the layer can be used, that layer should supply an initialization function of the form LAYER_Init(). If an initialization function is supplied, a corresponding LAYER_Shutdown() function should also be supplied. LAYER_INIT() should increment a count of the number of times it is called, and LAYER_Shutdown() should decrement that count, and shutdown when the count reaches '0'.</p> + +<p><a name="OpenClose"> </a></p> + +<h3 id="Open_Close_Functions"><a name="OpenClose">Open, Close Functions</a></h3> + +<p>Open functions should have a corresponding close function. Open and close function are not reference counted, like init and shutdown functions.</p> + +<p><a name="CreateFuncs"> </a></p> + +<h3 id="Creation_Functions"><a name="CreateFuncs">Creation Functions</a></h3> + +<p>In general, data objects should all have functions which create them. These functions should have the form LAYER_CreateDataType[FromDataType](). For instance generating a new key would change from PK11_KeyGen() to PK11_CreateSymKey().</p> + +<p><a name="DestroyFuncs"> </a></p> + +<h3 id="Destruction_Functions"><a name="DestroyFuncs">Destruction Functions</a></h3> + +<p>In the security library we have 3 different ways of saying 'get rid of this data object': Free, Delete, and Destroy.</p> + +<p>It turns out there are several different semantics of getting rid of a data object too:</p> + +<ol> + <li>decrement the reference count, and when the object goes to '0' free/delete/destroy it</li> + <li>destroy it right now, this very instance, not matter what</li> + <li>make any permanent objects associated with this data object go away</li> + <li>a combination of 1 and 3, or 2 and 3</li> +</ol> + +<p>Unfortunately, within the security library Free, Delete, and Destroy are all used interchangeably, for all sorts of object destruction. For instance, CERT_DestroyCertificate() is type 1, PK11_DestroySlot() is type 2, and PK11_DestroyTokenObject() is type 3.</p> + +<div class="note"> +<p>Note: In non-reference counted functions, types 1 and 2 are the same.</p> +</div> + +<p>We are standardizing on the following definitions:</p> + +<p>Destroy - means #1 for reference counted objects, #2 for non reference counted objects.</p> + +<p>Delete - means #3.</p> + +<p>This has the advantage of<em> not</em> surfacing the reference countedness of a data object. If you own a pointer to an object, you must always destroy it. There is no way to destroy an object by bypassing it's reference count. Also, the signature of public destruction functions do not have the 'freeit' PRBool, since the structures being freed are opaque.</p> + +<p><a name="DupCopy"> </a></p> + +<h3 id="Dup_Copy_and_Reference_Functions"><a name="DupCopy">Dup, Copy, and Reference Functions</a></h3> + +<p>Functions that return a new reference or copy of a given object should have the form LAYER_DupDataType(). For instance, CERT_DupCertifiate() will remain the same, but PK11_ReferenceSlot() will become PK11_DupSlot(), and PK11_CloneContext() will become PK11_DupContext().</p> + +<p><a name="SearchFuncs"> </a></p> + +<h3 id="Search_Functions"><a name="SearchFuncs">Search Functions</a></h3> + +<p>There are several different kinds of searches done via the security library. The first is a search for exactly one object, meeting a given criteria. These types of searches include CERT_FindCertByDERCert(), PK11_FindAnyCertFromDERCert(), PK11_FindKeyByCert(), PK11_GetBestSlot(). These functions should all have the form LAYER_FindDataType[ByDataType]().</p> + +<p>The second kind of search, looks for all the objects that match a given criteria. These functions operate on a variety of levels. Some return allocated arrays of data, some return linked lists of data, others use callbacks to return data elements one at a time. Unfortunately, there are good reasons to maintain all these types. So here are some guidelines to make them more manageable:</p> + +<p>All callback operating search functions should be in the low level of the API, if exposed at all. Developers dealing with SSL and PKCS #7 layers should not have to see any of these functions. These functions should have the form LAYER_TraverseStorageObjectOrList().</p> + +<p>List and Array returning functions should be available at the higher layers of the API, most wrapping LAYER_Traverse() functions. They should have the form LAYER_LookupDataType{List|Array}[ByDataType]().</p> + +<ul> +</ul> + +<p><a name="Accessors"> </a></p> + +<h3 id="Accesssor_Functions"><a name="Accessors">Accesssor Functions</a></h3> + +<p>Accessor Functions should take the following formats:</p> + +<p>LAYER_DataTypeGetElement() -- Get a specific element of a data structure.<br> + LAYER_DataTypeSetElement() -- Set a specific element of a data structure.<br> + LAYER_DataTypeExtractDataType() -- Get a pointer to the second data type which was derived for elements of the first data type.</p> + +<p>Examples: PK11_SlotGetSeries(), PK11_SymKeyGetSeries(), CERT_CertificateExtractPublicKey()</p> + +<p><a name="Params"> </a></p> + +<h3 id="Parameter_ordering"><a name="Params">Parameter ordering</a></h3> + +<p>Most functions will have a 'Natural' ordering for parameters. To keep consistency we should have some minimal parameter consistency. For most functions, they can be seen as operating on a particular object. This object, that the function is operating on, should come first. For instance, in most SSL functions this is the NSPR Socket, or the SSL Socket structure: Update, final, encrypt, decrypt type functions operating on their state contexts, etc.</p> + +<p>All encrypt and decrypt functions, which return data inline, should have a consistent signature:</p> + +<pre class="notranslate">SECStatus MY_FunctionName(MyContext *<em>context</em>, + unsigned char *<em>outBuf</em>, + SECBufferLen *<em>outLen</em>, + SECBufferLen<em>maxOutLength</em>, + unsigned char *<em>inBuf</em>, + SECBufferLen<em>inLen</em>) +</pre> + +<p>Encrypt and decrypt like functions which have different properties, additional parameters, callbacks, etc., should insert their additional parameters between the context (first parameter) and the output buffer.</p> + +<p>All hashing update, MACing update, and encrypt/decrypt functions which act like filters should have a consistent signature:</p> + +<pre class="notranslate">SECStatus PK11_DigestOp(PK11Context *<em>context</em>, + unsigned char *<em>inBuf</em>, + SECBufferLen<em>inLen</em>) +</pre> + +<p>Functions like these which have different properties, for example, additional parameters, callbacks, etc., should insert their additional parameters between the context (first parameter) and the input buffer.</p> + +<p>Within your layer, multiple similar functions should have consistent parameter order.<a name="Callbacks"></a></p> + +<h3 id="Callback_Functions"><a name="Callbacks"> Callback Functions</a></h3> + +<p><a name="Callbacks"> </a> Callback functions should all contain an opaque parameter (void *) as their first argument, passed by the original caller. Callbacks which are set, like SSL callbacks, should have defaults which provide generally useful semantics.</p> diff --git a/files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html b/files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html new file mode 100644 index 0000000000..125fe4bf2f --- /dev/null +++ b/files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html @@ -0,0 +1,214 @@ +--- +title: NSS 開発者向けチュートリアル +slug: Mozilla/Projects/NSS/NSS_Developer_Tutorial +translation_of: Mozilla/Projects/NSS/NSS_Developer_Tutorial +--- +<div title="Page 1"> +<div> +<div> +<div> +<h2 id="NSS_Coding_Style">NSS Coding Style</h2> + +<h3 id="Formatting">Formatting</h3> + +<p><strong>Line length</strong> should not exceed 80 characters.</p> + +<p><strong>Indentation level</strong> is 4.</p> + +<p><strong>Tabs</strong> are used heavily in many NSS source files. Try to stay consistent when you modify existing code. The proper use of tabs has often been confusing for new NSS developers, so in <code>nss/lib/ssl</code>, we're gradually removing the use of tabs.</p> + +<p><strong>Curly braces</strong>: both of the following styles are allowed:</p> + +<pre class="brush: cpp notranslate">if (condition) { + action1(); +} else { + action2(); +}</pre> + +<p>Or:</p> + +<pre class="brush: cpp notranslate">if (condition) +{ + action1(); +} +else +{ + action2(); +}</pre> + +<p>The former style is more common. When modifying existing code, try to stay consistent. In new code, prefer the former style, as it conserves vertical space.</p> + +<p>When a block of code consists of a single statement, NSS doesn’t require curly braces, so both of these examples are fine:</p> + +<pre class="brush: cpp notranslate">if (condition) { + action(); +} +</pre> +</div> +</div> +</div> +</div> + +<div title="Page 2"> +<div> +<div> +<div> +<p>Or:</p> + +<pre class="brush: cpp notranslate">if (condition) + action();</pre> + +<p>although the use of curly braces is more common.</p> + +<p><strong>Multiple-line comments</strong> should be formatted as follows:</p> + +<pre class="brush: cpp notranslate">/* + * Line1 + * Line2 + */ </pre> + +<p>or</p> + +<pre class="brush: cpp notranslate">/* +** Line 1 +** Line 2 +*/ +</pre> + +<p>The following styles are also common, because they conserve vertical space:</p> + +<pre class="brush: cpp notranslate">/* Line1 + * Line2 + */</pre> + +<p>or</p> + +<pre class="brush: cpp notranslate">/* Line1 +** Line2 +*/</pre> + +<p>or</p> + +<pre class="brush: cpp notranslate">/* Line1 + * Line2 */</pre> + +<h3 id="Naming">Naming</h3> + +<p>Public functions are named <code>FOO_DoOneAction</code>.</p> + +<p>Global, but unexported functions, are usually named <code>foo_DoOneAction</code>.</p> + +<p>Variable, and function parameter names, always start with a lowercase letter. The most common style is <code>fooBarBaz</code>, although <code>foobarbaz</code> and <code>foo_bar_baz</code> are also used.</p> + +<h3 id="Miscellaneous">Miscellaneous</h3> + +<p><strong>goto</strong> can be used, to simplify resource deallocation, before returning from a function.</p> + +<p>A data buffer is usually represented as:</p> +</div> +</div> +</div> +</div> + +<div title="Page 3"> +<div> +<div> +<div> +<pre class="brush: cpp notranslate">unsigned char *data; +unsigned int len;</pre> + +<p>The buffer pointer is <code>unsigned char *</code>, as opposed to <code>void *</code>, so we can perform pointer arithmetic without casting. Use <code>char *</code> only if the data is interpreted as text characters.</p> + +<p>For historical reasons, the buffer length is <code>unsigned int</code>, as opposed to <code>size_t</code>. Unfortunately, this can be a source of integer overflow bugs on 64-bit systems.</p> + +<h2 id="C_Features">C Features</h2> + +<p>NSS requires C99. However, not all features from C99 are equally available.</p> + +<ul> + <li>Variables can be declared, at the point they are first used.</li> + <li>The <code>inline</code> keyword can be used.</li> + <li>Variadic macro arguments are permitted, but their use should be limited to using <code>__VA_ARGS__</code>.</li> + <li>The exact-width integer types in NSPR should be used, in preference to those declared in <code><stdint.h></code> (which will be used by NSPR in the future).</li> + <li>Universal character names are not permitted, as are wide character types (<code>char16_t</code> and <code>char32_t</code>). NSS source should only include ASCII text. Escape non-printing characters (with <code>\x</code> if there is no special escape such as \r, \n, and \t) and avoid defining string literals that use non-ASCII characters.</li> + <li>One line comments starting with <code>//</code> are permitted.</li> +</ul> + +<p>Check with nss-dev@ before using a language feature not already used, if you are uncertain. Please update this list if you do.</p> + +<p>These restrictions are different for C++ unit tests, which can use most C++11 features. The <a href="/en-US/docs/Using_CXX_in_Mozilla_code">Mozilla C++ language features guide</a>, and the <a href="https://chromium-cpp.appspot.com/">Chromium C++ usage guide</a>, list C++ features that are known to be widely available and compatible. You should limit features to those that appear in both guides. Ask on nss-dev@ if you think this is restrictive, or if you wish to prohibit a specific feature.</p> + +<h2 id="NSS_C_ABI_backward_compatibility">NSS C ABI backward compatibility</h2> + +<h3 id="Functions">Functions</h3> + +<p>Exported functions cannot be removed.</p> + +<p>The function prototype of an exported function, cannot be changed, with these exceptions:</p> + +<ul> + <li> + <p>A <code>Foo *</code> parameter can be changed to <code>const Foo *</code>. This change is always safe.</p> + </li> + <li> + <p>Sometimes an <code>int</code> parameter can be changed to <code>unsigned int</code>, or an <code>int *</code> parameter can be changed to <code>unsigned int *</code>. Whether such a change is safe needs to be reviewed on a case-by-case basis.</p> + </li> +</ul> + +<h2 id="Types">Types</h2> + +<h3 id="Structs">Structs</h3> + +<p>Members of an exported struct, cannot be reordered or removed.</p> + +<p>Under certain circumstances, it is safe to add new members to an exported struct at the end.</p> + +<p>Opaque structs give us complete freedom to change them, but require applications to call NSS functions, to allocate and free them.</p> + +<h3 id="Enums">Enums</h3> + +<p>The numeric values of public enumerators cannot be changed. To stress this fact, we often explicitly assign numeric values to enumerators, rather than relying on the values assigned by the compiler.</p> + +<h3 id="Symbol_export_lists">Symbol export lists</h3> + +<p>The <code>manifest.mn</code> file, in a directory in the NSS source tree, specifies which headers are public, and which headers are private.</p> + +<p>Public headers are in the <code>EXPORTS</code> variable.</p> + +<p>Private headers,which may be included by files in other directories, are in the <code>PRIVATE_EXPORTS</code> variable.</p> +</div> +</div> +</div> +</div> + +<div title="Page 4"> +<div> +<div> +<div> +<p>Private headers, that are only included by files in the same directory, are not listed in either variable.</p> + +<p>Only functions listed in the symbol export lists (<code>nss.def</code>, <code>ssl.def</code>, <code>smime.def</code>, etc.) are truly public functions. Unfortunately, public headers may declare private functions, for historical reasons. The symbol export lists are the authoritative source of public functions.</p> + +<h3 id="Behavioral_changes">Behavioral changes</h3> + +<p><strong>Bug/quirk compatible</strong>: Occasionally we cannot fix a bug, because applications may depend on the buggy behavior. We would need to add a new function to provide the desired behavior.</p> + +<p>Similarly, <strong>new options</strong> often need to be disabled by default.</p> + +<h2 id="NSS_reviewfeature_approval_process">NSS review/feature approval process</h2> + +<p>NSS doesn’t have 'super reviewers'. We wish to increase the number of NSS developers, who have broad understanding of NSS.</p> + +<p>One review is usually enough for the review to pass. For critical code reviews, such as a patch release of a stable branch, two reviews may be more reasonable.</p> + +<p>For new features, especially those that appear controversial, try to find a reviewer from a different company or organization than your own, to avoid any perceptions of bias.</p> + +<h2 id="Update_NSS_in_mozilla-inbound_and_mozilla-central">Update NSS in mozilla-inbound and mozilla-central</h2> + +<p>The procedure is documented at <a href="https://developer.mozilla.org/en-US/docs/Updating_NSPR_or_NSS_in_mozilla-central">https://developer.mozilla.org/en-US/docs/Updating_NSPR_or_NSS_in_mozilla-central. </a></p> + +<p>If it is necessary to apply private patches, please document them in <code><tree>/security/patches/README</code>.</p> +</div> +</div> +</div> +</div> diff --git a/files/ja/mozilla/projects/nss/nss_faq/index.html b/files/ja/mozilla/projects/nss/nss_faq/index.html new file mode 100644 index 0000000000..f1ec76a4c4 --- /dev/null +++ b/files/ja/mozilla/projects/nss/nss_faq/index.html @@ -0,0 +1,79 @@ +--- +title: NSS FAQ +slug: Mozilla/Projects/NSS/NSS_FAQ +tags: + - NSS +translation_of: Mozilla/Projects/NSS/FAQ +--- +<h3 id=".E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E8.B3.AA.E5.95.8F" name=".E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E8.B3.AA.E5.95.8F"> 一般的な質問 </h3> +<h3 id="Network_Security_Services_.28NSS.29_.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="Network_Security_Services_.28NSS.29_.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> Network Security Services (NSS) とは何ですか? </h3> +<p>NSS とは、セキュリティ機能が利用できるクライアント/サーバアプリケーションのクロスプラットフォーム開発をサポートするようにデザインされたライブラリ、API、ユーティリティ、そして参考文献のセットです。NSS では、Netscape や他の会社で利用されている暗号ライブラリの完全にオープンソースな実装が提供されます。NSS が利用されている製品の例としては、Netscape 6 ブラウザ、iPlanet E-Commerce Solutions のサーバ製品、Gateway Connected Touch Pad with Instant AOL などが挙げられます。 +</p><p>NSS の概要については、<a href="ja/Overview_of_NSS">NSS 概観</a> をご覧ください。オープンソース NSS プロジェクトの詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/">NSS プロジェクトのページ</a> をご覧ください。 +</p> +<h3 id="NSS_.E3.81.A7.E3.81.AF.E4.BD.95.E3.81.8C.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E7.A7.81.E3.81.8C.E4.BD.BF.E3.81.A3.E3.81.A6.E3.81.84.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.A7.E5.BD.B9.E3.81.AB.E7.AB.8B.E3.81.A4.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.A7.E3.81.AF.E4.BD.95.E3.81.8C.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E7.A7.81.E3.81.8C.E4.BD.BF.E3.81.A3.E3.81.A6.E3.81.84.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.A7.E5.BD.B9.E3.81.AB.E7.AB.8B.E3.81.A4.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> NSS では何ができるのですか? 私が使っているアプリケーションで役に立つのでしょうか? </h3> +<p>あなたが使っているアプリケーションに、SSL、S/MIME、その他のインターネットセキュリティスタンダードの機能を加えたい場合 Netscape Security Services (NSS) を使うことができます。NSS は SSL および TSL のすべてのバージョンをサポートしているので、すでに SSL をサポートしている多数のクライアントやサーバと通信する必要があるアプリケーションにはまさにうってつけといえます。 +</p><p>NSS に PKCS #11 インターフェースが含まれているということは、あなたのアプリケーションがサーバ上の <a href="#.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.82.A2.E3.82.AF.E3.82.BB.E3.83.A9.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F">ハードウェアアクセラレータ</a> や二因子認証 (two-factor authentication) のための <a href="#NSS_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.A6.E3.82.B9.E3.83.9E.E3.83.BC.E3.83.88.E3.82.AB.E3.83.BC.E3.83.89.E3.82.92.E7.A7.81.E3.81.AE.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F">スマートカード</a> を利用できるということを意味しています。 +</p> +<h4 id="NSS_.E3.81.AF_OpenSSL_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF_OpenSSL_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は OpenSSL と比べてどうですか? </h4> +<p><a class="external" href="http://www.openssl.org/">OpenSSL</a> はサーバサイド SSL、TLS、および汎用暗号化機能ライブラリを実装するオープンソースプロジェクトですが、PKCS #11 をサポートしていません。OpenSSL は Eric A. Young と Tim J. Hudson によって開発された SSLeay ライブラリに基づいており、Apache サーバで幅広く使用されています。Apache スタイルのライセンスが付与されています。 +</p><p>NSS は <a href="ja/PKCS11_FAQ">PKCS #11</a> や S/MIME をはじめとして、サーバおよびクライアント両方のアプリケーションをサポートしています。できるだけ多くの用途を可能にするため、NSS は <a class="external" href="http://www.mozilla-japan.org/MPL/">Mozilla Public License</a> と <a class="external" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a> の両方でライセンスされています。MPL 条項下または GPL 条項下のどちらでライセンスするかを選択することができます。 +</p> +<h4 id="NSS_.E3.81.AF_SSLRef_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF_SSLRef_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は SSLRef と比べてどうですか? </h4> +<p>SSLRef は初期の SSL プロトコルのレファレンス実装で、フィックスされることのないバグがあり、TLS や新しい 56-bit エクスポート暗号スイートをサポートしていません。さらに SSLRef は PKCS#1 への Bleichenbacher 攻撃に対する修正が施されていません。 +</p><p>Netscape はもう SSLRef を管理していませんし、利用できないようにしています。SSLRef は SSL 実装の一例としてビルドされたものであり、製品としてのアプリケーションのためにビルドされたものではありません。 +</p><p>NSS は商業的な開発者によって利用されるような目的からデザインされたもので、Netscape や他の会社から出されている多くのクライアント/サーバ製品で利用されているセキュリティ機能をサポートするために利用されているのと同じアーキテクチャを使用した完全なソフトウェア開発キットを備えています。 +</p> +<h4 id=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E3.80.81.E9.96.8B.E7.99.BA.E7.92.B0.E5.A2.83.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E3.80.81.E9.96.8B.E7.99.BA.E7.92.B0.E5.A2.83.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> どのようなプラットフォーム、開発環境がサポートされているのでしょう? </h4> +<div class="warning">このセクションの内容は古くなっています</div> +<p>iPlanet E-Commerce Solutions は NSS 3.1 が 18のプラットフォームで利用できることを確認しています。その中には、AIX 4.3、HP-UX 11.0、Red Hat Linux 6.0、Solaris (2.6 以降) 、Windows NT (4.0 以降) 、そして Windows 2000 が含まれており、他の貢献者がさらに多くのプラットフォームで利用できるよう作業を進めています。NSS 3.1 API には C または C++ 開発環境が必要です。 +</p><p>最新の NSS リリースノートやプラットフォームに関する詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/#Info">プロジェクト情報</a> をご覧ください。 +</p> +<h4 id=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E6.9A.97.E5.8F.B7.E5.8C.96.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E6.9A.97.E5.8F.B7.E5.8C.96.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> どのような暗号化スタンダードがサポートされているのでしょう? </h4> +<p>NSS は SSL <a href="ja/Glossary#SSL">SSL v2/v3</a>、<a href="ja/Glossary#TLS">TLS</a>、<a href="ja/Glossary#PKCS_.235">PKCS #5</a>、<a href="ja/Glossary#PKCS_.237">PKCS #7</a>、<a href="ja/Glossary#PKCS_.2311">PKCS #11</a>、<a href="ja/Glossary#PKCS_.2312">PKCS #12</a>、<a href="ja/Glossary#S.2FMIME">S/MIME</a>、そして <a href="ja/Glossary#X.509">X.509 v3</a> 証明書をサポートしています。詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">Encryption Technologies Available in NSS 3.11</a> をご覧ください。 +</p> +<h4 id="NSS_.E3.81.A8_PSM_.E3.81.A8.E3.81.AE.E9.96.A2.E4.BF.82.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.82.82.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name="NSS_.E3.81.A8_PSM_.E3.81.A8.E3.81.AE.E9.96.A2.E4.BF.82.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.82.82.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> NSS と PSM との関係はどのようなものでしょう? </h4> +<p>Personal Security Manager (PSM) は NSS の上にビルドされており、セキュリティ機能を備えたアプリケーションのクロスプラットフォーム開発をサポートするようにデザインされたライブラリとデーモンから成っています。PSM バイナリーでは、アプリケーションのために暗号処理を行うクライアントモジュールが提供されます。Netscape Personal Security Manager は、Netscape 6 や Gateway Connected Touch Pad with Instant AOL とともに公開されており、Communicagotr 4.7x でも利用できるようになっています。 +</p><p>PSM オープンソースプロジェクトについての詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/psm/">Personal Security Manager</a> をご覧ください。 +</p> +<h4 id=".E3.82.BD.E3.83.BC.E3.82.B9.E3.81.AF.E3.81.A9.E3.81.93.E3.81.A7.E6.89.8B.E3.81.AB.E5.85.A5.E3.82.8C.E3.82.89.E3.82.8C.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name=".E3.82.BD.E3.83.BC.E3.82.B9.E3.81.AF.E3.81.A9.E3.81.93.E3.81.A7.E6.89.8B.E3.81.AB.E5.85.A5.E3.82.8C.E3.82.89.E3.82.8C.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> ソースはどこで手に入れられますか? </h4> +<div class="warning">このセクションの内容は古くなっています</div> +<p>NSS 3.1 ソースのチェックアウトおよびビルド方法については、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/buildnss_31.html">NSS 3.1 ビルドガイド</a> をご覧ください。 +</p><p>ソースコードは <a class=" link-ftp" href="ftp://ftp.mozilla.org/pub/mozilla.org/security/" rel="freelink">ftp://ftp.mozilla.org/pub/mozilla.org/security/</a> からも tar ファイルとしてダウンロードできます。 +</p> +<h4 id=".E3.81.84.E3.81.8F.E3.82.89.E3.81.97.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name=".E3.81.84.E3.81.8F.E3.82.89.E3.81.97.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> いくらしますか? </h4> +<p>NSS ソースコードおよびバイナリ (利用できるようになった暁には) は完全に無料です。ライセンス料、著作権使用料、購読料、すべて無料です。 +</p> +<h3 id=".E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91.E3.81.AE.E8.B3.AA.E5.95.8F" name=".E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91.E3.81.AE.E8.B3.AA.E5.95.8F"> 開発者向けの質問 </h3> +<h4 id=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.82.A2.E3.82.AF.E3.82.BB.E3.83.A9.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.82.A2.E3.82.AF.E3.82.BB.E3.83.A9.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> どのようなハードウェアアクセラレータがサポートされているのでしょう? </h4> +<p>NSS はハードウェアアクセラレーションのための PKCS #11 インターフェースをサポートしています。Chrysalis-IT や nCipher、Rainbow Technologies をはじめとする大手のアクセラレータベンダーもこのインターフェースをサポートしているため、NSS が利用できるアプリケーションもまた多様なハードウェアアクセラレーションをサポートできます。 +</p> +<h4 id="NSS_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.A6.E3.82.B9.E3.83.9E.E3.83.BC.E3.83.88.E3.82.AB.E3.83.BC.E3.83.89.E3.82.92.E7.A7.81.E3.81.AE.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name="NSS_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.A6.E3.82.B9.E3.83.9E.E3.83.BC.E3.83.88.E3.82.AB.E3.83.BC.E3.83.89.E3.82.92.E7.A7.81.E3.81.AE.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> NSS を利用してスマートカードを私のプリケーションに組み込むにはどうしたら良いでしょう? </h4> +<p>NSS は スマートカードのための PKCS #11 インターフェースをサポートしています。そのため、NSS によって提供される PKCS #11 インターフェースを利用するアプリケーションは、ActiveCard や Litronic、SafeNet、SecureID Technologies をはじめとする大手のベンダーのスマートカードをサポートします。これらのカードは PKCS #11 インターフェースをサポートしています。 +</p> +<h4 id="NSS_.E3.81.AF.E4.BB.96.E3.81.AE_Netscape_.E8.A3.BD.E5.93.81.E3.81.A8.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E4.BA.92.E6.8F.9B.E6.80.A7.E3.81.8C.E3.81.82.E3.82.8A.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF.E4.BB.96.E3.81.AE_Netscape_.E8.A3.BD.E5.93.81.E3.81.A8.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E4.BA.92.E6.8F.9B.E6.80.A7.E3.81.8C.E3.81.82.E3.82.8A.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は他の Netscape 製品とどのような互換性がありますか? </h4> +<p>NSS は他の Netscape 製品と二つの方法で緊密に統合されています。第一に、SSL や TLS を実装するために NSS を利用することで SSL および TLS をサポートする Netscape や他のベンダーからのすべての製品と SSL 通信が可能になります。第ニに、NSS を利用することで Netscape クライアントとサーバ製品、そしてあなたのアプリケーションとの間で証明書を簡単に共有することができます。 +</p> +<h4 id="NSS_.E3.81.AB.E3.81.AF_Netscape_Portable_Runtime_.28NSPR.29_.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AB.E3.81.AF_Netscape_Portable_Runtime_.28NSPR.29_.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> NSS には Netscape Portable Runtime (NSPR) が必要ですか? </h4> +<p>クロスプラットフォームサポートを提供するため、NSS は Netscape Portable Runtime (NSPR) ライブラリを移植用インターフェースおよびネットワーク I/O やスレッドモデルのための一貫したクロスプラットフォーム・セマンティクスを提供する実装として利用します。アプリケーション全体で NSPR を利用することもできますし、NSS を呼び出す部分内でのみ利用することもできます。Netscape ではマルチスレッドアプリケーションでは NSPR またはネイティブな OS スレッドモデルを採用することを強くお薦めします。(最近の NSPR リリースでは、NSPR のスレッドモデルは、OS がネイティブなスレッドを持っている限り、ネイティブスレッドモデルと互換性を持つようになっています。) あるいは、オープンソース NSPR 実装を採用して、あなたの既存のアプリケーションのスレッドモデルと互換性を持たせることもできます。NSPR に関するより詳しい情報は、<a href="ja/NSPR">Netscape Portable Runtime</a> で見ることができます。 +</p> +<h4 id=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.97.E3.83.AD.E3.83.88.E3.82.B3.E3.83.AB.E3.81.8C_HTTP_.E3.81.A7.E3.81.AA.E3.81.8F.E3.81.A6.E3.82.82_NSS_.E3.81.AF.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.97.E3.83.AD.E3.83.88.E3.82.B3.E3.83.AB.E3.81.8C_HTTP_.E3.81.A7.E3.81.AA.E3.81.8F.E3.81.A6.E3.82.82_NSS_.E3.81.AF.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> アプリケーションプロトコルが HTTP でなくても NSS は利用できるのでしょうか? </h4> +<p>はい。SSL はアプリケーションプロトコルとは独立しており、TCP/IP を利用したカスタムアプリケーションプロトコルだけではなく、共通のインターネット標準のアプリケーションプロトコル (HTTP、POP3、FTP、SMTP など) でも作動します。 +</p> +<h4 id="NSS_.E3.82.92.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.AE.E3.81.8F.E3.82.89.E3.81.84.E6.99.82.E9.96.93.E3.81.8C.E3.81.8B.E3.81.8B.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name="NSS_.E3.82.92.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.AE.E3.81.8F.E3.82.89.E3.81.84.E6.99.82.E9.96.93.E3.81.8C.E3.81.8B.E3.81.8B.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> NSS をアプリケーションに組み込むにはどのくらい時間がかかるのでしょうか? </h4> +<p>統合のための作業は関係する要素の数によります。例えば、開発者の技術やアプリケーションの複雑さ、アプリケーションで要求されるセキュリティのレベルなどです。NSS には、統合プロセスをすぐに開始できるように、SSL API についての詳細な参考文献や基本的な SSL 機能 (暗号化されたセッションの設定、サーバ認証、そしてクライアント認証) のデモ用サンプルコードが含まれています。ただし、あなたのアプリケーションが洗練された証明書管理やスマートカード、ハードウェアアクセラレーションを必要とする場合、統合作業はより広範囲に渡ることになるでしょう。 +</p> +<h4 id="NSS_.E3.83.84.E3.83.BC.E3.83.AB.E3.81.AF.E3.81.A9.E3.81.93.E3.81.8B.E3.82.89.E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.83.84.E3.83.BC.E3.83.AB.E3.81.AF.E3.81.A9.E3.81.93.E3.81.8B.E3.82.89.E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS ツールはどこからダウンロードできますか? </h4> +<p>いくつかのプラットフォーム向けのコマンドラインツールを含んだ NSS バイナリビルドは <a class=" external" href="http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases" rel="freelink">http://ftp.mozilla.org/pub/mozilla.o...y/nss/releases</a> からダウンロードできます。同時に必要になる NSPR は <a class=" external" href="http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/" rel="freelink">http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/</a> からダウンロードできます。 +</p> +<h4 id="SSL_.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E3.82.88.E3.82.8A.E8.A9.B3.E3.81.97.E3.81.8F.E7.9F.A5.E3.82.8B.E3.81.9F.E3.82.81.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="SSL_.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E3.82.88.E3.82.8A.E8.A9.B3.E3.81.97.E3.81.8F.E7.9F.A5.E3.82.8B.E3.81.9F.E3.82.81.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> SSL についてより詳しく知るためにはどうしたら良いですか? </h4> +<p>NSS は SSL に関連する広範な参考文献を用意しています。そのなかには高レベルな導入、詳細な API 参考文献、シンプルなクライアント/サーバアプリケーションのためのサンプルコード、オリジナルの SSL 3.0 仕様、デバッグ SSL アプリケーションについての情報が含まれます。詳しくは <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ssl/">SSL/TLS プロジェクトページ</a> をご覧ください。また、デバッグ SSL アプリケーションで利用されているものも含めた NSS ツールについての詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tools/">NSS セキュリティツール</a> をご覧ください。 +</p> +<h3 id=".E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E8.B3.AA.E5.95.8F" name=".E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E8.B3.AA.E5.95.8F"> ライセンスに関する質問 </h3> +<h4 id="NSS_.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS はどのようにライセンスされていますか? </h4> +<p>NSS は <a class="external" href="http://www.mozilla-japan.org/MPL/">Mozilla Public License</a> および <a class="external" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a> でデュアルライセンスされています。詳しくは <a class="external" href="http://www.mozilla-japan.org/crypto-faq.html#1-3">Mozilla Crypto FAQ</a> をご覧ください。 +</p> +<h4 id="NSS_.E3.81.AF.E5.90.88.E8.A1.86.E5.9B.BD.E5.A4.96.E3.81.A7.E3.82.82.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF.E5.90.88.E8.A1.86.E5.9B.BD.E5.A4.96.E3.81.A7.E3.82.82.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は合衆国外でも利用できますか? </h4> +<div class="warning">このセクションの内容は古くなっています</div> +<p>利用できます。<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/buildnss_31.html">NSS 3.1 ビルドガイド</a> および <a class=" link-ftp" href="ftp://ftp.mozilla.org/pub/mozilla.org/security/" rel="freelink">ftp://ftp.mozilla.org/pub/mozilla.org/security/</a> をご覧ください。ただし、NSS ソースコードは合衆国輸出規制や他の合衆国の法律の対象となり、特定の国 (2000 年 1 月時点では、キューバ、イラン、イラク、リビア、北朝鮮、スーダン、シリアおよびタリバン支配地域のアフガニスタン) 、あるいは合衆国からの輸出物を受け取ることが禁じられている個人や組織 ((a) 産業安全保障局の Denied Parties List または Entity List、(b) 財務省外国資産管理局の Specially Designated Nationals および Blocked Persons リスト、(c) ミサイル技術、核兵器、化学兵器、生物兵器に関与する) に対しては輸出、再輸出が認められない可能性があります。 +</p><p>暗号化機能を持つソフトウェアの合衆国輸出管理についてのより詳しい情報は、<a class="external" href="http://www.mozilla-japan.org/crypto-faq.html">Mozilla Crypto FAQ</a> をご覧ください。 +</p>{{ languages( { "en": "en/NSS_FAQ" } ) }} diff --git a/files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html b/files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html new file mode 100644 index 0000000000..0b7ac5c8a5 --- /dev/null +++ b/files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html @@ -0,0 +1,66 @@ +--- +title: FC_Login +slug: Mozilla/Projects/NSS/NSS_reference/FC_Login +tags: + - NSS +translation_of: Mozilla/Projects/NSS/Reference/FC_Login +--- +<p> </p><p><br> +</p><p>{{ 英語版章題("Name") }} +</p> +<h3 id="Name" name="Name"> Name </h3> +<p><code>FC_Login()</code> - log a user into a token. +</p><p>{{ 英語版章題("Syntax") }} +</p> +<h3 id="Syntax" name="Syntax"> Syntax </h3> +<pre class="eval"><a href="ja/CK_RV">CK_RV</a> FC_Login( + <a href="ja/CK_SESSION_HANDLE">CK_SESSION_HANDLE</a> hSession, + <a href="ja/CK_USER_TYPE">CK_USER_TYPE</a> userType, + <a href="ja/CK_CHAR">CK_CHAR_PTR</a> pPin, + <a href="ja/CK_ULONG">CK_ULONG</a> ulPinLen +); +</pre> +<p>{{ 英語版章題("Parameters") }} +</p> +<h3 id="Parameters" name="Parameters"> Parameters </h3> +<p><code>FC_Login()</code> takes four parameters: +</p> +<dl><dt><code>hSession</code> +</dt><dd>{{ mediawiki.external('in') }} a session handle +</dd><dt><code>userType</code> +</dt><dd>{{ mediawiki.external('in') }} the user type (<code>CKU_SO</code> or <code>CKU_USER</code>) +</dd><dt><code>pPin</code> +</dt><dd>{{ mediawiki.external('in') }} a pointer that points to the user's PIN +</dd><dt><code>ulPinLen</code> +</dt><dd>{{ mediawiki.external('in') }} the length of the PIN +</dd></dl> +<p>{{ 英語版章題("Description") }} +</p> +<h3 id="Description" name="Description"> Description </h3> +<p><code>FC_Login()</code> logs a user into a token. +</p><p>The Security Officer (<code>CKU_SO</code>) only logs in to initialize the normal user's PIN. The SO PIN is the empty string. The NSS cryptographic module doesn't allow the SO to log in if the normal user's PIN is already initialized. +</p><p>{{ 英語版章題("Return value") }} +</p> +<h3 id="Return_value" name="Return_value"> Return value </h3> +<p><code>FC_Login()</code> returns the following return codes. +</p> +<ul><li> <code>CKR_OK</code>: the user logged in successfully. +</li><li> <code>CKR_DEVICE_ERROR</code>: the token is in the Error state. +</li><li> <code>CKR_HOST_MEMORY</code>: memory allocation failed. +</li><li> <code>CKR_PIN_INCORRECT</code>: the PIN is incorrect. +</li><li> <code>CKR_PIN_LEN_RANGE</code>: the PIN is too long (<code>ulPinLen</code> is greater than 255).<div class="note">The function should return <code>CKR_PIN_INCORRECT</code> in this case.</div> +</li><li> <code>CKR_SESSION_HANDLE_INVALID</code>: the session handle is invalid. +</li><li> <code>CKR_USER_ALREADY_LOGGED_IN</code>: the user is already logged in. +</li><li> <code>CKR_USER_TYPE_INVALID</code> +<ul><li> The token can't authenticate the user because there is no key database or the user's password isn't initialized. +</li><li> <code>userType</code> is <code>CKU_SO</code> and the normal user's PIN is already initialized. +</li></ul> +</li></ul> +<p>{{ 英語版章題("See also") }} +</p> +<h3 id="See_also" name="See_also"> See also </h3> +<ul><li> <a href="ja/NSC_Login">NSC_Login</a> +</li></ul> +<div class="noinclude"> +</div> +{{ languages( { "en": "en/FC_Login" } ) }} diff --git a/files/ja/mozilla/projects/nss/nss_reference/index.html b/files/ja/mozilla/projects/nss/nss_reference/index.html new file mode 100644 index 0000000000..b1a02b000e --- /dev/null +++ b/files/ja/mozilla/projects/nss/nss_reference/index.html @@ -0,0 +1,200 @@ +--- +title: NSS リファレンス +slug: Mozilla/Projects/NSS/NSS_reference +tags: + - NSS +translation_of: Mozilla/Projects/NSS/Reference +--- +<h3 id=".E6.B3.A8.E6.84.8F.E4.BA.8B.E9.A0.85" name=".E6.B3.A8.E6.84.8F.E4.BA.8B.E9.A0.85">注意事項</h3> + +<div class="note"> +<ul> + <li>We are migrating the <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/">SSL Reference</a> from www.mozilla.org. If you are inclined to help with this migration, your help would be very much appreciated.</li> +</ul> + +<ul> + <li>The proposed chapters below are based on the chapters of the SSL Reference and the categories of functions in <a class="external" href="http://developer.mozilla.org/en/docs/NSS_functions">NSS Public Functions</a>.</li> +</ul> + +<ul> + <li>Should a particular page require the use of an underscore, please see the documentation for the <a>Title Override Extension</a>.</li> +</ul> +</div> + +<h3 id="NSS_.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89.E3.81.A8.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB" name="NSS_.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89.E3.81.A8.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB"><a href="ja/NSS_reference/Building_and_installing_NSS">NSS のビルドとインストール</a></h3> + +<h3 id="NSS_.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E6.A6.82.E8.A6.B3" name="NSS_.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E6.A6.82.E8.A6.B3">NSS アプリケーションの概観</h3> + +<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslintro.html">"Overview of an SSL Application"</a> in the SSL Reference.</p> + +<h3 id="NSS_.E5.85.A5.E9.96.80" name="NSS_.E5.85.A5.E9.96.80">NSS 入門</h3> + +<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/gtstd.html">"Getting Started With SSL"</a> in the SSL Reference.</p> + +<h3 id=".E3.83.87.E3.83.BC.E3.82.BF.E5.9E.8B" name=".E3.83.87.E3.83.BC.E3.82.BF.E5.9E.8B">データ型</h3> + +<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/ssltyp.html">"Selected SSL Types and Structures"</a> in the SSL Reference.</p> + +<h3 id=".E3.83.A6.E3.83.BC.E3.83.86.E3.82.A3.E3.83.AA.E3.83.86.E3.82.A3.E9.96.A2.E6.95.B0" name=".E3.83.A6.E3.83.BC.E3.83.86.E3.82.A3.E3.83.AA.E3.83.86.E3.82.A3.E9.96.A2.E6.95.B0">ユーティリティ関数</h3> + +<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#utils">"Utility Functions"</a> in NSS Public Functions.</p> + +<h3 id=".E8.A8.BC.E6.98.8E.E6.9B.B8.E9.96.A2.E6.95.B0" name=".E8.A8.BC.E6.98.8E.E6.9B.B8.E9.96.A2.E6.95.B0">証明書関数</h3> + +<p>Based on <a href="ja/NSS_Certificate_Functions">Certificate Functions</a> in the SSL Reference and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#cert">"Certificate Functions"</a> in NSS Public Functions.</p> + +<ul> + <li><a href="ja/NSS_Certificate_Functions#Validating_Certificates">Validating Certificates</a> + + <ul> + <li><a href="ja/NSS_Certificate_Functions#CERT_VerifyCertNow">CERT_VerifyCertNow</a></li> + <li><a href="ja/NSS_Certificate_Functions#CERT_VerifyCert">CERT_VerifyCert</a></li> + <li><a href="ja/NSS_Certificate_Functions#CERT_VerifyCertName">CERT_VerifyCertName</a></li> + <li><a href="ja/NSS_Certificate_Functions#CERT_CheckCertValidTimes">CERT_CheckCertValidTimes</a></li> + <li><a href="ja/NSS_Certificate_Functions#NSS_CmpCertChainWCANames">NSS_CmpCertChainWCANames</a></li> + </ul> + </li> + <li><a href="ja/NSS_Certificate_Functions#Manipulating_Certificates">Manipulating Certificates</a> + <ul> + <li><a href="ja/NSS_Certificate_Functions#CERT_DupCertificate">CERT_DupCertificate</a></li> + <li><a href="ja/NSS_Certificate_Functions#CERT_DestroyCertificate">CERT_DestroyCertificate</a></li> + <li>SEC_DeletePermCertificate</li> + <li>__CERT_ClosePermCertDB</li> + </ul> + </li> + <li><a href="ja/NSS_Certificate_Functions#Getting_Certificate_Information">Getting Certificate Information</a> + <ul> + <li><a href="ja/NSS_Certificate_Functions#CERT_FindCertByName">CERT_FindCertByName</a></li> + <li><a href="ja/NSS_Certificate_Functions#CERT_GetCertNicknames">CERT_GetCertNicknames</a></li> + <li><a href="ja/NSS_Certificate_Functions#CERT_FreeNicknames">CERT_FreeNicknames</a></li> + <li><a href="ja/NSS_Certificate_Functions#CERT_GetDefaultCertDB">CERT_GetDefaultCertDB</a></li> + <li><a href="ja/NSS_Certificate_Functions#NSS_FindCertKEAType">NSS_FindCertKEAType</a></li> + </ul> + </li> + <li><a href="ja/NSS_Certificate_Functions#Comparing_SecItem_Objects">Comparing SecItem Objects</a> + <ul> + <li><a href="ja/NSS_Certificate_Functions#SECITEM_CompareItem">SECITEM_CompareItem</a></li> + </ul> + </li> +</ul> + +<h3 id=".E9.8D.B5.E9.96.A2.E6.95.B0" name=".E9.8D.B5.E9.96.A2.E6.95.B0">鍵関数</h3> + +<p>Based on <a href="ja/NSS_Key_Functions">Key Functions</a> in the SSL Reference.</p> + +<ul> + <li><a href="ja/NSS_Key_Functions#SECKEY_GetDefaultKeyDB">SECKEY_GetDefaultKeyDB</a></li> + <li><a href="ja/NSS_Key_Functions#SECKEY_DestroyPrivateKey">SECKEY_DestroyPrivateKey</a></li> +</ul> + +<h3 id=".E9.9B.BB.E5.AD.90.E7.BD.B2.E5.90.8D" name=".E9.9B.BB.E5.AD.90.E7.BD.B2.E5.90.8D">電子署名</h3> + +<p>This API consists of the routines used to perform signature generation and the routines used to perform signature verification.</p> + +<h3 id=".E6.9A.97.E5.8F.B7.E5.8C.96.2F.E5.BE.A9.E5.8F.B7.E5.8C.96" name=".E6.9A.97.E5.8F.B7.E5.8C.96.2F.E5.BE.A9.E5.8F.B7.E5.8C.96">暗号化/復号化</h3> + +<h3 id=".E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5" name=".E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5">ハッシュ</h3> + +<h3 id=".E9.8D.B5.E7.94.9F.E6.88.90" name=".E9.8D.B5.E7.94.9F.E6.88.90">鍵生成</h3> + +<p>Generate keys, key pairs, and domain parameters.</p> + +<h3 id=".E4.B9.B1.E6.95.B0.E7.94.9F.E6.88.90" name=".E4.B9.B1.E6.95.B0.E7.94.9F.E6.88.90">乱数生成</h3> + +<p>This API consists of the two routines used for pseudorandom number generation -- PK11_GenerateRandomOnSlot and PK11_GenerateRandom -- and the two routines used for seeding pseudorandom number generation -- PK11_SeedRandom and PK11_RandomUpdate.</p> + +<h3 id="PKCS_.2311_.E9.96.A2.E6.95.B0" name="PKCS_.2311_.E9.96.A2.E6.95.B0">PKCS #11 関数</h3> + +<p>Based on <a href="ja/NSS_PKCS11_Functions">PKCS #11 Functions</a> in the SSL Reference and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#crypto">"Crypto Functions"</a> in NSS Public Functions.</p> + +<ul> + <li><a href="ja/NSS_PKCS11_Functions#SECMOD_LoadUserModule">SECMOD_LoadUserModule</a></li> + <li><a href="ja/NSS_PKCS11_Functions#SECMOD_UnloadUserModule">SECMOD_UnloadUserModule</a></li> + <li><a href="ja/NSS_PKCS11_Functions#SECMOD_CloseUserDB">SECMOD_CloseUserDB</a></li> + <li><a href="ja/NSS_PKCS11_Functions#SECMOD_OpenUserDB">SECMOD_OpenUserDB</a></li> + <li><a href="ja/NSS_PKCS11_Functions#PK11_FindCertFromNickname">PK11_FindCertFromNickname</a></li> + <li><a href="ja/NSS_PKCS11_Functions#PK11_FindKeyByAnyCert">PK11_FindKeyByAnyCert</a></li> + <li><a href="ja/NSS_PKCS11_Functions#PK11_GetSlotName">PK11_GetSlotName</a></li> + <li><a href="ja/NSS_PKCS11_Functions#PK11_GetTokenName">PK11_GetTokenName</a></li> + <li><a href="ja/NSS_PKCS11_Functions#PK11_IsHW">PK11_IsHW</a></li> + <li><a href="ja/NSS_PKCS11_Functions#PK11_IsPresent">PK11_IsPresent</a></li> + <li><a href="ja/NSS_PKCS11_Functions#PK11_IsReadOnly">PK11_IsReadOnly</a></li> + <li><a href="ja/NSS_PKCS11_Functions#PK11_SetPasswordFunc">PK11_SetPasswordFunc</a></li> +</ul> + +<h3 id="SSL_.E9.96.A2.E6.95.B0" name="SSL_.E9.96.A2.E6.95.B0">SSL 関数</h3> + +<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslfnc.html">"SSL Functions"</a> in the SSL Reference and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#ssl">"SSL Functions"</a> and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#dep">"Deprecated SSL Functions"</a> in NSS Public Functions.</p> + +<ul> + <li>SSL_ConfigServerSessionIDCache</li> + <li>SSL_ClearSessionCache</li> +</ul> + +<h3 id="S.2FMIME" name="S.2FMIME">S/MIME</h3> + +<p>Based on the <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/smime/">S/MIME Reference</a> (which only has one written chapter) and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#smime">"S/MIME Functions"</a> in NSS Public Functions.</p> + +<h3 id="PKCS_.237_.E9.96.A2.E6.95.B0" name="PKCS_.237_.E9.96.A2.E6.95.B0">PKCS #7 関数</h3> + +<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#pkcs7">"PKCS #7 Functions"</a> in NSS Public Functions.</p> + +<h3 id="PKCS_.235_.E9.96.A2.E6.95.B0" name="PKCS_.235_.E9.96.A2.E6.95.B0">PKCS #5 関数</h3> + +<p>Password-based encryption</p> + +<ul> + <li>SEC_PKCS5GetIV</li> + <li>SEC_PKCS5CreateAlgorithmID</li> + <li>SEC_PKCS5GetCryptoAlgorithm</li> + <li>SEC_PKCS5GetKeyLength</li> + <li>SEC_PKCS5GetPBEAlgorithm</li> + <li>SEC_PKCS5IsAlgorithmPBEAlg</li> +</ul> + +<h3 id="PKCS_.2312_.E9.96.A2.E6.95.B0" name="PKCS_.2312_.E9.96.A2.E6.95.B0">PKCS #12 関数</h3> + +<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#pkcs12">"PKCS #12 Functions"</a> in NSS Public Functions. Used to exchange data such as private keys and certificates between two parties.</p> + +<ul> + <li>SEC_PKCS12CreateExportContext</li> + <li>SEC_PKCS12CreatePasswordPrivSafe</li> + <li>SEC_PKCS12CreateUnencryptedSafe</li> + <li>SEC_PKCS12AddCertAndKey</li> + <li>SEC_PKCS12AddPasswordIntegrity</li> + <li>SEC_PKCS12EnableCipher</li> + <li>SEC_PKCS12Encode</li> + <li>SEC_PKCS12DestroyExportContext</li> + <li>SEC_PKCS12DecoderStart</li> + <li>SEC_PKCS12DecoderImportBags</li> + <li>SEC_PKCS12DecoderUpdate</li> + <li>SEC_PKCS12DecoderFinish</li> + <li>SEC_PKCS12DecoderValidateBags</li> + <li>SEC_PKCS12DecoderVerify</li> + <li>SEC_PKCS12DecoderGetCerts</li> + <li>SEC_PKCS12DecoderSetTargetTokenCAs</li> + <li>SEC_PKCS12DecoderIterateInit</li> + <li>SEC_PKCS12DecoderIterateNext</li> + <li>SEC_PKCS12IsEncryptionAllowed</li> + <li>SEC_PKCS12SetPreferredCipher</li> +</ul> + +<h3 id=".E3.82.A8.E3.83.A9.E3.83.BC.E3.82.B3.E3.83.BC.E3.83.89" name=".E3.82.A8.E3.83.A9.E3.83.BC.E3.82.B3.E3.83.BC.E3.83.89">エラーコード</h3> + +<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslerr.html">"NSS and SSL Error Codes"</a> in the SSL Reference.</p> + +<h3 id="NSS_.E7.92.B0.E5.A2.83.E5.A4.89.E6.95.B0" name="NSS_.E7.92.B0.E5.A2.83.E5.A4.89.E6.95.B0"><a href="ja/NSS_reference/NSS_environment_variables">NSS 環境変数</a></h3> + +<h3 id="NSS_.E6.9A.97.E5.8F.B7.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB" name="NSS_.E6.9A.97.E5.8F.B7.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB"><a href="ja/NSS_reference/NSS_cryptographic_module">NSS 暗号モジュール</a></h3> + +<h3 id="NSS_.E6.8A.80.E8.A1.93.E3.83.8E.E3.83.BC.E3.83.88" name="NSS_.E6.8A.80.E8.A1.93.E3.83.8E.E3.83.BC.E3.83.88">NSS 技術ノート</h3> + +<p><a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tech-notes">NSS Tech Notes</a> <a href="ja/NSS_Memory_allocation">NSS Memory allocation</a></p> + +<h3 id=".E3.83.84.E3.83.BC.E3.83.AB" name=".E3.83.84.E3.83.BC.E3.83.AB">ツール</h3> + +<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tools/">NSS Tools</a> documentation on www.mozilla.org.</p> + +<div class="noinclude"></div> + +<p>{{ languages( { "en": "en/NSS_reference" } ) }}</p> diff --git a/files/ja/mozilla/projects/nss/nss_releases/index.html b/files/ja/mozilla/projects/nss/nss_releases/index.html new file mode 100644 index 0000000000..f275377979 --- /dev/null +++ b/files/ja/mozilla/projects/nss/nss_releases/index.html @@ -0,0 +1,137 @@ +--- +title: NSS の最新バージョンのリリースノート +slug: Mozilla/Projects/NSS/NSS_Releases +translation_of: Mozilla/Projects/NSS/NSS_Releases +--- +<p>現在の NSS の<strong>安定版</strong>リリースは 3.57 で、<strong>2020年9月18日</strong>にリリースされました。(NSS 3.57 のリリースノート)</p> + +<p>The current <strong>ESR</strong> releases of NSS are 3.44.4 (<a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.4_release_notes">NSS 3.44.4 release notes</a>), intended for Firefox ESR 68, which was released on <strong>19 May 2020</strong>, and 3.53.1 <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.53.1_release_notes">(NSS 3.53.1 release notes)</a>, intended for Firefox ESR 78, which was released on <strong>16 June 2020</strong>.</p> + +<h2 id="Past_releases">Past releases</h2> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.57_release_notes">NSS 3.57 release notes</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.56_release_notes">NSS 3.56 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.55_release_notes">NSS 3.55 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.54_release_notes">NSS 3.54 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.53.1_release_notes">NSS 3.53.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.53_release_notes">NSS 3.53 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.52.1_release_notes">NSS 3.52.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.4_release_notes">NSS 3.44.4 release notes</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.52_release_notes">NSS 3.52 release notes</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.51.1_release_notes">NSS 3.51.1 release notes</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.51_release_notes">NSS 3.51 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.50_release_notes">NSS 3.50 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.49.2_release_notes">NSS 3.49.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.49.1_release_notes">NSS 3.49.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.49_release_notes">NSS 3.49 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.48.1_release_notes">NSS 3.48.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.48_release_notes">NSS 3.48 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.47.1_release_notes">NSS 3.47.1 release notes</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.47_release_notes">NSS 3.47 release notes</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.46.1_release_notes">NSS 3.46.1 release notes</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.46_release_notes">NSS 3.46 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.45_release_notes">NSS 3.45 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.3_release_notes">NSS 3.44.3 release notes</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.2_release_notes">NSS 3.44.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.1_release_notes">NSS 3.44.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44_release_notes">NSS 3.44 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.43_release_notes">NSS 3.43 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.42.1_release_notes">NSS 3.42.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.42_release_notes">NSS 3.42 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.8_release_notes">NSS 3.36.8 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.7_release_notes">NSS 3.36.7 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.41_release_notes">NSS 3.41 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.40.1_release_notes">NSS 3.40.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.6_release_notes">NSS 3.36.6 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.40_release_notes">NSS 3.40 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.39_release_notes">NSS 3.39 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.38_release_notes">NSS 3.38 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.37.3_release_notes">NSS 3.37.3 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.37.1_release_notes">NSS 3.37.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.37_release_notes">NSS 3.37 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.5_release_notes">NSS 3.36.5 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.4_release_notes">NSS 3.36.4 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.2_release_notes">NSS 3.36.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.1_release_notes">NSS 3.36.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36_release_notes">NSS 3.36 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.35_release_notes">NSS 3.35 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.34.1_release_notes">NSS 3.34.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.34_release_notes">NSS 3.34 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.33_release_notes">NSS 3.33 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.32_release_notes">NSS 3.32 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.31.1_release_notes">NSS 3.31.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.31_release_notes">NSS 3.31 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.30.2_release_notes">NSS 3.30.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.30.1_release_notes">NSS 3.30.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.30_release_notes">NSS 3.30 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.5_release_notes">NSS 3.29.5 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.3_release_notes">NSS 3.29.3 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.2_release_notes">NSS 3.29.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.1_release_notes">NSS 3.29.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29_release_notes">NSS 3.29 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.5_release_notes">NSS 3.28.5 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.4_release_notes">NSS 3.28.4 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.3_release_notes">NSS 3.28.3 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.2_release_notes">NSS 3.28.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.1_release_notes">NSS 3.28.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28_release_notes">NSS 3.28 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.27.2_release_notes">NSS 3.27.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.27.1_release_notes">NSS 3.27.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.27_release_notes">NSS 3.27 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.26.2_release_notes">NSS 3.26.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.26_release_notes">NSS 3.26 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.25.1_release_notes">NSS 3.25.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.25_release_notes">NSS 3.25 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.24_release_notes">NSS 3.24 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.23_release_notes">NSS 3.23 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.22.2_release_notes">NSS 3.22.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.22.1_release_notes">NSS 3.22.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.22_release_notes">NSS 3.22 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.4_release_notes">NSS 3.21.4 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.3_release_notes">NSS 3.21.3 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.2_release_notes">NSS 3.21.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.1_release_notes">NSS 3.21.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21_release_notes">NSS 3.21 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.20.1_release_notes">NSS 3.20.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.20_release_notes">NSS 3.20 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19.3_release_notes">NSS 3.19.3 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19.2_release_notes">NSS 3.19.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19.1_release_notes">NSS 3.19.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19_release_notes">NSS 3.19 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.18.1_release_notes">NSS 3.18.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.18_release_notes">NSS 3.18 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.4_release_notes">NSS 3.17.4 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.3_release_notes">NSS 3.17.3 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.2_release_notes">NSS 3.17.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.1_release_notes">NSS 3.17.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17_release_notes">NSS 3.17 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.6_release_notes">NSS 3.16.6 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.5_release_notes">NSS 3.16.5 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.4_release_notes">NSS 3.16.4 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.3_release_notes">NSS 3.16.3 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2.3_release_notes">NSS 3.16.2.3 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2.2_release_notes">NSS 3.16.2.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2.1_release_notes">NSS 3.16.2.1 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2_release_notes">NSS 3.16.2 release notes</a></li> + <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.1_release_notes">NSS 3.16.1 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.16_release_notes">NSS 3.16 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.15.5_release_notes">NSS 3.15.5 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.15.4_release_notes">NSS 3.15.4 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.15.3.1_release_notes">NSS 3.15.3.1 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.15.3_release_notes">NSS 3.15.3 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.15.2_release_notes">NSS 3.15.2 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.15.1_release_notes">NSS 3.15.1 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.15_release_notes" title="NSS 3.15 release notes">NSS 3.15 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.14.5_release_notes" title="NSS 3.14.5 release notes">NSS 3.14.5 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.14.4_release_notes" title="NSS 3.14.4 release notes">NSS 3.14.4 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.14.3_release_notes" title="NSS 3.14.3 release notes">NSS 3.14.3 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.14.2_release_notes" title="NSS 3.14.2 release notes">NSS 3.14.2 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.14.1_release_notes" title="NSS 3.14.1 release notes">NSS 3.14.1 release notes</a></li> + <li><a href="/en-US/docs/NSS/NSS_3.14_release_notes" title="NSS 3.14 release notes">NSS 3.14 release notes</a></li> + <li><a href="/en-US/docs/NSS/release_notes.html">Older release notes</a></li> +</ul> + +<h2 id="Future_releases">Future releases</h2> + +<p>Release planning is done on the Mozilla wiki: {{interwiki("wikimo", "NSS:Release Versions")}}.</p> diff --git a/files/ja/mozilla/projects/nss/nss_sample_code/index.html b/files/ja/mozilla/projects/nss/nss_sample_code/index.html new file mode 100644 index 0000000000..4a70911b42 --- /dev/null +++ b/files/ja/mozilla/projects/nss/nss_sample_code/index.html @@ -0,0 +1,31 @@ +--- +title: NSS サンプルコード +slug: Mozilla/Projects/NSS/NSS_Sample_Code +tags: + - Example +translation_of: Mozilla/Projects/NSS/NSS_Sample_Code +--- +<h2 id="NSS_Sample_Code">NSS Sample Code</h2> + +<p>ここにあるサンプルコード集では、暗号処理、証明書の取り扱い、SSL などに NSS がどのように利用できるかを示しています。また、暗号化の応用におけるベストプラクティスをいくつか示しています。</p> + +<p>差し替え中の古いサンプル</p> + +<ol> + <li><a href="nss_sample_code/NSS_Sample_Code_Sample1">Sample Code 1: Key Generation and Transport Between Servers</a></li> + <li><a href="nss_sample_code/NSS_Sample_Code_sample2">Sample Code 2: Symmetric Encryption</a></li> + <li><a href="nss_sample_code/NSS_Sample_Code_sample3">Sample Code 3: Hashing, MAC</a></li> + <li><a href="nss_sample_code/NSS_Sample_Code_sample4">Sample Code 4: PKI Encryption</a></li> + <li><a href="nss_sample_code/NSS_Sample_Code_sample5">Sample Code 5: PKI Encryption with a raw public & private key in DER format</a></li> + <li><a href="nss_sample_code/NSS_Sample_Code_sample6">Sample Code 6: Persistent Symmetric Keys in NSS database</a></li> +</ol> + +<p><br> + リプレースが必要な非常に古い事例です。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">https://bugzilla.mozilla.org/show_bug.cgi?id=490238</a> を参照してください。</p> + +<p>新しいサンプルをダウンロードすることができます。</p> + +<pre class="bz_comment_text notranslate" id="comment_text_42">hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH +</pre> + +<p>新しいサンプル: <a href="/ja/docs/Mozilla/Projects/NSS/New_NSS_Samples">https://developer.mozilla.org/ja/docs/Mozilla/Projects/NSS/New_NSS_Samples</a></p> diff --git a/files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html b/files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html new file mode 100644 index 0000000000..eb799cad8a --- /dev/null +++ b/files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html @@ -0,0 +1,54 @@ +--- +title: NSS ソースのビルドのテスト +slug: Mozilla/Projects/NSS/NSS_Sources_Building_Testing +translation_of: Mozilla/Projects/NSS/NSS_Sources_Building_Testing +--- +<p><a href="/ja/docs/Mozilla/Projects/NSS">Network Security Services (NSS)</a> のソースコードの取得、構築方法、テストスイートの実行方法。</p> + +<h2 id="ソースコードの取得と簡単な概要">ソースコードの取得と簡単な概要</h2> + +<p>最も簡単な方法は、<a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/">Mozilla のダウンロードサーバ</a>から NSS リリースのアーカイブをダウンロードすることです。バージョン番号が一番高いディレクトリを探してください。NSS はベースライブラリ <a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a> に依存しているので、NSS と NSPR の両方を組み合わせたアーカイブをダウンロードする必要があります。</p> + +<p>If you are a software developer and intend to contribute enhancements to NSS, you should obtain the latest development snapshot of NSS using mercurial/hg (a <a href="https://www.mercurial-scm.org/" title="https://www.mercurial-scm.org/">distributed source control management tool</a>). In order to get started, anonymous read-only access is sufficient. Create a new directory on your computer that you will use as your local work area, and run the following commands.</p> + +<pre class="language-html notranslate" style='margin-top: 0.5em; margin-bottom: 0.5em; padding: 1em; background-color: rgb(15, 12, 10); font-size: 14px; line-height: 21px; font-family: Consolas, Monaco, "Andale Mono", monospace; color: rgb(255, 255, 255); text-shadow: rgb(0, 0, 0) 0px 1px; direction: ltr;'>hg clone https://hg.mozilla.org/projects/nspr +hg clone https://hg.mozilla.org/projects/nss</pre> + +<p>After the above commands complete, you should have two local directories, named nspr and nss, next to each other.</p> + +<p>(Historical information: NSPR and NSS source code have recently been re-organized into a new directory structure. In past versions, all files were located in a directory hierarchy that started with the "mozilla" prefix. The NSPR base library was located in directory mozilla/nsprpub. The subdirectories dbm, security/dbm, security/coreconf, security/nss were part of the NSS sources.)</p> + +<p>The nss directory contains the following important subdirectories:</p> + +<ul> + <li>nss/coreconf<br> + Contains knowledge for cross platform building.</li> + <li>nss/lib<br> + Contains all the library code that is used to create the runtime libraries used by applications.</li> + <li>nss/cmd<br> + Contains a set of various tool programs that are built using NSS. Several tools are general purpose and can be used to inspect and manipulate the storage files that software using the NSS library creates and modifies. Other tools are only used for testing purposes. However, all these tools are good examples of how to write software that makes use of the NSS library.</li> + <li>nss/test<br> + This directory contains the NSS test suite, which is routinely used to ensure that changes to NSS don't introduce regressions.</li> + <li>nss/gtests<br> + Code for NSS unit tests running in <a href="https://github.com/abseil/googletest">Googletest</a>.</li> +</ul> + +<p>It is important to mention the difference between internal NSS code and exported interfaces. Software that would like to use the NSS library must use only the exported interfaces. These can be found by looking at the files with the .def file extension, inside the nss/lib directory hierarchy. Any C function that isn't contained in .def files is strictly for private use within NSS, and applications and test tools are not allowed to call them. For any functions that are listed in the .def files, NSS promises that the binary function interface (ABI) will remain stable.</p> + +<h2 id="Building_NSS">Building NSS</h2> + +<p>NSS is built using <a class="external external-icon" href="https://gyp.gsrc.io/" rel="noopener">gyp</a> and <a class="external external-icon" href="https://ninja-build.org/" rel="noopener">ninja</a>, or with <a class="external external-icon" href="https://www.gnu.org/software/make/" rel="noopener">make</a> on systems that don't have those tools. The <a href="/en-US/docs/Mozilla/Projects/NSS/Building">complete build instructions</a> include more information.</p> + +<p>Once the build is done, you can find the build output below directory dist/?, where ? will be a name dynamically derived from your system's architecture. Exported header files for NSS applications can be found in directory "include", library files in directory "lib", and the tools in directory "bin". In order to run the tools, you should set your system environment to use the libraries of your build from the "lib" directory, e.g., using the LD_LIBRARY_PATH or DYLD_LIBRARY_PATH environment variable.</p> + +<h2 id="Running_the_NSS_test_suite">Running the NSS test suite</h2> + +<p>This is an important part of development work, in order to ensure your changes don't introduce regressions. When adding new features to NSS, tests for the new feature should be added as well.</p> + +<p>You must build NSS prior to running the tests. After the build on your computer has succeeded, before you can run the tests on your computer, it might be necessary to set additional environment variables. The NSS tests will start TCP/IP server tools on your computer, and in order for that to work, the NSS test suite needs to know which hostname can be used by client tools to connect to the server tools. On machines that are configured with a hostname that has been registered in your network's DNS, this should work automatically. In other environments (for example in home networks), you could set the HOST and DOMSUF (for domain suffix) environment variables to tell the NSS suite which hostname to use. As a test, it must be possible to successfully use the command "ping $HOST.$DOMSUF" on your computer (ping reports receiving replies). On many computers the variables HOST=localhost DOMSUF=localdomain works. In case you built NSS in 64 bits, you need to set the USE_64 environment variable to 1 to run the tests. If you get name resolution errors, try to disable IPv6 on the loopback device.</p> + +<p>After you have set the required environment variables, use "cd nss/tests" and start the tests using "./all.sh". The tests will take a while to complete; on a slow computer it could take a couple of hours.</p> + +<p>Once the test suite has completed, a summary will be printed that shows the number of failures. You can find the test suite results in directory nss/../tests_results (i.e. the results directory ends up next to the nss directory, not within it). Each test suite execution will create a new subdirectory; you should clean them up from time to time. Inside the directory you'll find text file output.log, which contains a detailed report of all tests being executed. In order to learn about the details of test failures, search the file for the uppercase test FAILED.</p> + +<p>If desired, it's possible to run only subsets of the tests. Read the contents of file all.sh to learn how that works.</p> diff --git a/files/ja/mozilla/projects/nss/nss_tech_notes/index.html b/files/ja/mozilla/projects/nss/nss_tech_notes/index.html new file mode 100644 index 0000000000..c474d6824b --- /dev/null +++ b/files/ja/mozilla/projects/nss/nss_tech_notes/index.html @@ -0,0 +1,21 @@ +--- +title: NSS 技術ノート +slug: Mozilla/Projects/NSS/NSS_Tech_Notes +translation_of: Mozilla/Projects/NSS/NSS_Tech_Notes +--- +<h2 id="NSS_技術ノート">NSS 技術ノート</h2> + +<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p> + +<p>NSS technical notes provide latest information about new NSS features and supplementary documentation for advanced topics in programming with NSS.</p> + +<ol> + <li>TN1: <a href="nss_tech_notes/nss_tech_note1">How to use the NSS ASN.1 and QuickDER decoders</a>.</li> + <li>TN2: <a href="nss_tech_notes/nss_tech_note2">Using the PKCS #11 Module Logger</a>.</li> + <li>TN3: <a href="nss_tech_notes/nss_tech_note3">All About Certificate Extensions</a>.</li> + <li>TN4: <a href="nss_tech_notes/nss_tech_note4">Pulling certificate extension information out of SSL certificates</a>.</li> + <li>TN5: <a href="nss_tech_notes/nss_tech_note5">Using NSS to perform miscellaneous cryptographic operations</a>.</li> + <li>TN6: <a href="nss_tech_notes/nss_tech_note6">NSS .chk Files for the FIPS Mode</a>.</li> + <li>TN7: <a href="nss_tech_notes/nss_tech_note7">RSA Signing and Encryption with NSS</a>.</li> + <li>TN8: <a href="nss_tech_notes/nss_tech_note8">Background Information on libSSL's Cache Functions and SIDs</a>.</li> +</ol> diff --git a/files/ja/mozilla/projects/nss/nss_third-party_code/index.html b/files/ja/mozilla/projects/nss/nss_third-party_code/index.html new file mode 100644 index 0000000000..dbf7262a06 --- /dev/null +++ b/files/ja/mozilla/projects/nss/nss_third-party_code/index.html @@ -0,0 +1,34 @@ +--- +title: NSS サードパーティコード +slug: Mozilla/Projects/NSS/NSS_Third-Party_Code +tags: + - NSS +translation_of: Mozilla/Projects/NSS/NSS_Third-Party_Code +--- +<p>これは、NSS のリポジトリに含まれるサードパーティ製のコードのリストで、2つのリストに分かれています。NSS ライブラリにコンパイルされるコードと、テストにのみ使用されるコードです。</p> + +<p>NSS ライブラリにコンパイルできるコードがすべて<em>そう</em>とは限らないことに注意してください。多くの場合、これはビルド時に様々なトレードオフを考慮して設定することができます。</p> + +<h2 id="コンパイル">コンパイル</h2> + +<ul> + <li>sqlite [/lib/sqlite]</li> + <li>BerkleyDB [/lib/dbm]</li> + <li>zlib [/lib/zlib]</li> + <li>libjar [/lib/jar]</li> + <li>Fiat-Crypto, Ring [lib/freebl/ecl]</li> +</ul> + +<h2 id="テストに使用">テストに使用</h2> + +<ul> + <li>GTest [/gtests]</li> +</ul> + +<h3 id="特定のテストツールでダウンロード">特定のテストツールでダウンロード</h3> + +<ul> + <li>TLSFuzzer [/tests/tlsfuzzer]</li> + <li>BoGo tests [/tests/bogo]</li> + <li>BoringSSL, OpenSSL [/tests/interop]</li> +</ul> diff --git a/files/ja/mozilla/projects/nss/overview_of_nss/index.html b/files/ja/mozilla/projects/nss/overview_of_nss/index.html new file mode 100644 index 0000000000..455e20b6cb --- /dev/null +++ b/files/ja/mozilla/projects/nss/overview_of_nss/index.html @@ -0,0 +1,75 @@ +--- +title: NSS の概要 +slug: Mozilla/Projects/NSS/Overview_of_NSS +tags: + - NSS +translation_of: Mozilla/Projects/NSS/Overview +--- +<h2 id="Open_Source_Crypto_Libraries">Open Source Crypto Libraries</h2> + +<h3 id=".E5.AE.9F.E7.B8.BE.E3.81.AE.E3.81.82.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.BB.E3.82.BB.E3.82.AD.E3.83.A5.E3.83.AA.E3.83.86.E3.82.A3.E3.83.BB.E3.82.A2.E3.83.BC.E3.82.AD.E3.83.86.E3.82.AF.E3.83.81.E3.83.A3" name=".E5.AE.9F.E7.B8.BE.E3.81.AE.E3.81.82.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.BB.E3.82.BB.E3.82.AD.E3.83.A5.E3.83.AA.E3.83.86.E3.82.A3.E3.83.BB.E3.82.A2.E3.83.BC.E3.82.AD.E3.83.86.E3.82.AF.E3.83.81.E3.83.A3">実績のあるアプリケーション・セキュリティ・アーキテクチャ</h3> + +<p>もし、SSL、S/MIMEやその他のインターネットセキュリティ標準を貴方のアプリケーションでサポートしたければ、すべてのセキュリティ機能を実装した Network Security Services (NSS) を使うことができます。NSSは、暗号ライブラリの完全なオープンソース実装を提供します。NSSは、AOL、Red Hat、Sunやその他の企業の下記を含む様々な製品で使われています。:</p> + +<ul> + <li><a class="external" href="http://www.mozilla-japan.org/products/">Mozilla クライアント製品</a>, <a class="external" href="http://www.mozilla-japan.org/products/mozilla1.x/">Mozilla Suite</a>, <a class="external" href="http://www.mozilla.com/firefox/">Firefox</a>, と <a class="external" href="http://www.mozilla.com/thunderbird/">Thunderbird</a>を含む。</li> + <li><a class="external" href="http://browser.netscape.com/">Netscape ブラウザ</a></li> + <li><a class="external" href="http://communicator.aol.com/">AOL Communicator</a> と <a class="external" href="http://www.aim.com/">AOL Instant Messenger</a> (AIM)</li> + <li><a class="external" href="http://www.gnome.org/projects/evolution/">Evolution</a>, <a class="external" href="http://gaim.sourceforge.net/">Gaim</a>, や <a class="external" href="http://www.openoffice.org/">OpenOffice.org</a> 2.0 などのオープンソースクライアントアプリケーション。</li> + <li><a class="external" href="http://www.redhat.com/solutions/">Red Hat</a> のサーバ製品: <a class="external" href="http://www.redhat.com/software/rha/directory/">Red Hat Directory Server</a>, <a class="external" href="http://www.redhat.com/software/rha/certificate/">Red Hat Certificate System</a>, と Apache web server の <a class="external" href="http://directory.fedora.redhat.com/wiki/Mod_nss">mod_nss</a> SSL module.</li> + <li><a class="external" href="http://www.sun.com/software/javaenterprisesystem/index.xml">Sun Java Enterprise System</a>のサーバ製品、Sun Java System Web Server, Sun Java System Directory Server, Sun Java System Portal Server, Sun Java System Messaging Server, と Sun Java System Application Server.</li> +</ul> + +<p>NSS には、プラットフォームでのパフォーマンスを最適化するために、開発者や OEM がアセンブラコードといったパッチを配布できるようにするフレームワークが含まれています。NSS 3.x は 18 のプラットフォームでその性能を発揮しています。</p> + +<p>NSSのより詳しい情報については、 <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/index.html">NSS Project Page</a> と <a href="ja/NSS_FAQ">NSS FAQ</a> を参照してください。</p> + +<p>JavaインターフェースからNSSのソースコードは Mozilla CVSツリーにあります。詳細は、 <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/jss/">Network Security Services for Java</a>を参照してください。</p> + +<p>NSS は Netscape Portable Runtime(<a href="ja/NSPR">NSPR</a>)を使用します。この NSPR は、プラットフォームに依存しないオープンソースAPIであり、システムファンクションはクロスプラットフォーム開発を可能にするように設計されています。NSS と同様、NSPR はさまざまな製品で厳しいテストを経てきました。より詳しい情報は、<a class="external" href="http://www.mozilla-japan.org/projects/nspr/">NSPR プロジェクトページ</a>を参照してください。</p> + +<h3 id=".E7.9B.B8.E4.BA.92.E9.81.8B.E7.94.A8.E6.80.A7.E3.81.A8.E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89" name=".E7.9B.B8.E4.BA.92.E9.81.8B.E7.94.A8.E6.80.A7.E3.81.A8.E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89">相互運用性とオープンスタンダード</h3> + +<p>NSSを使って、あなたのアプリケーションで次の一連のセキュリティ標準をサポートすることができます:</p> + +<ul> + <li><a href="ja/Glossary#SSL">SSL v2 and v3</a>. Secure Sockets Layer (SSL) プロトコルは、クライアントとサーバの相互認証、および、認証され暗号化された接続の確立を可能にします。</li> + <li><a class="external" href="http://www.ietf.org/rfc/rfc2246.txt">TLS v1 (</a><a class="external" href="http://tools.ietf.org/html/rfc2246" title="http://tools.ietf.org/html/rfc2246">RFC 2246</a>). IETFによる Transport Layer Security (TLS) プロトコルは、SSLの実装と後方互換性を持ちながら、最終的にはSSLに取って代わります。</li> + <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1/index.html">PKCS #1</a>. RSAアルゴリズムに基づいた公開鍵暗号法を統括する実装のRSA標準。</li> + <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-3/index.html">PKCS #3</a>. Diffie-Hellman 鍵共有を統括する実装のRSA標準。</li> + <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-5/index.html">PKCS #5</a>. ストレージの秘密鍵を暗号化する場合などに使用するパスワードに基づく暗号化を管理するRSA標準。</li> + <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-7/index.html">PKCS #7</a>. 電子署名や電子封筒などのデータ暗号化アプリケーションを管理するRSA標準。</li> + <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-8/index.html">PKCS #8</a>. 秘密鍵のストレージと暗号化を管理するRSA標準。</li> + <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-9/index.html">PKCS #9</a>. PKCS #7、PKCS #8およびPKCS#10と共に使われ、それらのタイプを含む選択された属性タイプ管理するRSA標準。</li> + <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-10/index.html">PKCS #10</a>. 証明書の要求構文を管理するRSA標準。</li> + <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-11/index.html">PKCS #11</a>. 暗号トークン(ハードウェアアクセラレータやスマートカード、ICカード)とのコミュニケーションを管理し、特定のアルゴリズムと実装から独立したアプリケーションを可能にするRSA標準。</li> + <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-12/index.html">PKCS #12</a>. 秘密鍵、証明書、および他の秘密資料の格納または輸送に使われるフォーマットを管理するRSA標準。</li> + <li><a href="ja/Glossary#S.2FMIME">S/MIME (RFC 2311 and RFC 2633)</a>. 署名および暗号化されたMIMEデータの送受信のための一貫した方法を提供する、(一般的なインターネットMIME標準に基づいた)IETFメッセージ仕様。</li> + <li><a href="ja/Glossary#X.509">X.509 v3</a>. 公開鍵暗号法の中で認証のために使用される証明書のフォーマットを管理するITUの標準。</li> + <li><a href="ja/Glossary#OCSP">OCSP (RFC 2560)</a>. オンライン証明書ステータスプロトコル(Online Certificate Status Protocol, OCSP)は、証明書有効性のリアルタイムな確認方法を管理します。</li> + <li><a class="external" href="http://www.ietf.org/rfc/rfc3280.txt">PKIX Certificate and CRL Profile (</a><a class="external" href="http://tools.ietf.org/html/rfc3280" title="http://tools.ietf.org/html/rfc3280">RFC 3280</a>). (PKIXで知られている)IETFの公開鍵基盤(X.509)ワーキンググループによって開発中のインターネット用の公開鍵暗号基盤用の4部の標準の第1の部分。</li> + <li>RSA, DSA, ECDSA, Diffie-Hellman, EC Diffie-Hellman, <a class="external" href="http://csrc.nist.gov/encryption/aes/">AES</a>, Triple DES, DES, RC2, RC4, SHA-1, SHA-256, SHA-384, SHA-512, MD2, MD5, HMAC: 公開鍵および共通鍵暗号で使われる一般的な暗号化アルゴリズム。</li> + <li>FIPS 186-2 疑似乱数生成器。</li> +</ul> + +<p>完全な詳細に関しては、 <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">暗号化技術</a>を参照してください。</p> + +<h3 id="FIPS_140_.E5.A6.A5.E5.BD.93.E6.80.A7.E7.A2.BA.E8.AA.8D_.E3.81.A8_NISCC_.E3.83.86.E3.82.B9.E3.83.88" name="FIPS_140_.E5.A6.A5.E5.BD.93.E6.80.A7.E7.A2.BA.E8.AA.8D_.E3.81.A8_NISCC_.E3.83.86.E3.82.B9.E3.83.88">FIPS 140 妥当性確認 と NISCC テスト</h3> + +<p>NSS ソフトウェア暗号モジュールは、3度に渡り FIPS 140適合試験のセキュリティレベル1と2に合格しています。 詳細については <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/fips/">NSS FIPS</a> ページ (<a class="external" href="http://wiki.mozilla.org/FIPS_Validation">Or this one</a>)を参照してください。</p> + +<p>NSS ライブラリは NISCC の<a class="external" href="http://www.niscc.gov.uk/niscc/docs/re-20030930-00749.pdf?lang=en">TLS/SSL</a> および <a class="external" href="http://www.uniras.gov.uk/niscc/docs/re-20031104-00752.pdf?lang=en">S/MIME</a> のテストスイート(160万の不正入力によるテストケース)を通過しています。</p> + +<h3 id="Complete_Software_Development_Kit" name="Complete_Software_Development_Kit">Complete Software Development Kit</h3> + +<p>ライブラリとAPIに加えて、NSSは、デバッグ、診断、認証および鍵管理、暗号化モジュール管理および他の開発タスクのために必要な<a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/tools/">セキュリティ・ツール</a>を提供します。</p> + +<p>NSSには、大規模で増大する <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/#Documentation">資料</a>が付いています。資料には、入門教材、 API リファレンス、コマンドラインツールの man ページ、および <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/sample-code/">サンプルコード</a>が含まれています。</p> + +<p>NSSは、ソースと共有(ダイナミック)ライブラリが利用できます。すべての NSSリリースには以前のバージョンとの後方互換性があり、NSSユーザはそれらのアプリケーションを再コンパイルまたは再リンクすることなく新しいNSS共有ライブラリにアップグレードすることができます。</p> + +<h3 id=".E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.A8.E9.85.8D.E5.B8.83" name=".E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.A8.E9.85.8D.E5.B8.83">オープンソースライセンスと配布</h3> + +<p>NSS は、<a class="external" href="http://www.mozilla.org/MPL/">Mozilla Public License</a>, <a class="external" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>, <a class="external" href="http://www.gnu.org/copyleft/lesser.html">GNU Lesser General Public License</a>の3種類でライセンスされています。 最新のソースコードは、 <a class="external" href="http://www.mozilla.org" rel="freelink">http://www.mozilla.org</a> とミラーサイトから、世界中で無料で取得できます。</p> + +<p>{{ languages( { "en": "en/Overview_of_NSS" } ) }}</p> diff --git a/files/ja/mozilla/projects/nss/pkcs11/index.html b/files/ja/mozilla/projects/nss/pkcs11/index.html new file mode 100644 index 0000000000..8c41add1ee --- /dev/null +++ b/files/ja/mozilla/projects/nss/pkcs11/index.html @@ -0,0 +1,17 @@ +--- +title: PKCS11 +slug: Mozilla/Projects/NSS/PKCS11 +tags: + - NSS + - Security +translation_of: Mozilla/Projects/NSS/PKCS11 +--- +<p> +</p><p>暗号化モジュール実装者のための PKCS #11 情報: +</p> +<ul><li> <a href="ja/PKCS11_Implement">Implementing PKCS #11 for NSS</a> +</li><li> <a href="ja/PKCS11_FAQ">PKCS #11 FAQ</a> +</li><li> <a href="ja/PKCS11_Jar_Install">Using the JAR Installation Manager to Install a PKCS #11 Cryptographic Module</a> +</li><li> <a href="ja/PKCS11_Conformance">PKCS #11 Conformance Testing</a> +</li></ul> +{{ languages( { "en": "en/PKCS11" } ) }} diff --git a/files/ja/mozilla/projects/nss/ssl_functions/index.html b/files/ja/mozilla/projects/nss/ssl_functions/index.html new file mode 100644 index 0000000000..58d409092f --- /dev/null +++ b/files/ja/mozilla/projects/nss/ssl_functions/index.html @@ -0,0 +1,300 @@ +--- +title: SSL 関数 +slug: Mozilla/Projects/NSS/SSL_functions +translation_of: Mozilla/Projects/NSS/SSL_functions +--- +<p>ここで紹介する公開関数は、SSL および TLS プロトコルを使用して通信するためのソケットを設定するために使用します。SSL をサポートするアプリケーションでは、ここに記載されている機能に加えて、このページで後述する証明書機能、暗号機能、ユーティリティ機能の一部を使用しています。</p> + +<p>Other sources of information:</p> + +<ul> + <li>The <a href="https://developer.mozilla.org/en-US/docs/NSS_reference">NSS_reference</a> documents the functions most commonly used by applications to support SSL.</li> + <li>The <a href="https://developer.mozilla.org/en-US/docs/NSS">NSS</a> home page links to additional SSL documentation.</li> +</ul> + +<p>If documentation is available for a function listed below, the function name is linked to either its MDC wiki page or its entry in the <a class="external" href="/en-US/docs/Mozilla/Projects/NSS/SSL_functions/OLD_SSL_Reference">old SSL Reference</a>. The <a class="external" href="https://dxr.mozilla.org/">Mozilla Cross Reference</a> (DXR) link for each function provides access to the function definition, prototype definition, and source code references. The NSS version column indicates which versions of NSS support the function.</p> + +<table class="standard-table"> + <tbody> + <tr> + <th>Function name/documentation</th> + <th>Source code</th> + <th>NSS versions</th> + </tr> + <tr> + <td><a class="external" href="/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslfnc.html#1106762"><code>NSS_GetClientAuthData</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_GetClientAuthData">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1228530"><code>NSS_SetDomesticPolicy</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_SetDomesticPolicy">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1100285"><code>NSS_SetExportPolicy</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_SetExportPolicy">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>NSS_SetFrancePolicy</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_SetFrancePolicy">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>NSSSSL_VersionCheck</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSSSSL_VersionCheck">MXR</a></td> + <td>3.2.1 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088888"><code>SSL_AuthCertificate</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_AuthCertificate">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088805"><code>SSL_AuthCertificateHook</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_AuthCertificateHook">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088928"><code>SSL_BadCertHook</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_BadCertHook">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_CertDBHandleSet</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CertDBHandleSet">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_Canbypass</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_Canbypass">MXR</a></td> + <td>3.11.7 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1210463"><code>SSL_CipherPolicyGet</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPolicyGet">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1104647"><code>SSL_CipherPolicySet</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPolicySet">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1214800"><code>SSL_CipherPrefGet</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefGet">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1208119"><code>SSL_CipherPrefGetDefault</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefGetDefault">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1214758"><code>SSL_CipherPrefSet</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefSet">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1084747"><code>SSL_CipherPrefSetDefault</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefSetDefault">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1138601"><code>SSL_ClearSessionCache</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ClearSessionCache">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1142625"><code>SSL_ConfigMPServerSIDCache</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ConfigMPServerSIDCache">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1217647"><code>SSL_ConfigSecureServer</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ConfigSecureServer">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1143851"><code>SSL_ConfigServerSessionIDCache</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ConfigServerSessionIDCache">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1142625"><code>SSL_DataPending</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_DataPending">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1133431"><code>SSL_ForceHandshake</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ForceHandshake">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_ForceHandshakeWithTimeout</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ForceHandshakeWithTimeout">MXR</a></td> + <td>3.11.4 and later</td> + </tr> + <tr> + <td><code>SSL_GetChannelInfo</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetChannelInfo">MXR</a></td> + <td>3.4 and later</td> + </tr> + <tr> + <td><code>SSL_GetCipherSuiteInfo</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetCipherSuiteInfo">MXR</a></td> + <td>3.4 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1126622"><code>SSL_GetClientAuthDataHook</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetClientAuthDataHook">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_GetMaxServerCacheLocks</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetMaxServerCacheLocks">MXR</a></td> + <td>3.4 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1092869"><code>SSL_GetSessionID</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetSessionID">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_GetStatistics</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetStatistics">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1112702"><code>SSL_HandshakeCallback</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_HandshakeCallback">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1085950"><code>SSL_ImportFD</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ImportFD">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1162055"><code>SSL_InheritMPServerSIDCache</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_InheritMPServerSIDCache">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1089420"><code>SSL_InvalidateSession</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_InvalidateSession">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_LocalCertificate</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_LocalCertificate">MXR</a></td> + <td>3.4 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1194921"><code>SSL_OptionGet</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionGet">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1204897"><code>SSL_OptionGetDefault</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionGetDefault">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1086543"><code>SSL_OptionSet</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionSet">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1068466"><code>SSL_OptionSetDefault</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionSetDefault">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1096168"><code>SSL_PeerCertificate</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_PeerCertificate">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_PreencryptedFileToStream</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_PreencryptedFileToStream">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_PreencryptedStreamToFile</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_PreencryptedStreamToFile">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1232052"><code>SSL_ReHandshake</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ReHandshake">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_ReHandshakeWithTimeout</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ReHandshakeWithTimeout">MXR</a></td> + <td>3.11.4 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1058001"><code>SSL_ResetHandshake</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ResetHandshake">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_RestartHandshakeAfterCertReq</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RestartHandshakeAfterCertReq">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_RestartHandshakeAfterServerCert</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RestartHandshakeAfterServerCert">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_RevealCert</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RevealCert">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1123385"><code>SSL_RevealPinArg</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RevealPinArg">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1081175"><code>SSL_RevealURL</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RevealURL">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1092805"><code>SSL_SecurityStatus</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SecurityStatus">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_SetMaxServerCacheLocks</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetMaxServerCacheLocks">MXR</a></td> + <td>3.4 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088040"><code>SSL_SetPKCS11PinArg</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetPKCS11PinArg">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1124562"><code>SSL_SetSockPeerID</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetSockPeerID">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1087792"><code>SSL_SetURL</code></a></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetURL">MXR</a></td> + <td>3.2 and later</td> + </tr> + <tr> + <td><code>SSL_ShutdownServerSessionIDCache</code></td> + <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ShutdownServerSessionIDCache">MXR</a></td> + <td>3.7.4 and later</td> + </tr> + </tbody> +</table> diff --git a/files/ja/mozilla/projects/nss/tools/index.html b/files/ja/mozilla/projects/nss/tools/index.html new file mode 100644 index 0000000000..427ba92a75 --- /dev/null +++ b/files/ja/mozilla/projects/nss/tools/index.html @@ -0,0 +1,94 @@ +--- +title: NSS ツール +slug: Mozilla/Projects/NSS/tools +translation_of: Mozilla/Projects/NSS/tools +--- +<h2 id="NSS_セキュリティツール">NSS セキュリティツール</h2> + +<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p> + +<h3 id="Overview">Overview</h3> + +<p>The NSS Security Tools allow developers to test, debug, and manage applications that use NSS. The <a href="#Tools">Tools Information</a> table below describes both the tools that are currently working and those that are still under development. The links for each tool take you to the source code, documentation, plans, and related links for each tool. The links will become active when information is available.</p> + +<p>Currently, you must download the NSS 3.1 source and build it to create binary files for the NSS tools. For information about downloading the NSS source, see <a href="https://developer.mozilla.org/NSS/Building">https://developer.mozilla.org/NSS/Building</a>.</p> + +<p>If you have feedback or questions, please feel free to post to <a href="news://news.mozilla.org/mozilla.dev.tech.crypto"> mozilla.dev.tech.crypto</a>. This newsgroup is the preferred forum for all questions about NSS and NSS tools.</p> + +<h3 id="Overall_Objectives">Overall Objectives</h3> + +<ol> + <li>Provide a tool for analyzing and repairing certificate databases (<a href="#dbck">dbck</a>).</li> + <li>Migrate tools from secutil.h interface to PKCS #11 interface.</li> + <li>Eliminate redundant functionality in tools. Many tools implement private versions of PKCS11Init(), OpenCertDB(), etc.</li> + <li>Eliminate use of getopt() and replace with NSPR calls to get command options (to eliminate platform dependencies with getopt()).</li> +</ol> + +<h3 id="Tools_Information"><a name="Tools">Tools Information</a></h3> + +<table style="width: 90%;"> + <tbody> + <tr> + <th><strong>Tool</strong></th> + <th><strong>Description</strong></th> + <th><strong>Links</strong></th> + </tr> + <tr> + <td><a name="certutil">certutil 2.0</a></td> + <td>Manage certificate and key databases (cert7.db and key3.db).</td> + <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/certutil/">Source</a>, <a href="tools/NSS_Tools_certutil">Documentation</a>, <a href="tools/NSS_Tools_certutil-tasks">Tasks/Plans</a> </font></td> + </tr> + <tr> + <td><a name="cmsutil">cmsutil 1.0</a></td> + <td>Performs basic CMS operations such as encrypting, decrypting, and signing messages.</td> + <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/smimetools/">Source</a>, <a href="tools/NSS_Tools_cmsutil">Documentation</a> </font></td> + </tr> + <tr> + <td><a name="crlutil">crlutil</a></td> + <td>Manage certificate revocation lists (CRLs).</td> + <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/crlutil/">Source</a>, <a href="tools/NSS_Tools_crlutil">Documentation</a>, </font></td> + </tr> + <tr> + <td><a name="dbck">dbck 1.0</a></td> + <td>Analyze and repair certificate databases (not working in NSS 3.2)</td> + <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/dbck/">Source</a>, <a href="tools/NSS_Tools_dbck-tasks">Tasks/Plans</a> </font></td> + </tr> + <tr> + <td><a name="modutil">modutil 1.1</a></td> + <td>Manage the database of PKCS11 modules (secmod.db). Add modules and modify the properties of existing modules (such as whether a module is the default provider of some crypto service).</td> + <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/modutil/">Source</a>, <a href="tools/NSS_Tools_modutil">Documentation</a>, <a href="tools/NSS_Tools_modutil-tasks">Tasks/Plans</a> </font></td> + </tr> + <tr> + <td><a name="pk12util">pk12util 1.0</a></td> + <td>Import and export keys and certificates between the cert/key databases and files in PKCS12 format.</td> + <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/pk12util/">Source</a>, <a href="tools/NSS_Tools_pk12util">Documentation</a>, <a href="tools/NSS_Tools_pk12util-tasks">Tasks/Plans</a> </font></td> + </tr> + <tr> + <td><a name="signtool">signtool 1.3</a></td> + <td>Create digitally-signed jar archives containing files and/or code.</td> + <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/signtool/">Source</a>, <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/SecurityToolsSummary.html#jarsigner"> Documentation</a>, </font></td> + </tr> + <tr> + <td><a name="signver">signver 1.1</a></td> + <td>Verify signatures on digitally-signed objects.</td> + <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/signver/">Source</a>, <a href="https://docs.oracle.com/javase/tutorial/deployment/jar/verify.html"> Documentation</a>, <a href="tools/NSS_Tools_signver-tasks">Tasks/Plans</a> </font></td> + </tr> + <tr> + </tr> + <tr> + <td><a name="sslstrength">sslstrength</a></td> + <td>SSL Strength</td> + <td><font size="-1"><a href="tools/NSS_Tools_sslstrength">Documentation</a> </font></td> + </tr> + <tr> + <td><a name="ssltap">ssltap 3.2</a></td> + <td>Proxy requests for an SSL server and display the contents of the messages exchanged between the client and server. The ssltap tool does not decrypt data, but it shows things like the type of SSL message (clientHello, serverHello, etc) and connection data (protocol version, cipher suite, etc). This tool is very useful for debugging.</td> + <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/ssltap/">Source</a>, <a href="tools/NSS_Tools_ssltap">Documentation</a> </font></td> + </tr> + </tbody> +</table> + +<ol> + <li><font size="-1"><a name="note1"></a> Currently points to the Netscape Certificate Management System Administration Guide on docs.sun.com. For additional information about this tool, see <a href="http://developer.netscape.com/docs/manuals/security.html#OBJ">Object Signing</a>. </font></li> + <li><font size="-1"><a name="note2"></a> Currently points to the signver documentation on developer.netscape.com. For additional information about this tool, see <a href="http://developer.netscape.com/docs/manuals/security.html#FORM">Form Signing</a> </font></li> +</ol> |