/* Tibisay Movil Copyright (C) 2013 Antonio Araujo (aaraujo@cenditel.gob.ve), Jose Ruiz (jruiz@cenditel.gob.ve), Fundacion Centro Nacional de Desarrollo e Investigacion en Tecnologias Libres - CENDITEL. La Fundación CENDITEL concede permiso para usar, copiar, distribuir y/o modificar este programa, reconociendo el derecho que la humanidad posee al libre acceso al conocimiento, bajo los términos de la licencia de software GPL versión 2.0 de la Free Software Foundation. Este programa se distribuye con la esperanza de que sea util, pero SIN NINGUNA GARANTIA; tampoco las implicitas garantias de MERCANTILIDAD o ADECUACION A UN PROPOSITO PARTICULAR. Para mayor información sobre los términos de la licencia ver el archivo llamado "gpl-2.0.txt" en ingles. */ package ve.gob.cenditel.tibisaymovil; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class TibisayMovilActivity extends Activity { public DirectKeyChain keyChain; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.activity_main); if(customTitleSupported) getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar); // listview de funciones final ListView listViewFunctions = (ListView) findViewById(R.id.listViewFunctions); String[] values = new String[] {getString(R.string.firmar), getString(R.string.verificar), getString(R.string.cifrar), getString(R.string.descifrar), getString(R.string.compartir), getString(R.string.certificados), getString(R.string.preferencias) }; FunctionListAdapter ad = new FunctionListAdapter(this, values); listViewFunctions.setAdapter(ad); /*************** Dialogos de submenus *******************/ //Crear dialogo de opciones para firmar final AlertDialog sign_dialog = makeSignatureOptionsDialog(); //Crear dialogo de opciones para compartir archivo final AlertDialog share_dialog = makeShareOptionsDialog(); //Crear dialogo de opciones para compartir cifrar archivo final AlertDialog certificate_dialog = makeCertificateOptionsDialog(); listViewFunctions.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { Context context = getApplicationContext(); //CharSequence text = "Click!"; int duration = Toast.LENGTH_SHORT; //Toast.makeText(context, text, duration).show(); View curr = arg0.getChildAt((int) arg3); TextView c = (TextView)curr.findViewById(R.id.textListMainMenu); String function = c.getText().toString(); //Toast.makeText(context, function, duration).show(); // seleccion de firmar if(function.equals(getString(R.string.firmar))) { sign_dialog.show(); } // seleccion de verificar if(function.equals(getString(R.string.verificar))) { //Toast.makeText(context, "VERIFICAR", duration).show(); verifyBDOCSignedFile(); } // seleccion de cifrar if(function.equals(getString(R.string.cifrar))) { //Toast.makeText(context, "CIFRAR", duration).show(); encryptFile(); } // seleccion de descifrar if(function.equals(getString(R.string.descifrar))) { //Toast.makeText(context, "DESCIFRAR", duration).show(); decryptFile(); } // seleccion de gestionar certificados if (function.equals(getString(R.string.certificados))){ //Toast.makeText(context, "Gestionar repositorio", duration).show(); certificate_dialog.show(); } // seleccion de compartir archivo if (function.equals(getString(R.string.compartir))){ //Toast.makeText(context, "Compartir Archivo", duration).show(); share_dialog.show(); } // seleccion de firmar if(function.equals(getString(R.string.preferencias))) { preferences(); } } }); //setOnItemClickListener } // end onCreate @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.MnuAbout: Intent intentAbout = new Intent(TibisayMovilActivity.this,AboutActivity.class); startActivity(intentAbout); return true; case R.id.MnuHelp: Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_BROWSABLE); intent.setData(Uri.parse("http://seguridad.cenditel.gob.ve/proyectos/tibisay-movil/ayuda-de-tibisay-movil/")); startActivity(intent); return true; default: return super.onOptionsItemSelected(item); } } private void testRepository(){ // this.keyChain = DirectKeyChain.getInstance(); // this.keyChain.setListView(this.viewHolder.aliases); // this.keyChain.setMasterActivity((Activity) this); // this.keyChain.choosePrivateKeyAlias(); Intent intent = new Intent(this, CertificateRepositoryActivity.class); startActivity(intent); } private void fileToSignHandwrittenSignature(){ Intent intent = new Intent(this, FileToSignHandwrittenSignatureActivity.class); startActivity(intent); } private void filesToPKCS7Sign(){ Intent intent = new Intent(this, FilesToPKCS7SignActivity.class); startActivity(intent); } private void filesToPDFSign(){ Intent intent = new Intent(this, FilesToPDFSignActivity.class); startActivity(intent); } // lanza activity para verificar un documento firmado private void verifyBDOCSignedFile(){ //Intent intent = new Intent(this, FileToSignHandwrittenSignatureActivity.class); Intent intent = new Intent(this, FileToVerifySignatureActivity.class); startActivity(intent); } // lanza activity para compartir un documento private void shareFile(String path){ Intent intent = new Intent(this, FileToShareActivity.class); intent.putExtra("path", path); startActivity(intent); } // lanza activity para cifrar un documento private void encryptFile(){ Intent intent = new Intent(this, FileToEncryptActivity.class); startActivity(intent); } // lanza activity para descifrar un documento private void decryptFile(){ Intent intent = new Intent(this, FileToDecryptActivity.class); startActivity(intent); } // lanza la activity para gestionar los certificados de destinarios (cifrado) private void manageRecipientCertificates() { Intent intent = new Intent(this, EncryptionCertificatesActivity.class); startActivity(intent); } //Crea dialogo de opciones para firma electronica public AlertDialog makeSignatureOptionsDialog() { final String[] option = new String[] {getString(R.string.firmar_man_pdf), getString(R.string.firmar_elec_pdf), getString(R.string.firmar_pkcs7) }; ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.select_dialog_item, option); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.seleccione_opcion)); builder.setAdapter(adapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: // Firma Manuscrita PDF Log.i("DEBUG", "antes de activity call"); fileToSignHandwrittenSignature(); break; case 1: // Firma Electronica PDF filesToPDFSign(); break; case 2: // Firma PKCS7 filesToPKCS7Sign(); break; default: break; } } }); return builder.create(); } // lanza activity para preferencias private void preferences(){ Intent intent = new Intent(this, PreferencesActivity.class); startActivity(intent); } //Crea dialogo de opciones para compartir archivos public AlertDialog makeShareOptionsDialog() { final String[] option = new String[] {getString(R.string.share_pdf_signed), getString(R.string.share_bdoc_downloaded), getString(R.string.share_extracted_file_from_bdoc), getString(R.string.share_encrypted) }; ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.select_dialog_item, option); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.seleccione_opcion)); builder.setAdapter(adapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: // Archivo Firmado Log.i("DEBUG", "antes de activity call"); shareFile("archivoFirmado"); break; case 1: // Archivos BDOC Descargados shareFile("bdocDescargado"); break; case 2: // Archivos extraídos de BDOC shareFile("extraidoDeBdoc"); break; case 3: // Archivos cifrados shareFile("cifrado"); break; default: break; } } }); return builder.create(); } //Crea dialogo de opciones para gestionar certificados public AlertDialog makeCertificateOptionsDialog() { ; final String[] option; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH){ option = new String[] {getString(R.string.manage_personal_certificates), getString(R.string.manage_certificates_for_encryption) }; } else { option = new String[] {getString(R.string.manage_certificates_for_encryption) }; } ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.select_dialog_item, option); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.seleccione_opcion)); builder.setAdapter(adapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH){ switch (which) { case 0: // Certificados personales testRepository(); break; case 1: // Certificados para cifrado manageRecipientCertificates(); break; } } else { switch (which) { case 0: // Certificados para cifrado manageRecipientCertificates(); break; } } } }); return builder.create(); } }