DOC

Firma de Pedimentos con Java

By Peggy Rogers,2014-04-24 13:55
9 views 0
Firma de Pedimentos con Java

    Administración General de Tecnología de la Información

    Administración Central de Desarrollo y Mantenimiento de

    Aplicaciones

    Administración de Desarrollo para Aduanas

    Firma de Documentos con Java

Con la finalidad de contar con una herramienta sencilla y multiplataforma para poder

    firmar los documentos enviados a validar, se desarrollaron en java las clases necesarias

    para ello.

Lo anterior da la posibilidad de hacer desarrollos que se adecuen a las necesidades

    propias de los terceros y que pueden ser ejecutadas bajo cualquier plataforma.

Para su distribución, las clases se encuentran contenidas dentro de un archivo jar, que

    además incluye las clases de criptografía necesarias para este fin (Bouncy Castle Cryptography 1.19)

A continuación se muestra la declaración de las clases definidas dentro del paquete

    mx.gob.sat.ada.seguridad contenido en el archivo sgenc32.jar.

     package mx.gob.sat.ada.seguridad; public class ArchivoDeDocumentos extends java.lang.Object { public String nombreArchivo; public String[] aCURP= new String[5]; public String[] aArchivoCER = new String[5]; public String[] aArchivoKEY = new String[5]; public String[] aPassword = new String[5]; public int nCURPS; /** Crea un nuevo ArchivoDeDocumentos sin nombre */ public ArchivoDeDocumentos(int tipoDocumento) { } /** Crea un nuevo ArchivoDeDocumentos con el nombre asignado en * @param nombre */ public ArchivoDeDocumentos(String nombre, int tipoDocumento) throws ArchPedsException { } /** Busca las CURPS declaradas dentro de los pedimentos a firmarse */ public int buscaCURPS() throws ArchPedsException { } /* Firma los pedimentos declarados dentro del archivo */ public int FirmaDocumentos() throws ArchPedsException { } /** Clase para atrapar las excepciones generadas por la invocación de los * métodos de los objetos ArchivoDeDocumentos */ public class ArchPedsException extends java.lang.Exception { public int nError; public ArchPedsException() { }

    Agosto, 2004 Página 1 de 4

    Administración General de Tecnología de la Información

    Administración Central de Desarrollo y Mantenimiento de

    Aplicaciones

    Administración de Desarrollo para Aduanas

     public ArchPedsException(String msg) { super(msg); } public ArchPedsException(int Error, String msg) { super(msg); nError = Error; } } /** Clase con la definición de los números y tipos de error atrapados * por la excepcón ArchPedsException */ public class ArchPedsError extends java.lang.Object { // Errores de Manejo de Archivos static final int ERROR_ARCHIVO_NOEXISTE = 1001; static final int ERROR_ABRIR_ARCHIVO = 1002; static final int ERROR_LEER_ARCHIVO = 1003; static final int ERROR_CERRAR_ARCHIVO = 1004; static final int ERROR_CREAR_ARCHIVO = 1005; static final int ERROR_ESCRIBIR_ARCHIVO = 1006; // Errores al obtener PrivateKEYInfo static final int ERROR_LEER_ENCPRIVKEYINFO = 2001; static final int ERROR_LEER_PRIVKEYINFO = 2002; // Errores de Criptografía static final int ERROR_DECRYPT_PRIVKEYINFO = 3001; /** Creates new ArchPedsErr */ public ArchPedsError() { } }

Clase ArchivoDeDocumentos

    Esta clase perteneciente al paquete mx.gob.sat.ada.seguridad, permite firmar los documento contenidos en un archivo de documentos (pedimentos, encargos conferidos,

    avisos de transferencia de maquiladora controladora), incluyendo en los campos

    correspondientes la firma electrónica y número de serie del certificado del registro de

    Firma si este fue definido dentro del archivo, en caso contrario no lo firma.

Los métodos proporcionados por esta clase son los siguientes:

ArchivoDeDocumentos([arg])

    Este método permite crear un objeto de la clase ArchivoDeDocumentos. El siguiente ejemplo muestra los dos formas posibles de invocar este método:

ArchivoDeDocumentos archPedimentos1 = new ArchivoDeDocumentos(0);

    ArchivoDeDocumentos archPedimentos2 = new ArchivoDeDocumentos(“/ruta/archivo”, 1);

int BuscaCURPS()

    Agosto, 2004 Página 2 de 4

    Administración General de Tecnología de la Información

    Administración Central de Desarrollo y Mantenimiento de

    Aplicaciones

    Administración de Desarrollo para Aduanas

Este método retorna un entero indicando si pudo efectuarse correctamente (0) o si algo

    fallo (1). La ejecución de este método asigna valores a los elementos nCURPS con el

    total de CURPS encontradas dentro del archivo y aCURP[ ] con las cadenas de CURP encontradas.

    Nota para invocar cualquier método de la clase, es necesario asignar previamente

    el nombre del archivo de pedimentos a manipularse si no generará un error.

    Esto se puede hacer utilizando el constructor

    ArchivoDeDocumentos(String nombre, int tipoDocumento) o

    asignándolo al elemento nombreArchivo.

int FirmaDocumentos()

Este método retorna un entero indicando si pudo efectuarse correctamente el proceso (0)

    o si algo fallo (1). La ejecución de este método inserta las firmas y números de serie a los

    documentos en los campos correspondientes del registro de firma.

    Antes de invocar a este método es necesario asignar a los elementos aArchivoCER[ ], aArchivoKEY[ ] y aPassword[ ] los nombres de los archivos .cer, .key y contraseñas

    correspondientes para cada CURP.

    El siguiente código es un ejemplo de implementación de la clase ArchivoDeDocumentos para firmar los pedimentos contenidos en el.

import java.io.*;

    import java.lang.*;

    import java.util.*;

    import mx.gob.sat.ada.seguridad.*;

public class EjempoDeFirmaDePedimentos

    {

     public EjemploDeFirmaDePedimentos() {

     }

     /**

     * @param args the command line arguments

     */

     public static void main (String args[]) {

     ArchivoDeDocumentos MiClase = null;

     int status = 0;

     try {

     /* Se crea el objeto como un pedimento, tipo = 0 */

     MiClase = new ArchivoDocumentos("c:/MiRuta/archPeds.txt", 0);

     /* Se obtienen las CURPS declaradas en el archivo */

     status = MiClase.buscaCURPS();

    Agosto, 2004 Página 3 de 4

    Administración General de Tecnología de la Información

    Administración Central de Desarrollo y Mantenimiento de

    Aplicaciones

    Administración de Desarrollo para Aduanas

     } catch (ArchPedsException e) {

     System.out.println("Error: "+ e.getMessage());

     return;

     }

     if( status == 1 )

     return;

     /* Se asignan los archivos KEY y contraseñas correspondientes */

     for (int i = 0; i < MiClase.nCURPS; i++) {

     MiClase.aArchivoCER[i] = "/Llaves/PublKey.cer";

     MiClase.aArchivoKEY[i] = "/Llaves/PrivKey.key";

     MiClase.aPassword[i] = "contraseña";

     }

     try {

     /* Se firman los pedimentos */

     MiClase.FirmaPedimentos();

     System.out.println("Se firmo correctamente el archivo");

     } catch (Exception e) {

     System.out.println("Error: "+ e.getMessage());

     return;

     }

     }

}

Agosto, 2004 Página 4 de 4

Report this document

For any questions or suggestions please email
cust-service@docsford.com