Changeset 8860b8f in dispositivos_moviles for TibisayMovil/src


Ignore:
Timestamp:
Sep 18, 2013, 5:04:24 PM (11 years ago)
Author:
Antonio Araujo Brett <aaraujo@…>
Branches:
master
Children:
c95e4a6
Parents:
95d372e
Message:

*- Implementación inicial de traducción de errores en firmas electrónicas.
*- Corrección de error de duplicación de mensajes de error en detalles de firma.

Location:
TibisayMovil/src/ve/gob/cenditel/tibisaymovil
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • TibisayMovil/src/ve/gob/cenditel/tibisaymovil/ActivitySignatureErrors.java

    r95d372e r8860b8f  
    5151               
    5252                Bundle bundle = getIntent().getExtras();
    53                 String test = bundle.getString("string");
     53                String test = bundle.getString("numeroObjetoError");
     54                //Log.d("ActivitySignatureErrors.onCreate", "numero de objetos de error: "+test);
    5455               
    5556                ArrayList<SignatureErrorDetail> errorList = (ArrayList<SignatureErrorDetail>) bundle.getSerializable("SignatureErrorDetailList");
    56                 Log.d("ActivitySignatureErrors:", "obteniendo ArrayList<SignatureErrorDetail> errorList");
    57                 Log.d("ActivitySignatureErrors", Integer.toString(errorList.size()));
     57                //Log.d("ActivitySignatureErrors:", "obteniendo ArrayList<SignatureErrorDetail> errorList");
     58                //Log.d("ActivitySignatureErrors: numero de objetos de error:", Integer.toString(errorList.size()));
    5859               
     60                //Log.d("ActivitySignatureErrors: firmante del objeto 0", errorList.get(0).getSigner());
     61                //Log.d("ActivitySignatureErrors: numero de errores del objeto 0", Integer.toString(errorList.get(0).getListError().size()));
     62                //Log.d("ActivitySignatureErrors: firmante del objeto 1", errorList.get(1).getSigner());
     63                //Log.d("ActivitySignatureErrors: numero de errores del objeto 1", Integer.toString(errorList.get(1).getListError().size()));
     64               
     65                // asignacion del adaptador
    5966                SignatureErrorDetailAdapter errorsAdapter = new SignatureErrorDetailAdapter(ActivitySignatureErrors.this, errorList);
    6067                errorsListView.setAdapter(errorsAdapter);                                       
     
    133140                                container.signature_icon = (ImageView) convertView.findViewById(R.id.signature_icon);
    134141                                convertView.setTag(container);
    135                         }else{
     142                        }//else{
    136143                                container = (ViewHolder) convertView.getTag();
    137                         }
     144                        //}
    138145                       
    139146                        SignatureErrorDetail detailError = (SignatureErrorDetail) getItem(position);
     
    142149                        //container.signature_errors.setText(detailError.getError());
    143150                        container.signature_errors.setText(detailError.getTransalatedStringError());
     151                        Log.d("SignatureErrorDetailAdapter: position: "+Integer.toString(position), "Integer.toString(position)");
     152                        Log.d("SignatureErrorDetailAdapter: signer: ", detailError.getSigner());
     153                        Log.d("SignatureErrorDetailAdapter: lista de errores:", detailError.getTransalatedStringError());
    144154                       
    145155                       
  • TibisayMovil/src/ve/gob/cenditel/tibisaymovil/BDOCUtils.java

    r88eadd6 r8860b8f  
    8282        }
    8383       
     84        public static String translateError(String e) {
     85                String translatedError = null;
     86               
     87                if (e.contains("Missing signature value!")) {
     88                        translatedError = "Error interno: El valor de la firma no se encontró en el archivo.";
     89                }
     90                if (e.contains("Signers cert missing!")) {
     91                        translatedError = "El certificado del firmante no se encuentó.";
     92                }
     93                if (e.contains("Signers cert not trusted, missing CA cert!")) {
     94                        translatedError = "El certificado del firmante no es confiable; No se encuentra el certificado de la AC que lo emitió.";
     95                }
     96                if (e.contains("Signers cert does not have non-repudiation bit set!")) {
     97                        translatedError = "El certificado del firmante no posee el uso de clave no repudio o Sin-rechazo.";
     98                }
     99                if (e.contains("No notarys certificate!")) {
     100                        translatedError = "No se encontró el certificado para el servidor OCSP.";
     101                }
     102                if (e.contains("Wrong notarys certificate:")) {
     103                        translatedError = "El certificado del servidor OCSP es incorrecto.";
     104                }
     105                if (e.contains("Notary certificates digest doesn't match!")) {
     106                        translatedError = "Error interno: La reseña o hash del certificado del servidor OCSP no coincide.";
     107                }
     108                if (e.contains("Error calculating notary certificate digest!")) {
     109                        translatedError = "Error interno: la reseña o hash del certificado del servidor OCSP no es correcta.";
     110                }
     111                if (e.contains("does not match OcpsRef-s producedAt:")) {
     112                        translatedError = "La hora de la notarización de la firma del servidor OCSP no es correcta";
     113                }
     114                if (e.contains("Currently supports only one OCSP. Invalid ocsp")) {
     115                        translatedError = "Servidor OCSP inválido. Sólo está soportado un servidor OCSP.";
     116                }
     117                if (e.contains("No Reference element for DataFile:")) {
     118                        translatedError = "Error interno: no hay elemento de referencia para uno de los archivos firmados.";
     119                }
     120                if (e.contains("Invalid or missing signers cert!")) {
     121                        translatedError = "El certificado del firmante es inválido o no se encuentra en el archivo.";
     122                }
     123                if (e.contains("Invalid signature method!")) {
     124                        translatedError = "Algoritmo de firma no soportado.";
     125                }
     126                if (e.contains("Signature method:")) {
     127                        translatedError = "El algoritmo de firma no está disponible en la aplicación.";
     128                }
     129                if (e.contains("Invalid signature value! Signers cert and signature value don't match!")) {
     130                        translatedError = "Error interno: el valor de la firma no es correcto. El certificado firmante y el valor de la firma no coinciden.";
     131                }
     132                if (e.contains("Signature asn.1 prefix:")) {
     133                        translatedError = "Error interno: prefijo ASN.1 de la firma no es correcto.";
     134                }
     135                if (e.contains("Invalid signature value! Signature value decrypted len:")) {
     136                        translatedError = "Error interno: valor de firma inválido. No existe prefijo de estructura ASN.1.";
     137                }
     138                if (e.contains("Invalid signature value!")) {
     139                        translatedError = "Valor de firma inválido.";
     140                }
     141                if (e.contains("Missing Reference for file")) {
     142                        translatedError = "Error interno: no existe una referencia al archivo";
     143                }
     144                if (e.contains("Signers certificate has expired!")) {
     145                        translatedError = "El certificado del firmante expiró.";
     146                }
     147                if (e.contains("Failed to verify OCSP for:")) {
     148                        translatedError = "No se pudo verificar el certificado del servidor OCSP.";
     149                }
     150                if (e.contains("OCSP value is empty!")) {
     151                        translatedError = "Error interno: el valor del certificado del OCSP es vacío.";
     152                }
     153                if (e.contains("No OCSP ref for uri:")) {
     154                        translatedError = "Error interno: no existe una referencia para el certificado del servidor OCSP.";
     155                }
     156                if (e.contains("Notarys digest doesn't match!")) {
     157                        translatedError = "Error interno: la reseña o hash del certificado OCSP no coincide.";
     158                }
     159                if (e.contains("Signature has no OCSP confirmation!")) {
     160                        translatedError = "La firma no tiene confirmación de un servidor OCSP.";
     161                }
     162                //if (e.contains("")) {
     163                //      translatedError = "El certificado firmante no ha sido firmado por una AC raíz conocida.";
     164                //}
     165                if (e.contains("The current BDoc container uses weaker encryption method than officialy accepted in Estonia")) {
     166                        translatedError = "El archivo firmado utiliza un algoritmo de reseña (hash) considerado débil.";
     167                }
     168                if (e.contains("81 -")) {
     169                        translatedError = "Error interno: tipo de bloque desconocido.";
     170                }
     171               
     172                else{
     173                        //translatedError = e;
     174                }
     175               
     176                       
     177                return translatedError;
     178        }
     179       
     180       
    84181}
    85182
  • TibisayMovil/src/ve/gob/cenditel/tibisaymovil/BDOCVerifyResultActivity.java

    r95d372e r8860b8f  
    136136                                Intent intent = new Intent(BDOCVerifyResultActivity.this, ActivitySignatureErrors.class);
    137137                               
    138                                 intent.putExtra("string", "hola mundo");
     138                               
    139139                                                               
    140140                                intent.setClass(BDOCVerifyResultActivity.this, ActivitySignatureErrors.class);
    141141                                intent.putExtra("SignatureErrorDetailList", errorList);
     142                                intent.putExtra("numeroObjetoError", Integer.toString(errorList.size()));
    142143                               
    143144                                startActivity(intent);
     
    185186                    // array de excepciones lanzadas al verificar firmas
    186187                    ArrayList arraySignaturesErrors = null;
    187                    
    188                     // array de strings para almanecenar los errores de firmas
    189                     ArrayList<String> signatureVerificationErrors = new ArrayList<String>();
    190                    
    191                    
     188                       
    192189                    // verificar cada una de las firmas del contenedor
    193190                    for (int i = 0; i < sdoc.countSignatures(); i++){
     
    195192                        arraySignaturesErrors = new ArrayList();
    196193                        arraySignaturesErrors = tmpSignature.verify(sdoc, false, false);
    197                         Log.d("****i:"+i,"arraySignaturesErrors.size: "+ arraySignaturesErrors.size());
    198                        
    199                        
    200                        
    201                        
    202                        
    203                         String tmpError = new String();
    204                         for (int j = 0; j < arraySignaturesErrors.size(); j++){
    205                                
    206                                 //signatureVerificationErrors.add("Firma "+Integer.toString(i+1)+ ": "+
    207                                 //arraySignaturesErrors.get(j).toString() + "\n");
    208                                
     194                        Log.d("**La Firma: "+Integer.toString(i),"tiene : "+ arraySignaturesErrors.size()+" errores.");                 
     195                       
     196                        // lista de cadenas que almancenara los errores para el firmante i
     197                        ArrayList<String> signatureVerificationErrors = new ArrayList<String>();                       
     198                       
     199                        for (int j = 0; j < arraySignaturesErrors.size(); j++){
     200                                // agregar la cadena de error particular a la lista
    209201                                signatureVerificationErrors.add(arraySignaturesErrors.get(j).toString() + "\n");
    210                                
    211                                 //BDOCUtils.translateError(((DigiDocException) arraySignaturesErrors.get(j)).getCode()) + "\n");
    212                                 /*
    213                                 Log.d("****signatureVerificationErrors",
    214                                                 "Firma "+Integer.toString(i+1)+ ": "+
    215                                                 arraySignaturesErrors.get(j).toString() + "\n");
    216                                 Log.d("signatureVerificationErrors: ", signatureVerificationErrors.get(j).toString());
    217                                 Log.d("----", Integer.toString(((DigiDocException) arraySignaturesErrors.get(j)).getCode()));
    218                                 Log.d("---traduccion: ", BDOCUtils.translateErrors(arraySignaturesErrors));
    219                                 Log.d("---traduccion codigo: ", BDOCUtils.translateError(((DigiDocException) arraySignaturesErrors.get(j)).getCode()));
    220                                 */
    221                                 //Log.d("*->tmpError: ", tmpError);                             
    222                                 tmpError = tmpError.concat(arraySignaturesErrors.get(j).toString()+"\n");
    223                                
    224                                
    225                                
    226202                        }
    227203                       
    228                         //signatureVerificationErrors = "Firma "+Integer.toString(i+1)+ ": "+
    229                                 //arraySignaturesErrors.get(i).toString() + "\n";
    230                        
    231                         // lista de errores a pasar a la interfaz de detalles de error
    232204                        //String cn = SignedDoc.getCommonName(sdoc.getSignature(i).getKeyInfo().getSignersCertificate().getSubjectDN().getName());
    233                         String name = sdoc.getSignature(i).getKeyInfo().getSubjectLastName();
    234                         Log.d("*->tmpError: ", tmpError);
    235                         Log.d("*->", "signature "+Integer.toString(i)+ " " + name + " " +tmpError);
    236                        
    237                         //SignatureErrorDetail object = new SignatureErrorDetail(name, tmpError);
    238                         SignatureErrorDetail object = new SignatureErrorDetail(name, signatureVerificationErrors);
    239                        
    240                        
     205                        String signer = sdoc.getSignature(i).getKeyInfo().getSubjectLastName();
     206                       
     207                        // crear objeto SignatureErrorDetail con detalles de error para la firma i
     208                        SignatureErrorDetail object = new SignatureErrorDetail(signer, signatureVerificationErrors);
     209                       
     210                        // agregar el objeto SignatureErrorDetail a lista
    241211                        errorList.add(object);
    242212                       
    243                     }
     213                    } // fin del for para la firma i
    244214                   
    245215                    if (arraySignaturesErrors.isEmpty()) {
    246                         signatureVerificationResult.setText("Válida");
     216                        signatureVerificationResult.setText(getResources().getString(R.string.string_valid_signature));
    247217                        Log.d("signature.verify", "NO HUBO ERROR EN LA VERIFICACION DE FIRMA");
    248218                        Toast.makeText(getApplicationContext(), "¡FIRMA CORRECTA!", Toast.LENGTH_SHORT).show();
     
    253223                        arrowShowErrors.setVisibility(ImageView.VISIBLE);
    254224                       
    255                         String finalErrors = "";
    256                         for (int i = 0; i < signatureVerificationErrors.size(); i++ ) {
    257                                 finalErrors = finalErrors.concat(signatureVerificationErrors.get(i).toString());
    258                                 //resultAndErrors = resultAndErrors.concat("Firma: "+i+" "+sigError.get(i).toString()+"\n");
    259                         }
    260                         //signatureVerificationResult.setText("Inválida\n"+finalErrors);
    261                         signatureVerificationResult.setText("Inválida.");
     225                        //signatureVerificationResult.setText("Inválida.");
     226                        signatureVerificationResult.setText(getResources().getString(R.string.string_invalid_signature));
    262227                        Log.d("************", "SI HUBO ERROR");
    263                         Log.d("************", finalErrors);
    264228                       
    265229                        Toast.makeText(getApplicationContext(), "ERROR DE VERIFICACION DE FIRMA", Toast.LENGTH_SHORT).show();
     
    357321                        });
    358322                   
    359                        
    360 /*                 
    361                     if(sigError.isEmpty()){
    362                         Log.d("signature.verify", "NO HUBO ERROR EN LA VERIFICACION DE FIRMA");
    363                         String res = "Numero de firmas: " + Integer.toString(sdoc.countSignatures()) +
    364                         " Numero de documentos: " + Integer.toString(sdoc.countDataFiles()) +
    365                         " Perfil de firma: " + signature.getProfile() +
    366                         " Sujeto: " + signature.getSubject() +
    367                         " Hora: " + signature.getSignedProperties().getSigningTime().toString();
    368                         Log.d("-->: ", res);
    369                                                
    370                         //result.setText("Firma válida");
    371                        
    372                     }else{
    373                         Log.d("signature.verify", "SI HUBO ERROR");
    374                         Log.d("signature.verify", Integer.toString(sigError.size()));
    375                        
    376                         String resultAndErrors = "Firma Inválida\n";
    377                        
    378                         for (int i=0; i<sigError.size(); i++ ){
    379                                 Log.d("signature.verify", sigError.get(i).toString());
    380                                 //resultAndErrors.concat(sigError.get(i).toString()+"\n");
    381                                 resultAndErrors = resultAndErrors.concat("Firma: "+i+" "+sigError.get(i).toString()+"\n");
    382                                
    383                                 //Toast.makeText(getApplicationContext(), sigError.get(i).toString(), Toast.LENGTH_SHORT).show();
    384                         }
    385                         Toast.makeText(getApplicationContext(), "ERROR DE VERIFICACION DE FIRMA", Toast.LENGTH_SHORT).show();                   
    386                         //result.setText("Firma inválida");
    387                         //result.setText(resultAndErrors);
    388                     }
    389 */                 
    390323                   
    391324                       
  • TibisayMovil/src/ve/gob/cenditel/tibisaymovil/SignatureErrorDetail.java

    r95d372e r8860b8f  
    33import java.io.Serializable;
    44import java.util.ArrayList;
     5
     6import android.util.Log;
    57
    68//clase que abstrae un objeto de tipo detalle de error de firma
     
    1214        private String mSigner;
    1315        private String mError;
    14         private ArrayList<String> mlistError;
     16        private ArrayList<String> mListError;
    1517       
    1618        public SignatureErrorDetail(String signer, String error){
     
    4345
    4446        public void setListError(ArrayList<String> mlistError) {
    45                 this.mlistError = mlistError;
     47                this.mListError = mlistError;
    4648        }
    4749
    4850        public ArrayList<String> getListError() {
    49                 return mlistError;
     51                return mListError;
    5052        }
    5153       
     
    5355        public String getTransalatedStringError() {
    5456               
    55                 // TODO implementar aqui la traduccion de los errores
    5657               
    57                 return mlistError.get(0);
     58                String stringError = new String();
     59               
     60                //Log.d("----getTransalatedStringError: size", Integer.toString(mListError.size()));
     61               
     62                // traducir la cadena y concatenarla en stringError
     63                for (int i = 0; i < mListError.size(); i++) {
     64                        stringError = stringError.concat(BDOCUtils.translateError(mListError.get(i))+"\n");
     65                        //Log.d("getTranslatedStringError: error "+Integer.toString(i)+" ", mListError.get(i));
     66                }
     67               
     68                               
     69                //return mListError.get(0);
     70                return stringError;
     71               
    5872        }
    5973       
Note: See TracChangeset for help on using the changeset viewer.