Move REFS_GPG_KEYS to PublicKeyStore
This is in the set of things that we hope to upstream into JGit eventually, so move it out of this Gerrit-specific class. Change-Id: Id9c7fb5e3d8b27e4578f66f6f8d1451beceececa
This commit is contained in:
@@ -17,6 +17,7 @@ package com.google.gerrit.acceptance.api.accounts;
|
|||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static com.google.common.truth.Truth.assert_;
|
import static com.google.common.truth.Truth.assert_;
|
||||||
|
import static com.google.gerrit.gpg.PublicKeyStore.REFS_GPG_KEYS;
|
||||||
import static com.google.gerrit.gpg.PublicKeyStore.keyToString;
|
import static com.google.gerrit.gpg.PublicKeyStore.keyToString;
|
||||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||||
|
|
||||||
@@ -39,7 +40,6 @@ import com.google.gerrit.gpg.server.GpgKeys;
|
|||||||
import com.google.gerrit.gpg.testutil.TestKey;
|
import com.google.gerrit.gpg.testutil.TestKey;
|
||||||
import com.google.gerrit.reviewdb.client.Account;
|
import com.google.gerrit.reviewdb.client.Account;
|
||||||
import com.google.gerrit.reviewdb.client.AccountExternalId;
|
import com.google.gerrit.reviewdb.client.AccountExternalId;
|
||||||
import com.google.gerrit.reviewdb.client.RefNames;
|
|
||||||
import com.google.gerrit.server.IdentifiedUser;
|
import com.google.gerrit.server.IdentifiedUser;
|
||||||
import com.google.gerrit.server.config.AllUsersName;
|
import com.google.gerrit.server.config.AllUsersName;
|
||||||
import com.google.gerrit.testutil.ConfigSuite;
|
import com.google.gerrit.testutil.ConfigSuite;
|
||||||
@@ -99,9 +99,9 @@ public class AccountIT extends AbstractDaemonTest {
|
|||||||
@After
|
@After
|
||||||
public void clearPublicKeyStore() throws Exception {
|
public void clearPublicKeyStore() throws Exception {
|
||||||
try (Repository repo = repoManager.openRepository(allUsers)) {
|
try (Repository repo = repoManager.openRepository(allUsers)) {
|
||||||
Ref ref = repo.getRef(RefNames.REFS_GPG_KEYS);
|
Ref ref = repo.getRef(REFS_GPG_KEYS);
|
||||||
if (ref != null) {
|
if (ref != null) {
|
||||||
RefUpdate ru = repo.updateRef(RefNames.REFS_GPG_KEYS);
|
RefUpdate ru = repo.updateRef(REFS_GPG_KEYS);
|
||||||
ru.setForceUpdate(true);
|
ru.setForceUpdate(true);
|
||||||
assertThat(ru.delete()).isEqualTo(RefUpdate.Result.FORCED);
|
assertThat(ru.delete()).isEqualTo(RefUpdate.Result.FORCED);
|
||||||
}
|
}
|
||||||
@@ -115,7 +115,7 @@ public class AccountIT extends AbstractDaemonTest {
|
|||||||
|
|
||||||
@After
|
@After
|
||||||
public void deleteGpgKeys() throws Exception {
|
public void deleteGpgKeys() throws Exception {
|
||||||
String ref = RefNames.REFS_GPG_KEYS;
|
String ref = REFS_GPG_KEYS;
|
||||||
try (Repository repo = repoManager.openRepository(allUsers)) {
|
try (Repository repo = repoManager.openRepository(allUsers)) {
|
||||||
if (repo.getRefDatabase().exactRef(ref) != null) {
|
if (repo.getRefDatabase().exactRef(ref) != null) {
|
||||||
RefUpdate ru = repo.updateRef(ref);
|
RefUpdate ru = repo.updateRef(ref);
|
||||||
|
|||||||
@@ -17,8 +17,6 @@ package com.google.gerrit.gpg;
|
|||||||
import static com.google.common.base.Preconditions.checkState;
|
import static com.google.common.base.Preconditions.checkState;
|
||||||
import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
|
import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
|
||||||
|
|
||||||
import com.google.gerrit.reviewdb.client.RefNames;
|
|
||||||
|
|
||||||
import org.bouncycastle.bcpg.ArmoredInputStream;
|
import org.bouncycastle.bcpg.ArmoredInputStream;
|
||||||
import org.bouncycastle.bcpg.ArmoredOutputStream;
|
import org.bouncycastle.bcpg.ArmoredOutputStream;
|
||||||
import org.bouncycastle.openpgp.PGPException;
|
import org.bouncycastle.openpgp.PGPException;
|
||||||
@@ -73,6 +71,9 @@ public class PublicKeyStore implements AutoCloseable {
|
|||||||
private static final ObjectId EMPTY_TREE =
|
private static final ObjectId EMPTY_TREE =
|
||||||
ObjectId.fromString("4b825dc642cb6eb9a060e54bf8d69288fbee4904");
|
ObjectId.fromString("4b825dc642cb6eb9a060e54bf8d69288fbee4904");
|
||||||
|
|
||||||
|
/** Ref where GPG public keys are stored. */
|
||||||
|
public static final String REFS_GPG_KEYS = "refs/meta/gpg-keys";
|
||||||
|
|
||||||
private final Repository repo;
|
private final Repository repo;
|
||||||
private ObjectReader reader;
|
private ObjectReader reader;
|
||||||
private RevCommit tip;
|
private RevCommit tip;
|
||||||
@@ -104,7 +105,7 @@ public class PublicKeyStore implements AutoCloseable {
|
|||||||
reset();
|
reset();
|
||||||
reader = repo.newObjectReader();
|
reader = repo.newObjectReader();
|
||||||
|
|
||||||
Ref ref = repo.getRefDatabase().exactRef(RefNames.REFS_GPG_KEYS);
|
Ref ref = repo.getRefDatabase().exactRef(REFS_GPG_KEYS);
|
||||||
if (ref == null) {
|
if (ref == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -249,7 +250,7 @@ public class PublicKeyStore implements AutoCloseable {
|
|||||||
ins.flush();
|
ins.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
RefUpdate ru = repo.updateRef(RefNames.REFS_GPG_KEYS);
|
RefUpdate ru = repo.updateRef(PublicKeyStore.REFS_GPG_KEYS);
|
||||||
ru.setExpectedOldObjectId(tip);
|
ru.setExpectedOldObjectId(tip);
|
||||||
ru.setNewObjectId(newTip);
|
ru.setNewObjectId(newTip);
|
||||||
ru.setRefLogIdent(cb.getCommitter());
|
ru.setRefLogIdent(cb.getCommitter());
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
package com.google.gerrit.gpg;
|
package com.google.gerrit.gpg;
|
||||||
|
|
||||||
|
import static com.google.gerrit.gpg.PublicKeyStore.REFS_GPG_KEYS;
|
||||||
import static com.google.gerrit.gpg.PublicKeyStore.keyIdToString;
|
import static com.google.gerrit.gpg.PublicKeyStore.keyIdToString;
|
||||||
import static com.google.gerrit.gpg.PublicKeyStore.keyObjectId;
|
import static com.google.gerrit.gpg.PublicKeyStore.keyObjectId;
|
||||||
import static com.google.gerrit.gpg.PublicKeyStore.keyToString;
|
import static com.google.gerrit.gpg.PublicKeyStore.keyToString;
|
||||||
@@ -23,7 +24,6 @@ import static org.junit.Assert.assertFalse;
|
|||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import com.google.gerrit.gpg.testutil.TestKey;
|
import com.google.gerrit.gpg.testutil.TestKey;
|
||||||
import com.google.gerrit.reviewdb.client.RefNames;
|
|
||||||
|
|
||||||
import org.bouncycastle.openpgp.PGPPublicKey;
|
import org.bouncycastle.openpgp.PGPPublicKey;
|
||||||
import org.bouncycastle.openpgp.PGPPublicKeyRing;
|
import org.bouncycastle.openpgp.PGPPublicKeyRing;
|
||||||
@@ -84,13 +84,13 @@ public class PublicKeyStoreTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testGet() throws Exception {
|
public void testGet() throws Exception {
|
||||||
TestKey key1 = TestKey.key1();
|
TestKey key1 = TestKey.key1();
|
||||||
tr.branch(RefNames.REFS_GPG_KEYS)
|
tr.branch(REFS_GPG_KEYS)
|
||||||
.commit()
|
.commit()
|
||||||
.add(keyObjectId(key1.getKeyId()).name(),
|
.add(keyObjectId(key1.getKeyId()).name(),
|
||||||
key1.getPublicKeyArmored())
|
key1.getPublicKeyArmored())
|
||||||
.create();
|
.create();
|
||||||
TestKey key2 = TestKey.key2();
|
TestKey key2 = TestKey.key2();
|
||||||
tr.branch(RefNames.REFS_GPG_KEYS)
|
tr.branch(REFS_GPG_KEYS)
|
||||||
.commit()
|
.commit()
|
||||||
.add(keyObjectId(key2.getKeyId()).name(),
|
.add(keyObjectId(key2.getKeyId()).name(),
|
||||||
key2.getPublicKeyArmored())
|
key2.getPublicKeyArmored())
|
||||||
@@ -104,7 +104,7 @@ public class PublicKeyStoreTest {
|
|||||||
public void testGetMultiple() throws Exception {
|
public void testGetMultiple() throws Exception {
|
||||||
TestKey key1 = TestKey.key1();
|
TestKey key1 = TestKey.key1();
|
||||||
TestKey key2 = TestKey.key2();
|
TestKey key2 = TestKey.key2();
|
||||||
tr.branch(RefNames.REFS_GPG_KEYS)
|
tr.branch(REFS_GPG_KEYS)
|
||||||
.commit()
|
.commit()
|
||||||
.add(keyObjectId(key1.getKeyId()).name(),
|
.add(keyObjectId(key1.getKeyId()).name(),
|
||||||
key1.getPublicKeyArmored()
|
key1.getPublicKeyArmored()
|
||||||
@@ -131,7 +131,7 @@ public class PublicKeyStoreTest {
|
|||||||
public void saveAppendsToExistingList() throws Exception {
|
public void saveAppendsToExistingList() throws Exception {
|
||||||
TestKey key1 = TestKey.key1();
|
TestKey key1 = TestKey.key1();
|
||||||
TestKey key2 = TestKey.key2();
|
TestKey key2 = TestKey.key2();
|
||||||
tr.branch(RefNames.REFS_GPG_KEYS)
|
tr.branch(REFS_GPG_KEYS)
|
||||||
.commit()
|
.commit()
|
||||||
// Mismatched for this key ID, but we can still read it out.
|
// Mismatched for this key ID, but we can still read it out.
|
||||||
.add(keyObjectId(key1.getKeyId()).name(), key2.getPublicKeyArmored())
|
.add(keyObjectId(key1.getKeyId()).name(), key2.getPublicKeyArmored())
|
||||||
@@ -146,7 +146,7 @@ public class PublicKeyStoreTest {
|
|||||||
RevWalk rw = new RevWalk(reader)) {
|
RevWalk rw = new RevWalk(reader)) {
|
||||||
NoteMap notes = NoteMap.read(
|
NoteMap notes = NoteMap.read(
|
||||||
reader, tr.getRevWalk().parseCommit(
|
reader, tr.getRevWalk().parseCommit(
|
||||||
tr.getRepository().getRef(RefNames.REFS_GPG_KEYS).getObjectId()));
|
tr.getRepository().getRef(REFS_GPG_KEYS).getObjectId()));
|
||||||
String contents = new String(
|
String contents = new String(
|
||||||
reader.open(notes.get(keyObjectId(key1.getKeyId()))).getBytes(),
|
reader.open(notes.get(keyObjectId(key1.getKeyId()))).getBytes(),
|
||||||
UTF_8);
|
UTF_8);
|
||||||
|
|||||||
@@ -14,13 +14,13 @@
|
|||||||
|
|
||||||
package com.google.gerrit.gpg;
|
package com.google.gerrit.gpg;
|
||||||
|
|
||||||
|
import static com.google.gerrit.gpg.PublicKeyStore.REFS_GPG_KEYS;
|
||||||
import static com.google.gerrit.gpg.PublicKeyStore.keyIdToString;
|
import static com.google.gerrit.gpg.PublicKeyStore.keyIdToString;
|
||||||
import static com.google.gerrit.gpg.PublicKeyStore.keyToString;
|
import static com.google.gerrit.gpg.PublicKeyStore.keyToString;
|
||||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
import com.google.gerrit.gpg.testutil.TestKey;
|
import com.google.gerrit.gpg.testutil.TestKey;
|
||||||
import com.google.gerrit.reviewdb.client.RefNames;
|
|
||||||
|
|
||||||
import org.bouncycastle.bcpg.ArmoredOutputStream;
|
import org.bouncycastle.bcpg.ArmoredOutputStream;
|
||||||
import org.bouncycastle.bcpg.BCPGOutputStream;
|
import org.bouncycastle.bcpg.BCPGOutputStream;
|
||||||
@@ -56,7 +56,7 @@ public class PushCertificateCheckerTest {
|
|||||||
TestKey key3 = TestKey.key3();
|
TestKey key3 = TestKey.key3();
|
||||||
tr = new TestRepository<>(new InMemoryRepository(
|
tr = new TestRepository<>(new InMemoryRepository(
|
||||||
new DfsRepositoryDescription("repo")));
|
new DfsRepositoryDescription("repo")));
|
||||||
tr.branch(RefNames.REFS_GPG_KEYS).commit()
|
tr.branch(REFS_GPG_KEYS).commit()
|
||||||
.add(PublicKeyStore.keyObjectId(key1.getPublicKey().getKeyID()).name(),
|
.add(PublicKeyStore.keyObjectId(key1.getPublicKey().getKeyID()).name(),
|
||||||
key1.getPublicKeyArmored())
|
key1.getPublicKeyArmored())
|
||||||
.add(PublicKeyStore.keyObjectId(key3.getPublicKey().getKeyID()).name(),
|
.add(PublicKeyStore.keyObjectId(key3.getPublicKey().getKeyID()).name(),
|
||||||
|
|||||||
@@ -57,12 +57,6 @@ public class RefNames {
|
|||||||
|
|
||||||
public static final String EDIT_PREFIX = "edit-";
|
public static final String EDIT_PREFIX = "edit-";
|
||||||
|
|
||||||
/**
|
|
||||||
* Special ref for GPG public keys used by {@link
|
|
||||||
* com.google.gerrit.gpg.SignedPushPreReceiveHook}.
|
|
||||||
*/
|
|
||||||
public static final String REFS_GPG_KEYS = "refs/meta/gpg-keys";
|
|
||||||
|
|
||||||
public static String fullName(String ref) {
|
public static String fullName(String ref) {
|
||||||
return ref.startsWith(REFS) ? ref : REFS_HEADS + ref;
|
return ref.startsWith(REFS) ? ref : REFS_HEADS + ref;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user