Daggerize TMCH/signed mark util classes

This allows them to support injectable configuration.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143709052
This commit is contained in:
mcilwain 2017-01-05 14:26:18 -08:00 committed by Ben McIlwain
parent 534e3ba01c
commit c05424b947
19 changed files with 242 additions and 165 deletions

View file

@ -23,7 +23,6 @@ import google.registry.testing.AppEngineRule;
import google.registry.testing.ExceptionRule;
import google.registry.testing.FakeClock;
import google.registry.testing.InjectRule;
import google.registry.testing.RegistryConfigRule;
import java.security.SignatureException;
import java.security.cert.CertificateExpiredException;
import java.security.cert.CertificateNotYetValidException;
@ -53,9 +52,6 @@ public class TmchCertificateAuthorityTest {
@Rule
public final InjectRule inject = new InjectRule();
@Rule
public final RegistryConfigRule configRule = new RegistryConfigRule();
private FakeClock clock = new FakeClock(DateTime.parse("2014-01-01T00:00:00Z"));
@Before
@ -65,45 +61,49 @@ public class TmchCertificateAuthorityTest {
@Test
public void testFailure_prodRootExpired() throws Exception {
configRule.useTmchProdCert();
TmchCertificateAuthority tmchCertificateAuthority = new TmchCertificateAuthority(false);
clock.setTo(DateTime.parse("2024-01-01T00:00:00Z"));
thrown.expectRootCause(
CertificateExpiredException.class, "NotAfter: Sun Jul 23 23:59:59 UTC 2023");
TmchCertificateAuthority.getRoot();
tmchCertificateAuthority.getRoot();
}
@Test
public void testFailure_prodRootNotYetValid() throws Exception {
configRule.useTmchProdCert();
TmchCertificateAuthority tmchCertificateAuthority = new TmchCertificateAuthority(false);
clock.setTo(DateTime.parse("2000-01-01T00:00:00Z"));
thrown.expectRootCause(CertificateNotYetValidException.class,
"NotBefore: Wed Jul 24 00:00:00 UTC 2013");
TmchCertificateAuthority.getRoot();
tmchCertificateAuthority.getRoot();
}
@Test
public void testFailure_crlDoesntMatchCerts() throws Exception {
// Use the prod cl, which won't match our test certificate.
TmchCrl.set(readResourceUtf8(TmchCertificateAuthority.class, "icann-tmch.crl"));
TmchCertificateAuthority tmchCertificateAuthority = new TmchCertificateAuthority(true);
TmchCrl.set(
readResourceUtf8(TmchCertificateAuthority.class, "icann-tmch.crl"), "http://cert.crl");
thrown.expectRootCause(SignatureException.class, "Signature does not match");
TmchCertificateAuthority.verify(loadCertificate(GOOD_TEST_CERTIFICATE));
tmchCertificateAuthority.verify(loadCertificate(GOOD_TEST_CERTIFICATE));
}
@Test
public void testSuccess_verify() throws Exception {
TmchCertificateAuthority.verify(loadCertificate(GOOD_TEST_CERTIFICATE));
TmchCertificateAuthority tmchCertificateAuthority = new TmchCertificateAuthority(true);
tmchCertificateAuthority.verify(loadCertificate(GOOD_TEST_CERTIFICATE));
}
@Test
public void testFailure_verifySignatureDoesntMatch() throws Exception {
configRule.useTmchProdCert();
TmchCertificateAuthority tmchCertificateAuthority = new TmchCertificateAuthority(false);
thrown.expectRootCause(SignatureException.class, "Signature does not match");
TmchCertificateAuthority.verify(loadCertificate(GOOD_TEST_CERTIFICATE));
tmchCertificateAuthority.verify(loadCertificate(GOOD_TEST_CERTIFICATE));
}
@Test
public void testFailure_verifyRevoked() throws Exception {
TmchCertificateAuthority tmchCertificateAuthority = new TmchCertificateAuthority(true);
thrown.expect(CertificateRevokedException.class, "revoked, reason: KEY_COMPROMISE");
TmchCertificateAuthority.verify(loadCertificate(REVOKED_TEST_CERTIFICATE));
tmchCertificateAuthority.verify(loadCertificate(REVOKED_TEST_CERTIFICATE));
}
}

View file

@ -30,9 +30,10 @@ import org.junit.Test;
/** Unit tests for {@link TmchCrlAction}. */
public class TmchCrlActionTest extends TmchActionTestCase {
private TmchCrlAction newTmchCrlAction() throws MalformedURLException {
private TmchCrlAction newTmchCrlAction(boolean tmchCaTestingMode) throws MalformedURLException {
TmchCrlAction action = new TmchCrlAction();
action.marksdb = marksdb;
action.tmchCertificateAuthority = new TmchCertificateAuthority(tmchCaTestingMode);
action.tmchCrlUrl = new URL("http://sloth.lol/tmch.crl");
return action;
}
@ -40,10 +41,9 @@ public class TmchCrlActionTest extends TmchActionTestCase {
@Test
public void testSuccess() throws Exception {
clock.setTo(DateTime.parse("2013-07-24TZ"));
configRule.useTmchProdCert();
when(httpResponse.getContent()).thenReturn(
readResourceBytes(TmchCertificateAuthority.class, "icann-tmch.crl").read());
newTmchCrlAction().run();
newTmchCrlAction(false).run();
verify(httpResponse).getContent();
verify(fetchService).fetch(httpRequest.capture());
assertThat(httpRequest.getValue().getURL().toString()).isEqualTo("http://sloth.lol/tmch.crl");
@ -52,11 +52,11 @@ public class TmchCrlActionTest extends TmchActionTestCase {
@Test
public void testFailure_crlTooOld() throws Exception {
clock.setTo(DateTime.parse("2020-01-01TZ"));
configRule.useTmchProdCert();
when(httpResponse.getContent()).thenReturn(
readResourceBytes(TmchCertificateAuthority.class, "icann-tmch-test.crl").read());
TmchCrlAction action = newTmchCrlAction(false);
thrown.expectRootCause(CRLException.class, "New CRL is more out of date than our current CRL.");
newTmchCrlAction().run();
action.run();
}
@Test
@ -65,7 +65,7 @@ public class TmchCrlActionTest extends TmchActionTestCase {
when(httpResponse.getContent()).thenReturn(
readResourceBytes(TmchCertificateAuthority.class, "icann-tmch.crl").read());
thrown.expectRootCause(SignatureException.class, "Signature does not match.");
newTmchCrlAction().run();
newTmchCrlAction(true).run();
}
@Test
@ -74,6 +74,6 @@ public class TmchCrlActionTest extends TmchActionTestCase {
when(httpResponse.getContent()).thenReturn(
readResourceBytes(TmchCertificateAuthority.class, "icann-tmch-test.crl").read());
thrown.expectRootCause(CertificateNotYetValidException.class);
newTmchCrlAction().run();
newTmchCrlAction(true).run();
}
}

View file

@ -57,17 +57,19 @@ public class TmchXmlSignatureTest {
private final FakeClock clock = new FakeClock(DateTime.parse("2013-11-24T23:15:37.4Z"));
private byte[] smdData;
private TmchXmlSignature tmchXmlSignature;
@Before
public void before() throws Exception {
inject.setStaticField(TmchCertificateAuthority.class, "clock", clock);
tmchXmlSignature = new TmchXmlSignature(new TmchCertificateAuthority(true));
}
public void wrongCertificateAuthority() throws Exception {
configRule.useTmchProdCert();
tmchXmlSignature = new TmchXmlSignature(new TmchCertificateAuthority(false));
smdData = loadSmd("active/Court-Agent-Arabic-Active.smd");
thrown.expectRootCause(SignatureException.class, "Signature does not match");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
@ -75,7 +77,7 @@ public class TmchXmlSignatureTest {
smdData = loadSmd("active/Court-Agent-Arabic-Active.smd");
clock.setTo(DateTime.parse("2013-05-01T00:00:00Z"));
thrown.expectRootCause(CertificateNotYetValidException.class);
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
@ -83,256 +85,256 @@ public class TmchXmlSignatureTest {
smdData = loadSmd("active/Court-Agent-Arabic-Active.smd");
clock.setTo(DateTime.parse("2023-06-01T00:00:00Z"));
thrown.expectRootCause(CertificateExpiredException.class);
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveCourtAgentArabicActive() throws Exception {
smdData = loadSmd("active/Court-Agent-Arabic-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveCourtAgentChineseActive() throws Exception {
smdData = loadSmd("active/Court-Agent-Chinese-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveCourtAgentEnglishActive() throws Exception {
smdData = loadSmd("active/Court-Agent-English-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveCourtAgentFrenchActive() throws Exception {
smdData = loadSmd("active/Court-Agent-French-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveCourtAgentRussianActive() throws Exception {
smdData = loadSmd("active/Court-Agent-Russian-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveCourtHolderArabicActive() throws Exception {
smdData = loadSmd("active/Court-Holder-Arabic-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveCourtHolderChineseActive() throws Exception {
smdData = loadSmd("active/Court-Holder-Chinese-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveCourtHolderEnglishActive() throws Exception {
smdData = loadSmd("active/Court-Holder-English-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveCourtHolderFrenchActive() throws Exception {
smdData = loadSmd("active/Court-Holder-French-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveCourtHolderRussianActive() throws Exception {
smdData = loadSmd("active/Court-Holder-Russian-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTrademarkAgentArabicActive() throws Exception {
smdData = loadSmd("active/Trademark-Agent-Arabic-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTrademarkAgentChineseActive() throws Exception {
smdData = loadSmd("active/Trademark-Agent-Chinese-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTrademarkAgentEnglishActive() throws Exception {
smdData = loadSmd("active/Trademark-Agent-English-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTrademarkAgentFrenchActive() throws Exception {
smdData = loadSmd("active/Trademark-Agent-French-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTrademarkAgentRussianActive() throws Exception {
smdData = loadSmd("active/Trademark-Agent-Russian-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTrademarkHolderArabicActive() throws Exception {
smdData = loadSmd("active/Trademark-Holder-Arabic-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTrademarkHolderChineseActive() throws Exception {
smdData = loadSmd("active/Trademark-Holder-Chinese-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTrademarkHolderEnglishActive() throws Exception {
smdData = loadSmd("active/Trademark-Holder-English-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTrademarkHolderFrenchActive() throws Exception {
smdData = loadSmd("active/Trademark-Holder-French-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTrademarkHolderRussianActive() throws Exception {
smdData = loadSmd("active/Trademark-Holder-Russian-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTreatystatuteAgentArabicActive() throws Exception {
smdData = loadSmd("active/TreatyStatute-Agent-Arabic-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTreatystatuteAgentChineseActive() throws Exception {
smdData = loadSmd("active/TreatyStatute-Agent-Chinese-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTreatystatuteAgentEnglishActive() throws Exception {
smdData = loadSmd("active/TreatyStatute-Agent-English-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTreatystatuteAgentFrenchActive() throws Exception {
smdData = loadSmd("active/TreatyStatute-Agent-French-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTreatystatuteAgentRussianActive() throws Exception {
smdData = loadSmd("active/TreatyStatute-Agent-Russian-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTreatystatuteHolderArabicActive() throws Exception {
smdData = loadSmd("active/TreatyStatute-Holder-Arabic-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTreatystatuteHolderChineseActive() throws Exception {
smdData = loadSmd("active/TreatyStatute-Holder-Chinese-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTreatystatuteHolderEnglishActive() throws Exception {
smdData = loadSmd("active/TreatyStatute-Holder-English-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTreatystatuteHolderFrenchActive() throws Exception {
smdData = loadSmd("active/TreatyStatute-Holder-French-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testActiveTreatystatuteHolderRussianActive() throws Exception {
smdData = loadSmd("active/TreatyStatute-Holder-Russian-Active.smd");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testInvalidInvalidsignatureCourtAgentFrenchActive() throws Exception {
smdData = loadSmd("invalid/InvalidSignature-Court-Agent-French-Active.smd");
thrown.expect(XMLSignatureException.class);
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testInvalidInvalidsignatureTrademarkAgentEnglishActive() throws Exception {
smdData = loadSmd("invalid/InvalidSignature-Trademark-Agent-English-Active.smd");
thrown.expect(XMLSignatureException.class);
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testInvalidInvalidsignatureTrademarkAgentRussianActive() throws Exception {
smdData = loadSmd("invalid/InvalidSignature-Trademark-Agent-Russian-Active.smd");
thrown.expect(XMLSignatureException.class);
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testInvalidInvalidsignatureTreatystatuteAgentChineseActive() throws Exception {
smdData = loadSmd("invalid/InvalidSignature-TreatyStatute-Agent-Chinese-Active.smd");
thrown.expect(XMLSignatureException.class);
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testInvalidInvalidsignatureTreatystatuteAgentEnglishActive() throws Exception {
smdData = loadSmd("invalid/InvalidSignature-TreatyStatute-Agent-English-Active.smd");
thrown.expect(XMLSignatureException.class);
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testRevokedTmvTmvrevokedCourtAgentFrenchActive() throws Exception {
smdData = loadSmd("revoked/tmv/TMVRevoked-Court-Agent-French-Active.smd");
thrown.expectRootCause(CertificateRevokedException.class, "KEY_COMPROMISE");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testRevokedTmvTmvrevokedTrademarkAgentEnglishActive() throws Exception {
smdData = loadSmd("revoked/tmv/TMVRevoked-Trademark-Agent-English-Active.smd");
thrown.expectRootCause(CertificateRevokedException.class, "KEY_COMPROMISE");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testRevokedTmvTmvrevokedTrademarkAgentRussianActive() throws Exception {
smdData = loadSmd("revoked/tmv/TMVRevoked-Trademark-Agent-Russian-Active.smd");
thrown.expectRootCause(CertificateRevokedException.class, "KEY_COMPROMISE");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testRevokedTmvTmvrevokedTreatystatuteAgentChineseActive() throws Exception {
smdData = loadSmd("revoked/tmv/TMVRevoked-TreatyStatute-Agent-Chinese-Active.smd");
thrown.expectRootCause(CertificateRevokedException.class, "KEY_COMPROMISE");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
@Test
public void testRevokedTmvTmvrevokedTreatystatuteAgentEnglishActive() throws Throwable {
smdData = loadSmd("revoked/tmv/TMVRevoked-TreatyStatute-Agent-English-Active.smd");
thrown.expectRootCause(CertificateRevokedException.class, "KEY_COMPROMISE");
TmchXmlSignature.verify(smdData);
tmchXmlSignature.verify(smdData);
}
}