PushCertificateChecker: Convert to a builder pattern
Change-Id: Ic32ad26ea89b5cbe9c0c4bfa33ace23d09a35750
This commit is contained in:
@@ -26,8 +26,7 @@ import java.io.IOException;
|
|||||||
|
|
||||||
public class GerritPushCertificateChecker extends PushCertificateChecker {
|
public class GerritPushCertificateChecker extends PushCertificateChecker {
|
||||||
public interface Factory {
|
public interface Factory {
|
||||||
GerritPushCertificateChecker create(IdentifiedUser expectedUser,
|
GerritPushCertificateChecker create(IdentifiedUser expectedUser);
|
||||||
boolean checkNonce);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private final GitRepositoryManager repoManager;
|
private final GitRepositoryManager repoManager;
|
||||||
@@ -38,9 +37,8 @@ public class GerritPushCertificateChecker extends PushCertificateChecker {
|
|||||||
GerritPublicKeyChecker.Factory keyCheckerFactory,
|
GerritPublicKeyChecker.Factory keyCheckerFactory,
|
||||||
GitRepositoryManager repoManager,
|
GitRepositoryManager repoManager,
|
||||||
AllUsersName allUsers,
|
AllUsersName allUsers,
|
||||||
@Assisted IdentifiedUser expectedUser,
|
@Assisted IdentifiedUser expectedUser) {
|
||||||
@Assisted boolean checkNonce) {
|
super(keyCheckerFactory.create().setExpectedUser(expectedUser));
|
||||||
super(keyCheckerFactory.create().setExpectedUser(expectedUser), checkNonce);
|
|
||||||
this.repoManager = repoManager;
|
this.repoManager = repoManager;
|
||||||
this.allUsers = allUsers;
|
this.allUsers = allUsers;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,12 +67,18 @@ public abstract class PushCertificateChecker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private final PublicKeyChecker publicKeyChecker;
|
private final PublicKeyChecker publicKeyChecker;
|
||||||
private final boolean checkNonce;
|
|
||||||
|
|
||||||
protected PushCertificateChecker(PublicKeyChecker publicKeyChecker,
|
private boolean checkNonce;
|
||||||
boolean checkNonce) {
|
|
||||||
|
protected PushCertificateChecker(PublicKeyChecker publicKeyChecker) {
|
||||||
this.publicKeyChecker = publicKeyChecker;
|
this.publicKeyChecker = publicKeyChecker;
|
||||||
|
checkNonce = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set whether to check the status of the nonce; defaults to true. */
|
||||||
|
public PushCertificateChecker setCheckNonce(boolean checkNonce) {
|
||||||
this.checkNonce = checkNonce;
|
this.checkNonce = checkNonce;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ public class SignedPushPreReceiveHook implements PreReceiveHook {
|
|||||||
if (cert == null) {
|
if (cert == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CheckResult result = checkerFactory.create(user.get(), true)
|
CheckResult result = checkerFactory.create(user.get())
|
||||||
|
.setCheckNonce(true)
|
||||||
.check(cert)
|
.check(cert)
|
||||||
.getCheckResult();
|
.getCheckResult();
|
||||||
if (!isAllowed(result, commands)) {
|
if (!isAllowed(result, commands)) {
|
||||||
|
|||||||
@@ -95,8 +95,10 @@ public class GpgApiAdapterImpl implements GpgApiAdapter {
|
|||||||
IdentifiedUser expectedUser) throws GpgException {
|
IdentifiedUser expectedUser) throws GpgException {
|
||||||
try {
|
try {
|
||||||
PushCertificate cert = PushCertificateParser.fromString(certStr);
|
PushCertificate cert = PushCertificateParser.fromString(certStr);
|
||||||
PushCertificateChecker.Result result =
|
PushCertificateChecker.Result result = pushCertCheckerFactory
|
||||||
pushCertCheckerFactory.create(expectedUser, false).check(cert);
|
.create(expectedUser)
|
||||||
|
.setCheckNonce(false)
|
||||||
|
.check(cert);
|
||||||
PushCertificateInfo info = new PushCertificateInfo();
|
PushCertificateInfo info = new PushCertificateInfo();
|
||||||
info.certificate = certStr;
|
info.certificate = certStr;
|
||||||
info.key = GpgKeys.toJson(result.getPublicKey(), result.getCheckResult());
|
info.key = GpgKeys.toJson(result.getPublicKey(), result.getCheckResult());
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ public class PushCertificateCheckerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private PushCertificateChecker newChecker(boolean checkNonce) {
|
private PushCertificateChecker newChecker(boolean checkNonce) {
|
||||||
return new PushCertificateChecker(new PublicKeyChecker(), checkNonce) {
|
return new PushCertificateChecker(new PublicKeyChecker()) {
|
||||||
@Override
|
@Override
|
||||||
protected Repository getRepository() {
|
protected Repository getRepository() {
|
||||||
return tr.getRepository();
|
return tr.getRepository();
|
||||||
@@ -82,7 +82,7 @@ public class PushCertificateCheckerTest {
|
|||||||
protected boolean shouldClose(Repository repo) {
|
protected boolean shouldClose(Repository repo) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
}.setCheckNonce(checkNonce);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user