{"action":"created","issue":{"url":"https://api.github.com/repos/open-keychain/open-keychain/issues/1435","labels_url":"https://api.github.com/repos/open-keychain/open-keychain/issues/1435/labels{/name}","comments_url":"https://api.github.com/repos/open-keychain/open-keychain/issues/1435/comments","events_url":"https://api.github.com/repos/open-keychain/open-keychain/issues/1435/events","html_url":"https://github.com/open-keychain/open-keychain/pull/1435","id":94191846,"number":1435,"title":"Revocation on deletion","user":{"login":"adithyaphilip","id":5712241,"avatar_url":"https://avatars.githubusercontent.com/u/5712241?v=3","gravatar_id":"","url":"https://api.github.com/users/adithyaphilip","html_url":"https://github.com/adithyaphilip","followers_url":"https://api.github.com/users/adithyaphilip/followers","following_url":"https://api.github.com/users/adithyaphilip/following{/other_user}","gists_url":"https://api.github.com/users/adithyaphilip/gists{/gist_id}","starred_url":"https://api.github.com/users/adithyaphilip/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adithyaphilip/subscriptions","organizations_url":"https://api.github.com/users/adithyaphilip/orgs","repos_url":"https://api.github.com/users/adithyaphilip/repos","events_url":"https://api.github.com/users/adithyaphilip/events{/privacy}","received_events_url":"https://api.github.com/users/adithyaphilip/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-07-10T01:40:55Z","updated_at":"2015-07-10T10:50:11Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/open-keychain/open-keychain/pulls/1435","html_url":"https://github.com/open-keychain/open-keychain/pull/1435","diff_url":"https://github.com/open-keychain/open-keychain/pull/1435.diff","patch_url":"https://github.com/open-keychain/open-keychain/pull/1435.patch"},"body":"Sorry for the delay, took me a while to get the workflow right.\r\n* Making the dialog appear due to a pendingResult in DeleteOperation made the code in it too unwieldy. Instead, revocation now happens in a new `RevokeOperation`, and `DeleteKeyDialogActivity` determines what dialog to show.\r\n* Added atomic/non-atomic upload to `EditKeyOperation`\r\n* `mCachePassphrase` in `CryptoInputParcel` for operations to specify if they want their passphrase cached.\r\n* Allowed operations to modify the `CryptoInputParcel` they receive - this was primarily so that `EditKeyOperation` could save the modified keyring (so it wouldn't have to repeat the operation) in case the uploading returned a pendingResult. However, this required making `UncachedKeyRing` and related `spongycastle` classes Serializable/Parcelable, so it isn't implemented as of now. Currently, this feature is only used by `RevokeOperation` to specify that it does not want its passphrase to be cached.\r\n* Added retry on upload failure as a type of pendingResult, for operations that require atomic upload. Downside is an operation which uses this won't show an error log if the user decides not to retry, hence the wording \"Cancel Operation\" instead of just \"Cancel\" to make it clear. One workaround I'm thinking of going ahead with is adding an `OperationResult` to the `CryptoInputParcel` that is a part of the pendingResult. This could be shown in case of cancellation.\r\n\r\nScreenshots:\r\n![screenshot_2015-07-10-08-10-40](https://cloud.githubusercontent.com/assets/5712241/8611412/32598832-26de-11e5-9001-33923e77d05f.png)\r\n![screenshot_2015-07-10-06-57-56](https://cloud.githubusercontent.com/assets/5712241/8610656/a96b5678-26d2-11e5-8cac-df10a2386707.png)\r\n"},"comment":{"url":"https://api.github.com/repos/open-keychain/open-keychain/issues/comments/120381188","html_url":"https://github.com/open-keychain/open-keychain/pull/1435#issuecomment-120381188","issue_url":"https://api.github.com/repos/open-keychain/open-keychain/issues/1435","id":120381188,"user":{"login":"dschuermann","id":321888,"avatar_url":"https://avatars.githubusercontent.com/u/321888?v=3","gravatar_id":"","url":"https://api.github.com/users/dschuermann","html_url":"https://github.com/dschuermann","followers_url":"https://api.github.com/users/dschuermann/followers","following_url":"https://api.github.com/users/dschuermann/following{/other_user}","gists_url":"https://api.github.com/users/dschuermann/gists{/gist_id}","starred_url":"https://api.github.com/users/dschuermann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dschuermann/subscriptions","organizations_url":"https://api.github.com/users/dschuermann/orgs","repos_url":"https://api.github.com/users/dschuermann/repos","events_url":"https://api.github.com/users/dschuermann/events{/privacy}","received_events_url":"https://api.github.com/users/dschuermann/received_events","type":"User","site_admin":false},"created_at":"2015-07-10T10:50:11Z","updated_at":"2015-07-10T10:50:11Z","body":"Regarding the revocation procedure:\r\nInstead of only revoking the master key, I would propose that we also revoke all subkeys and all user ids. That's also the way it is done in Enigmail and it could prevent some bad handling in other PGP implementations, e.g, if they only check for the validity of the subkey used for signing and ignore if the master key is revoked."}}