Question:
Date: 07-07-2020 09:47:55
(In Spanish)
Paso parte del código, donde en la función armo_y_firmo_xml() mi idea era armar el xml con los datos y no encuentro como firmar ese xml. Estoy usando soap y php.
Alguien tiene idea si hay alguna librería en php con la que pueda hacer esto? o si hay otra forma?
Si pudieran orientarme para consumir este servicio se los agradezco.
Consumir con PHP un servicio WS al que le tengo que enviar un XML firmado[Unresolved]
Hola a todos, tengo un problema para consumir un WS al que le tengo que enviar un xml firmado.Paso parte del código, donde en la función armo_y_firmo_xml() mi idea era armar el xml con los datos y no encuentro como firmar ese xml. Estoy usando soap y php.
Alguien tiene idea si hay alguna librería en php con la que pueda hacer esto? o si hay otra forma?
Si pudieran orientarme para consumir este servicio se los agradezco.
$url = //WS del cliente $client = new SoapClient($url, true,false,false,false,false,0,600); $client->setHeaders(""); // Check for an error $err = $client->getError(); if ($err) { // Display the error echo '<br><p><b>Constructor error: ' . $err . '</b></p>'; } else { // Check for a fault if ($client->fault) { echo '<br><PRE>Fault: '; print_r($client->fault); echo '<br></PRE>'; } else { // Check for errors $err = $client->getError(); if ($err) { // Display the error echo '<br><PRE>Error: ' . $err . '</PRE>'; } else { // llamo a la función armo_y_firmo_xml() para definir el xml....pero no se como firmarlo $archivo_xml = armo_y_firmo_xml(); $parametros = array('certificado' => $archivo_xml, 'codigoEntidadCertificacion' => $nro_ingreso, 'pin' => $nro_solicitud); $Respuesta = $client->call('enviarCertificadosInput',$parametros ); $resp_desc = $Respuesta["desc"]; $resp_estado = $Respuesta["estado"]; } } } function armo_y_firmo_xml(){ $archivo='<?xml version="1.0" encoding="UTF-8"?> <ns1:Envelope xmlns:ns1="http://www.w3.org/2001/12/soap-envelope" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ursea.gub.uy/xmldef/xml.xsd"> <ns1:URSEACert> <Certificado> <DatosGenerales> <TipoCertificado>'.$tipo_certificado.'</TipoCertificado> <NombreCertificado>'.$nombre_certificado.'</NombreCertificado> </DatosGenerales> <DatosTipoCertificado> <Procedencia>'.$procedencia.'</Procedencia> <Fabricante>'.$facricante.'</Fabricante> </DatosTipoCertificado> <Evaluacion> <Marca>'.$marca.'</Marca> <Modelo>'.$modelo.'</Modelo> </Evaluacion> </Certificado> <ds:Signature> <!--- Algoritmos sugeridos preliminarmente: hash-sha256, encriptación asimétrica-RSA --> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> <ds:Reference URI="#Certificado"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#” /> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>hash</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>signature</ds:SignatureValue> <ds:KeyInfo> <ds:X509Data> <ds:X509Certificate>certificate</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </ds:Signature> </ns1:URSEACert> </ns1:Envelope> '; return $archivo; }Votes: 0 - Answers: 1 - Views: 8 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 19-07-2020 20:09:59 Okay deberias primero de aclarar el firmado que necesitas, tu proveedor de servicio te debe mandar el procedimiento de firma, ya sea con un diagrama o incluso una llave pero ese dato al final te ayuda a generar un string que es un dato cuaquiera, encriptado con la llave o proceso que tu proveedor te proporcione. Votes: 1 - Link answer
To actively participate in the community first must authenticate, enter the system.Sign In