diff options
| author | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-08-14 19:25:39 +0200 | 
|---|---|---|
| committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-08-14 19:25:39 +0200 | 
| commit | 0f60bcbc3d2438a8822e9bc1c6d80f8d0b743e3d (patch) | |
| tree | fe1ae43caf5c74bffbc3b1e0398f82ec2b9373c8 /OpenKeychain | |
| parent | 6e7b99940964e162d9b1134bc1607b8084bc2dcc (diff) | |
| download | open-keychain-0f60bcbc3d2438a8822e9bc1c6d80f8d0b743e3d.tar.gz open-keychain-0f60bcbc3d2438a8822e9bc1c6d80f8d0b743e3d.tar.bz2 open-keychain-0f60bcbc3d2438a8822e9bc1c6d80f8d0b743e3d.zip  | |
Pass through of master key id in SaveKeyringResult
Diffstat (limited to 'OpenKeychain')
3 files changed, 54 insertions, 25 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 960c508f8..ac6ea015a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java @@ -648,7 +648,7 @@ public class ProviderHelper {              if (publicRing.isSecret()) {                  log(LogLevel.ERROR, LogType.MSG_IP_BAD_TYPE_SECRET); -                return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);              }              CanonicalizedPublicKeyRing canPublicRing; @@ -662,20 +662,20 @@ public class ProviderHelper {                  // If this is null, there is an error in the log so we can just return                  if (publicRing == null) { -                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);                  }                  // Canonicalize this keyring, to assert a number of assumptions made about it.                  canPublicRing = (CanonicalizedPublicKeyRing) publicRing.canonicalize(mLog, mIndent);                  if (canPublicRing == null) { -                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);                  }                  // Early breakout if nothing changed                  if (Arrays.hashCode(publicRing.getEncoded())                          == Arrays.hashCode(oldPublicRing.getEncoded())) {                      log(LogLevel.OK, LogType.MSG_IP_SUCCESS_IDENTICAL); -                    return new SaveKeyringResult(SaveKeyringResult.UPDATED, mLog); +                    return new SaveKeyringResult(SaveKeyringResult.UPDATED, mLog, null);                  }              } catch (NotFoundException e) {                  // Not an issue, just means we are dealing with a new keyring. @@ -683,7 +683,7 @@ public class ProviderHelper {                  // Canonicalize this keyring, to assert a number of assumptions made about it.                  canPublicRing = (CanonicalizedPublicKeyRing) publicRing.canonicalize(mLog, mIndent);                  if (canPublicRing == null) { -                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);                  }              } @@ -696,12 +696,12 @@ public class ProviderHelper {                  // Merge data from new public ring into secret one                  secretRing = secretRing.merge(publicRing, mLog, mIndent);                  if (secretRing == null) { -                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);                  }                  // This has always been a secret key ring, this is a safe cast                  canSecretRing = (CanonicalizedSecretKeyRing) secretRing.canonicalize(mLog, mIndent);                  if (canSecretRing == null) { -                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);                  }              } catch (NotFoundException e) { @@ -720,11 +720,11 @@ public class ProviderHelper {                  }              } -            return new SaveKeyringResult(result, mLog); +            return new SaveKeyringResult(result, mLog, canSecretRing);          } catch (IOException e) {              log(LogLevel.ERROR, LogType.MSG_IP_FAIL_IO_EXC); -            return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +            return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);          } finally {              mIndent -= 1;          } @@ -740,7 +740,7 @@ public class ProviderHelper {              if ( ! secretRing.isSecret()) {                  log(LogLevel.ERROR, LogType.MSG_IS_BAD_TYPE_PUBLIC); -                return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);              }              CanonicalizedSecretKeyRing canSecretRing; @@ -754,14 +754,14 @@ public class ProviderHelper {                  // If this is null, there is an error in the log so we can just return                  if (secretRing == null) { -                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);                  }                  // Canonicalize this keyring, to assert a number of assumptions made about it.                  // This is a safe cast, because we made sure this is a secret ring above                  canSecretRing = (CanonicalizedSecretKeyRing) secretRing.canonicalize(mLog, mIndent);                  if (canSecretRing == null) { -                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);                  }                  // Early breakout if nothing changed @@ -769,7 +769,7 @@ public class ProviderHelper {                          == Arrays.hashCode(oldSecretRing.getEncoded())) {                      log(LogLevel.OK, LogType.MSG_IS_SUCCESS_IDENTICAL,                              PgpKeyHelper.convertKeyIdToHex(masterKeyId) ); -                    return new SaveKeyringResult(SaveKeyringResult.UPDATED, mLog); +                    return new SaveKeyringResult(SaveKeyringResult.UPDATED, mLog, null);                  }              } catch (NotFoundException e) {                  // Not an issue, just means we are dealing with a new keyring @@ -778,7 +778,7 @@ public class ProviderHelper {                  // This is a safe cast, because we made sure this is a secret ring above                  canSecretRing = (CanonicalizedSecretKeyRing) secretRing.canonicalize(mLog, mIndent);                  if (canSecretRing == null) { -                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);                  }              } @@ -791,7 +791,7 @@ public class ProviderHelper {                  // Merge data from new secret ring into public one                  publicRing = oldPublicRing.merge(secretRing, mLog, mIndent);                  if (publicRing == null) { -                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                    return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);                  }              } catch (NotFoundException e) { @@ -801,24 +801,24 @@ public class ProviderHelper {              CanonicalizedPublicKeyRing canPublicRing = (CanonicalizedPublicKeyRing) publicRing.canonicalize(mLog, mIndent);              if (canPublicRing == null) { -                return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);              }              int result;              result = saveCanonicalizedPublicKeyRing(canPublicRing, progress, true);              if ((result & SaveKeyringResult.RESULT_ERROR) == SaveKeyringResult.RESULT_ERROR) { -                return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +                return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);              }              progress.setProgress(LogType.MSG_IP_REINSERT_SECRET.getMsgId(), 90, 100);              result = saveCanonicalizedSecretKeyRing(canSecretRing); -            return new SaveKeyringResult(result, mLog); +            return new SaveKeyringResult(result, mLog, canSecretRing);          } catch (IOException e) {              log(LogLevel.ERROR, LogType.MSG_IS_FAIL_IO_EXC); -            return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog); +            return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);          } finally {              mIndent -= 1;          } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java index 543b83edb..d58392d77 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResults.java @@ -29,6 +29,8 @@ import com.github.johnpersano.supertoasts.util.OnClickWrapper;  import com.github.johnpersano.supertoasts.util.Style;  import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.pgp.CanonicalizedKeyRing; +import org.sufficientlysecure.keychain.pgp.KeyRing;  import org.sufficientlysecure.keychain.pgp.UncachedKeyRing;  import org.sufficientlysecure.keychain.ui.LogDisplayActivity;  import org.sufficientlysecure.keychain.ui.LogDisplayFragment; @@ -49,18 +51,21 @@ public abstract class OperationResults {          public static final int RESULT_WITH_WARNINGS = 16;          // No keys to import... -        public static final int RESULT_FAIL_NOTHING = 32 +1; +        public static final int RESULT_FAIL_NOTHING = 32 + 1;          public boolean isOkBoth() {              return (mResult & (RESULT_OK_NEWKEYS | RESULT_OK_UPDATED))                      == (RESULT_OK_NEWKEYS | RESULT_OK_UPDATED);          } +          public boolean isOkNew() {              return (mResult & RESULT_OK_NEWKEYS) == RESULT_OK_NEWKEYS;          } +          public boolean isOkUpdated() {              return (mResult & RESULT_OK_UPDATED) == RESULT_OK_UPDATED;          } +          public boolean isFailNothing() {              return (mResult & RESULT_FAIL_NOTHING) == RESULT_FAIL_NOTHING;          } @@ -124,7 +129,7 @@ public abstract class OperationResults {                  if (this.isOkBoth()) {                      str = activity.getResources().getQuantityString(                              R.plurals.import_keys_added_and_updated_1, mNewKeys, mNewKeys); -                    str += " "+ activity.getResources().getQuantityString( +                    str += " " + activity.getResources().getQuantityString(                              R.plurals.import_keys_added_and_updated_2, mUpdatedKeys, mUpdatedKeys, withWarnings);                  } else if (isOkUpdated()) {                      str = activity.getResources().getQuantityString( @@ -188,7 +193,7 @@ public abstract class OperationResults {          public final Long mRingMasterKeyId;          public EditKeyResult(int result, OperationLog log, -                               UncachedKeyRing ring) { +                             UncachedKeyRing ring) {              super(result, log);              mRing = ring;              mRingMasterKeyId = ring != null ? ring.getMasterKeyId() : null; @@ -224,8 +229,12 @@ public abstract class OperationResults {      public static class SaveKeyringResult extends OperationResultParcel { -        public SaveKeyringResult(int result, OperationLog log) { +        public final Long mRingMasterKeyId; + +        public SaveKeyringResult(int result, OperationLog log, +                                 CanonicalizedKeyRing ring) {              super(result, log); +            mRingMasterKeyId = ring != null ? ring.getMasterKeyId() : null;          }          // Some old key was updated @@ -240,6 +249,26 @@ public abstract class OperationResults {              return (mResult & UPDATED) == UPDATED;          } +        public SaveKeyringResult(Parcel source) { +            super(source); +            mRingMasterKeyId = source.readLong(); +        } + +        @Override +        public void writeToParcel(Parcel dest, int flags) { +            super.writeToParcel(dest, flags); +            dest.writeLong(mRingMasterKeyId); +        } + +        public static Creator<SaveKeyringResult> CREATOR = new Creator<SaveKeyringResult>() { +            public SaveKeyringResult createFromParcel(final Parcel source) { +                return new SaveKeyringResult(source); +            } + +            public SaveKeyringResult[] newArray(final int size) { +                return new SaveKeyringResult[size]; +            } +        };      }  } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java index 773be816a..3fc9e7f31 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java @@ -140,7 +140,7 @@ public class CreateKeyFinalFragment extends Fragment {                      if (returnData == null) {                          return;                      } -                    final OperationResults.EditKeyResult result = +                    final OperationResults.SaveKeyringResult result =                              returnData.getParcelable(OperationResultParcel.EXTRA_RESULT);                      if (result == null) {                          return; @@ -191,7 +191,7 @@ public class CreateKeyFinalFragment extends Fragment {          getActivity().startService(intent);      } -    private void uploadKey(final OperationResults.EditKeyResult editKeyResult) { +    private void uploadKey(final OperationResults.SaveKeyringResult editKeyResult) {          // Send all information needed to service to upload key in other thread          final Intent intent = new Intent(getActivity(), KeychainIntentService.class);  | 
