SignedCms.CheckSignature() с обновленным сертификатом -> новый серийный номер?

Я использую

SignedCms.CheckSignature (certColl, true)

(только с одним сертификатом в certColl) для проверки подписи сообщения pkcs-7. Моя проблема в том, что я не хочу изменять (публичную часть) сертификат подписавшего на моем сервере после того, как подписчик обновил свой сертификат:-(Открытый ключ, издатель и тема остаются неизменными после того, как подписывающее лицо обновило свой сертификат! Так что это должен работать - по крайней мере, на мой взгляд, даже если я не крипто-гик:-)

... но, к сожалению,.NET-Framework генерирует криптографическое исключение "Не удается найти оригинального подписавшего", как в трассировке стека указано точно:

SignerInfo.CheckSignature (X509Certificate2Collection extraStore, Boolean verifySignatureOnly)

Это должно быть связано с тем, что серийный номер сертификата подписавшего лица изменился, а свойство SignerIdentifier доступно только для чтения и имеет значение IssuerAndSerialNumber.

Кто-нибудь знает, как это обойти?

Или я должен реализовать "подпись", проверяющую вручную с помощью sth, например: signatureMessage.ComputeSignature(signer, false)?

Заранее спасибо и счастливого программирования, Криле

1 ответ

Решение

Для всех интересующихся этим вопросом:

Кто-то сказал мне, что это связано со спецификацией PKCS #7, в которой говорится, что SubjectKeyIdentifier всегда имеет значение IssuerAndSerialNumber.

Другие вопросы по тегам