Pergunta

Eu estou usando

SignedCms.CheckSignature (certColl, true)

(com apenas uma cert em certColl) para verificar a assinatura de uma mensagem PKCS-7. Meu problema é que eu não quero mudar o (parte pública da) Certificado de assinantes no meu servidor após o signatário renovou seu certificado :-( A chave pública, emissor eo assunto estão permanecendo inalterada após signatário renovou seu certificado! Portanto, este tem que trabalhar - pelo menos na minha opinião, mesmo que eu não sou um cripto-geek :-)

.. mas, infelizmente, o .NET Framework-lança uma exceção criptográfica "Não é possível localizar o assinante original" como o stacktrace diz exatamente em:

SignerInfo.CheckSignature (X509Certificate2Collection extraStore, Boolean verifySignatureOnly)

Esta deve ser porque o número de série do certificado signatários mudou ea propriedade SignerIdentifier é somente leitura e conjunto para issuerAndSerialNumber.

Alguém sabe como resolver isso?

Ou eu tenho que implementar uma assinatura "artesanal" verificar com sth como:? SignedMessage.ComputeSignature (assinante, false)

Agradecemos antecipadamente e programação feliz, Krile

Foi útil?

Solução

Para todos os interessados ??sobre esta questão:

Alguém me disse que isso se deve ao PKCS # 7 especificação, que afirma que o SubjectKeyIdentifier é sempre definido como issuerAndSerialNumber.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top