mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-17 22:35:05 -05:00
Fix tests for Passphrase class
This commit is contained in:
parent
b24ff10c43
commit
e65efce333
@ -47,6 +47,7 @@ import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
|
|||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
|
||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
||||||
import org.sufficientlysecure.keychain.util.InputData;
|
import org.sufficientlysecure.keychain.util.InputData;
|
||||||
|
import org.sufficientlysecure.keychain.util.Passphrase;
|
||||||
import org.sufficientlysecure.keychain.util.ProgressScaler;
|
import org.sufficientlysecure.keychain.util.ProgressScaler;
|
||||||
import org.sufficientlysecure.keychain.util.TestingUtils;
|
import org.sufficientlysecure.keychain.util.TestingUtils;
|
||||||
|
|
||||||
@ -65,8 +66,8 @@ import java.util.Random;
|
|||||||
public class CertifyOperationTest {
|
public class CertifyOperationTest {
|
||||||
|
|
||||||
static UncachedKeyRing mStaticRing1, mStaticRing2;
|
static UncachedKeyRing mStaticRing1, mStaticRing2;
|
||||||
static String mKeyPhrase1 = TestingUtils.genPassphrase(true);
|
static Passphrase mKeyPhrase1 = TestingUtils.genPassphrase(true);
|
||||||
static String mKeyPhrase2 = TestingUtils.genPassphrase(true);
|
static Passphrase mKeyPhrase2 = TestingUtils.genPassphrase(true);
|
||||||
|
|
||||||
static PrintStream oldShadowStream;
|
static PrintStream oldShadowStream;
|
||||||
|
|
||||||
@ -255,13 +256,13 @@ public class CertifyOperationTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private CertifyOperation operationWithFakePassphraseCache(
|
private CertifyOperation operationWithFakePassphraseCache(
|
||||||
final Long checkMasterKeyId, final Long checkSubKeyId, final String passphrase) {
|
final Long checkMasterKeyId, final Long checkSubKeyId, final Passphrase passphrase) {
|
||||||
|
|
||||||
return new CertifyOperation(Robolectric.application,
|
return new CertifyOperation(Robolectric.application,
|
||||||
new ProviderHelper(Robolectric.application),
|
new ProviderHelper(Robolectric.application),
|
||||||
null, null) {
|
null, null) {
|
||||||
@Override
|
@Override
|
||||||
public String getCachedPassphrase(long masterKeyId, long subKeyId)
|
public Passphrase getCachedPassphrase(long masterKeyId, long subKeyId)
|
||||||
throws NoSecretKeyException {
|
throws NoSecretKeyException {
|
||||||
if (checkMasterKeyId != null) {
|
if (checkMasterKeyId != null) {
|
||||||
Assert.assertEquals("requested passphrase should be for expected master key id",
|
Assert.assertEquals("requested passphrase should be for expected master key id",
|
||||||
|
@ -38,6 +38,7 @@ import org.sufficientlysecure.keychain.provider.ProviderHelper;
|
|||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
|
||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
|
||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
||||||
|
import org.sufficientlysecure.keychain.util.Passphrase;
|
||||||
import org.sufficientlysecure.keychain.util.ProgressScaler;
|
import org.sufficientlysecure.keychain.util.ProgressScaler;
|
||||||
import org.sufficientlysecure.keychain.util.TestingUtils;
|
import org.sufficientlysecure.keychain.util.TestingUtils;
|
||||||
|
|
||||||
@ -51,11 +52,11 @@ import java.util.Iterator;
|
|||||||
@org.robolectric.annotation.Config(emulateSdk = 18) // Robolectric doesn't yet support 19
|
@org.robolectric.annotation.Config(emulateSdk = 18) // Robolectric doesn't yet support 19
|
||||||
public class ExportTest {
|
public class ExportTest {
|
||||||
|
|
||||||
static String mPassphrase = TestingUtils.genPassphrase(true);
|
static Passphrase mPassphrase = TestingUtils.genPassphrase(true);
|
||||||
|
|
||||||
static UncachedKeyRing mStaticRing1, mStaticRing2;
|
static UncachedKeyRing mStaticRing1, mStaticRing2;
|
||||||
static String mKeyPhrase1 = TestingUtils.genPassphrase(true);
|
static Passphrase mKeyPhrase1 = TestingUtils.genPassphrase(true);
|
||||||
static String mKeyPhrase2 = TestingUtils.genPassphrase(true);
|
static Passphrase mKeyPhrase2 = TestingUtils.genPassphrase(true);
|
||||||
|
|
||||||
static PrintStream oldShadowStream;
|
static PrintStream oldShadowStream;
|
||||||
|
|
||||||
@ -94,7 +95,7 @@ public class ExportTest {
|
|||||||
parcel.mAddSubKeys.add(new SaveKeyringParcel.SubkeyAdd(
|
parcel.mAddSubKeys.add(new SaveKeyringParcel.SubkeyAdd(
|
||||||
Algorithm.ELGAMAL, 1024, null, KeyFlags.ENCRYPT_COMMS, 0L));
|
Algorithm.ELGAMAL, 1024, null, KeyFlags.ENCRYPT_COMMS, 0L));
|
||||||
parcel.mAddUserIds.add("snails");
|
parcel.mAddUserIds.add("snails");
|
||||||
parcel.mNewUnlock = new ChangeUnlockParcel(null, "1234");
|
parcel.mNewUnlock = new ChangeUnlockParcel(null, new Passphrase("1234"));
|
||||||
|
|
||||||
PgpEditKeyResult result = op.createSecretKeyRing(parcel);
|
PgpEditKeyResult result = op.createSecretKeyRing(parcel);
|
||||||
Assert.assertTrue("initial test key creation must succeed", result.success());
|
Assert.assertTrue("initial test key creation must succeed", result.success());
|
||||||
|
@ -38,6 +38,7 @@ import org.sufficientlysecure.keychain.provider.ProviderHelper;
|
|||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
|
||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
|
||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
||||||
|
import org.sufficientlysecure.keychain.util.Passphrase;
|
||||||
import org.sufficientlysecure.keychain.util.ProgressScaler;
|
import org.sufficientlysecure.keychain.util.ProgressScaler;
|
||||||
import org.sufficientlysecure.keychain.util.TestingUtils;
|
import org.sufficientlysecure.keychain.util.TestingUtils;
|
||||||
|
|
||||||
@ -50,7 +51,7 @@ import java.util.Iterator;
|
|||||||
public class PromoteKeyOperationTest {
|
public class PromoteKeyOperationTest {
|
||||||
|
|
||||||
static UncachedKeyRing mStaticRing;
|
static UncachedKeyRing mStaticRing;
|
||||||
static String mKeyPhrase1 = TestingUtils.genPassphrase(true);
|
static Passphrase mKeyPhrase1 = TestingUtils.genPassphrase(true);
|
||||||
|
|
||||||
static PrintStream oldShadowStream;
|
static PrintStream oldShadowStream;
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@ import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult;
|
|||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
||||||
import org.sufficientlysecure.keychain.support.KeyringTestingHelper;
|
import org.sufficientlysecure.keychain.support.KeyringTestingHelper;
|
||||||
import org.sufficientlysecure.keychain.util.InputData;
|
import org.sufficientlysecure.keychain.util.InputData;
|
||||||
|
import org.sufficientlysecure.keychain.util.Passphrase;
|
||||||
import org.sufficientlysecure.keychain.util.ProgressScaler;
|
import org.sufficientlysecure.keychain.util.ProgressScaler;
|
||||||
import org.sufficientlysecure.keychain.util.TestingUtils;
|
import org.sufficientlysecure.keychain.util.TestingUtils;
|
||||||
|
|
||||||
@ -47,17 +48,18 @@ import java.io.ByteArrayOutputStream;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.io.PrintStream;
|
import java.io.PrintStream;
|
||||||
import java.security.Security;
|
import java.security.Security;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@org.robolectric.annotation.Config(emulateSdk = 18) // Robolectric doesn't yet support 19
|
@org.robolectric.annotation.Config(emulateSdk = 18) // Robolectric doesn't yet support 19
|
||||||
public class PgpEncryptDecryptTest {
|
public class PgpEncryptDecryptTest {
|
||||||
|
|
||||||
static String mPassphrase = TestingUtils.genPassphrase(true);
|
static Passphrase mPassphrase = TestingUtils.genPassphrase(true);
|
||||||
|
|
||||||
static UncachedKeyRing mStaticRing1, mStaticRing2;
|
static UncachedKeyRing mStaticRing1, mStaticRing2;
|
||||||
static String mKeyPhrase1 = TestingUtils.genPassphrase(true);
|
static Passphrase mKeyPhrase1 = TestingUtils.genPassphrase(true);
|
||||||
static String mKeyPhrase2 = TestingUtils.genPassphrase(true);
|
static Passphrase mKeyPhrase2 = TestingUtils.genPassphrase(true);
|
||||||
|
|
||||||
static PrintStream oldShadowStream;
|
static PrintStream oldShadowStream;
|
||||||
|
|
||||||
@ -180,7 +182,7 @@ public class PgpEncryptDecryptTest {
|
|||||||
new ProviderHelper(Robolectric.application),
|
new ProviderHelper(Robolectric.application),
|
||||||
null, // new DummyPassphraseCache(mPassphrase, 0L),
|
null, // new DummyPassphraseCache(mPassphrase, 0L),
|
||||||
data, out);
|
data, out);
|
||||||
b.setPassphrase(mPassphrase + "x");
|
b.setPassphrase(new Passphrase(Arrays.toString(mPassphrase.getCharArray()) + "x"));
|
||||||
DecryptVerifyResult result = b.build().execute();
|
DecryptVerifyResult result = b.build().execute();
|
||||||
Assert.assertFalse("decryption must succeed", result.success());
|
Assert.assertFalse("decryption must succeed", result.success());
|
||||||
Assert.assertEquals("decrypted plaintext should be empty", 0, out.size());
|
Assert.assertEquals("decrypted plaintext should be empty", 0, out.size());
|
||||||
@ -511,7 +513,7 @@ public class PgpEncryptDecryptTest {
|
|||||||
|
|
||||||
private PgpDecryptVerify.Builder builderWithFakePassphraseCache (
|
private PgpDecryptVerify.Builder builderWithFakePassphraseCache (
|
||||||
InputData data, OutputStream out,
|
InputData data, OutputStream out,
|
||||||
final String passphrase, final Long checkMasterKeyId, final Long checkSubKeyId) {
|
final Passphrase passphrase, final Long checkMasterKeyId, final Long checkSubKeyId) {
|
||||||
|
|
||||||
return new PgpDecryptVerify.Builder(Robolectric.application,
|
return new PgpDecryptVerify.Builder(Robolectric.application,
|
||||||
new ProviderHelper(Robolectric.application),
|
new ProviderHelper(Robolectric.application),
|
||||||
@ -520,7 +522,7 @@ public class PgpEncryptDecryptTest {
|
|||||||
public PgpDecryptVerify build() {
|
public PgpDecryptVerify build() {
|
||||||
return new PgpDecryptVerify(this) {
|
return new PgpDecryptVerify(this) {
|
||||||
@Override
|
@Override
|
||||||
public String getCachedPassphrase(long masterKeyId, long subKeyId)
|
public Passphrase getCachedPassphrase(long masterKeyId, long subKeyId)
|
||||||
throws NoSecretKeyException {
|
throws NoSecretKeyException {
|
||||||
if (checkMasterKeyId != null) {
|
if (checkMasterKeyId != null) {
|
||||||
Assert.assertEquals("requested passphrase should be for expected master key id",
|
Assert.assertEquals("requested passphrase should be for expected master key id",
|
||||||
|
@ -53,6 +53,7 @@ import org.sufficientlysecure.keychain.support.KeyringBuilder;
|
|||||||
import org.sufficientlysecure.keychain.support.KeyringTestingHelper;
|
import org.sufficientlysecure.keychain.support.KeyringTestingHelper;
|
||||||
import org.sufficientlysecure.keychain.support.KeyringTestingHelper.RawPacket;
|
import org.sufficientlysecure.keychain.support.KeyringTestingHelper.RawPacket;
|
||||||
import org.sufficientlysecure.keychain.support.TestDataUtil;
|
import org.sufficientlysecure.keychain.support.TestDataUtil;
|
||||||
|
import org.sufficientlysecure.keychain.util.Passphrase;
|
||||||
import org.sufficientlysecure.keychain.util.ProgressScaler;
|
import org.sufficientlysecure.keychain.util.ProgressScaler;
|
||||||
import org.sufficientlysecure.keychain.util.TestingUtils;
|
import org.sufficientlysecure.keychain.util.TestingUtils;
|
||||||
|
|
||||||
@ -72,7 +73,7 @@ import java.util.Random;
|
|||||||
public class PgpKeyOperationTest {
|
public class PgpKeyOperationTest {
|
||||||
|
|
||||||
static UncachedKeyRing staticRing;
|
static UncachedKeyRing staticRing;
|
||||||
final static String passphrase = TestingUtils.genPassphrase();
|
final static Passphrase passphrase = TestingUtils.genPassphrase();
|
||||||
|
|
||||||
UncachedKeyRing ring;
|
UncachedKeyRing ring;
|
||||||
PgpKeyOperation op;
|
PgpKeyOperation op;
|
||||||
@ -295,9 +296,9 @@ public class PgpKeyOperationTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
String badphrase = "";
|
Passphrase badphrase = new Passphrase();
|
||||||
if (badphrase.equals(passphrase)) {
|
if (badphrase.equals(passphrase)) {
|
||||||
badphrase = "a";
|
badphrase = new Passphrase("a");
|
||||||
}
|
}
|
||||||
|
|
||||||
assertModifyFailure("keyring modification with bad passphrase should fail",
|
assertModifyFailure("keyring modification with bad passphrase should fail",
|
||||||
@ -1036,7 +1037,7 @@ public class PgpKeyOperationTest {
|
|||||||
public void testPassphraseChange() throws Exception {
|
public void testPassphraseChange() throws Exception {
|
||||||
|
|
||||||
// change passphrase to empty
|
// change passphrase to empty
|
||||||
parcel.mNewUnlock = new ChangeUnlockParcel("");
|
parcel.mNewUnlock = new ChangeUnlockParcel(new Passphrase());
|
||||||
// note that canonicalization here necessarily strips the empty notation packet
|
// note that canonicalization here necessarily strips the empty notation packet
|
||||||
UncachedKeyRing modified = applyModificationWithChecks(parcel, ring, onlyA, onlyB,
|
UncachedKeyRing modified = applyModificationWithChecks(parcel, ring, onlyA, onlyB,
|
||||||
passphrase);
|
passphrase);
|
||||||
@ -1050,9 +1051,9 @@ public class PgpKeyOperationTest {
|
|||||||
PacketTags.SECRET_SUBKEY, sKeyNoPassphrase.tag);
|
PacketTags.SECRET_SUBKEY, sKeyNoPassphrase.tag);
|
||||||
|
|
||||||
// modify keyring, change to non-empty passphrase
|
// modify keyring, change to non-empty passphrase
|
||||||
String otherPassphrase = TestingUtils.genPassphrase(true);
|
Passphrase otherPassphrase = TestingUtils.genPassphrase(true);
|
||||||
parcel.mNewUnlock = new ChangeUnlockParcel(otherPassphrase);
|
parcel.mNewUnlock = new ChangeUnlockParcel(otherPassphrase);
|
||||||
modified = applyModificationWithChecks(parcel, modified, onlyA, onlyB, "");
|
modified = applyModificationWithChecks(parcel, modified, onlyA, onlyB, new Passphrase());
|
||||||
|
|
||||||
Assert.assertEquals("exactly three packets should have been modified (the secret keys)",
|
Assert.assertEquals("exactly three packets should have been modified (the secret keys)",
|
||||||
3, onlyB.size());
|
3, onlyB.size());
|
||||||
@ -1075,7 +1076,7 @@ public class PgpKeyOperationTest {
|
|||||||
Assert.assertEquals("extracted packet should be a secret subkey",
|
Assert.assertEquals("extracted packet should be a secret subkey",
|
||||||
PacketTags.SECRET_SUBKEY, sKeyNoPassphrase.tag);
|
PacketTags.SECRET_SUBKEY, sKeyNoPassphrase.tag);
|
||||||
|
|
||||||
String otherPassphrase2 = TestingUtils.genPassphrase(true);
|
Passphrase otherPassphrase2 = TestingUtils.genPassphrase(true);
|
||||||
parcel.mNewUnlock = new ChangeUnlockParcel(otherPassphrase2);
|
parcel.mNewUnlock = new ChangeUnlockParcel(otherPassphrase2);
|
||||||
{
|
{
|
||||||
// if we replace a secret key with one without passphrase
|
// if we replace a secret key with one without passphrase
|
||||||
@ -1112,7 +1113,7 @@ public class PgpKeyOperationTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testUnlockPin() throws Exception {
|
public void testUnlockPin() throws Exception {
|
||||||
|
|
||||||
String pin = "5235125";
|
Passphrase pin = new Passphrase("5235125");
|
||||||
|
|
||||||
// change passphrase to a pin type
|
// change passphrase to a pin type
|
||||||
parcel.mNewUnlock = new ChangeUnlockParcel(null, pin);
|
parcel.mNewUnlock = new ChangeUnlockParcel(null, pin);
|
||||||
@ -1138,7 +1139,7 @@ public class PgpKeyOperationTest {
|
|||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
|
|
||||||
{
|
{
|
||||||
parcel.mNewUnlock = new ChangeUnlockParcel("phrayse", null);
|
parcel.mNewUnlock = new ChangeUnlockParcel(new Passphrase("phrayse"), null);
|
||||||
applyModificationWithChecks(parcel, modified, onlyA, onlyB, pin, true, false);
|
applyModificationWithChecks(parcel, modified, onlyA, onlyB, pin, true, false);
|
||||||
|
|
||||||
Assert.assertEquals("exactly four packets should have been removed (the secret keys + notation packet)",
|
Assert.assertEquals("exactly four packets should have been removed (the secret keys + notation packet)",
|
||||||
@ -1171,7 +1172,7 @@ public class PgpKeyOperationTest {
|
|||||||
UncachedKeyRing ring,
|
UncachedKeyRing ring,
|
||||||
ArrayList<RawPacket> onlyA,
|
ArrayList<RawPacket> onlyA,
|
||||||
ArrayList<RawPacket> onlyB,
|
ArrayList<RawPacket> onlyB,
|
||||||
String passphrase) {
|
Passphrase passphrase) {
|
||||||
return applyModificationWithChecks(parcel, ring, onlyA, onlyB, passphrase, true, true);
|
return applyModificationWithChecks(parcel, ring, onlyA, onlyB, passphrase, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1180,7 +1181,7 @@ public class PgpKeyOperationTest {
|
|||||||
UncachedKeyRing ring,
|
UncachedKeyRing ring,
|
||||||
ArrayList<RawPacket> onlyA,
|
ArrayList<RawPacket> onlyA,
|
||||||
ArrayList<RawPacket> onlyB,
|
ArrayList<RawPacket> onlyB,
|
||||||
String passphrase,
|
Passphrase passphrase,
|
||||||
boolean canonicalize,
|
boolean canonicalize,
|
||||||
boolean constantCanonicalize) {
|
boolean constantCanonicalize) {
|
||||||
|
|
||||||
@ -1257,7 +1258,7 @@ public class PgpKeyOperationTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void assertModifyFailure(String reason, UncachedKeyRing ring,
|
private void assertModifyFailure(String reason, UncachedKeyRing ring,
|
||||||
SaveKeyringParcel parcel, String passphrase, LogType expected)
|
SaveKeyringParcel parcel, Passphrase passphrase, LogType expected)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
|
|
||||||
CanonicalizedSecretKeyRing secretRing = new CanonicalizedSecretKeyRing(ring.getEncoded(), false, 0);
|
CanonicalizedSecretKeyRing secretRing = new CanonicalizedSecretKeyRing(ring.getEncoded(), false, 0);
|
||||||
|
@ -61,6 +61,7 @@ import org.sufficientlysecure.keychain.operations.results.OperationResult.Operat
|
|||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
||||||
import org.sufficientlysecure.keychain.support.KeyringTestingHelper;
|
import org.sufficientlysecure.keychain.support.KeyringTestingHelper;
|
||||||
import org.sufficientlysecure.keychain.support.KeyringTestingHelper.RawPacket;
|
import org.sufficientlysecure.keychain.support.KeyringTestingHelper.RawPacket;
|
||||||
|
import org.sufficientlysecure.keychain.util.Passphrase;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.security.Security;
|
import java.security.Security;
|
||||||
@ -111,7 +112,7 @@ public class UncachedKeyringCanonicalizeTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// passphrase is tested in PgpKeyOperationTest, just use empty here
|
// passphrase is tested in PgpKeyOperationTest, just use empty here
|
||||||
parcel.mNewUnlock = new ChangeUnlockParcel("");
|
parcel.mNewUnlock = new ChangeUnlockParcel(new Passphrase());
|
||||||
PgpKeyOperation op = new PgpKeyOperation(null);
|
PgpKeyOperation op = new PgpKeyOperation(null);
|
||||||
|
|
||||||
PgpEditKeyResult result = op.createSecretKeyRing(parcel);
|
PgpEditKeyResult result = op.createSecretKeyRing(parcel);
|
||||||
@ -546,7 +547,7 @@ public class UncachedKeyringCanonicalizeTest {
|
|||||||
CanonicalizedSecretKeyRing canonicalized = (CanonicalizedSecretKeyRing) ring.canonicalize(log, 0);
|
CanonicalizedSecretKeyRing canonicalized = (CanonicalizedSecretKeyRing) ring.canonicalize(log, 0);
|
||||||
|
|
||||||
CanonicalizedSecretKey masterSecretKey = canonicalized.getSecretKey();
|
CanonicalizedSecretKey masterSecretKey = canonicalized.getSecretKey();
|
||||||
masterSecretKey.unlock("");
|
masterSecretKey.unlock(new Passphrase());
|
||||||
PGPPublicKey masterPublicKey = masterSecretKey.getPublicKey();
|
PGPPublicKey masterPublicKey = masterSecretKey.getPublicKey();
|
||||||
PGPSignature cert = PgpKeyOperation.generateSubkeyBindingSignature(
|
PGPSignature cert = PgpKeyOperation.generateSubkeyBindingSignature(
|
||||||
masterPublicKey, masterSecretKey.getPrivateKey(), masterSecretKey.getPrivateKey(),
|
masterPublicKey, masterSecretKey.getPrivateKey(), masterSecretKey.getPrivateKey(),
|
||||||
|
@ -40,6 +40,7 @@ import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
|
|||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
||||||
import org.sufficientlysecure.keychain.support.KeyringTestingHelper;
|
import org.sufficientlysecure.keychain.support.KeyringTestingHelper;
|
||||||
import org.sufficientlysecure.keychain.support.KeyringTestingHelper.RawPacket;
|
import org.sufficientlysecure.keychain.support.KeyringTestingHelper.RawPacket;
|
||||||
|
import org.sufficientlysecure.keychain.util.Passphrase;
|
||||||
import org.sufficientlysecure.keychain.util.ProgressScaler;
|
import org.sufficientlysecure.keychain.util.ProgressScaler;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
@ -105,7 +106,7 @@ public class UncachedKeyringMergeTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// passphrase is tested in PgpKeyOperationTest, just use empty here
|
// passphrase is tested in PgpKeyOperationTest, just use empty here
|
||||||
parcel.mNewUnlock = new ChangeUnlockParcel("");
|
parcel.mNewUnlock = new ChangeUnlockParcel(new Passphrase());
|
||||||
PgpKeyOperation op = new PgpKeyOperation(null);
|
PgpKeyOperation op = new PgpKeyOperation(null);
|
||||||
|
|
||||||
OperationResult.OperationLog log = new OperationResult.OperationLog();
|
OperationResult.OperationLog log = new OperationResult.OperationLog();
|
||||||
@ -122,7 +123,7 @@ public class UncachedKeyringMergeTest {
|
|||||||
|
|
||||||
parcel.mAddUserIds.add("shy");
|
parcel.mAddUserIds.add("shy");
|
||||||
// passphrase is tested in PgpKeyOperationTest, just use empty here
|
// passphrase is tested in PgpKeyOperationTest, just use empty here
|
||||||
parcel.mNewUnlock = new ChangeUnlockParcel("");
|
parcel.mNewUnlock = new ChangeUnlockParcel(new Passphrase());
|
||||||
PgpKeyOperation op = new PgpKeyOperation(null);
|
PgpKeyOperation op = new PgpKeyOperation(null);
|
||||||
|
|
||||||
OperationResult.OperationLog log = new OperationResult.OperationLog();
|
OperationResult.OperationLog log = new OperationResult.OperationLog();
|
||||||
@ -185,11 +186,11 @@ public class UncachedKeyringMergeTest {
|
|||||||
|
|
||||||
parcel.reset();
|
parcel.reset();
|
||||||
parcel.mAddUserIds.add("flim");
|
parcel.mAddUserIds.add("flim");
|
||||||
modifiedA = op.modifySecretKeyRing(secretRing, parcel, "").getRing();
|
modifiedA = op.modifySecretKeyRing(secretRing, parcel, new Passphrase()).getRing();
|
||||||
|
|
||||||
parcel.reset();
|
parcel.reset();
|
||||||
parcel.mAddUserIds.add("flam");
|
parcel.mAddUserIds.add("flam");
|
||||||
modifiedB = op.modifySecretKeyRing(secretRing, parcel, "").getRing();
|
modifiedB = op.modifySecretKeyRing(secretRing, parcel, new Passphrase()).getRing();
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // merge A into base
|
{ // merge A into base
|
||||||
@ -226,8 +227,8 @@ public class UncachedKeyringMergeTest {
|
|||||||
parcel.reset();
|
parcel.reset();
|
||||||
parcel.mAddSubKeys.add(new SaveKeyringParcel.SubkeyAdd(
|
parcel.mAddSubKeys.add(new SaveKeyringParcel.SubkeyAdd(
|
||||||
Algorithm.RSA, 1024, null, KeyFlags.SIGN_DATA, 0L));
|
Algorithm.RSA, 1024, null, KeyFlags.SIGN_DATA, 0L));
|
||||||
modifiedA = op.modifySecretKeyRing(secretRing, parcel, "").getRing();
|
modifiedA = op.modifySecretKeyRing(secretRing, parcel, new Passphrase()).getRing();
|
||||||
modifiedB = op.modifySecretKeyRing(secretRing, parcel, "").getRing();
|
modifiedB = op.modifySecretKeyRing(secretRing, parcel, new Passphrase()).getRing();
|
||||||
|
|
||||||
subKeyIdA = KeyringTestingHelper.getSubkeyId(modifiedA, 2);
|
subKeyIdA = KeyringTestingHelper.getSubkeyId(modifiedA, 2);
|
||||||
subKeyIdB = KeyringTestingHelper.getSubkeyId(modifiedB, 2);
|
subKeyIdB = KeyringTestingHelper.getSubkeyId(modifiedB, 2);
|
||||||
@ -268,7 +269,7 @@ public class UncachedKeyringMergeTest {
|
|||||||
parcel.mRevokeSubKeys.add(KeyringTestingHelper.getSubkeyId(ringA, 1));
|
parcel.mRevokeSubKeys.add(KeyringTestingHelper.getSubkeyId(ringA, 1));
|
||||||
CanonicalizedSecretKeyRing secretRing = new CanonicalizedSecretKeyRing(
|
CanonicalizedSecretKeyRing secretRing = new CanonicalizedSecretKeyRing(
|
||||||
ringA.getEncoded(), false, 0);
|
ringA.getEncoded(), false, 0);
|
||||||
modified = op.modifySecretKeyRing(secretRing, parcel, "").getRing();
|
modified = op.modifySecretKeyRing(secretRing, parcel, new Passphrase()).getRing();
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -293,7 +294,7 @@ public class UncachedKeyringMergeTest {
|
|||||||
|
|
||||||
CanonicalizedSecretKey secretKey = new CanonicalizedSecretKeyRing(
|
CanonicalizedSecretKey secretKey = new CanonicalizedSecretKeyRing(
|
||||||
ringB.getEncoded(), false, 0).getSecretKey();
|
ringB.getEncoded(), false, 0).getSecretKey();
|
||||||
secretKey.unlock("");
|
secretKey.unlock(new Passphrase());
|
||||||
// sign all user ids
|
// sign all user ids
|
||||||
modified = secretKey.certifyUserIds(publicRing, publicRing.getPublicKey().getUnorderedUserIds(), null, null);
|
modified = secretKey.certifyUserIds(publicRing, publicRing.getPublicKey().getUnorderedUserIds(), null, null);
|
||||||
}
|
}
|
||||||
@ -362,7 +363,7 @@ public class UncachedKeyringMergeTest {
|
|||||||
|
|
||||||
CanonicalizedSecretKeyRing secretRing = new CanonicalizedSecretKeyRing(
|
CanonicalizedSecretKeyRing secretRing = new CanonicalizedSecretKeyRing(
|
||||||
ringA.getEncoded(), false, 0);
|
ringA.getEncoded(), false, 0);
|
||||||
modified = op.modifySecretKeyRing(secretRing, parcel, "").getRing();
|
modified = op.modifySecretKeyRing(secretRing, parcel, new Passphrase()).getRing();
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,7 @@ import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
|
|||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
|
||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
|
||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
|
||||||
|
import org.sufficientlysecure.keychain.util.Passphrase;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
@ -70,7 +71,7 @@ public class UncachedKeyringTest {
|
|||||||
parcel.mAddUserAttribute.add(uat);
|
parcel.mAddUserAttribute.add(uat);
|
||||||
}
|
}
|
||||||
// passphrase is tested in PgpKeyOperationTest, just use empty here
|
// passphrase is tested in PgpKeyOperationTest, just use empty here
|
||||||
parcel.mNewUnlock = new ChangeUnlockParcel("");
|
parcel.mNewUnlock = new ChangeUnlockParcel(new Passphrase());
|
||||||
PgpKeyOperation op = new PgpKeyOperation(null);
|
PgpKeyOperation op = new PgpKeyOperation(null);
|
||||||
|
|
||||||
PgpEditKeyResult result = op.createSecretKeyRing(parcel);
|
PgpEditKeyResult result = op.createSecretKeyRing(parcel);
|
||||||
|
@ -1,16 +1,29 @@
|
|||||||
package org.sufficientlysecure.keychain.util;
|
package org.sufficientlysecure.keychain.util;
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2014 Vincent Breitmoser <v.breitmoser@mugenguild.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by valodim on 9/15/14.
|
|
||||||
*/
|
|
||||||
public class TestingUtils {
|
public class TestingUtils {
|
||||||
public static String genPassphrase() {
|
public static Passphrase genPassphrase() {
|
||||||
return genPassphrase(false);
|
return genPassphrase(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String genPassphrase(boolean noEmpty) {
|
public static Passphrase genPassphrase(boolean noEmpty) {
|
||||||
String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789!@#$%^&*()-_=";
|
String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789!@#$%^&*()-_=";
|
||||||
Random r = new Random();
|
Random r = new Random();
|
||||||
StringBuilder passbuilder = new StringBuilder();
|
StringBuilder passbuilder = new StringBuilder();
|
||||||
@ -19,6 +32,6 @@ public class TestingUtils {
|
|||||||
passbuilder.append(chars.charAt(r.nextInt(chars.length())));
|
passbuilder.append(chars.charAt(r.nextInt(chars.length())));
|
||||||
}
|
}
|
||||||
System.out.println("Generated passphrase: '" + passbuilder.toString() + "'");
|
System.out.println("Generated passphrase: '" + passbuilder.toString() + "'");
|
||||||
return passbuilder.toString();
|
return new Passphrase(passbuilder.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,10 @@ public class Passphrase implements Parcelable {
|
|||||||
this(editText.getText());
|
this(editText.getText());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Passphrase(char[] passphrase) {
|
||||||
|
mPassphrase = passphrase;
|
||||||
|
}
|
||||||
|
|
||||||
public Passphrase(String passphrase) {
|
public Passphrase(String passphrase) {
|
||||||
mPassphrase = passphrase.toCharArray();
|
mPassphrase = passphrase.toCharArray();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user