Para el proceso de cancelación el PAC me pide que le mande en uno de los nodos de la llamada la cadena XML de la llave privada en base 64.
Estas son las instrucciones que me dan:
Cómo se obtiene este valor ?Servicio de Cancelación - Llave Privada
Debido a que han habido varios que han tenido dudas con el valor del elemento llaveCetificado que debe ir en el XML, vamos a explicarlo un poco mas...
El archivo .key es un contenedor de la llave privada del emisor. Para poder abrir el contenedor y extraer la llave privada se utiliza la contraseña en el caso de nuestro emisor de pruebas, la contraseña es: xxxx345678
La llave privada es el XML contenido dentro del archivo .key .
Este XML es el que se pasa a base64 y se pone en el valor del elemento llaveCertificado.
A continuación mostraremos el ejemplo en base a nuestro emisor de pruebas:
LLave privada XML
<RSAKeyValue><Modulus>1KHjZtqkEv1ECTgubPkBz6KrF2oVycKyjtDCHGOsr0iSc8pSRVU8L0BFIxMX5X3bc00C6BxrZDo/f/CIjusnmSX7dO7SXM0EC6VBeBh4PcHz9cVTQ9tLJMnuxH60xkyQXQCmoYPUxWNtLX5N8NWmwRUGlfo9SFL8VgsP3X8bnZk=</Modulus><Exponent>AQAB</Exponent><P>9g3MtFSVVE9iYOyiTWuX9OqeTfPDGcm7XVaEyE5dvVk6lP3XvTo4w7vN5CpbrD4fpg4Bw3zZ6Yu9bm68+HIobw==</P><Q>3To87MOrKL7RvKPI3Iy1j1c4aSDOY7GQOs/iZJW8eRrE0qEF9ja6MqY5zhMRXndcma3FcPFxfqf7FczWRFdOdw==</Q><DP>jXOpdxIZNvrcJ7RiKffsx9QJZe74/l5G5IXUmALVSQF++CBmYlaSQ5Q37S+cvAyKzT/IK8Ye0HCRWmc3I+0c6Q==</DP><DQ>VlB8qNwHEdSxvGoi2npD9HNRXSMho6AJ6AhoClqpuI6LMKsGynO73jsg3pht9G+Zv5QfLtvlLkeYHX9YMj3mLQ==</DQ><InverseQ>EtwABGpy/cumIxHI5QGPHM70ttRMvK8zCmTgJajLE33zrXfqKnSHU1LBsnJx20Pi+nGosBct8GihFu/NRMvWmQ==</InverseQ><D>PEg5RCuwYIHVDBgVcWeXD9q6TsUQsEa2gK7GmW3Yw0j73D/72xQzH+JEt5DuMW3hDWtD67JC8ANjhU4YKQyaCNi1bTJ4FRbGR/h8RYJIWz/ig9NyCvd1ucnXWD2dv2v1VsPP47/szPeFNY4JEJQ0mqMttjl2WVXm0mIrRXJQABE=</D></RSAKeyValue>
_llavePrivada = Convert.ToBase64String(Encoding.UTF8.GetBytes(llavePrivada))
Resultado:
PFJTQUtleVZhbHVlPjxNb2R1bHVzPjFLSGpadHFrRXYxRUNUZ3ViUGtCejZLckYyb1Z5Y0t5anREQ0hHT3NyMGlTYzhwU1JWVThMMEJGSXhNWDVYM2JjMDBDNkJ4clpEby9mL0NJanVzbm1TWDdkTzdTWE0wRUM2VkJlQmg0UGNIejljVlRROXRMSk1udXhINjB4a3lRWFFDbW9ZUFV4V050TFg1TjhOV213UlVHbGZvOVNGTDhWZ3NQM1g4Ym5aaz08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjxQPjlnM010RlNWVkU5aVlPeWlUV3VYOU9xZVRmUERHY203WFZhRXlFNWR2Vms2bFAzWHZUbzR3N3ZONUNwYnJENGZwZzRCdzN6WjZZdTlibTY4K0hJb2J3PT08L1A+PFE+M1RvODdNT3JLTDdSdktQSTNJeTFqMWM0YVNET1k3R1FPcy9pWkpXOGVSckUwcUVGOWphNk1xWTV6aE1SWG5kY21hM0ZjUEZ4ZnFmN0ZjeldSRmRPZHc9PTwvUT48RFA+alhPcGR4SVpOdnJjSjdSaUtmZnN4OVFKWmU3NC9sNUc1SVhVbUFMVlNRRisrQ0JtWWxhU1E1UTM3UytjdkF5S3pUL0lLOFllMEhDUldtYzNJKzBjNlE9PTwvRFA+PERRPlZsQjhxTndIRWRTeHZHb2kybnBEOUhOUlhTTWhvNkFKNkFob0NscXB1STZMTUtzR3luTzczanNnM3BodDlHK1p2NVFmTHR2bExrZVlIWDlZTWozbUxRPT08L0RRPjxJbnZlcnNlUT5FdHdBQkdweS9jdW1JeEhJNVFHUEhNNzB0dFJNdks4ekNtVGdKYWpMRTMzenJYZnFLblNIVTFMQnNuSngyMFBpK25Hb3NCY3Q4R2loRnUvTlJNdldtUT09PC9JbnZlcnNlUT48RD5QRWc1UkN1d1lJSFZEQmdWY1dlWEQ5cTZUc1VRc0VhMmdLN0dtVzNZdzBqNzNELzcyeFF6SCtKRXQ1RHVNVzNoRFd0RDY3SkM4QU5qaFU0WUtReWFDTmkxYlRKNEZSYkdSL2g4UllKSVd6L2lnOU55Q3ZkMXVjblhXRDJkdjJ2MVZzUFA0Ny9zelBlRk5ZNEpFSlEwbXFNdHRqbDJXVlhtMG1JclJYSlFBQkU9PC9EPjwvUlNBS2V5VmFsdWU+
Esta ultima cadena que se muestra es el valor que debe ir en el elemento llaveCertificado. Obviamente esta cadena cambia dependiendo de la llave privada de cada emisor.
Esperamos esto ayude a resolver las dudas.
Saludos
Gracias por su tiempo...
Saludos.