passphrasecache: cache by master key, introduce preference for cache by subkey
This commit is contained in:
@@ -271,7 +271,7 @@ public class CertifyKeyFragment extends LoaderFragment
|
||||
// get the user's passphrase for this key (if required)
|
||||
String passphrase;
|
||||
try {
|
||||
passphrase = PassphraseCacheService.getCachedPassphrase(mActivity, mMasterKeyId);
|
||||
passphrase = PassphraseCacheService.getCachedPassphrase(mActivity, mMasterKeyId, mMasterKeyId);
|
||||
} catch (PassphraseCacheService.KeyNotFoundException e) {
|
||||
Log.e(Constants.TAG, "Key not found!", e);
|
||||
mActivity.finish();
|
||||
|
||||
@@ -236,7 +236,7 @@ public class EditKeyFragment extends LoaderFragment implements
|
||||
|
||||
try {
|
||||
mCurrentPassphrase = PassphraseCacheService.getCachedPassphrase(getActivity(),
|
||||
mSaveKeyringParcel.mMasterKeyId);
|
||||
mSaveKeyringParcel.mMasterKeyId, mSaveKeyringParcel.mMasterKeyId);
|
||||
} catch (PassphraseCacheService.KeyNotFoundException e) {
|
||||
finishWithError(LogType.MSG_EK_ERROR_NOT_FOUND);
|
||||
return;
|
||||
|
||||
@@ -64,7 +64,6 @@ public class PassphraseDialogActivity extends FragmentActivity {
|
||||
// special extra for OpenPgpService
|
||||
public static final String EXTRA_DATA = "data";
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -251,8 +250,9 @@ public class PassphraseDialogActivity extends FragmentActivity {
|
||||
|
||||
// Early breakout if we are dealing with a symmetric key
|
||||
if (mSecretRing == null) {
|
||||
PassphraseCacheService.addCachedPassphrase(getActivity(), Constants.key.symmetric,
|
||||
passphrase, getString(R.string.passp_cache_notif_pwd));
|
||||
PassphraseCacheService.addCachedPassphrase(getActivity(),
|
||||
Constants.key.symmetric, Constants.key.symmetric, passphrase,
|
||||
getString(R.string.passp_cache_notif_pwd));
|
||||
|
||||
finishCaching(passphrase);
|
||||
return;
|
||||
@@ -309,8 +309,9 @@ public class PassphraseDialogActivity extends FragmentActivity {
|
||||
Log.d(Constants.TAG, "Everything okay! Caching entered passphrase");
|
||||
|
||||
try {
|
||||
PassphraseCacheService.addCachedPassphrase(getActivity(), mSubKeyId,
|
||||
passphrase, mSecretRing.getPrimaryUserIdWithFallback());
|
||||
PassphraseCacheService.addCachedPassphrase(getActivity(),
|
||||
mSecretRing.getMasterKeyId(), mSubKeyId, passphrase,
|
||||
mSecretRing.getPrimaryUserIdWithFallback());
|
||||
} catch (PgpGeneralException e) {
|
||||
Log.e(Constants.TAG, "adding of a passphrase failed", e);
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ public class PreferencesActivity extends PreferenceActivity {
|
||||
} else if (action != null && action.equals(ACTION_PREFS_ADV)) {
|
||||
addPreferencesFromResource(R.xml.adv_preferences);
|
||||
|
||||
initializePassPassphraceCacheTtl(
|
||||
initializePassphraseCacheTtl(
|
||||
(IntegerListPreference) findPreference(Constants.Pref.PASSPHRASE_CACHE_TTL));
|
||||
|
||||
initializeEncryptionAlgorithm(
|
||||
@@ -228,7 +228,10 @@ public class PreferencesActivity extends PreferenceActivity {
|
||||
// Load the preferences from an XML resource
|
||||
addPreferencesFromResource(R.xml.adv_preferences);
|
||||
|
||||
initializePassPassphraceCacheTtl(
|
||||
initializePassphraseCacheSubs(
|
||||
(CheckBoxPreference) findPreference(Constants.Pref.PASSPHRASE_CACHE_SUBS));
|
||||
|
||||
initializePassphraseCacheTtl(
|
||||
(IntegerListPreference) findPreference(Constants.Pref.PASSPHRASE_CACHE_TTL));
|
||||
|
||||
initializeEncryptionAlgorithm(
|
||||
@@ -281,7 +284,18 @@ public class PreferencesActivity extends PreferenceActivity {
|
||||
|| super.isValidFragment(fragmentName);
|
||||
}
|
||||
|
||||
private static void initializePassPassphraceCacheTtl(final IntegerListPreference mPassphraseCacheTtl) {
|
||||
private static void initializePassphraseCacheSubs(final CheckBoxPreference mPassphraseCacheSubs) {
|
||||
mPassphraseCacheSubs.setChecked(sPreferences.getPassphraseCacheSubs());
|
||||
mPassphraseCacheSubs.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
mPassphraseCacheSubs.setChecked((Boolean) newValue);
|
||||
sPreferences.setPassphraseCacheSubs((Boolean) newValue);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void initializePassphraseCacheTtl(final IntegerListPreference mPassphraseCacheTtl) {
|
||||
mPassphraseCacheTtl.setValue("" + sPreferences.getPassphraseCacheTtl());
|
||||
mPassphraseCacheTtl.setSummary(mPassphraseCacheTtl.getEntry());
|
||||
mPassphraseCacheTtl
|
||||
|
||||
@@ -242,7 +242,7 @@ public class PassphraseDialogFragment extends DialogFragment implements OnEditor
|
||||
// Early breakout if we are dealing with a symmetric key
|
||||
if (mSecretRing == null) {
|
||||
PassphraseCacheService.addCachedPassphrase(getActivity(), Constants.key.symmetric,
|
||||
passphrase, getString(R.string.passp_cache_notif_pwd));
|
||||
Constants.key.symmetric, passphrase, getString(R.string.passp_cache_notif_pwd));
|
||||
// also return passphrase back to activity
|
||||
Bundle data = new Bundle();
|
||||
data.putString(MESSAGE_DATA_PASSPHRASE, passphrase);
|
||||
@@ -301,8 +301,9 @@ public class PassphraseDialogFragment extends DialogFragment implements OnEditor
|
||||
Log.d(Constants.TAG, "Everything okay! Caching entered passphrase");
|
||||
|
||||
try {
|
||||
PassphraseCacheService.addCachedPassphrase(getActivity(), mSubKeyId,
|
||||
passphrase, mSecretRing.getPrimaryUserIdWithFallback());
|
||||
PassphraseCacheService.addCachedPassphrase(getActivity(),
|
||||
mSecretRing.getMasterKeyId(), mSubKeyId, passphrase,
|
||||
mSecretRing.getPrimaryUserIdWithFallback());
|
||||
} catch (PgpGeneralException e) {
|
||||
Log.e(Constants.TAG, "adding of a passphrase failed", e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user