2017-10-06 4 views
0

私は、すべての読みに応じて、USBトークン(HSM)を使用しているが、キーをUSBトークンから取得すると、なぜKeyStore.getKey(alias,password)がJavaコードで呼び出されるのですか?usbトークンのprivateKeyにアクセスできない間に、Javaでkeystore.getKey()を使用してpdfにデジタル署名する理由

私はksが私のKeyStoreオブジェクトであるこのようなことをしました。

PrivateKey privateKey=(PrivateKey)ks.getKey(alias,pass.toCharArray()); 

次に、privateKeyを印刷すると、次の値が取得されます。

誰でもこの手順の必要性について説明し、USBトークンを使用してデジタル署名するときにはどうすればいいですか?

答えて

1

PrivateKeyは、実装は暗号化プロバイダに依存します。

USBトークンの場合、プロバイダ(おそらくSun pkcs#11)は、暗号操作を実行するときにpkcs11コマンドをトークンにカプセル化します。秘密鍵は実際にJavaサービスには含まれておらず、コマンドはトークン上で実行されます

秘密鍵は抽出不可能なため、encodedの値はnullにする必要があります。たとえば、Pkcs12キーストア(ローカルの.p12ファイル)を使用すると、encoded属性にDER形式でエンコードされた秘密キーが含まれていることがわかります

関連する問題