Primeramente te agradezco Daniel tu intervención.
Te comento :
Bien.
El PAC que manejo es Reach Core, este PAC , permite cancelar los cfdi's en varias formas, 2 de ellas es en línea (síncronas)
Una de ellas es el enviar el XML ensobretado como lo hace el PRG que se encuentra en el foro y que amablemente me enviaste, la única desventaja en este método es que tengo que proporcionar los CSD al PAC.
La otra opción que me da el PAC y es por la que estoy apostando es firmar el XML, (XML-Signature
http://www.w3.org/Signature/ ) asi no dependeré de proporcionarles los CSD.
Para esto , se requiere crear un XML, que lo genero muy parecido a como lo genera el PRG que me enviaste, el cual es el siguiente :
Este pequeño XML, se debe de canonicalizar primeramente y se debe aplicar XML-Signature tal como se indica en el Anexo 20 para la cancelación de cfdi, para que me quede un XML firmado de la siguiente forma:
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:ApiKey xmlns:h="http://www.reachcore.com/CFDI/customHeaders" xmlns="http://www.reachcore.com/CFDI/customHeaders">7F3F610F552E406B87C081771AE4DFCA3687D134ACD9489FBA6024A9E42D72E3</h:ApiKey>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CancelaCFD xmlns="http://cancelacfd.sat.gob.mx">
<Cancelacion Fecha="2013-10-18T20:30:04" RfcEmisor="AAA010101AAA">
<Folios>
<UUID>C20145B9-79CD-43BB-BE75-CB444D309382</UUID>
</Folios>
<Folios>
<UUID>8F919478-7B71-4E5C-BCD2-7A55B371C8FF</UUID>
</Folios>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>ECZGKbcjj0s9IYLAogitGaky9JE=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>JD9kFX7HQ1mTcqUcjFZrrKmZdc3flmllcwwPodOeLX7Znhgu4S7A6jhs5UJFcN/1P8SvPh4WsWIFBQFvgjEmY0CtziCNsf7KSBtJ34PaGFEZ5vOLbZS32OpciHwn9eYY4pasRYvR/EZJmdomBH1wDs46XVynmvCcxCGGzeS5y2M=</SignatureValue>
<KeyInfo>
<X509Data>
<X509IssuerSerial>
<X509IssuerName>OID.1.2.840.113549.1.9.2=Responsable: Héctor Ornelas Arciga, OID.2.5.4.45=SAT970701NN3, L=Coyoacán, S=Distrito Federal, C=MX, PostalCode=06300, STREET="Av. Hidalgo 77, Col. Guerrero", E=asi...@pruebas.sat.gob.mx, OU=Administración de Seguridad de la Información, O=Servicio de Administración Tributaria, CN=A.C. de pruebas</X509IssuerName>
<X509SerialNumber>286524172099382162235533054511188021807429465904</X509SerialNumber>
</X509IssuerSerial>
<X509Certificate>MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NzAwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMjA3MjcxNzAyMDlaFw0xNjA3MjcxNzAyMDlaMIHbMSkwJwYDVQQDEyBBQ0NFTSBTRVJWSUNJT1MgRU1QUkVTQVJJQUxFUyBTQzEpMCcGA1UEKRMgQUNDRU0gU0VSVklDSU9TIEVNUFJFU0FSSUFMRVMgU0MxKTAnBgNVBAoTIEFDQ0VNIFNFUlZJQ0lPUyBFTVBSRVNBUklBTEVTIFNDMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxETAPBgNVBAsTCFVuaWRhZCA0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxjtFKP9bhgV8I8lIlc58M19l8xBIrM6rWJagt1G/yYTo6WLVKTGx9fiWSnTZVeClcrLXo3heKYAkHPla6WHRiMRkwdshafy9AtUx5xyLIDXzER4K/eZitmzp9LWTxi6BYEHPUuOdFJ8PtPkVb3yvadMJgxMtI47uXxmx40mkA9QIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEA2D99yNxnBdJ7ONJQ7XiMaaqCTkB4wWYxHaFlxpKgLe3HRc86rEZfBnoHLGd/ACAIoTc2PG09J4qkDOw63fb1aNLa9Zjqat+Nh6qB7+ifC9+pAVd6OrR5Ch7v/Fr0I4APrfSyXbx5U915zaGw9c1wM57Lfa0oGipkPUfab2lnf0y6X1WXMKv+vMMVtlQxUAC0Vc5HBPV3aWtDXwg8pANbcYfZEr8H2i4aOpFBsRLuPjdo9OOqfn4Df6GoqKUrlwBPh6wCqexSKuG3XuTqZB1svdyss9NW+iOTqkBFWJrOPpKwVppyt4YGEcejoPBcnWpGSALpahuxuX5hoUak0+1Yxw==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</Cancelacion>
</CancelaCFD>
</s:Body>
</s:Envelope>
Este ultimo es el XML firmado.
Bien , existe un nodo que es <DigestValue> el cual es el resultado del calculo aplicando RSA-SHA1 al primer bloque del XML, según pruebas que he hecho, no he podido obtenerlo tal como muestra el ejemplo, yo utilizo OPENSSL, el resto de la firma como el certificado, ya lo tengo, pero ahí estoy detenido.
Disculpa lo extenso , pero creo que era necesario, agradezco los comentarios.
Saludos cordiales e igualmente les deseo un Feliz y prospero año 2015.