4

私がここで読んだように:

「ほとんどのJava暗号化アーキテクチャ(JCA)プロバイダーとは異なり、Sun PKCS#11プロバイダーは暗号化機能を直接実装しません。すべての操作を転送するネイティブPKCS#11実装に依存します。この実装は.dllとして利用可能である必要があります。 Windowsの場合はファイル、UNIXおよびLinuxの場合は.soファイル。たとえば、Utimaco SafeGuard Smartcard Provider for Windowsを使用する場合、PKCS#11の実装はライブラリpkcs201n.dllです。」

スマートカードプロバイダーはjcaプロバイダーを持つ義務がありますか?たとえば、ジェムアルトのjcaプロバイダーはどこにありますか?

4

3 に答える 3

5

PKCS#11リファレンスガイドは、開始するのに適した場所です。

Gemaltoスマートカードには常にPKCS#11 DLLが付属していますが、残念ながらカードによって名前が異なります。「p」と「11」が含まれているDLLが見つかるまで、インストールに付属しているファイルを調べてください:)

見つけたら、リファレンスガイドに記載されている手順に従うことができます。つまり、PKCS#11ライブラリなどを指す構成ファイルを作成します。すべてがうまくいけば、スマートカードに簡単にアクセスできるはずです。

KeyStore ks = KeyStore.getInstance("PKCS11");
ks.load(null, "pin".toCharArray());

もちろん、本番コードの場合は、ガイドに概説されているように適切に実装する必要があることに注意してくださいCallbackHandler。上記は、すべてが機能することを簡単に確認するためのものです。

于 2012-05-07T16:57:25.143 に答える
4

スマートカードプロバイダーはjcaプロバイダーを持つ義務がありますか?たとえば、ジェムアルトのjcaプロバイダーはどこにありますか?

いいえ、もちろんそうではありません。それは契約の内容に完全に依存します。PKCS#11互換のライブラリ(プロバイダー/カードに応じて機能が多かれ少なかれ)を入手する可能性が非常に高くなります。これがPKCS#11プロバイダーと互換性があることは、おそらく完全にはテストされていませんが、これは、構成方法に少し注意が必要です。実際のJCAプロバイダーの提供はまれであり、実際に機能するプロバイダーを入手できれば幸運です。

[編集]

タイトルの別の質問について:Sun PKCS#11プロバイダーのみがを構成する必要があります.dll。他の人は、実装によっては1つ必要になる場合があります。プロバイダーがOSサポートに依存している場合(たとえば、CAPIプロバイダーがWindows機能を使用している場合)、構成不可能な、.dllまたは.soライブラリパス上のどこかに必要になる可能性があります。.dllBouncy Castleおよびその他の純粋なJavaプロバイダーは、通常、またはを必要としません.so

ジェムアルトに連絡して、JCAプロバイダーがあるかどうかを確認してください。確実に知っておく必要があります。

于 2012-05-06T22:21:59.220 に答える
3

参照しているPKCS#11 DLLは、PKCS#11APIを使用できるアプリケーションと特定の暗号化ハードウェア実装との間のインターフェイスです。暗号化ハードウェアはそれぞれ異なるため、独自のPKCS#11DLLが必要です。したがって、アプリケーションがPKCS#11を介して暗号化ハードウェアと通信するように設計されている場合は、ベンダー提供のDLLを呼び出す必要があります。つまり、JavaにPKCS#11のネイティブ実装がないわけではなく、PKCS#11がどのように使用されるように設計されているかということです。

ハードウェアベンダーがJCAモジュールを提供する義務はないと思いますが、それらの多く(ほとんどではないにしても)はPKCS#11ドライバーとCryptoAPIモジュール(CSP)のみを提供しています。

于 2012-05-07T03:53:32.973 に答える