Openssl

Páginas: 6 (1301 palabras) Publicado: 4 de mayo de 2012
PASO 0. Previo al sellado.

Anexo un archivo zip que contiene :

aaa010101aaa_csd_01.cer - Certificado de prueba, deben usar este mismo para seguir este tutotial
aaa010101aaa_csd_01.key - Llave privada de prueba
Contraseña de clave privada.txt - idem

OpenSSL (exe's y dll) - Libreria de criptografia para generar el sello

PRUEBA.xml - El CFD de prueba que vamos a firmar, tiene varias"trampas" que veremos mas adelante

EXTRAERLLAVEPRIVADA.bat - Explico a continuacion :

El primer paso es, por supuesto, crear un XML y extraer la llave privada, esto se hace con la instruccion que esta dentro de EXTRAERLLAVEPRIVADA.bat, al ejecutarlo se genera el archivo LLAVEPRIVADA.pem.txt, este ultimo representa la llave privada en formato PEM y ya sin la clave de acceso.

NOTAIMPORTANTE : Reza el dicho "ayudate que yo te ayudare", por falta de tiempo no voy a poner mucho detalle, espero que hagan un enorme esfuerzo y traten de digerir la informacion y la analicen.

PASO 1 CREACION DE LA CADENA ORIGINAL

En el Anexo 20 esta la secuencia para formar la cadena original.

Hay dos formas de crear la cadena, una es "manual" agregando los datos uno por uno y separandolos conpipe y la otra es mediante una transformacion xslt.

Este metodo manual es el que vamos a ver aqui.

Nota: aunque menciono que es "manual" me refiero de todos modos que es con un programa, pero es "piedrita por piedrita", veamos :

Dice el Anexo 20:

EMPIEZA CON DOS "PIPES" .....

Cadena = ||

Listo, sigue con la version del CFD, en este caso es "2.0", recuerden siempre terminar conotro pipe

Cadena = ||2.0|

Seguimos, el siguiente atributo es la Serie

Cadena = ||2.0|ABC| (recuerden, estoy tomando los valores de PRUEBA.XML publicado en el post anterior)

El siguiente atributo es el folio

Cadena = ||2.0|ABC|1234|

etc etc etc, mas pasito a pasito no puedo....

IMPORTANTE, si un atributo no existe no es necesario ponerlo en la cadena, asi entonces obtenemos lasiguiente cadena INICIAL, falta depurarla
Código: Seleccionar todo
||2.0|ABC|1234|2010-01-01T12:12:12|12345|2010|ingreso|Pago en una sola exhibicion|68.50|79.46|UCP090807ABC|UAMERO & Compañia SA de CV|Cuba|456|Col. Latinoamerica|Oaxaca|Oaxaca|Oaxaca|México|93736|MMC090909QWE |Mi Mejor Cliente SA de CV|Calle 5 de Mayo|345|Col.Bondojito|Guadalajara|Guadalajara|Guadalajara|México|48473|1|Pieza|Lapiz Berol del No. 2|2.50|2.50|12|Pieza| Borrador Saga|5.00|60.00|3|Pieza|Pluma Bic Negra|2.00|6.00|IVA|16.00|10.96|10.96||

PASO 2 APLICAR REGLA 5 DE LA FORMACION DE CADENA ORIGINAL

Esa regla 5 dice que no debe haber dos espacios seguidos, ni tampoco debe haber espacios antes o despues del "pipe", tampoco retorno de carro (CR char #13 ni #10)

Asi pues, dentro de su programa DEBEN quitaresos caracteres no permitos, en pseudocodigo seria :

Cadena = Remplaza(" "," ",cadena); "remplaza dos espacios por uno solo, es decir donde haya #20#20 lo remplaza con un solo #20"

Cadena = Remplaza(tabulador,"",cadena); "remplaza los tabuladores por cadena vacia"

Cadena = Remplaza(" |","|",cadena); "remplaza espacio+pipe y lo sustituye por un solo pipe

Cadena = Remplaza ("|","|",cadena); "remplaza pipe+espacio y los sutituye por un solo pipe

Cadena = Remplaza(#13,"",cadena); "remplaza el caracter #13 (CR) y lo sustituye por vacio, es decir, lo quita"

Cadena = Remplaza(#10,"",cadena); "remplaza el caracter #10 (LF) y lo sustituye por vacio, es decir, lo quita"

Con eso la cadena que teniamos en el PASO 1 quedaria asi :
Código: Seleccionar todo||2.0|ABC|1234|2010-01-01T12:12:12|12345|2010|ingreso|Pago en una sola exhibicion|68.50|79.46|UCP090807ABC|UAMERO & Compañia SA de CV|Cuba|456|Col. Latinoamerica|Oaxaca|Oaxaca|Oaxaca|México|93736|MMC090909QWE|Mi Mejor Cliente SA de CV|Calle 5 de Mayo|345|Col. Bondojito|Guadalajara|Guadalajara|Guadalajara|México|48473|1|Pieza|Lapiz Berol del No. 2|2.50|2.50|12|Pieza|Borrador Saga|5.00|60.00|3|Pieza|Pluma Bic...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Openssl

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS