[[↑8 章トップへ|Palm OS Programmer's Companion Volume II/8]] [[2 節に進む →|Palm OS Programmer's Companion Volume II/8-2]] ---- !!! 8-1 SSL ライブラリアーキテクチャ   SslLib ライブラリは、Palm OS で使用する SSL プロトコルの実装です。API は、SSL または非SSL ネットワーク入出力を行なうためのインターフェイスを実装します。図8.1 は、SslLib の異なるコンポーネント間の関係とそれらがユーザアプリケーションとどのように相互作用するか、について示しています。 '''図 8.1 SSL ライブラリアーキテクチャ''' {{img SSLArch.gif}} この図において、以下の項目にラベルが付いています。 *アプリケーション − ネットワーク接続を安全にするために SslLib ライブラリを使用するユーザアプリケーションです。 *NetLib API − Palm OS の[[ネットライブラリ]] API です。この箱は、そのライブラリをコールすることを表しています。 *SslLib API − Palm OS の SslLib API です。この箱は、そのパブリックインターフェイスを経由してライブラリをコールすることを表しています。 *SSL − SslLib API ライブラリ下にある SSL プロトコルです。これは、アプリケーションのデータの SSL カプセル化を行なうコードを表しています。 *ハンドシェイク − 初期接続の間、リモート SSL サーバとメッセージ交換を行なうSSL プロトコルです。この箱は、この交換を実装する SSL プロトコルの一部を表しています。 *証明書の検証 − SSL ハンドシェイクの一部として、証明書が検証される必要があります。この箱は、証明書の検証を行なうロジックを表しています。 *レコードの読み書き − SSL プロトコルは SSL レコードを送受信します。この箱は、最後に読まれたレコードおよび次に書き込まれるレコードを見失わないためのデータ構造体を表しています。 *読み書きバッファ − 入ってくるまたは出ていくデータの SslLib バッファです。この箱は、このデータを保持するためのデータ構造体を表しています。 *入出力インターフェイス − これは、書き込みバッファからネットワークへデータを送信するコードか、またはネットワークからデータを読み取って読み取りバッファに置くコードです。 アプリケーションは、ネットワーク接続を設定して確立する( {{span style='color:blue;font-family:monospace;',SslContextSet_Mode()}} )ために、直接 NetLib をコールします。データバイトは直接送信されるか、もしくはデータを暗号化および MAC するために SSL 処理されます。図は、データバイトがどのようにして SslContext の読み書きバッファを経由するか、を示しています。これらのバッファは、NetLib に送られるのを待っているバイトや NetLib から読み取られる未処理バイトを保管するために使用されます。SSL プロトコルは最初にハンドシェイク状態に入ります。暗号化およびアプリケーションデータバイトの MAC に使用されるセキュリティパラメータが決定される状態です。この処理の一部として、証明書が認証される必要があります。 関連したサブシステムがアクティブかどうかの通知を受け取るためにアプリケーションが登録できるのはどこか、をコールバックによって示すことができます。情報コールバック( {{span style='color:blue;font-family:monospace;',SslContextSet_VerifyCallback()}} )を経由して返すことのできる入出力インターフェイスは、証明書によってポリシーを修正するのにしばしば使用されます。   ---- [[↑8 章トップへ|Palm OS Programmer's Companion Volume II/8]] [[2 節に進む →|Palm OS Programmer's Companion Volume II/8-2]]