protected void tryDeleteCredential(int hashCode) { if (getState() != State.IDLE) { Log.i(TAG, "Delete long-click ignored in non-idle mode"); return; } IdemixCredentialIdentifier ici = CredentialManager.findCredential(hashCode); if (ici == null) return; Log.w(TAG, "Deleting credential " + ici.toString()); CredentialManager.delete(ici); updateCredentialList(); }
@Override protected Exception doInBackground(Void... params) { try { Log.i(TAG, "Loading credentials and logs"); CredentialManager.init(settings); return null; } catch (CredentialsException e) { return e; } }
@Override public boolean onOptionsItemSelected(MenuItem item) { Log.d(TAG, "menu press registered"); // Handle item selection switch (item.getItemId()) { case R.id.preferences: Intent intent = new Intent(); intent.setClassName(this, IRMAPreferenceActivity.class.getName()); startActivityForResult(intent, IRMAPreferenceActivity.ACTIVITY_CODE); return true; case R.id.enroll: Log.d(TAG, "enroll menu item pressed"); onEnrollButtonTouch(null); return true; case R.id.online_enroll: Log.d(TAG, "online enroll menu item pressed"); onOnlineEnrollButtonTouch(null); return true; case R.id.show_card_log: Log.d(TAG, "show_card_log pressed"); ArrayList<LogEntry> logs = new ArrayList<>(CredentialManager.getLog()); logs = new ArrayList<>(logs.subList(0, Math.min(logs.size(), 250))); Intent logIntent = new Intent(this, LogActivity.class); logIntent.putExtra(LogFragment.ARG_LOG, logs); startActivity(logIntent); return true; case R.id.menu_clear: if (getState() == State.IDLE) { deleteAllCredentials(); updateCredentialList(); } return true; case R.id.menu_delete_everything: CredentialManager.clear(); updateCredentialList(); return true; case R.id.menu_manual_session: startManualSession(); return true; default: return super.onOptionsItemSelected(item); } }
/** * Update the list of credentials if the activity is in the appropriate state * * @param tryDownloading Whether to update the description store and keystore in advance */ protected void updateCredentialList(boolean tryDownloading) { if (!credentialsLoaded || !descriptionStoreLoaded || (!getState().isBooting() && getState() != State.IDLE)) return; if (tryDownloading) { CredentialManager.updateStores( new StoreManager.DownloadHandler() { @Override public void onSuccess() { updateCredentialList(false); } @Override public void onError(Exception e) { setFeedback(getString(R.string.downloading_credential_info_failed), "warning"); updateCredentialList(false); } }); } LinkedHashMap<IdemixCredentialIdentifier, Attributes> credentials = CredentialManager.getAllAttributes(); credentialListAdapter.updateData(credentials); TextView noCredsText = (TextView) findViewById(R.id.no_credentials_text); Button enrollButton = (Button) findViewById(R.id.enroll_button); Button onlineEnrollButton = (Button) findViewById(R.id.online_enroll_button); int visibility = credentials.isEmpty() ? View.VISIBLE : View.INVISIBLE; if (noCredsText != null && enrollButton != null) { noCredsText.setVisibility(visibility); enrollButton.setVisibility(visibility); onlineEnrollButton.setVisibility(visibility); } }
@Override protected void onPostExecute(Exception e) { Log.i(TAG, "Finished loading DescriptionStore and IdemixKeyStore"); if (e != null) throw new RuntimeException(e); else setState(State.KEY_STORE_LOADED); for (SchemeManager manager : DescriptionStore.getInstance().getSchemeManagers()) { if (manager.hasKeyshareServer() && !CredentialManager.isEnrolledToKeyshareServer(manager.getName())) { final SchemeManager m = manager; SchemeManagerHandler.getKeyserverEnrollInput( MainActivity.this, new SchemeManagerHandler.KeyserverInputHandler() { @Override public void done(String email, String pin) { SchemeManagerHandler.enrollCloudServer( m.getName(), m.getKeyshareServer(), email, pin, MainActivity.this, null); } }); } } }
public void onEnrollButtonTouch(View v) { Intent i = new Intent(this, EnrollSelectActivity.class); CredentialManager.save(); startActivityForResult(i, EnrollSelectActivity.ACTIVITY_CODE); }