Co-assinatura
O PKI SDK permite que diferentes signatários que assinam um mesmo documento possam ser agrupados em um mesmo pacote de assinatura. Esta modalidade de assinaturas em paralelo se chama co-assinatura e é prevista pelo padrão CAdES.
O exemplo abaixo demostra uma co-assinatura básica:
// Assinatura CAdES básica prévea
byte[] cadesSig1 = ...
// Co-assinando a assinatura cadesSig1
PKCertificateWithKey signingCert2 = ...
var signer2 = new CadesSigner();
signer2.SetSigningCertificate(signingCert2);
signer2.SetDataToSign(toSign);
signer2.SetPolicy(policy);
// Definindo a assinatura prévea para co-assinatura
signer2.SetSignatureToCoSign(cadesSig1);
signer2.ComputeSignature();
byte[] cadesCoSig = signer2.GetSignature();
Note
Caso a assinatura cadesSig1 já tenha o documento assinado no encapsulated-content, não é necessária a chamada do método SetDataToSign(Byte[]) na co-assinatura.
Caso se tenha assinaturas paralelas de um mesmo documento, sem que se tenha utilizado o método SetSignatureToCoSign(Byte[]), também é possivel fundir as assinaturas em uma co-assinatura através do método MergeSignatures(IEnumerable<CadesSignature>) da classe CadesSignatureEditor.