2

Pkcs11Interop.PDF拡張機能を使用してサンプル アプリケーションをセットアップしようとしています。残念ながらSystem.ArgumentNullException、ckaId の設定を取得しています。ここで何が機能しますか?ここでさまざまな番号を試してみましたが、すべてSystem.ArgumentOutOfRangeException.

セットアップでは、VirtualCryptoki-64-1.0.6.7.exe アプリケーションを使用してスマートカードをシミュレートしています。

厄介な呼び出しは次のとおりです。

pkcs11RsaSignature = new Pkcs11RsaSignature(libraryPath, tokenSerial, tokenLabel, pin, ckaLabel, ckaId, hashAlgorithm);

私が使用するハッシュアルゴリズムは次のとおりです。

HashAlgorithm hashAlgorithm = HashAlgorithm.SHA256;

pkcs11-tool を使用した後に更新します。

仮想カードの内容は次のとおりです。

    C:\Program Files\OpenSC Project\OpenSC\tools>pkcs11-tool.exe --module "C:\windows\System32\vcki.dll" --list-slots --list-objects --login --pin 1234
Available slots:
Slot 0 (0xd47db04d): Virtual Smart Card Reader
  token label:   Virtual SC-A0101010101
  token manuf:   Cryptware
  token model:   VirtualSmartCard
  token flags:   rng, login required, PIN initialized, token initialized, other flags=0x200
  serial num  :
Using slot 0 with a present token (0xd47db04d)
Certificate Object, type = X.509 cert
  label:      ibisit
  ID:         4a656e73204b6175666d616e6e
Public Key Object; RSA 1024 bits
  label:      ibisit
  ID:         4a656e73204b6175666d616e6e
  Usage:      encrypt, verify
Private Key Object; RSA
  label:      ibisit
  ID:         4a656e73204b6175666d616e6e
  Usage:      decrypt, sign
warning: PKCS11 function C_GetAttributeValue(ALWAYS_AUTHENTICATE) failed: rv = CKR_ATTRIBUTE_TYPE_INVALID (0x12)

Public Key Object; RSA 1024 bits
  label:      ibisit
  ID:         4a656e73204b6175666d616e6e
  Usage:      encrypt, verify
Private Key Object; RSA
  label:      ibisit
  ID:         4a656e73204b6175666d616e6e
  Usage:      decrypt, sign
warning: PKCS11 function C_GetAttributeValue(ALWAYS_AUTHENTICATE) failed: rv = CKR_ATTRIBUTE_TYPE_INVALID (0x12)

私が使用するパラメータは次のとおりです。

string libraryPath = @"C:\Windows\System32\vcki.dll";
string tokenSerial = null;
string tokenLabel = @"Virtual SC-A0101010101";
string pin = @"1234";
string ckaLabel = @"ibisit";
string ckaId = "4a656e73204b6175666d616e6e";
HashAlgorithm hashAlgorithm = HashAlgorithm.SHA256;

残念ながらNet.Pkcs11Interop.PDF.ObjectNotFoundException、ckaId の設定を取得しています。ピンを変更すると別の例外が発生するため、ここで適切なデバイスに明確にアクセスしています。

SoftHSM に切り替えた後の更新: jariq は、同じ ID を持つオブジェクトが多すぎることが問題であると述べました。残念ながら、Virtual Key Explorer ではオブジェクトを削除できなかったので、SoftHSM (最初に使用していたもの) に切り替えました。「ラベルが "ibis-it key" で ID "A1B2" の証明書が見つかりませんでした」というメッセージが表示されます。ここでの問題は、この仮想カードが証明書ではなく RSA キーペアのみを保持していることだと思います。

pkcs11-tool の出力は次のとおりです。

C:\Program Files (x86)\OpenSC Project\OpenSC\tools>pkcs11-tool.exe --module "C:\SoftHSM\lib\libsofthsm.dll" --list-slots --list-objects --login --pin smart
Available slots:
Slot 0 (0x0): SoftHSM
  token label:   SoftHSM
  token manuf:   SoftHSM
  token model:   SoftHSM
  token flags:   rng, login required, PIN initialized, token initialized, other flags=0x40
  serial num  :  1
Using slot 0 with a present token (0x0)
Public Key Object; RSA 2048 bits
  label:      ibis-it key
  ID:         a1b2
  Usage:      verify
Private Key Object; RSA
  label:      ibis-it key
  ID:         a1b2
  Usage:      sign

問題は、SoftHSM が PKCS#8 (RSA) キー ペアのみをインポートするため、ここに証明書が存在しないことです。証明書ではなく RSA キーペアで使用していると思います。

4

1 に答える 1