私は現在、ファイルに署名するためにpyPkcs11を使用しています。pacs#11 apiを使用してRSAでsha256ハッシュに署名しますか?
次の呼び出し、RSAおよびSHA256と共通のファイルに署名するために働く
session.sign(privKey, toSign, Mechanism(CKM_SHA256_RSA_PKCS, None)
しかし、私のファイルの一部がすでに(SHA256)をハッシュ化されており、署名はで与えられる同じ出力を与える必要がありますこのopensslコマンド:私は署名する前に、ファイルのハッシュを生成しません。次の呼び出しを、試してみました
openssl pkeyutl -sign -pkeyopt digest:sha256 -in <inFilePath> -inkey <keyPath> -out <outFilePath>
、
session.sign(privKey, toSign, Mechanism(CKM_RSA_PKCS, None)
一方、
しかし、結果は私が期待されるものではない、とこの記事CKM_RSA_PKCS vs CKM_RSA_X_509 mechanisms in PKCS#11の最初の答えによると、
CKM_RSA_PKCS PKCS#1標準で定義されているようにもパディングを行います。このパディングは、EMSA-PKCS1-v1_5のステップ3,4,5で定義されています。つまり、このメカニズムでは、モジュラスのサイズよりも11バイト短いメッセージのみを受け入れる必要があります。有効なRSASSA-PKCS1-v1_5署名を作成するには、EMSA-PKCS1-v1_5の手順1と2を自分で実行する必要があります。
いくつかの研究の後、私のファイルがRFC 3447で説明署名の最初のステップが含まれていることが表示されますので、不足している部分は、ASN.1値が生成された2つ目です。
pkcs11でこの操作を強制することはできますか?
PKCS#11 documentationには情報が含まれていないようです。
ありがとう、私はできるだけ早くそれをやります。 メモの場合、ファイルと署名メカニズムはインターンの選択肢ではなく、クライアントに決定されるため、私はそれらについて制御できません –