mirror of
https://github.com/moparisthebest/open-keychain
synced 2025-02-17 07:30:14 -05:00
Merge branch 'master' of github.com:openpgp-keychain/openpgp-keychain
This commit is contained in:
commit
b020f950e1
@ -26,6 +26,7 @@ import android.os.Message;
|
|||||||
import android.os.Messenger;
|
import android.os.Messenger;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
|
|
||||||
|
import org.spongycastle.bcpg.sig.KeyFlags;
|
||||||
import org.spongycastle.openpgp.*;
|
import org.spongycastle.openpgp.*;
|
||||||
import org.sufficientlysecure.keychain.Constants;
|
import org.sufficientlysecure.keychain.Constants;
|
||||||
import org.sufficientlysecure.keychain.Id;
|
import org.sufficientlysecure.keychain.Id;
|
||||||
@ -145,7 +146,7 @@ public class KeychainIntentService extends IntentService
|
|||||||
*/
|
*/
|
||||||
// keys
|
// keys
|
||||||
public static final String RESULT_NEW_KEY = "new_key";
|
public static final String RESULT_NEW_KEY = "new_key";
|
||||||
public static final String RESULT_NEW_KEY2 = "new_key2";
|
public static final String RESULT_KEY_USAGES = "new_key_usages";
|
||||||
|
|
||||||
// encrypt
|
// encrypt
|
||||||
public static final String RESULT_SIGNATURE_BYTES = "signature_data";
|
public static final String RESULT_SIGNATURE_BYTES = "signature_data";
|
||||||
@ -563,9 +564,11 @@ public class KeychainIntentService extends IntentService
|
|||||||
try {
|
try {
|
||||||
/* Input */
|
/* Input */
|
||||||
String passphrase = data.getString(GENERATE_KEY_SYMMETRIC_PASSPHRASE);
|
String passphrase = data.getString(GENERATE_KEY_SYMMETRIC_PASSPHRASE);
|
||||||
|
ArrayList<PGPSecretKey> newKeys = new ArrayList<PGPSecretKey>();
|
||||||
|
ArrayList<Integer> keyUsageList = new ArrayList<Integer>();
|
||||||
|
|
||||||
/* Operation */
|
/* Operation */
|
||||||
int keysTotal = 2;
|
int keysTotal = 3;
|
||||||
int keysCreated = 0;
|
int keysCreated = 0;
|
||||||
setProgress(
|
setProgress(
|
||||||
getApplicationContext().getResources().
|
getApplicationContext().getResources().
|
||||||
@ -576,11 +579,22 @@ public class KeychainIntentService extends IntentService
|
|||||||
|
|
||||||
PGPSecretKey masterKey = keyOperations.createKey(Id.choice.algorithm.rsa,
|
PGPSecretKey masterKey = keyOperations.createKey(Id.choice.algorithm.rsa,
|
||||||
4096, passphrase, true);
|
4096, passphrase, true);
|
||||||
|
newKeys.add(masterKey);
|
||||||
|
keyUsageList.add(KeyFlags.CERTIFY_OTHER);
|
||||||
keysCreated++;
|
keysCreated++;
|
||||||
setProgress(keysCreated, keysTotal);
|
setProgress(keysCreated, keysTotal);
|
||||||
|
|
||||||
PGPSecretKey subKey = keyOperations.createKey(Id.choice.algorithm.rsa,
|
PGPSecretKey subKey = keyOperations.createKey(Id.choice.algorithm.rsa,
|
||||||
4096, passphrase, false);
|
4096, passphrase, false);
|
||||||
|
newKeys.add(subKey);
|
||||||
|
keyUsageList.add(KeyFlags.ENCRYPT_COMMS | KeyFlags.ENCRYPT_STORAGE);
|
||||||
|
keysCreated++;
|
||||||
|
setProgress(keysCreated, keysTotal);
|
||||||
|
|
||||||
|
subKey = keyOperations.createKey(Id.choice.algorithm.rsa,
|
||||||
|
4096, passphrase, false);
|
||||||
|
newKeys.add(subKey);
|
||||||
|
keyUsageList.add(KeyFlags.SIGN_DATA);
|
||||||
keysCreated++;
|
keysCreated++;
|
||||||
setProgress(keysCreated, keysTotal);
|
setProgress(keysCreated, keysTotal);
|
||||||
|
|
||||||
@ -588,11 +602,11 @@ public class KeychainIntentService extends IntentService
|
|||||||
// for sign
|
// for sign
|
||||||
|
|
||||||
/* Output */
|
/* Output */
|
||||||
|
|
||||||
Bundle resultData = new Bundle();
|
Bundle resultData = new Bundle();
|
||||||
resultData.putByteArray(RESULT_NEW_KEY,
|
resultData.putByteArray(RESULT_NEW_KEY,
|
||||||
PgpConversionHelper.PGPSecretKeyToBytes(masterKey));
|
PgpConversionHelper.PGPSecretKeyArrayListToBytes(newKeys));
|
||||||
resultData.putByteArray(RESULT_NEW_KEY2,
|
resultData.putIntegerArrayList(RESULT_KEY_USAGES, keyUsageList);
|
||||||
PgpConversionHelper.PGPSecretKeyToBytes(subKey));
|
|
||||||
|
|
||||||
OtherHelper.logDebugBundle(resultData, "resultData");
|
OtherHelper.logDebugBundle(resultData, "resultData");
|
||||||
|
|
||||||
|
@ -42,6 +42,8 @@ import android.widget.CompoundButton.OnCheckedChangeListener;
|
|||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
import com.beardedhen.androidbootstrap.BootstrapButton;
|
import com.beardedhen.androidbootstrap.BootstrapButton;
|
||||||
|
import com.devspark.appmsg.AppMsg;
|
||||||
|
|
||||||
import org.spongycastle.openpgp.PGPSecretKey;
|
import org.spongycastle.openpgp.PGPSecretKey;
|
||||||
import org.spongycastle.openpgp.PGPSecretKeyRing;
|
import org.spongycastle.openpgp.PGPSecretKeyRing;
|
||||||
import org.sufficientlysecure.keychain.Constants;
|
import org.sufficientlysecure.keychain.Constants;
|
||||||
@ -105,7 +107,6 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener
|
|||||||
private boolean mIsPassPhraseSet;
|
private boolean mIsPassPhraseSet;
|
||||||
private boolean mNeedsSaving;
|
private boolean mNeedsSaving;
|
||||||
private boolean mIsBrandNewKeyring = false;
|
private boolean mIsBrandNewKeyring = false;
|
||||||
private MenuItem mSaveButton;
|
|
||||||
|
|
||||||
private BootstrapButton mChangePassphrase;
|
private BootstrapButton mChangePassphrase;
|
||||||
|
|
||||||
@ -235,22 +236,20 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener
|
|||||||
if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
|
if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
|
||||||
// get new key from data bundle returned from service
|
// get new key from data bundle returned from service
|
||||||
Bundle data = message.getData();
|
Bundle data = message.getData();
|
||||||
PGPSecretKey masterKey = PgpConversionHelper
|
|
||||||
.BytesToPGPSecretKey(data
|
ArrayList<PGPSecretKey> newKeys =
|
||||||
|
PgpConversionHelper.BytesToPGPSecretKeyList(data
|
||||||
.getByteArray(KeychainIntentService.RESULT_NEW_KEY));
|
.getByteArray(KeychainIntentService.RESULT_NEW_KEY));
|
||||||
PGPSecretKey subKey = PgpConversionHelper
|
|
||||||
.BytesToPGPSecretKey(data
|
|
||||||
.getByteArray(KeychainIntentService.RESULT_NEW_KEY2));
|
|
||||||
|
|
||||||
//We must set the key flags here as they are not set when we make the
|
ArrayList<Integer> keyUsageFlags = data.getIntegerArrayList(
|
||||||
//key pair. Because we are not generating hashed packets there...
|
KeychainIntentService.RESULT_KEY_USAGES);
|
||||||
// add master key
|
|
||||||
mKeys.add(masterKey);
|
|
||||||
mKeysUsages.add(KeyFlags.CERTIFY_OTHER);
|
|
||||||
|
|
||||||
// add sub key
|
if (newKeys.size() == keyUsageFlags.size()) {
|
||||||
mKeys.add(subKey);
|
for (int i = 0; i < newKeys.size(); ++i) {
|
||||||
mKeysUsages.add(KeyFlags.ENCRYPT_COMMS + KeyFlags.ENCRYPT_STORAGE);
|
mKeys.add(newKeys.get(i));
|
||||||
|
mKeysUsages.add(keyUsageFlags.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
buildLayout(true);
|
buildLayout(true);
|
||||||
}
|
}
|
||||||
@ -325,8 +324,6 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener
|
|||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
super.onCreateOptionsMenu(menu);
|
super.onCreateOptionsMenu(menu);
|
||||||
getMenuInflater().inflate(R.menu.key_edit, menu);
|
getMenuInflater().inflate(R.menu.key_edit, menu);
|
||||||
mSaveButton = menu.findItem(R.id.menu_key_edit_save);
|
|
||||||
mSaveButton.setEnabled(needsSaving());
|
|
||||||
//totally get rid of some actions for new keys
|
//totally get rid of some actions for new keys
|
||||||
if (mDataUri == null) {
|
if (mDataUri == null) {
|
||||||
MenuItem mButton = menu.findItem(R.id.menu_key_edit_export_file);
|
MenuItem mButton = menu.findItem(R.id.menu_key_edit_export_file);
|
||||||
@ -571,6 +568,8 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener
|
|||||||
Toast.makeText(this, getString(R.string.error_message, e.getMessage()),
|
Toast.makeText(this, getString(R.string.error_message, e.getMessage()),
|
||||||
Toast.LENGTH_SHORT).show();
|
Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
AppMsg.makeText(this, R.string.error_change_something_first, AppMsg.STYLE_ALERT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -252,11 +252,11 @@ public class KeyEditor extends LinearLayout implements Editor, OnClickListener {
|
|||||||
mIsNewKey = isNewKey;
|
mIsNewKey = isNewKey;
|
||||||
if (isNewKey) {
|
if (isNewKey) {
|
||||||
mUsage = usage;
|
mUsage = usage;
|
||||||
mChkCertify.setChecked((usage &= KeyFlags.CERTIFY_OTHER) == KeyFlags.CERTIFY_OTHER);
|
mChkCertify.setChecked((usage & KeyFlags.CERTIFY_OTHER) == KeyFlags.CERTIFY_OTHER);
|
||||||
mChkSign.setChecked((usage &= KeyFlags.SIGN_DATA) == KeyFlags.SIGN_DATA);
|
mChkSign.setChecked((usage & KeyFlags.SIGN_DATA) == KeyFlags.SIGN_DATA);
|
||||||
mChkEncrypt.setChecked(((usage &= KeyFlags.ENCRYPT_COMMS) == KeyFlags.ENCRYPT_COMMS) ||
|
mChkEncrypt.setChecked(((usage & KeyFlags.ENCRYPT_COMMS) == KeyFlags.ENCRYPT_COMMS) ||
|
||||||
((usage &= KeyFlags.ENCRYPT_STORAGE) == KeyFlags.ENCRYPT_STORAGE));
|
((usage & KeyFlags.ENCRYPT_STORAGE) == KeyFlags.ENCRYPT_STORAGE));
|
||||||
mChkAuthenticate.setChecked((usage &= KeyFlags.AUTHENTICATION) == KeyFlags.AUTHENTICATION);
|
mChkAuthenticate.setChecked((usage & KeyFlags.AUTHENTICATION) == KeyFlags.AUTHENTICATION);
|
||||||
} else {
|
} else {
|
||||||
mUsage = PgpKeyHelper.getKeyUsage(key);
|
mUsage = PgpKeyHelper.getKeyUsage(key);
|
||||||
mOriginalUsage = mUsage;
|
mOriginalUsage = mUsage;
|
||||||
|
@ -325,6 +325,7 @@
|
|||||||
<item quantity="one">part of the loaded file is a valid OpenPGP object but not a OpenPGP key</item>
|
<item quantity="one">part of the loaded file is a valid OpenPGP object but not a OpenPGP key</item>
|
||||||
<item quantity="other">parts of the loaded file are valid OpenPGP objects but not OpenPGP keys</item>
|
<item quantity="other">parts of the loaded file are valid OpenPGP objects but not OpenPGP keys</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
<string name="error_change_something_first">You must make changes to the keyring before you can save it</string>
|
||||||
|
|
||||||
<!-- progress dialogs, usually ending in '…' -->
|
<!-- progress dialogs, usually ending in '…' -->
|
||||||
<string name="progress_done">Done.</string>
|
<string name="progress_done">Done.</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user