問題タブ [iaik-jce]
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.
java - IAIKPKCS11ラッパーを使用してPKCS11ドライバーをロードできません
私は以下を使用しています:
- Windows764ビット
- JDK764ビット
- JRE764ビット
新しい面白いJRE764ビットは、Sun PKCS11(パッケージ'sun.security.pkcs11'内にあります)をサポートしなくなりました。そして、大きな問題は、当社の製品のエンドユーザーがJREのバージョンをインストールしている可能性があることです。
したがって、既存のコードを「SunPKCS11」のコードから「IAIKPKCS11ラッパー」に交換する必要があります。IAIKによるラッパーは、次のように簡単に機能します。
PKIトークンドライバのダイナミックリンクライブラリは、PKI USBトークンの製造元から提供されており、実際の名前は「ca2-v34.dll」です。このネイティブドライバをロードする方法は、プログラマーのマニュアルで次のように説明されています。
例外は、上記のコードでマークされた行で発生します。詳細は次のとおりです。java.io.IOException:%1は有効なWin32アプリケーションではありません。ca2-v34.dll
この例外は、IAIKライブラリが.dllファイルを検出したことを意味しますが、どういうわけか互換性がありません。私はこのボトルネックで立ち往生しています。
java - iaik.x509.X509Certificate のバージョン番号を明示的に設定するにはどうすればよいですか?
このページのドキュメントには、
Any value may be set using the corresponding set<Value> method.
しかし、私はこの声明をどのように解釈すればよいかわかりません。私は次のことを試しましたが、どれもコンパイルされませんでしたし、期待もしていませんでした。
バージョン番号を明示的に設定するための正しいメソッド呼び出しは何ですか?
java - PKCS #7 暗号エンベロープ 署名検証エラー: メッセージ ハッシュ
暗号化規格 PKCS # 7 について質問したいのですが、「PATH_DOC_NF1」というファイルがあり、PKCS # 7 暗号エンベロープを作成する必要があります。KeyStore と AIK-JCE (Java ベースの暗号化サービス プロバイダー) を使用します。
私が所有している X.509 証明書は次のとおりです。
バージョン: 3
シリアル番号: 231944
署名アルゴリズム: sha1WithRSAEncryption (1.2.840.113549.1.1.5)
発行者: CN=………,OU=………,O=……,C=IT
以前に有効でない: 2009 年 4 月 1 日:20:15 CEST 2011
not after: Tue Apr 01 09:20:13 CEST 2014
件名: CN=TRANTN59T46H703C-001,OU=……,O=………,C=IT
Sun RSA 公開鍵、1024 ビット
係数: ……<br /> 公開指数: …<br /> 証明書フィンガープリント (MD5) : …………<br /> 証明書フィンガープリント (SHA-1): …………<br />エクステンション: 4
以下に記述されたコードを実行します。
次のエラーが表示されます。
java.security.SignatureException: 署名検証エラー: メッセージ ハッシュ!
iaik.pkcs.pkcs7.SignedDataStream.verify (不明なソース)
で message.PKCS7.main (PKCS7.java:183) で
完全を期すために、作成した Signinfo を挿入します。
バージョン: 1シリアル番号 :
231944発行者 :
CN=………,OU=………,O=……,C=IT encrypted_digest : 128 バイト [7E:B4:19:95: 77 ... ] 2E...
私を助けてくれる人はいますか?
java - pkcs11 のプロバイダーを初期化するには?
nss を pkcs11 のプロバイダーとして使用したいのですが、Java、Oracle JRE、および ubuntu 64 ビットでコーディングしています。iaik と SunPKCS11 の 2 つの異なるラッパーを試しましたが、両方で同じ問題が発生しました。私のプロバイダーでは、最初に libnss3.so を使用しようとしましたが、インスタンス化モジュールで IOException を取得するたびに。次に、libsoftokn3.so を使用して、モジュールのインスタンス化に成功しました。しかし今、私は初期化時にこの例外に直面しています: "CKR_ARGUMENTS_BAD"
これが私のコードです。最初はiaikを使用し、2番目はSunPKCS11を使用しています
イアアク:
SunPKCS11:
およびファイル「cfg」:
java - IAIK PKCS#11 ラッパーが初期化に失敗する
私は web からコードを使用しています:
パラメーター: pkcs11wrapper.dll および VM パラメーター -Djava.library.path=C:/Temp を使用します。
コード内の「C:/Temp/pkcs11wrapper.dll」は必要ありません...
私が得るものは:
私のJREは64ビットで、dllも64ビットです(32ビットバージョンに置き換えると、間違ったDLLバージョンに関する明確なエラーが発生します)JREはv1.7.0.21、iaikラッパーv1.2.18です。32 ビット JRE と 32 ビット DLL を使用した場合、エラーは同じです。
ここで何が間違っている可能性がありますか?
iaikPkcs11Wrapper v1.3 のソース コードを取得しました。DEBUG モードで実行すると、次の行にPKCS11Connector.connectToPKCS11Module(String, String) line: 92
移動しreturn new PKCS11Implementation(pkcs11ModulePath, pkcs11WrapperPath);
ます。ソース間には PKCS11Implementation クラスが存在しますが、デバッガーはコンストラクター コードにジャンプしたくありません。
これらの結果は、IAIK ソースとテスト クラスのみを含むプロジェクトを実行したときに達成されました。
java - iaik pkcs#11 ラッパーと java.lang.NoSuchMethodError
iaik pkcs#11 ラッパー (バージョン 1.3、最新の atm) から簡単なサンプル コードを実行しようとしていますが、すぐに応答NoSuchMethodError
しpkcs11Module.initialize
ます。
例外スタック トレースは次のとおりです。
同様のコードは Linux でも問題なく動作するため、pkcs11wrapper.dll に何か問題があると推測しています。
pkcs11wrapper.dll
およびディレクトリにsiecap11.dll
ありc\windows\system32
、両方とも32ビットモジュールです。
別の pkcs#11 プロバイダー、デバッグおよびリリース バージョンの pkcs11wrapper を試しましたが、結果は同じでした。
pkcs11wrapper.dll のデバッグ バージョンは、次の出力を生成します。
スマート カードに付属のユーティリティ アプリケーションは正常に動作し、opensc pkcs11-tool も正常に動作します。
編集:
バージョン 1.2.17 の pkcs11 ラッパー ライブラリとそれに付随する dll を使用すると、上記のコードは問題なく動作します。しかし、元の質問は未解決のままです。
EDIT2:
SubOptimal によって提案された次のコードは、次の出力を生成します。
出力:
java - IAIK lib による検証署名データの例外
IAIK PKCS11 ライブラリを使用しています。USB トークンの証明書によってデータに署名し、検証したいと考えています。署名済みデータの検証に問題があります。Str_CertName(Certificate) で plainData に署名します。私は java.security と iaik.pkcs を使用します。
それは私のコードです: