aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-09-02 01:24:16 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-09-02 01:24:16 +0200
commite0905a3afbba7f96822becb378b7e8fd9c51e85a (patch)
tree72f463174e322bea66c7702c236739a196b6514d /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
parenta97ebc1ec9afa4951f676b4483c6db871c4704ab (diff)
downloadopen-keychain-e0905a3afbba7f96822becb378b7e8fd9c51e85a.tar.gz
open-keychain-e0905a3afbba7f96822becb378b7e8fd9c51e85a.tar.bz2
open-keychain-e0905a3afbba7f96822becb378b7e8fd9c51e85a.zip
cache key s2k type in database, for later use
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java45
1 files changed, 30 insertions, 15 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
index 4fde8e581..e1dae55ad 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
@@ -34,6 +34,8 @@ import org.sufficientlysecure.keychain.helper.Preferences;
import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing;
import org.sufficientlysecure.keychain.pgp.CanonicalizedPublicKey;
import org.sufficientlysecure.keychain.pgp.CanonicalizedPublicKeyRing;
+import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey;
+import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey.SecretKeyType;
import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKeyRing;
import org.sufficientlysecure.keychain.pgp.KeyRing;
import org.sufficientlysecure.keychain.pgp.PgpHelper;
@@ -592,27 +594,40 @@ public class ProviderHelper {
values.put(Keys.HAS_SECRET, 0);
mContentResolver.update(uri, values, null, null);
- values.put(Keys.HAS_SECRET, 1);
// then, mark exactly the keys we have available
log(LogLevel.INFO, LogType.MSG_IS_IMPORTING_SUBKEYS);
mIndent += 1;
- Set<Long> available = keyRing.getAvailableSubkeys();
- for (UncachedPublicKey sub : keyRing.publicKeyIterator()) {
+ for (CanonicalizedSecretKey sub : keyRing.secretKeyIterator()) {
long id = sub.getKeyId();
- if (available.contains(id)) {
- int upd = mContentResolver.update(uri, values, Keys.KEY_ID + " = ?",
- new String[]{Long.toString(id)});
- if (upd == 1) {
- log(LogLevel.DEBUG, LogType.MSG_IS_SUBKEY_OK,
- PgpKeyHelper.convertKeyIdToHex(id)
- );
- } else {
- log(LogLevel.WARN, LogType.MSG_IS_SUBKEY_NONEXISTENT,
- PgpKeyHelper.convertKeyIdToHex(id)
- );
+ SecretKeyType mode = sub.getSecretKeyType();
+ values.put(Keys.HAS_SECRET, mode.getNum());
+ int upd = mContentResolver.update(uri, values, Keys.KEY_ID + " = ?",
+ new String[]{ Long.toString(id) });
+ if (upd == 1) {
+ switch (mode) {
+ case PASSPHRASE:
+ log(LogLevel.DEBUG, LogType.MSG_IS_SUBKEY_OK,
+ PgpKeyHelper.convertKeyIdToHex(id)
+ );
+ break;
+ case PASSPHRASE_EMPTY:
+ log(LogLevel.DEBUG, LogType.MSG_IS_SUBKEY_EMPTY,
+ PgpKeyHelper.convertKeyIdToHex(id)
+ );
+ break;
+ case GNU_DUMMY:
+ log(LogLevel.DEBUG, LogType.MSG_IS_SUBKEY_STRIPPED,
+ PgpKeyHelper.convertKeyIdToHex(id)
+ );
+ break;
+ case DIVERT_TO_CARD:
+ log(LogLevel.DEBUG, LogType.MSG_IS_SUBKEY_DIVERT,
+ PgpKeyHelper.convertKeyIdToHex(id)
+ );
+ break;
}
} else {
- log(LogLevel.INFO, LogType.MSG_IS_SUBKEY_STRIPPED,
+ log(LogLevel.WARN, LogType.MSG_IS_SUBKEY_NONEXISTENT,
PgpKeyHelper.convertKeyIdToHex(id)
);
}