問題タブ [pkcs11interop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Pkcs11Interop.PDF ライブラリの秘密鍵の識別
Pkcs11Interop.PDF拡張機能を使用してサンプル アプリケーションをセットアップしようとしています。残念ながらSystem.ArgumentNullException
、ckaId の設定を取得しています。ここで何が機能しますか?ここでさまざまな番号を試してみましたが、すべてSystem.ArgumentOutOfRangeException
.
セットアップでは、VirtualCryptoki-64-1.0.6.7.exe アプリケーションを使用してスマートカードをシミュレートしています。
厄介な呼び出しは次のとおりです。
私が使用するハッシュアルゴリズムは次のとおりです。
pkcs11-tool を使用した後に更新します。
仮想カードの内容は次のとおりです。
私が使用するパラメータは次のとおりです。
残念ながらNet.Pkcs11Interop.PDF.ObjectNotFoundException
、ckaId の設定を取得しています。ピンを変更すると別の例外が発生するため、ここで適切なデバイスに明確にアクセスしています。
SoftHSM に切り替えた後の更新: jariq は、同じ ID を持つオブジェクトが多すぎることが問題であると述べました。残念ながら、Virtual Key Explorer ではオブジェクトを削除できなかったので、SoftHSM (最初に使用していたもの) に切り替えました。「ラベルが "ibis-it key" で ID "A1B2" の証明書が見つかりませんでした」というメッセージが表示されます。ここでの問題は、この仮想カードが証明書ではなく RSA キーペアのみを保持していることだと思います。
pkcs11-tool の出力は次のとおりです。
問題は、SoftHSM が PKCS#8 (RSA) キー ペアのみをインポートするため、ここに証明書が存在しないことです。証明書ではなく RSA キーペアで使用していると思います。
c# - Pkcs11Interop を使用した PDF 署名
私たちの制度的プロジェクトに Pkcs11Interop ライブラリを使用しようとしています。しかし問題は、トークン カードから値を取得しようとすると、「保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています」というエラーが Pkcs11Interop から取得されることです。解決策が見つかりませんでした。助けてください、よろしくお願いします。
プロジェクトは、.Net Framework 4.5 で作成された Windows フォーム アプリケーションです。
エラー: system.accessviolationexception {"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."}
エラー スタック トレース:
コードは次のようになります。
c# - pkcs11Interop を使用して 3DES キーを作成し、キー値を出力するか、作成用のキー値を提供します
pkcs11interop を使用して 3DES キーを作成し、作成するキー値を指定するか、それともキーを作成し、生成されたキー値を出力することができるかどうか疑問に思っていました。基本的に、秘密鍵を別のデバイスにエクスポートする必要があります。
CKA_VALUE 属性を使用してキーを byte[] 配列として渡そうとしましたが、成功しませんでした。
そのようなことは可能ですか?誰か助けてくれませんか?
編集:
これまでのところ運が悪いコードは次のとおりです。
このコードで私が試みているのは、3DES キーを作成し、次に示すように GetAttributeValue を使用してその値を取得することです。GetValueAsByteArray と GetValueAsString を試しましたが、すべて成功しませんでした。私が気付いたのは、作成時に抽出可能な属性を設定したにもかかわらず、取得した属性の cantread プロパティが true に設定されていることです。
これとは別に、3DES キーの生成時にキー値を渡すことも検討しましたが、私を困惑させたのは、CKA.CKA_VALUE で使用されるキー値は長さ 24 のバイト配列である必要があるとドキュメントに記載されているという事実です。作成する必要がある長さは 24 ではなく 16 です。これに似たキーを作成したいと思います。これはここで 16 進数で表されます: 1616161616161616 1010101010101010
rsa - 既存の秘密鍵を再利用して、スマートカードと PKCS#11 を使用してデジタル署名を生成する方法
pkcs11 標準を使用してデジタル署名を作成したいと考えています。スマート カードに公開鍵と秘密鍵のペアが既に保存されているとします。このキーは、次のコードを使用して生成されました。
これで、これらのキーを使用してデータに署名できるようになりました。例えば:
このコードは、キーを作成して C_sign メソッドで使用する場合に最適です。
しかし、既存のキーにアクセスして同様の操作を行うにはどうすればよいでしょうか? 私が理解しているように、C_Derrive() メソッドを使用して既存の秘密鍵から秘密鍵を導出し、それを C_Sign() メソッドで使用する必要があります。この目的のために、次のコードを書きました。
しかし、このコードを実行すると、次のエラーがスローされます。
メソッド C_GenerateKey が CKR_MECHANISM_INVALID を返しました
私が間違っていることと、この問題を解決する方法を誰か教えてもらえますか?
c# - NitroKey HSM で Pkcs11Interop を使用して EC との共有シークレットを取得する方法
NitroKey HSM を購入し、EC を作成することができました。
ここで、共有秘密を導出したいと思います。この仕事に適したツールと思われるPkcs11Interop
を見つけましたが、その取り扱いは不明です。
コードの断片または作業中のプロジェクトへのリンクをいただければ幸いです。