SignedCms.CheckSignature () com renovado cert -> nova série?
-
12-09-2019 - |
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
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.