none
Cómo realizar un XML Digital Signature con un archivo fisico .Key o .Cer RRS feed

  • Pregunta

  • Cordial Saludo. quisiera preguntar si es posible firmar mediante "XML Digital Signature"y con un archivo (llave) fisico (.cer o .key cualquiera de los dos) pero que se encuentren en una ruta fisica no en un repositorio de Certificados. he tratado por medio del siguiente codigo pero falla:

                    X509Certificate vv = new X509Certificate(c:/certificado.cer", "clavedelcertificado");// o tambien puede ser con extension .key
                    X509Certificate2 cert = new System.Security.Cryptography.X509Certificates.X509Certificate2(vv);


                    AsymmetricAlgorithm key = cert.PrivateKey;

                    //Crea un objeto XmlDocument; para ello, cargua un archivo XML de disco.
                    //El objeto XmlDocument contiene el elemento XML que se debe cifrar.
                    XmlDocument xmlDoc = new XmlDocument();
                    // carga el archivo XML en el objeto XmlDocument.
                    xmlDoc.PreserveWhitespace = true;
                    xmlDoc.Load(Ruta);
                    SignedXml signedXml = new SignedXml(xmlDoc);
                    signedXml.SigningKey = key;
                    Reference reference = new Reference();
                    reference.Uri = "";

                    XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
                    reference.AddTransform(env);

                    signedXml.AddReference(reference);

                    signedXml.SigningKey = cert.PrivateKey;

                    signedXml.ComputeSignature(); // aqui falla porque al parecer no tiene la llave Privada.

     

     

    Agradeceria que me colaboraran con este tema.

    martes, 24 de agosto de 2010 15:17