2016-10-03 3 views
0

私の目標は、CACカードから情報を読み取り、pkcs11を使用して情報を抽出し、文書に署名することです。私は私のハードウェアのための右のdllを見つけることができなかったので、私は私のマシン上でopenSCをインストールし、次のコードでopensc-pkcs11.dllを使用:java.security.KeyStoreException:PKCS11が見つかりません

String configName = "pkcs.cnf"; //my config file that points to opensc-pkcs11.dll 
String PIN = "123456"; 
Provider p = new sun.security.pkcs11.SunPKCS11(configName); 
Security.addProvider(p); 
KeyStore keyStore = KeyStore.getInstance("PKCS11"); 
char[] pin = PIN.toCharArray(); 
keyStore.load(null, pin); 

しかし、私は、次の場所でのエラーを取得しています

KeyStore keyStore = KeyStore.getInstance("PKCS11"); 

java.security.KeyStoreException: PKCS11 not found 
    at java.security.KeyStore.getInstance(Unknown Source) 
    Caused by: java.security.NoSuchAlgorithmException: no such algorithm: PKCS11 for provider SunPKCS11-FooAccelerator 
    at sun.security.jca.GetInstance.getService(Unknown Source) 
    at sun.security.jca.GetInstance.getInstance(Unknown Source) 
    at java.security.Security.getImpl(Unknown Source) 
    ... 2 more 

ヘルプ:エラースタックトレースを持つ

+0

を私は問題があなたの.dllであると信じて、チェックを正しいdllファイルを参照している場合 – mhasan

+0

KeyStoreを使用しない理由KeyStore = KeyStore.getInstance( "PKCS11"、p);キーストアを取得すると、あなたの問題に近づくのを助けるかもしれません – mhasan

+0

@mhasan、どちらもうまくいきませんでした。インターネットからdllをダウンロードできますか?私はCACカードを使用しています – dexter

答えて

0

まず、以下に示すようconfig.cfgを作成します。

name=name of your CAC card 
slot=1 
library=C:\Windows\System32\eps2003csp11.dll 
\\This is the dll file for etoken like this when you are installing driver, a separate dll file would be generated for your CAC card. 

を下記に示すように、プログラムで設定ファイルのパスを提供します。

Provider p = new sun.security.pkcs11.SunPKCS11(configFilepath); 
Security.addProvider(p); 
+0

あなたの意思を劇的に変更するこの記事の最近の編集に気付きました、あなたの意図かどうかを確認してください – Danh

関連する問題