ここでは、Solaris 暗号化フレームワークにプラグイン可能な 4 種類のアプリケーションを開発するための要件について説明します。
ユーザーレベルのコンシューマを開発する開発者は、次の点に留意する必要があります。
<security/cryptoki.h> をインクルードします。
すべての呼び出しを PKCS #11 インタフェース経由で行なってください。
libpkcs11.so をリンクします。
ライブラリ内で C_Finalize() 関数を呼び出すべきではありません。
詳細については、第 9 章ユーザーレベルの暗号化アプリケーションとプロバイダの記述を参照してください。
ユーザーレベルのプロバイダを開発する開発者は、次の点に留意する必要があります。
プロバイダをスタンドアロンとして設計します。プロバイダ共有オブジェクトはアプリケーションのリンク先になるような完全なライブラリでなくてもかまいませんが、必要なシンボルはすべてプロバイダ内に存在している必要があります。プロバイダが dlopen(3C) によって RTLD_GROUP モードおよび RTLD_NOW モードでオープンされることを前提にしてください。
PKCS #11 Cryptoki 実装を共有オブジェクトとして作成します。コンシューマアプリケーションに依存しないですむように、この共有オブジェクトには必要なシンボルが含まれている必要があります。
データクリーンアップ用の _fini() ルーチンを提供することを強くお勧めします。ただし、必須ではありません。この方法を使用すると、アプリケーションまたは共有ライブラリが libpkcs11 とほかのプロバイダライブラリを同時に読み込む場合に、複数の C_Finalize() 呼び出し間で衝突が発生するのを防ぐことができます。「ユーザーレベルのプロバイダにおけるデータクリーンアップ衝突の回避」を参照してください。
Sun Microsystems, Inc. に証明書を申請します。「プロバイダに署名するための証明書を要求するには」を参照してください。
証明書と elfsign を使ってバイナリに署名します。「プロバイダに署名するには」を参照してください。
Sun の規約に従って共有オブジェクトをパッケージ化します。付録 F 暗号化プロバイダのパッケージ化と署名を参照してください。
カーネルレベルのコンシューマを開発する開発者は、次の点に留意する必要があります。
<sys/crypto/common.h> と <sys/crypto/api.h> をインクルードします。
すべての呼び出しをカーネルプログラミングインタフェース経由で行います。
カーネルレベルのプロバイダを開発する開発者は、次の点に留意する必要があります。
<sys/crypto/common.h> と <sys/crypto/api.h> をインクルードします。
登録、登録解除、および状態提供に必要なルーチンをインポートします。
カーネル暗号化フレームワークに対してエントリポイントを提供するために、必要なルーチンをエクスポートします。
サポートされているアルゴリズムの説明を含むデータ構造をエクスポートします。
読み込み可能なカーネルモジュールを作成します。
Sun Microsystems, Inc. に証明書を申請します。「プロバイダに署名するための証明書を要求するには」を参照してください。
証明書と elfsign を使ってバイナリに署名します。「プロバイダに署名するには」を参照してください。
Sun の規約に従ってカーネルモジュールをパッケージ化します。付録 F 暗号化プロバイダのパッケージ化と署名を参照してください。