Tenho uma dúvida quanto co-assinaturas e contra-assinaturas utilizando a bouncycastle.
Quando um arquivo esta assinado apenas uma vez consigo capturar a assinatura sem problema.
Porém, quando assino o arquivo novamente só consigo visualizar a ultima assinatura, isto acontece porque não esta sendo feita uma co-assinatura e sim uma contra assinatura.
É possível incluir assinaturas no mesmo nível de outra assinatura em um arquivo já assinado?(isso ficou claro?)
Já tentei geras assinaturas adicionais das seguintes maneiras
byte [] arquivoJaAssinado = (...);
CMSSignedData signedDoc = new CMSSignedData(arquivoJaAssinado);
CMSSignedData signedDoc2 = new CMSSignedData();
//assim é incluida uma contra-assinatura e na segunda
signedDoc2 = getSignedDataGenerator().generate(signedDoc.getSignedContent(),true,provider);
e
//assim a primeira assinatura é ignorada e tenho um arquivo com uma assinatura apenas
signedDoc2 = getSignedDataGenerator().generate(new CMSProcessableByteArray(
signedDoc.getSignedContent().getContent()),true,provider);
Tenho uma dúvida quanto co-assinaturas e contra-assinaturas utilizando a bouncycastle.
Quando um arquivo esta assinado apenas uma vez consigo capturar a assinatura sem problema.
Porém, quando assino o arquivo novamente só consigo visualizar a ultima assinatura, isto acontece porque não esta sendo feita uma co-assinatura e sim uma contra assinatura.
É possível incluir assinaturas no mesmo nível de outra assinatura em um arquivo já assinado?(isso ficou claro?)
Já tentei geras assinaturas adicionais das seguintes maneiras
(…)
[/quote]
Não sei se ficou claro a questão de coassinaturas e contra assinaturas, por isso estou postando um exemplo esquemático das situações
nesse caso as assinaturas se interferem
assinatura mais externa anula a assinatura do EnvelopedData mais interno podendo até “esconder” uma possível invalidade.
<arquivoContraAssinado><!--CMSenvelopedData-->
<dado>
<arquivoAssinado> <!--CMSenvelopedData-->
<dado> <!--CMSSignedData-->
dado
</dado>
<assinatura id="1"> <!--CMSSignerInfo-->
assinatura1
</assinatura>
<arquivoAssinado>
</dado>
<!--essa assinatura anula a assinatura do EnvelopedData mais interno podendo até "esconder" uma possível invalidade-->
<assinatura id="2">
assinatura3
</assinatura>
<arquivoContraAssinado>