Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-10-2018
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 10
wilcg Va por buen camino
Traducir código de C# a Delphi (para firmar un documento XML)

Amigos del foro necesito su ayuda,
esta funcion sirve para firmar un XML con certificado digital, pero esta en lenguaje C#, no soy bueno en este lenguaje quisiera su ayuda para convertirlo a Delphi. Espero su ayuda es muy importante para mi proyecto.

Código Delphi [-]
public static void firmar(string path_cert, string pass_cert, string path_xml,string path_guardar)
        {
            System.Security.Cryptography.X509Certificates.X509Certificate2 certificado 
                = new System.Security.Cryptography.X509Certificates.X509Certificate2(path_cert,pass_cert,
                    System.Security.Cryptography.X509Certificates.X509KeyStorageFlags.Exportable);
            
            var xmlDoc = new XmlDocument();
            xmlDoc.PreserveWhitespace = true;
            xmlDoc.Load(path_xml);

            var nodoExtension = 
                xmlDoc.GetElementsByTagName(
                    "ExtensionContent", 
                    "urnasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2").Item(0);
            
            var signedXml = new SignedXml(xmlDoc) { SigningKey = certificado.PrivateKey };
            var xmlSignature = signedXml.Signature;

            var env = new XmlDsigEnvelopedSignatureTransform();

            var reference = new Reference(string.Empty);
            reference.AddTransform(env);
            xmlSignature.SignedInfo.AddReference(reference);

            var keyInfo = new KeyInfo();
            var x509Data = new KeyInfoX509Data(certificado);

            x509Data.AddSubjectName(certificado.Subject);

            keyInfo.AddClause(x509Data);
            xmlSignature.KeyInfo = keyInfo;
            xmlSignature.Id = "Sunat";
            signedXml.ComputeSignature();

            nodoExtension.AppendChild(signedXml.GetXml());

            using (var memDoc = new System.IO.MemoryStream())
            {

                using (var writer = XmlWriter.Create(memDoc,
                    new XmlWriterSettings { Encoding = Encoding.GetEncoding("UTF-8") }))
                {
                    xmlDoc.WriteTo(writer);
                }
            }
            xmlDoc.Save(path_guardar);
        }
Responder Con Cita
  #2  
Antiguo 25-10-2018
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Eso de hacer traducciones directas sin saber qué hace paso a paso es complicadete, sí.

Por lo que veo, usa un tipo concreto de codificación. ¿Está disponible en Delphi de alguna forma? Habría que empezar por ahí.

Del resto, veo que maneja o genera un archivo XML. Lo del "using", ni idea (¿WITH? ¿NAMESPACE?), y la creación del objeto signedXML se me escapa también.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 25-10-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Es que no se pide traducir algo más o menos "traducible", sino que habría que traducir mucho más, por decirlo así, como las clases utilizadas, etc. Yo intentaría buscar cómo se puede firmar un XML usando Delphi... encontrarás resultados como este (en inglés), desde el que puedes acaso tirar:

https://stackoverflow.com/questions/...sa-sha256-x509
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conseguir un certificado digital para firmar código dec Varios 148 14-04-2023 10:18:38
Traducir código C++ a Delphi angelp4492 C++ Builder 0 04-06-2015 19:01:23
Ayuda para traducir código delphi a c++ builder mordaz C++ Builder 0 07-05-2014 11:51:50
Ayuda para traducir código PHP a Delphi FideRosado Varios 2 19-10-2013 16:28:51
Traducir código delphi a vb monaguillo Varios 2 08-12-2007 12:32:42


La franja horaria es GMT +2. Ahora son las 14:49:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi