none
Problemas al firmar XML con C# RRS feed

  • Pregunta

  • Hola estimada comunidad, tengo el siguiente código para firmar XML:

    private XmlDocument FirmarXML(XmlDocument xmlDoc, string nombreCert)
            {
                X509Certificate2 myCert = new X509Certificate2();
                myCert = GetCertificateBySubject(nombreCert);
    
                var key = new RSACryptoServiceProvider(new CspParameters(24 /* PROV_RSA_AES */));
    
                key.PersistKeyInCsp = false;
    
                CspKeyContainerInfo keyInfo = key.CspKeyContainerInfo;
    
                var exportedKeyMaterial = myCert.PrivateKey.ToXmlString(/* includePrivateParameters = */ true);
    
                key.FromXmlString(exportedKeyMaterial);
    
                SignXml(xmlDoc, key, myCert);
    
                return xmlDoc;
            }

    Funciona a la perfección, pero esto solo funciona con certificados que sean exportables, no con certificados que no sean exportables´, y ahora necesito hacer que funcione con certificados que no tengan la llave privada como exportable, comente las lineas:

                var exportedKeyMaterial = myCert.PrivateKey.ToXmlString(/* includePrivateParameters = */ true);
    
                key.FromXmlString(exportedKeyMaterial);

    y firma el XML pero ya no puedo verificar la firma, bueno creo que la pregunta del millon seria:

    ¿Como firmar un XML con un certificado con llave privada que no es exportable, este certificado no es un archivo fisico .pfx, est certificado se encuentra en el repositorio MMC?

    Gracias de antemano.


    Roy Sillerico

    viernes, 27 de enero de 2017 23:15