問題タブ [capicom]
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.
php - PHPでactivex dllを使用するにはどうすればよいですか?
PHP ページに ActiveX DLL をロードし、その関数をロードしたいと考えています。
例: CAPICOM.DLL
delphi - X.509 証明書から公開鍵をインポートする際の「ASN1 タグの値が正しくありません」エラー
X.509 証明書によって提供される公開鍵を使用して、RSA で何かを暗号化する必要があります。証明書は正常です (Windows エクスプローラーで確認すると、公開鍵、RSA 20148 ビットが表示されます)。
公開鍵をインポートする最初の基本的なステップを実行しようとすると失敗します - タグ付けされたソース行で EOSError 例外「ASN1 tag bad value」が発生します (Win32Check によってスローされます)。これを解決するにはどうすればよいですか?
私は使っている:
- Rudy Velthuis による WinCrypt (最終更新日 2008 年 3 月 7 日)
- デルファイ(XE2)
ソースコード:
- 証明書ファイルを正しく読み取っていますか? 他のものを使用する必要がありますか?
- API メソッドを正しく使用していますか?
- このエラー (「ASN1 タグの値が正しくありません」) の原因は何ですか?
itext - iText を使用して Web コンテキストでスマート カードを使用して PDF に署名するにはどうすればよいですか?
次の参考文献を読んでください。
- iText デジタル署名のホワイト ペーパー、およびC# の例。(具体的には第 4 章) 興味のある方のために、PDF 署名プロセスの 優れた簡潔な要約をもう 1 つ紹介します。
- CAPICOM のドキュメント。
- オンラインの例/質問はこちら、および iText メーリング リストのアーカイブ (こちらやこちらなど) にあります。
ハッシュコード:
簡単なテスト - 最初のページ要求でダミーの Pdf ドキュメントが作成され、ハッシュが計算され、非表示の入力フィールドに Base64 エンコードされて配置されます。(hashedValue
上記)
次に、クライアント側で CAPICOM を使用してフォームを POST し、ユーザーの署名付き応答を取得します。
そのため、ハッシュ部分、署名部分、またはその両方を台無しにしているかどうかはわかりません。上記の署名コード スニペットとクライアント コード (表示されていません) では、署名検証コードと思われるものを呼び出していますが、これは私にとって初めてのことなので、これも間違っている可能性があります。PDFを開くと、悪名高い「ドキュメントは署名されてから変更されたか破損しています」という無効な署名メッセージが表示されます。
クライアント側のコード (私が作成したものではありません)は、ここにあります。ソースに変数の命名エラーがあり、修正されました。参考までに、CAPICOM のドキュメントには、署名された応答は PKCS#7 形式であると記載されています。
編集 2015-03-12 :
@mkl からのいくつかの素晴らしい指針とさらなる調査の後、このシナリオでは CAPICOM は実質的に使用できないようです。明確に文書化されていませんが (他に何が新しいのですか?) hereおよびhereによると、CAPICOM はEncoding.Unicode
デジタル署名を作成するための入力として utf16 文字列 (.NET 内) を想定しています。そこから、長さが奇数の場合に受け取ったデータが何であれ、(前の文のどのソースが正しいかに応じて) パディングまたは切り捨てます。つまり、署名の作成は、 PdfSignatureAppearance.GetRangeStream ()Stream
によって返される長さが奇数の場合、常に失敗します。多分私はラッキーです作成する必要がありますオプション: 範囲指定されたストリームの長さが偶数の場合は署名し、InvalidOperationException
奇数の場合はスローします。(悲しいユーモアの試み)
参考までに、ここにテスト プロジェクトを示します。
編集 2015-03-25 :
このループを閉じるには、VS 2013 ASP.NET MVC プロジェクトへのリンクを次に示します。最善の方法ではないかもしれませんが、問題に対して完全に機能するソリューションを提供します。上記のように、CAPICOM の奇妙で柔軟性のない署名の実装により、考えられる解決策には、2 回目のパスと、PdfSignatureAppearance.GetRangeStream() (再び) の戻り値が奇数の場合に余分なバイトを挿入する方法が必要になる可能性があることがわかっていましたStream.Length
。私は、PDF コンテンツをパディングするという長くて難しい方法を試すつもりでしたが、幸いなことに、同僚はパディングがはるかに簡単であることに気付きましたPdfSignatureAppearance.Reason
。iText[Sharp] で何かを行うために 2 回目のパスが必要になることは、前例のないことではありません。ドキュメント ページのヘッダー/フッターに x/y ページを追加します。
javascript - Windows 仮想スマート カード (VSC) セキュリティ エラー
javascript と activeX (CAPICOM Store api) を使用して、IE 11 を介してユーザー ストアから証明書を削除しようとしています。
私が使用するJavaScriptコードは次のとおりです。
oldCertificate は Capicom Certificate オブジェクトであり、userCertificateStore は Capicom Store オブジェクトです。
テストのために、私は以前、Windows 8.1 タッチ パッドと Gemalto スマート カード リーダーで、偽の VSC として TPM とキー ストレージを備えたスマート カードを使用していました。すべてがうまくいきました。
タッチ パッドに VSC をインストールしたので、VSC にある証明書を削除しようとすると、スマート カードを選択できる Windows セキュリティ プロンプトでエラーが表示されます (つまり、スマート カードの選択) 。
VSC を選択すると、「セキュリティ ドライバには、システムにないパイロットが必要です。管理者に連絡してください。」と表示されます。
これはかなり一般的なエラーのようです...
Capicom は廃止されたため、MSDN Web サイトの X509 Store でドキュメントを検索しようとしましたが、オブジェクト メソッドまたはプロパティを取得できませんでした。
この問題を一時的に回避するために、すべての証明書選択リストとユーザー ストアから非表示にするために、アーカイブ済み証明書属性を true に設定することにしました。これは機能しますが、キー コンテナーはシステム上にまだ存在します... これにより、コンテナーの制限数で問題が発生する可能性があります。
どのパイロットをインストールするか、またはどのセキュリティ オプションを使用すると、JavaScript コードで VSC のキー ストレージを削除できるか知っている人はいますか?
または、誰かが X509 ストアで証明書を削除する実際の例を持っている場合、それは素晴らしいことです! オブジェクトのメソッドとプロパティを含む完全なドキュメントへのリンクもあります。
ありがとう
installshield - DLL が別のアプリケーションで使用されているかどうかを確認する
インストーラーを使用して登録capicom.dll
し、製品のアンインストール中に登録を解除しています。別のサードパーティ製ソフトウェア「ABC」があり、この DLL も登録して使用します。
しかし問題は、自分の製品をアンインストールするときに capicom.dll の登録を解除することです。このため、別のサードパーティ製ソフトウェア「ABC」が正常に動作していません。では、この DLL を登録解除する際に、この DLL が別の製品/アプリケーションによって使用されているかどうかを確認するにはどうすればよいでしょうか?
x509certificate2 - カピコムとX509
私はウェブ申請フォームを持っています。目的は、Web フォームからデータの xml を作成し、ユーザーの USB 証明書で署名することです。CAPICOM.store を使用して、すべてのユーザー証明書を正常に開きます。必要なものをクリックすると、エクスポートされました。その後、選択した証明書を X509Cetificate2 にインポートして xml に署名します。しかし、私のコードでは、signedXml.ComputeSignature() 行でエラーが発生し、メッセージは「署名キーが読み込まれていません」です。これを修正するためのヘルプまたは提案をお願いします。