mirror of
https://github.com/moparisthebest/open-keychain
synced 2025-02-17 07:30:14 -05:00
Pass through of master key id in SaveKeyringResult
This commit is contained in:
parent
6e7b999409
commit
0f60bcbc3d
@ -648,7 +648,7 @@ public class ProviderHelper {
|
|||||||
|
|
||||||
if (publicRing.isSecret()) {
|
if (publicRing.isSecret()) {
|
||||||
log(LogLevel.ERROR, LogType.MSG_IP_BAD_TYPE_SECRET);
|
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;
|
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 this is null, there is an error in the log so we can just return
|
||||||
if (publicRing == null) {
|
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.
|
// Canonicalize this keyring, to assert a number of assumptions made about it.
|
||||||
canPublicRing = (CanonicalizedPublicKeyRing) publicRing.canonicalize(mLog, mIndent);
|
canPublicRing = (CanonicalizedPublicKeyRing) publicRing.canonicalize(mLog, mIndent);
|
||||||
if (canPublicRing == null) {
|
if (canPublicRing == null) {
|
||||||
return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog);
|
return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Early breakout if nothing changed
|
// Early breakout if nothing changed
|
||||||
if (Arrays.hashCode(publicRing.getEncoded())
|
if (Arrays.hashCode(publicRing.getEncoded())
|
||||||
== Arrays.hashCode(oldPublicRing.getEncoded())) {
|
== Arrays.hashCode(oldPublicRing.getEncoded())) {
|
||||||
log(LogLevel.OK, LogType.MSG_IP_SUCCESS_IDENTICAL);
|
log(LogLevel.OK, LogType.MSG_IP_SUCCESS_IDENTICAL);
|
||||||
return new SaveKeyringResult(SaveKeyringResult.UPDATED, mLog);
|
return new SaveKeyringResult(SaveKeyringResult.UPDATED, mLog, null);
|
||||||
}
|
}
|
||||||
} catch (NotFoundException e) {
|
} catch (NotFoundException e) {
|
||||||
// Not an issue, just means we are dealing with a new keyring.
|
// 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.
|
// Canonicalize this keyring, to assert a number of assumptions made about it.
|
||||||
canPublicRing = (CanonicalizedPublicKeyRing) publicRing.canonicalize(mLog, mIndent);
|
canPublicRing = (CanonicalizedPublicKeyRing) publicRing.canonicalize(mLog, mIndent);
|
||||||
if (canPublicRing == null) {
|
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
|
// Merge data from new public ring into secret one
|
||||||
secretRing = secretRing.merge(publicRing, mLog, mIndent);
|
secretRing = secretRing.merge(publicRing, mLog, mIndent);
|
||||||
if (secretRing == null) {
|
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
|
// This has always been a secret key ring, this is a safe cast
|
||||||
canSecretRing = (CanonicalizedSecretKeyRing) secretRing.canonicalize(mLog, mIndent);
|
canSecretRing = (CanonicalizedSecretKeyRing) secretRing.canonicalize(mLog, mIndent);
|
||||||
if (canSecretRing == null) {
|
if (canSecretRing == null) {
|
||||||
return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog);
|
return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (NotFoundException e) {
|
} catch (NotFoundException e) {
|
||||||
@ -720,11 +720,11 @@ public class ProviderHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new SaveKeyringResult(result, mLog);
|
return new SaveKeyringResult(result, mLog, canSecretRing);
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log(LogLevel.ERROR, LogType.MSG_IP_FAIL_IO_EXC);
|
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 {
|
} finally {
|
||||||
mIndent -= 1;
|
mIndent -= 1;
|
||||||
}
|
}
|
||||||
@ -740,7 +740,7 @@ public class ProviderHelper {
|
|||||||
|
|
||||||
if ( ! secretRing.isSecret()) {
|
if ( ! secretRing.isSecret()) {
|
||||||
log(LogLevel.ERROR, LogType.MSG_IS_BAD_TYPE_PUBLIC);
|
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;
|
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 this is null, there is an error in the log so we can just return
|
||||||
if (secretRing == null) {
|
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.
|
// 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
|
// This is a safe cast, because we made sure this is a secret ring above
|
||||||
canSecretRing = (CanonicalizedSecretKeyRing) secretRing.canonicalize(mLog, mIndent);
|
canSecretRing = (CanonicalizedSecretKeyRing) secretRing.canonicalize(mLog, mIndent);
|
||||||
if (canSecretRing == null) {
|
if (canSecretRing == null) {
|
||||||
return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog);
|
return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Early breakout if nothing changed
|
// Early breakout if nothing changed
|
||||||
@ -769,7 +769,7 @@ public class ProviderHelper {
|
|||||||
== Arrays.hashCode(oldSecretRing.getEncoded())) {
|
== Arrays.hashCode(oldSecretRing.getEncoded())) {
|
||||||
log(LogLevel.OK, LogType.MSG_IS_SUCCESS_IDENTICAL,
|
log(LogLevel.OK, LogType.MSG_IS_SUCCESS_IDENTICAL,
|
||||||
PgpKeyHelper.convertKeyIdToHex(masterKeyId) );
|
PgpKeyHelper.convertKeyIdToHex(masterKeyId) );
|
||||||
return new SaveKeyringResult(SaveKeyringResult.UPDATED, mLog);
|
return new SaveKeyringResult(SaveKeyringResult.UPDATED, mLog, null);
|
||||||
}
|
}
|
||||||
} catch (NotFoundException e) {
|
} catch (NotFoundException e) {
|
||||||
// Not an issue, just means we are dealing with a new keyring
|
// 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
|
// This is a safe cast, because we made sure this is a secret ring above
|
||||||
canSecretRing = (CanonicalizedSecretKeyRing) secretRing.canonicalize(mLog, mIndent);
|
canSecretRing = (CanonicalizedSecretKeyRing) secretRing.canonicalize(mLog, mIndent);
|
||||||
if (canSecretRing == null) {
|
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
|
// Merge data from new secret ring into public one
|
||||||
publicRing = oldPublicRing.merge(secretRing, mLog, mIndent);
|
publicRing = oldPublicRing.merge(secretRing, mLog, mIndent);
|
||||||
if (publicRing == null) {
|
if (publicRing == null) {
|
||||||
return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog);
|
return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (NotFoundException e) {
|
} catch (NotFoundException e) {
|
||||||
@ -801,24 +801,24 @@ public class ProviderHelper {
|
|||||||
|
|
||||||
CanonicalizedPublicKeyRing canPublicRing = (CanonicalizedPublicKeyRing) publicRing.canonicalize(mLog, mIndent);
|
CanonicalizedPublicKeyRing canPublicRing = (CanonicalizedPublicKeyRing) publicRing.canonicalize(mLog, mIndent);
|
||||||
if (canPublicRing == null) {
|
if (canPublicRing == null) {
|
||||||
return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog);
|
return new SaveKeyringResult(SaveKeyringResult.RESULT_ERROR, mLog, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
result = saveCanonicalizedPublicKeyRing(canPublicRing, progress, true);
|
result = saveCanonicalizedPublicKeyRing(canPublicRing, progress, true);
|
||||||
if ((result & SaveKeyringResult.RESULT_ERROR) == SaveKeyringResult.RESULT_ERROR) {
|
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);
|
progress.setProgress(LogType.MSG_IP_REINSERT_SECRET.getMsgId(), 90, 100);
|
||||||
result = saveCanonicalizedSecretKeyRing(canSecretRing);
|
result = saveCanonicalizedSecretKeyRing(canSecretRing);
|
||||||
|
|
||||||
return new SaveKeyringResult(result, mLog);
|
return new SaveKeyringResult(result, mLog, canSecretRing);
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log(LogLevel.ERROR, LogType.MSG_IS_FAIL_IO_EXC);
|
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 {
|
} finally {
|
||||||
mIndent -= 1;
|
mIndent -= 1;
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,8 @@ import com.github.johnpersano.supertoasts.util.OnClickWrapper;
|
|||||||
import com.github.johnpersano.supertoasts.util.Style;
|
import com.github.johnpersano.supertoasts.util.Style;
|
||||||
|
|
||||||
import org.sufficientlysecure.keychain.R;
|
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.pgp.UncachedKeyRing;
|
||||||
import org.sufficientlysecure.keychain.ui.LogDisplayActivity;
|
import org.sufficientlysecure.keychain.ui.LogDisplayActivity;
|
||||||
import org.sufficientlysecure.keychain.ui.LogDisplayFragment;
|
import org.sufficientlysecure.keychain.ui.LogDisplayFragment;
|
||||||
@ -49,18 +51,21 @@ public abstract class OperationResults {
|
|||||||
public static final int RESULT_WITH_WARNINGS = 16;
|
public static final int RESULT_WITH_WARNINGS = 16;
|
||||||
|
|
||||||
// No keys to import...
|
// 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() {
|
public boolean isOkBoth() {
|
||||||
return (mResult & (RESULT_OK_NEWKEYS | RESULT_OK_UPDATED))
|
return (mResult & (RESULT_OK_NEWKEYS | RESULT_OK_UPDATED))
|
||||||
== (RESULT_OK_NEWKEYS | RESULT_OK_UPDATED);
|
== (RESULT_OK_NEWKEYS | RESULT_OK_UPDATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isOkNew() {
|
public boolean isOkNew() {
|
||||||
return (mResult & RESULT_OK_NEWKEYS) == RESULT_OK_NEWKEYS;
|
return (mResult & RESULT_OK_NEWKEYS) == RESULT_OK_NEWKEYS;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isOkUpdated() {
|
public boolean isOkUpdated() {
|
||||||
return (mResult & RESULT_OK_UPDATED) == RESULT_OK_UPDATED;
|
return (mResult & RESULT_OK_UPDATED) == RESULT_OK_UPDATED;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isFailNothing() {
|
public boolean isFailNothing() {
|
||||||
return (mResult & RESULT_FAIL_NOTHING) == RESULT_FAIL_NOTHING;
|
return (mResult & RESULT_FAIL_NOTHING) == RESULT_FAIL_NOTHING;
|
||||||
}
|
}
|
||||||
@ -124,7 +129,7 @@ public abstract class OperationResults {
|
|||||||
if (this.isOkBoth()) {
|
if (this.isOkBoth()) {
|
||||||
str = activity.getResources().getQuantityString(
|
str = activity.getResources().getQuantityString(
|
||||||
R.plurals.import_keys_added_and_updated_1, mNewKeys, mNewKeys);
|
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);
|
R.plurals.import_keys_added_and_updated_2, mUpdatedKeys, mUpdatedKeys, withWarnings);
|
||||||
} else if (isOkUpdated()) {
|
} else if (isOkUpdated()) {
|
||||||
str = activity.getResources().getQuantityString(
|
str = activity.getResources().getQuantityString(
|
||||||
@ -188,7 +193,7 @@ public abstract class OperationResults {
|
|||||||
public final Long mRingMasterKeyId;
|
public final Long mRingMasterKeyId;
|
||||||
|
|
||||||
public EditKeyResult(int result, OperationLog log,
|
public EditKeyResult(int result, OperationLog log,
|
||||||
UncachedKeyRing ring) {
|
UncachedKeyRing ring) {
|
||||||
super(result, log);
|
super(result, log);
|
||||||
mRing = ring;
|
mRing = ring;
|
||||||
mRingMasterKeyId = ring != null ? ring.getMasterKeyId() : null;
|
mRingMasterKeyId = ring != null ? ring.getMasterKeyId() : null;
|
||||||
@ -224,8 +229,12 @@ public abstract class OperationResults {
|
|||||||
|
|
||||||
public static class SaveKeyringResult extends OperationResultParcel {
|
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);
|
super(result, log);
|
||||||
|
mRingMasterKeyId = ring != null ? ring.getMasterKeyId() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Some old key was updated
|
// Some old key was updated
|
||||||
@ -240,6 +249,26 @@ public abstract class OperationResults {
|
|||||||
return (mResult & UPDATED) == UPDATED;
|
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];
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ public class CreateKeyFinalFragment extends Fragment {
|
|||||||
if (returnData == null) {
|
if (returnData == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final OperationResults.EditKeyResult result =
|
final OperationResults.SaveKeyringResult result =
|
||||||
returnData.getParcelable(OperationResultParcel.EXTRA_RESULT);
|
returnData.getParcelable(OperationResultParcel.EXTRA_RESULT);
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
return;
|
return;
|
||||||
@ -191,7 +191,7 @@ public class CreateKeyFinalFragment extends Fragment {
|
|||||||
getActivity().startService(intent);
|
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
|
// Send all information needed to service to upload key in other thread
|
||||||
final Intent intent = new Intent(getActivity(), KeychainIntentService.class);
|
final Intent intent = new Intent(getActivity(), KeychainIntentService.class);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user