/// <summary> /// Genera la firma CADES /// </summary> /// <param name="data">Datos a firmar</param> /// <param name="privateKey">Clave privada usada para la firma</param> /// <param name="certificado">Certificado del firmante</param> /// <param name="algo">Algoritmo de firma</param> /// <param name="format">Formato de firma</param> /// <returns>Firma en formato binario</returns> public static byte[] getCades(byte[] data, RsaKeyParameters privateKey, byte[] certificado, string algo, string format) { GenCAdESEPESSignedData prueba = new GenCAdESEPESSignedData(); Dictionary<string, string> p1 = new Dictionary<string, string>(); p1.Add("format", format); p1.Add("mode", "implicit"); p1.Add("policyIdentifier", null); p1.Add("policyIdentifierHash", null); p1.Add("policyIdentifierHashAlgorithm", null); p1.Add("policyQualifier", null); p1.Add("signingCertificateV2", "false"); AdESPolicy politica = new AdESPolicy(p1); X509Certificate2 cert = new X509Certificate2(); cert.SetRawCertData(certificado); cert.SetKey(privateKey); X509Certificate2[] certs = new X509Certificate2[1]; certs[0] = cert; AOCAdESSigner cadesSigner = new AOCAdESSigner(); byte[] datos = cadesSigner.sign(data, algo, certs, p1); return datos; }