package de.pinyto.ctSESAM; import android.os.AsyncTask; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.TextView; import java.lang.ref.WeakReference; /** * Create a new kgk block. */ class CreateNewKgkTask extends AsyncTask<byte[], byte[], byte[]> { private KgkManager kgkManager; private PasswordSettingsManager settingsManager; private WeakReference<MainActivity> mainActivityWeakRef; CreateNewKgkTask(MainActivity mainActivity, KgkManager kgkManager, PasswordSettingsManager settingsManager) { super(); this.mainActivityWeakRef = new WeakReference<>(mainActivity); this.kgkManager = kgkManager; this.settingsManager = settingsManager; } @Override protected byte[] doInBackground(byte[]... params) { byte[] password = params[0]; byte[] salt = params[1]; byte[] ivKey = Crypter.createIvKey(password, salt); for (int i = 0; i < password.length; i++) { password[i] = 0x00; } return ivKey; } @Override protected void onPreExecute() { MainActivity activity = mainActivityWeakRef.get(); if (activity != null && !activity.isFinishing()) { TextView loadingMessage = (TextView) activity.findViewById(R.id.textViewDecryptionMessage); loadingMessage.setText(activity.getString(R.string.creatingKgk)); } } @Override protected void onPostExecute(byte[] ivKey) { kgkManager.createAndStoreNewKgkBlock(new Crypter(ivKey)); MainActivity activity = mainActivityWeakRef.get(); if (activity != null && !activity.isFinishing()) { AutoCompleteTextView autoCompleteTextViewDomain = (AutoCompleteTextView) activity.findViewById(R.id.autoCompleteTextViewDomain); try { settingsManager.loadLocalSettings(kgkManager); } catch (WrongPasswordException passwordError) { passwordError.printStackTrace(); autoCompleteTextViewDomain.dismissDropDown(); } TextView loadingMessage = (TextView) activity.findViewById(R.id.textViewDecryptionMessage); loadingMessage.setText(""); ArrayAdapter<String> adapter = new ArrayAdapter<>(activity.getBaseContext(), android.R.layout.simple_dropdown_item_1line, settingsManager.getDomainList()); autoCompleteTextViewDomain.setAdapter(adapter); } } }