Ver Mensaje Individual
  #9  
Antiguo 29-03-2023
CrazySoft CrazySoft is offline
Miembro
 
Registrado: abr 2005
Posts: 96
Reputación: 20
CrazySoft Va por buen camino
Cita:
Empezado por pgranados Ver Mensaje
No me carga el sitio web, pero con la serie de pasos que envías parece que debes de obtener en un string todo el nodo que contiene la firma y codificarlo en SHA256 y luego el nodo con el valor ya codificado en SHA256 debes de exportarlo a un .txt y luego hacer una digestión con OPENSSL y la llave privada en RSA SHA256 donde exportaras un archivo .bin y luego ese .bin codearlo a base 64

Algo así se hace en los webservice de hacienda en México y parece que es muy similar con ustedes.



Muchas gracias pgranados, si hice lo que me sugieres tengo la parte de la factura que le saco el has256 y lo convierto en base64, el resultado obtenido lo pongo en la etiqueta DigestValue que genero el XML de signature con la configuración a ese le saco el SHA256 y lo encripto con RSA mediante el OpenSSL con la llave privada obteniendo el resultado lo codifico con base64 y lo pongo en la etiqueta SignatureValue y para finalizar relleno el X590Certificate con la llave publica, combino los 2 archivo XML de la factura con signature, verificando con XSD que no devuelve y procedo al envió dando el error "EL FIRMADO DEL XML ES INCORRECTO: Validacion Signature, false,"



de este XML obtengo el RSA+SHA256+Base64 para ponerla en SignatureValue, creo que el error esta en esta parte, no se si obtine de todo este fragmento o solo de la etiqueta "DigestValue" o de otra


Código PHP:
<SignedInfo>
            <
CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
            <
SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
            <
Reference URI="">
                <
Transforms>
                    <
Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
                    <
Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
                </
Transforms>
                <
DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
                <
DigestValue>HWk2FfKj94wnmeowdvxzv1hR3g2LDNd9C5hAAJFnG40=</DigestValue>
            </
Reference>
        </
SignedInfo
</div>

este es el XML unido, validado con XSD y enviado a grandes rasgos

Código PHP:
<facturaElectronicaCompraVenta xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="facturaElectronicaCompraVenta.xsd">
    <
cabecera>
         
Datos de la factura 
        
.        .
        .
     </
cabecera>
    <
detalle>
        
Detalle de la factura
        
.        .
        .
     </
detalle>

    <
Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <
SignedInfo>
            <
CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
            <
SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
            <
Reference URI="">
                <
Transforms>
                    <
Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
                    <
Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
                </
Transforms>
                <
DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
                <
DigestValue>HWk2FfKj94wnmeowdvxzv1hR3g2LDNd9C5hAAJFnG40=</DigestValue>
            </
Reference>
        </
SignedInfo>
        <
SignatureValue>Spf1ElB6bhHov5WtxXO633cDKmYBFAWrVedQgtet0fWAp........</SignatureValue>
        <
KeyInfo>
            <
X509Data>
                <
X509Certificate>
                
MIIErjCCA5agAwIBAgIIKiSbJT8MhAAwDQYJKoZIhvcNAQEFBQAwgbUxCzAJBgNV
       BAYTAkJPMQ8wDQYDVQQIDAZMQSBQQVoxDzANBgNVBAcMBkxBIFBBWjEeMBwGA1UE
       
.......
</
X509Certificate>
            </
X509Data>
        </
KeyInfo>
    </
Signature>
</
facturaElectronicaCompraVenta
</div>
Responder Con Cita