From 047a409164fdac8b0327caeaa9077680e9d7a720 Mon Sep 17 00:00:00 2001 From: Christian Hagau Date: Tue, 2 Oct 2018 00:00:00 +0000 Subject: [PATCH] Add a test for authentication subkey selection with a keyring created as such: - add 3 auth subkeys - revoke the 1st & 3rd subkey - add an encryption subkey --- .../AuthenticationOperationTest.java | 19 ++++++++ .../authenticate_multisub_with_revoked.asc | 48 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 OpenKeychain/src/test/resources/test-keys/authenticate_multisub_with_revoked.asc diff --git a/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/operations/AuthenticationOperationTest.java b/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/operations/AuthenticationOperationTest.java index 7ca5ee3fe..628acb750 100644 --- a/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/operations/AuthenticationOperationTest.java +++ b/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/operations/AuthenticationOperationTest.java @@ -49,6 +49,7 @@ import org.sufficientlysecure.keychain.ssh.AuthenticationOperation; import org.sufficientlysecure.keychain.ssh.AuthenticationParcel; import org.sufficientlysecure.keychain.ssh.AuthenticationResult; import org.sufficientlysecure.keychain.support.KeyringTestingHelper; +import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.util.Passphrase; @RunWith(KeychainTestRunner.class) @@ -58,6 +59,7 @@ public class AuthenticationOperationTest { private static UncachedKeyRing mStaticRingEcDsa; private static UncachedKeyRing mStaticRingEdDsa; private static UncachedKeyRing mStaticRingDsa; + private static UncachedKeyRing mStaticRingRevoked; private static Passphrase mKeyPhrase; private static PrintStream oldShadowStream; @@ -132,6 +134,8 @@ public class AuthenticationOperationTest { mStaticRingEcDsa = KeyringTestingHelper.readRingFromResource("/test-keys/authenticate_ecdsa.sec"); mStaticRingEdDsa = KeyringTestingHelper.readRingFromResource("/test-keys/authenticate_eddsa.sec"); mStaticRingDsa = KeyringTestingHelper.readRingFromResource("/test-keys/authenticate_dsa.sec"); + + mStaticRingRevoked = KeyringTestingHelper.readRingFromResource("/test-keys/authenticate_multisub_with_revoked.asc"); } @Before @@ -395,4 +399,19 @@ public class AuthenticationOperationTest { } } + @Test + public void testKeySelection() throws Exception { + + String expectedAuthSubKeyId = "0xcf64ee600f6fec9c"; + + KeyRepository keyRepository = KeyRepository.create(RuntimeEnvironment.application); + + long masterKeyId = mStaticRingRevoked.getMasterKeyId(); + Long authSubKeyId = keyRepository.getSecretAuthenticationId(masterKeyId); + String authSubKeyIdString = KeyFormattingUtils.convertKeyIdToHex(authSubKeyId); + + boolean isRightKey = authSubKeyIdString.equals(expectedAuthSubKeyId); + + Assert.assertTrue("selected key must be the same: " + authSubKeyIdString + " != " + expectedAuthSubKeyId, isRightKey); + } } diff --git a/OpenKeychain/src/test/resources/test-keys/authenticate_multisub_with_revoked.asc b/OpenKeychain/src/test/resources/test-keys/authenticate_multisub_with_revoked.asc new file mode 100644 index 000000000..81e755052 --- /dev/null +++ b/OpenKeychain/src/test/resources/test-keys/authenticate_multisub_with_revoked.asc @@ -0,0 +1,48 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- + +lDsEW6ShJxYJKwYBBAHaRw8BAQdAQPz2gpnMGAwzYohDbb/yEf3rxm+tfONk3Q3p +utXnINH/AGUAR05VAbQrbl9hdXRoX3Jldm9jX3RvbyA8bl9hdXRoX3Jldm9jX3Rv +b0Bmb28uYmFyPoiQBBMWCgA4FiEENhM25ruHCJ1cKh7WVipcf28HvXYFAlumQNMC +GwEFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQVipcf28HvXZxnQEA2gAU3673 +0z8A4ACBLjKVKAfMiIXz0DobABsku+btINgBALFPCvFqQ9PtX05FZrdenu37GlRg +Ln+xKG/XHj51SQEOtB9uX2F1dGhfcmV2b2MgPG5fYXV0aF9yZXZvY0B4Lnk+iJAE +ExYKADgWIQQ2Ezbmu4cInVwqHtZWKlx/bwe9dgUCW6ShJwIbAQULCQgHAwUVCgkI +CwUWAgMBAAIeAQIXgAAKCRBWKlx/bwe9di8mAP9iY2+oHeiUGy++9Z6QHXqroaVD +YNDBXZdDcesrWyy8SQEAo4K6+YrXEXDJ/yuF7nsfqM8w36CdVFKsi+FIJTSnXA2c +hgRbpKE9FgkrBgEEAdpHDwEBB0BFJ/Pffb7R8UUiJGvQVdyEzpN+x5DNRfyFKAVv +BgPuCP4HAwItU2EpssU0AugT4uu7KPhnn9Axg8IJAmqkgxUt3o1JxZoqFqyfCMhN +lNHbIf1zuBZDbN452nBckNK72V3V0UDYyjLlkBRELyaoEl3whfZRiHgEKBYKACAW +IQQ2Ezbmu4cInVwqHtZWKlx/bwe9dgUCW6UG6wIdAAAKCRBWKlx/bwe9dkhMAQCb +ja1KTcl7Vw10Ow85nBGgb2zLCzJwmbV4qr0NbC9pOgD/R1ayoZJ18FIhGFADCsRn +tnlxzU3vFZj1O4Yaq3cXmguIeAQYFgoAIBYhBDYTNua7hwidXCoe1lYqXH9vB712 +BQJbpKE9AhsgAAoJEFYqXH9vB7123kcBAIzyK7W7dUwbDup53ylftZHROLeXHllT +x/eVfSVuRy99AP9BcsuRsJEqMTzq4JPLN5pWbhqKoT0VryGCLVdIJXbZDJyGBFuk +oVMWCSsGAQQB2kcPAQEHQEFSlFf2B+hJCio8aKB7ty0LB9StOu3B+0DjPYwUYwYg +/gcDAjsxat/lB4oV6JgoaRhKuLRWzE1ai2IHb/rM2K0gHafyJjWx9nsb0kvbLgQi +MH0sA4UFJQsS6AcO4zfLjQmA+fgF3qxnm0RAL+vPqoVoh8CI7wQYFgoAIBYhBDYT +Nua7hwidXCoe1lYqXH9vB712BQJbpKFTAhsCAIEJEFYqXH9vB712diAEGRYKAB0W +IQSauhEi+oJyAvg4ijS47KieBUAo1QUCW6ShUwAKCRC47KieBUAo1Q53AP97aL9d +si1NowXZd6eUZvrwKFdXEahYx49EuPlFomoipAEAv1xZFqc7nqRokd0/b36DiycU +EjYNFbatDjLOdNBhLQPBqQD/ZqSkwszUJRJygX4pninIJaNI8GVK1GNL9gstju1v +V5wA/0g8UZFthbjTl+98ZgbyQL2MicIAfrj8VnwkiQoUq8cJnIYEW6ShahYJKwYB +BAHaRw8BAQdATglrtC5Y/YzofOKYW9ElAirdpAlJMVol7Jcdsa+De2j+BwMCyjfN +hlkhBgXo29plZ20fOnwXSeZNTGTkfgwkmgGiYWDtOUchLT8XwuI/YtwCG62mtWy8 +LzEx8AUtYvNYPkJ/iUCX+1S+ADsJdb0Ijd84AYh4BBgWCgAgFiEENhM25ruHCJ1c +Kh7WVipcf28HvXYFAlukoWoCGyAACgkQVipcf28HvXZbdwEAr4kP0m/ZmJHdTp7m +x4lPADgWqQlolD493O8QWJTSqXoBAMbHgKIwMjz2EqX8h72J5rOADKNpjMVOgDTQ +zrWHaDcCnIYEW6ShlRYJKwYBBAHaRw8BAQdA/yEQGb4JjAOdzKmUZ+hER9gYIoCn +AFZHSjWD2KI6CM3+BwMCGmMF46vQF+7oPEhLpl29t52EBvktuqGjgbaF8lCLh+b4 +kSXuwkkW8QoAGPDFCM4m6zE+GETkCuexjLsr5ybziK546ZYYxzeAICCM+jVdVIh4 +BCgWCgAgFiEENhM25ruHCJ1cKh7WVipcf28HvXYFAlulBwMCHQAACgkQVipcf28H +vXamNQEAonl2lPpZIWA+cShQaFQRJvEHES0H0QAwcZ2c4KsiqggBAIDGhHUQo4sF +FfwGmEkMnaEMPaxJX9pF3Q4WeajRz0YPiHgEGBYKACAWIQQ2Ezbmu4cInVwqHtZW +Klx/bwe9dgUCW6ShlQIbIAAKCRBWKlx/bwe9doPDAQDsvOaTjJcN96py0EV7KsxE +P+oStOnS3OhTROFLwrzwjwEAkZ6g8YGeiQPtewMC/4RBrmWEyLomg3exTgk0/wgd +2wmciwRbp4zwEgorBgEEAZdVAQUBAQdAwk4pLPL/2tRgey0KDbiksAkZzFUgSFmz +x1ezRelSVx4DAQgH/gcDAq+Rd9MpJwmz6M+qTjf/c6P0FvKQ/muZGsI53BjdyE/Q +gc0yFeO0HXvDE8ab23/40zmLlsvksPevcEE0AFxaG/r7Jv74g9SkHh9NwlR2Mk2I +eAQYFgoAIBYhBDYTNua7hwidXCoe1lYqXH9vB712BQJbp4zwAhsMAAoJEFYqXH9v +B7121g0BAPgbbqpbZXGUWQeHempnTPUjVfRQE5PGRDjI9enzEJohAPwP9Ktp205d +hADqWdrrCCTM3f6CgnfoBX0YJCK46JBTCg== +=vtFM +-----END PGP PRIVATE KEY BLOCK-----