source: dispositivos_moviles/TibisayMovil/src/ve/gob/cenditel/tibisaymovil/BDOCUtils.java @ 8379cd8

Last change on this file since 8379cd8 was 8379cd8, checked in by Antonio Araujo Brett <aaraujo@…>, 11 years ago

Agregado encabezado de licencia a archivos fuentes.

  • Property mode set to 100644
File size: 7.8 KB
Line 
1/*
2Tibisay Movil
3
4Copyright (C) 2013 Antonio Araujo (aaraujo@cenditel.gob.ve), Jose Ruiz
5(jruiz@cenditel.gob.ve), Fundacion Centro Nacional de Desarrollo e
6Investigacion en Tecnologias Libres - CENDITEL.
7
8La Fundación CENDITEL concede permiso para usar, copiar, distribuir y/o
9modificar este programa, reconociendo el derecho que la humanidad posee al
10libre acceso al conocimiento, bajo los términos de la licencia de software
11GPL versión 2.0 de la Free Software Foundation.
12
13Este programa se distribuye con la esperanza de que sea util, pero SIN
14NINGUNA GARANTIA; tampoco las implicitas garantias de MERCANTILIDAD o
15ADECUACION A UN PROPOSITO PARTICULAR.
16
17Para mayor información sobre los términos de la licencia ver el archivo
18llamado "gpl-2.0.txt" en ingles.
19*/
20
21
22package ve.gob.cenditel.tibisaymovil;
23
24import java.io.File;
25import java.io.FileInputStream;
26import java.io.FileNotFoundException;
27import java.io.FileOutputStream;
28import java.io.IOException;
29import java.io.InputStream;
30import java.io.OutputStream;
31import java.nio.channels.FileChannel;
32import java.util.ArrayList;
33import java.util.Collection;
34
35import ee.sk.digidoc.DigiDocException;
36
37import android.content.Context;
38import android.net.Uri;
39import android.os.Environment;
40import android.os.StatFs;
41import android.text.format.DateFormat;
42import android.util.Log;
43
44/**
45 * Clase para utilidades sobre contenedores BDOC
46 *
47 *
48 */
49
50public class BDOCUtils {
51       
52       
53        public BDOCUtils() {}
54       
55       
56        public static String translateErrors(ArrayList list) {
57               
58                String errorList = "";
59               
60                for (int i = 0; i < list.size(); i++) {
61                        if ( ((DigiDocException) list.get(i)).getCode() == 82) {
62                                errorList = errorList.concat("El certificado firmante expiró");
63                        }
64                }       
65                return errorList;
66        }
67       
68        // funcion para traducir el codigo de error al verificar una firma electronica
69        public static String translateError(int codeError) {
70               
71                String stringError = "";
72               
73                if ( codeError == 38)
74                        stringError = stringError.concat("Error interno: No se encontró el valor de la firma.");       
75                if ( codeError == 39)
76                        stringError = stringError.concat("El certificado del firmante no existe.");
77                if ( codeError == 53)
78                        stringError = stringError.concat("No se encontró el certificado del servidor OCSP.");
79                if ( codeError == 70)
80                        stringError = stringError.concat("Error interno: sólo se soporta un servidor OCSP. Servidor OCSP inválido.");
81                if ( codeError == 78)
82                        stringError = stringError.concat("Error interno: no hay elemento de referencia para uno de los archivos firmados.");
83                if ( codeError == 79)
84                        stringError = stringError.concat("Error interno: el valor de la reseña (hash) es incorrecto.");
85                if ( codeError == 80)
86                        stringError = stringError.concat("Error interno: no hay elemento de referencia para bloque SignedProperties de la firma.");
87                if ( codeError == 81)
88                        stringError = stringError.concat("El certificado del firmante es inválido o no existe.");
89                if ( codeError == 82)
90                        stringError = stringError.concat("El certificado del firmante expiró.");
91                if ( codeError == 83)
92                        stringError = stringError.concat("Error interno: el valor del OCSP está vacío");
93                if ( codeError == 90)
94                        stringError = stringError.concat("La firma no tiene confirmación OCSP.");
95                if ( codeError == 94)
96                        stringError = stringError.concat("El certificado firmante no ha sido firmado por una AC raíz conocida.");
97                if ( codeError == 129)
98                        stringError = stringError.concat("Se está usando un algoritmo de reseña (hash) considerado débil.");
99                if ( codeError ==162)
100                        stringError = stringError.concat("El certificado del firmante no posee el bit de no repudio."); 
101               
102                return stringError;
103        }
104       
105        public static String translateError(String e) {
106                String translatedError = null;
107               
108                if (e.contains("Missing signature value!")) {
109                        translatedError = "Error interno: El valor de la firma no se encontró en el archivo.";
110                }
111                if (e.contains("Signers cert missing!")) {
112                        translatedError = "El certificado del firmante no se encuentó.";
113                }
114                if (e.contains("Signers cert not trusted, missing CA cert!")) {
115                        translatedError = "El certificado del firmante no es confiable; No se encuentra el certificado de la AC que lo emitió.";
116                }
117                if (e.contains("Signers cert does not have non-repudiation bit set!")) {
118                        translatedError = "El certificado del firmante no posee el uso de clave no repudio o Sin-rechazo.";
119                }
120                if (e.contains("No notarys certificate!")) {
121                        translatedError = "No se encontró el certificado para el servidor OCSP.";
122                }
123                if (e.contains("Wrong notarys certificate:")) {
124                        translatedError = "El certificado del servidor OCSP es incorrecto.";
125                }
126                if (e.contains("Notary certificates digest doesn't match!")) {
127                        translatedError = "Error interno: La reseña o hash del certificado del servidor OCSP no coincide.";
128                }
129                if (e.contains("Error calculating notary certificate digest!")) {
130                        translatedError = "Error interno: la reseña o hash del certificado del servidor OCSP no es correcta.";
131                }
132                if (e.contains("does not match OcpsRef-s producedAt:")) {
133                        translatedError = "La hora de la notarización de la firma del servidor OCSP no es correcta";
134                }
135                if (e.contains("Currently supports only one OCSP. Invalid ocsp")) {
136                        translatedError = "Servidor OCSP inválido. Sólo está soportado un servidor OCSP.";
137                }
138                if (e.contains("No Reference element for DataFile:")) {
139                        translatedError = "Error interno: no hay elemento de referencia para uno de los archivos firmados.";
140                }
141                if (e.contains("Invalid or missing signers cert!")) {
142                        translatedError = "El certificado del firmante es inválido o no se encuentra en el archivo.";
143                }
144                if (e.contains("Invalid signature method!")) {
145                        translatedError = "Algoritmo de firma no soportado.";
146                }
147                if (e.contains("Signature method:")) {
148                        translatedError = "El algoritmo de firma no está disponible en la aplicación.";
149                }
150                if (e.contains("Invalid signature value! Signers cert and signature value don't match!")) {
151                        translatedError = "Error interno: el valor de la firma no es correcto. El certificado firmante y el valor de la firma no coinciden.";
152                }
153                if (e.contains("Signature asn.1 prefix:")) {
154                        translatedError = "Error interno: prefijo ASN.1 de la firma no es correcto.";
155                }
156                if (e.contains("Invalid signature value! Signature value decrypted len:")) {
157                        translatedError = "Error interno: valor de firma inválido. No existe prefijo de estructura ASN.1.";
158                }
159                if (e.contains("Invalid signature value!")) {
160                        translatedError = "Valor de firma inválido.";
161                }
162                if (e.contains("Missing Reference for file")) {
163                        translatedError = "Error interno: no existe una referencia al archivo";
164                }
165                if (e.contains("Signers certificate has expired!")) {
166                        translatedError = "El certificado del firmante expiró.";
167                }
168                if (e.contains("Failed to verify OCSP for:")) {
169                        translatedError = "No se pudo verificar el certificado del servidor OCSP.";
170                }
171                if (e.contains("OCSP value is empty!")) {
172                        translatedError = "Error interno: el valor del certificado del OCSP es vacío.";
173                }
174                if (e.contains("No OCSP ref for uri:")) {
175                        translatedError = "Error interno: no existe una referencia para el certificado del servidor OCSP.";
176                }
177                if (e.contains("Notarys digest doesn't match!")) {
178                        translatedError = "Error interno: la reseña o hash del certificado OCSP no coincide.";
179                }
180                if (e.contains("Signature has no OCSP confirmation!")) {
181                        translatedError = "La firma no tiene confirmación de un servidor OCSP.";
182                }
183                //if (e.contains("")) {
184                //      translatedError = "El certificado firmante no ha sido firmado por una AC raíz conocida.";
185                //}
186                if (e.contains("The current BDoc container uses weaker encryption method than officialy accepted in Estonia")) {
187                        translatedError = "El archivo firmado utiliza un algoritmo de reseña (hash) considerado débil.";
188                }
189                if (e.contains("81 -")) {
190                        translatedError = "Error interno: tipo de bloque desconocido.";
191                }
192               
193                else{
194                        //translatedError = e;
195                }
196               
197                       
198                return translatedError;
199        }
200       
201       
202}
203
204
205
Note: See TracBrowser for help on using the repository browser.