0

私は使っている

SignedCms.CheckSignature(certColl, true)

(certColl に証明書が 1 つだけある場合) pkcs-7 メッセージの署名を検証します。私の問題は、署名者が証明書を更新した後、サーバー上の署名者証明書 (の公開部分) を変更したくないということです:-( 署名者が証明書を更新した後、公開鍵、発行者、サブジェクトは変更されません!動作する必要があります-少なくとも私の意見では、たとえ私が暗号マニアでなくても:-)

..しかし、残念ながら、スタックトレースが正確に言うように、.NETフレームワークは暗号化例外「元の署名者が見つかりません」をスローします:

SignerInfo.CheckSignature(X509Certificate2Collection extraStore, Boolean verifySignatureOnly)

これは、署名者証明書のシリアル番号が変更され、SignerIdentifier プロパティが読み取り専用で、IssuerAndSerialNumber に設定されているためです。

これを回避する方法を知っている人はいますか?

または、signedMessage.ComputeSignature(signer, false) のような sth で検証する「手作りの」署名を実装する必要がありますか?

前もって感謝し、幸せなプログラミング、Krile

4

1 に答える 1

0

この問題に関心のあるすべての人へ:

これは、SubjectKeyIdentifier が常に IssuerAndSerialNumber に設定されていると規定されている PKCS #7 仕様によるものだと誰かが私に言いました。

于 2009-12-15T13:27:19.053 に答える