mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-27 11:12:15 -05:00
Use intent data instead of IDs for upload and sign, fixes #205
This commit is contained in:
parent
f276455624
commit
ecf6fc26c5
@ -156,7 +156,6 @@ public class KeychainIntentService extends IntentService implements ProgressDial
|
|||||||
|
|
||||||
// upload key
|
// upload key
|
||||||
public static final String UPLOAD_KEY_SERVER = "upload_key_server";
|
public static final String UPLOAD_KEY_SERVER = "upload_key_server";
|
||||||
public static final String UPLOAD_KEY_KEYRING_ROW_ID = "upload_key_ring_id";
|
|
||||||
|
|
||||||
// query key
|
// query key
|
||||||
public static final String QUERY_KEY_SERVER = "query_key_server";
|
public static final String QUERY_KEY_SERVER = "query_key_server";
|
||||||
@ -231,6 +230,8 @@ public class KeychainIntentService extends IntentService implements ProgressDial
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Uri dataUri = intent.getData();
|
||||||
|
|
||||||
mMessenger = (Messenger) extras.get(EXTRA_MESSENGER);
|
mMessenger = (Messenger) extras.get(EXTRA_MESSENGER);
|
||||||
Bundle data = extras.getBundle(EXTRA_DATA);
|
Bundle data = extras.getBundle(EXTRA_DATA);
|
||||||
|
|
||||||
@ -727,14 +728,13 @@ public class KeychainIntentService extends IntentService implements ProgressDial
|
|||||||
try {
|
try {
|
||||||
|
|
||||||
/* Input */
|
/* Input */
|
||||||
int keyRingRowId = data.getInt(UPLOAD_KEY_KEYRING_ROW_ID);
|
|
||||||
String keyServer = data.getString(UPLOAD_KEY_SERVER);
|
String keyServer = data.getString(UPLOAD_KEY_SERVER);
|
||||||
|
// and dataUri!
|
||||||
|
|
||||||
/* Operation */
|
/* Operation */
|
||||||
HkpKeyServer server = new HkpKeyServer(keyServer);
|
HkpKeyServer server = new HkpKeyServer(keyServer);
|
||||||
|
|
||||||
PGPPublicKeyRing keyring = ProviderHelper.getPGPPublicKeyRingByRowId(this,
|
PGPPublicKeyRing keyring = (PGPPublicKeyRing) ProviderHelper.getPGPKeyRing(this, dataUri);
|
||||||
keyRingRowId);
|
|
||||||
if (keyring != null) {
|
if (keyring != null) {
|
||||||
PgpImportExport pgpImportExport = new PgpImportExport(this, null);
|
PgpImportExport pgpImportExport = new PgpImportExport(this, null);
|
||||||
|
|
||||||
|
@ -22,9 +22,11 @@ import org.sufficientlysecure.keychain.R;
|
|||||||
import org.sufficientlysecure.keychain.helper.Preferences;
|
import org.sufficientlysecure.keychain.helper.Preferences;
|
||||||
import org.sufficientlysecure.keychain.service.KeychainIntentService;
|
import org.sufficientlysecure.keychain.service.KeychainIntentService;
|
||||||
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
|
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
|
||||||
|
import org.sufficientlysecure.keychain.util.Log;
|
||||||
|
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.os.Messenger;
|
import android.os.Messenger;
|
||||||
@ -43,16 +45,11 @@ import com.beardedhen.androidbootstrap.BootstrapButton;
|
|||||||
* Sends the selected public key to a key server
|
* Sends the selected public key to a key server
|
||||||
*/
|
*/
|
||||||
public class KeyServerUploadActivity extends SherlockFragmentActivity {
|
public class KeyServerUploadActivity extends SherlockFragmentActivity {
|
||||||
|
|
||||||
// Not used in sourcode, but listed in AndroidManifest!
|
|
||||||
public static final String ACTION_EXPORT_KEY_TO_SERVER = Constants.INTENT_PREFIX
|
|
||||||
+ "EXPORT_KEY_TO_SERVER";
|
|
||||||
|
|
||||||
public static final String EXTRA_KEYRING_ROW_ID = "key_row_id";
|
|
||||||
|
|
||||||
private BootstrapButton mUploadButton;
|
private BootstrapButton mUploadButton;
|
||||||
private Spinner mKeyServerSpinner;
|
private Spinner mKeyServerSpinner;
|
||||||
|
|
||||||
|
private Uri mDataUri;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -79,6 +76,13 @@ public class KeyServerUploadActivity extends SherlockFragmentActivity {
|
|||||||
uploadKey();
|
uploadKey();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
mDataUri = getIntent().getData();
|
||||||
|
if (mDataUri == null) {
|
||||||
|
Log.e(Constants.TAG, "Intent data missing. Should be Uri of key!");
|
||||||
|
finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void uploadKey() {
|
private void uploadKey() {
|
||||||
@ -87,12 +91,12 @@ public class KeyServerUploadActivity extends SherlockFragmentActivity {
|
|||||||
|
|
||||||
intent.setAction(KeychainIntentService.ACTION_UPLOAD_KEYRING);
|
intent.setAction(KeychainIntentService.ACTION_UPLOAD_KEYRING);
|
||||||
|
|
||||||
|
// set data uri as path to keyring
|
||||||
|
intent.setData(mDataUri);
|
||||||
|
|
||||||
// fill values for this action
|
// fill values for this action
|
||||||
Bundle data = new Bundle();
|
Bundle data = new Bundle();
|
||||||
|
|
||||||
int keyRingId = getIntent().getIntExtra(EXTRA_KEYRING_ROW_ID, -1);
|
|
||||||
data.putInt(KeychainIntentService.UPLOAD_KEY_KEYRING_ROW_ID, keyRingId);
|
|
||||||
|
|
||||||
String server = (String) mKeyServerSpinner.getSelectedItem();
|
String server = (String) mKeyServerSpinner.getSelectedItem();
|
||||||
data.putString(KeychainIntentService.UPLOAD_KEY_SERVER, server);
|
data.putString(KeychainIntentService.UPLOAD_KEY_SERVER, server);
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ import org.spongycastle.openpgp.PGPSignature;
|
|||||||
import org.sufficientlysecure.keychain.Constants;
|
import org.sufficientlysecure.keychain.Constants;
|
||||||
import org.sufficientlysecure.keychain.R;
|
import org.sufficientlysecure.keychain.R;
|
||||||
import org.sufficientlysecure.keychain.helper.Preferences;
|
import org.sufficientlysecure.keychain.helper.Preferences;
|
||||||
|
import org.sufficientlysecure.keychain.pgp.PgpKeyHelper;
|
||||||
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
|
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
|
||||||
import org.sufficientlysecure.keychain.provider.ProviderHelper;
|
import org.sufficientlysecure.keychain.provider.ProviderHelper;
|
||||||
import org.sufficientlysecure.keychain.service.KeychainIntentService;
|
import org.sufficientlysecure.keychain.service.KeychainIntentService;
|
||||||
@ -34,6 +35,7 @@ import org.sufficientlysecure.keychain.util.Log;
|
|||||||
|
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
@ -58,18 +60,16 @@ import com.beardedhen.androidbootstrap.BootstrapButton;
|
|||||||
*/
|
*/
|
||||||
public class SignKeyActivity extends SherlockFragmentActivity implements
|
public class SignKeyActivity extends SherlockFragmentActivity implements
|
||||||
SelectSecretKeyLayoutFragment.SelectSecretKeyCallback {
|
SelectSecretKeyLayoutFragment.SelectSecretKeyCallback {
|
||||||
|
|
||||||
public static final String EXTRA_KEY_ID = "key_id";
|
|
||||||
|
|
||||||
private long mPubKeyId = 0;
|
|
||||||
private long mMasterKeyId = 0;
|
|
||||||
|
|
||||||
private BootstrapButton mSignButton;
|
private BootstrapButton mSignButton;
|
||||||
private CheckBox mUploadKeyCheckbox;
|
private CheckBox mUploadKeyCheckbox;
|
||||||
private Spinner mSelectKeyserverSpinner;
|
private Spinner mSelectKeyserverSpinner;
|
||||||
|
|
||||||
private SelectSecretKeyLayoutFragment mSelectKeyFragment;
|
private SelectSecretKeyLayoutFragment mSelectKeyFragment;
|
||||||
|
|
||||||
|
private Uri mDataUri;
|
||||||
|
private long mPubKeyId = 0;
|
||||||
|
private long mMasterKeyId = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -126,10 +126,22 @@ public class SignKeyActivity extends SherlockFragmentActivity implements
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mPubKeyId = getIntent().getLongExtra(EXTRA_KEY_ID, 0);
|
mDataUri = getIntent().getData();
|
||||||
if (mPubKeyId == 0) {
|
if (mDataUri == null) {
|
||||||
Log.e(Constants.TAG, "No pub key id given!");
|
Log.e(Constants.TAG, "Intent data missing. Should be Uri of key!");
|
||||||
finish();
|
finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
PGPPublicKeyRing signKey = (PGPPublicKeyRing) ProviderHelper.getPGPKeyRing(this, mDataUri);
|
||||||
|
|
||||||
|
if (signKey != null) {
|
||||||
|
mPubKeyId = PgpKeyHelper.getMasterKey(signKey).getKeyID();
|
||||||
|
}
|
||||||
|
if (mPubKeyId == 0) {
|
||||||
|
Log.e(Constants.TAG, "this shouldn't happen. KeyId == 0!");
|
||||||
|
finish();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -260,11 +272,12 @@ public class SignKeyActivity extends SherlockFragmentActivity implements
|
|||||||
|
|
||||||
intent.setAction(KeychainIntentService.ACTION_UPLOAD_KEYRING);
|
intent.setAction(KeychainIntentService.ACTION_UPLOAD_KEYRING);
|
||||||
|
|
||||||
|
// set data uri as path to keyring
|
||||||
|
intent.setData(mDataUri);
|
||||||
|
|
||||||
// fill values for this action
|
// fill values for this action
|
||||||
Bundle data = new Bundle();
|
Bundle data = new Bundle();
|
||||||
|
|
||||||
data.putLong(KeychainIntentService.UPLOAD_KEY_KEYRING_ROW_ID, mPubKeyId);
|
|
||||||
|
|
||||||
Spinner keyServer = (Spinner) findViewById(R.id.sign_key_keyserver);
|
Spinner keyServer = (Spinner) findViewById(R.id.sign_key_keyserver);
|
||||||
String server = (String) keyServer.getSelectedItem();
|
String server = (String) keyServer.getSelectedItem();
|
||||||
data.putString(KeychainIntentService.UPLOAD_KEY_SERVER, server);
|
data.putString(KeychainIntentService.UPLOAD_KEY_SERVER, server);
|
||||||
|
@ -382,11 +382,8 @@ public class ViewKeyActivity extends SherlockFragmentActivity implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void uploadToKeyserver(Uri dataUri) {
|
private void uploadToKeyserver(Uri dataUri) {
|
||||||
long keyRingRowId = Long.valueOf(dataUri.getLastPathSegment());
|
|
||||||
|
|
||||||
Intent uploadIntent = new Intent(this, KeyServerUploadActivity.class);
|
Intent uploadIntent = new Intent(this, KeyServerUploadActivity.class);
|
||||||
uploadIntent.setAction(KeyServerUploadActivity.ACTION_EXPORT_KEY_TO_SERVER);
|
uploadIntent.setData(mDataUri);
|
||||||
uploadIntent.putExtra(KeyServerUploadActivity.EXTRA_KEYRING_ROW_ID, (int) keyRingRowId);
|
|
||||||
startActivityForResult(uploadIntent, Id.request.export_to_server);
|
startActivityForResult(uploadIntent, Id.request.export_to_server);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -412,19 +409,8 @@ public class ViewKeyActivity extends SherlockFragmentActivity implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void signKey(Uri dataUri) {
|
private void signKey(Uri dataUri) {
|
||||||
long keyId = 0;
|
|
||||||
PGPPublicKeyRing signKey = (PGPPublicKeyRing) ProviderHelper.getPGPKeyRing(this, dataUri);
|
|
||||||
|
|
||||||
if (signKey != null) {
|
|
||||||
keyId = PgpKeyHelper.getMasterKey(signKey).getKeyID();
|
|
||||||
}
|
|
||||||
if (keyId == 0) {
|
|
||||||
Log.e(Constants.TAG, "this shouldn't happen. KeyId == 0!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Intent signIntent = new Intent(this, SignKeyActivity.class);
|
Intent signIntent = new Intent(this, SignKeyActivity.class);
|
||||||
signIntent.putExtra(SignKeyActivity.EXTRA_KEY_ID, keyId);
|
signIntent.setData(mDataUri);
|
||||||
startActivity(signIntent);
|
startActivity(signIntent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user