From 3a8ac0bb498f19857eb520711e5f59c795395e5d Mon Sep 17 00:00:00 2001 From: Gematik Date: Tue, 11 Apr 2023 15:28:16 +0200 Subject: [PATCH] v1.0.6 --- ReleaseNotes.md | 4 + docs/img/components.png | Bin 192006 -> 138062 bytes pki-testsuite/pom.xml | 3 +- pkits-common/pom.xml | 3 +- pkits-coverage-reports/pom.xml | 3 +- pkits-ocsp-responder/pom.xml | 3 +- pkits-sut-server-sim/pom.xml | 3 +- pkits-testsuite/pom.xml | 4 +- .../approval/ApprovalTestsBaseIT.java | 193 +++++++---- .../approval/CertificateApprovalTestsIT.java | 16 +- .../approval/ListApprovalTestsAndAfos.java | 8 + .../approval/OcspApprovalTestsIT.java | 66 ++-- .../approval/PkitsTestsuiteRunner.java | 52 +-- .../approval/TslApprovalTestsIT.java | 219 +++++++------ .../approval/TslSignerApprovalTestsIT.java | 147 ++++----- .../approval/TslVaApprovalTestsIT.java | 303 ++++++++++++------ .../approval/TslVaApprovalUtilsBaseIT.java | 84 ++--- .../testsuite/approval/TslVaSwitchUtils.java | 41 ++- .../approval/support/OcspSeqNrUpdateMode.java | 22 ++ .../testsuite/common/PkitsTestSuiteUtils.java | 6 +- .../testsuite/common/tsl/TslDownload.java | 2 +- .../pkits/testsuite/config/TslSettings.java | 3 + pkits-testsuite/src/site/pdf.xml | 30 -- .../src/site/resources/pdf-config.xml | 45 --- pkits-tls-client/pom.xml | 3 +- pkits-tsl-provider/pom.xml | 3 +- pom.xml | 12 +- 27 files changed, 711 insertions(+), 567 deletions(-) create mode 100644 pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/support/OcspSeqNrUpdateMode.java delete mode 100644 pkits-testsuite/src/site/pdf.xml delete mode 100644 pkits-testsuite/src/site/resources/pdf-config.xml diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 235dd3c..f8978c7 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,10 @@ # Release notes PKI Test Suite +## Release 1.0.6 + +- upload binaries + ## Release 1.0.1 - migrate from maven based execution of approval tests to binary (jar) based diff --git a/docs/img/components.png b/docs/img/components.png index 4bc68d73726a03f5c58d8526c7046052a41d1ead..b2f365b9039691dcbb70fef86d0930d7cb7f98e8 100644 GIT binary patch literal 138062 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�ot$uY9DWj0|Y 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∨WC`$VJ^7XA!*pAK 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 Wzif8(sjuG)a;>pUXO@geCyV8|pp) diff --git a/pki-testsuite/pom.xml b/pki-testsuite/pom.xml index 676896e..a9fec4d 100644 --- a/pki-testsuite/pom.xml +++ b/pki-testsuite/pom.xml @@ -4,10 +4,11 @@ de.gematik.pki.pkits pkits-global - 1.0.1 + 1.0.6 pki-testsuite + 1.0.6 pom PKITS Packaging diff --git a/pkits-common/pom.xml b/pkits-common/pom.xml index c2eb660..45b8e6e 100644 --- a/pkits-common/pom.xml +++ b/pkits-common/pom.xml @@ -4,10 +4,11 @@ de.gematik.pki.pkits pkits-global - 1.0.1 + 1.0.6 pkits-common + 1.0.6 Common Code Common code diff --git a/pkits-coverage-reports/pom.xml b/pkits-coverage-reports/pom.xml index abd7827..78d25a9 100644 --- a/pkits-coverage-reports/pom.xml +++ b/pkits-coverage-reports/pom.xml @@ -4,10 +4,11 @@ de.gematik.pki.pkits pkits-global - 1.0.1 + 1.0.6 pkits-coverage-reports + 1.0.6 Code Coverage Reports Code coverage reports diff --git a/pkits-ocsp-responder/pom.xml b/pkits-ocsp-responder/pom.xml index fbc7b20..50c14d1 100644 --- a/pkits-ocsp-responder/pom.xml +++ b/pkits-ocsp-responder/pom.xml @@ -4,10 +4,11 @@ de.gematik.pki.pkits pkits-global - 1.0.1 + 1.0.6 pkits-ocsp-responder + 1.0.6 OCSP Responder Simulator Spring Boot OCSP Responder diff --git a/pkits-sut-server-sim/pom.xml b/pkits-sut-server-sim/pom.xml index 27a0c77..538a3e8 100644 --- a/pkits-sut-server-sim/pom.xml +++ b/pkits-sut-server-sim/pom.xml @@ -4,10 +4,11 @@ de.gematik.pki.pkits pkits-global - 1.0.1 + 1.0.6 pkits-sut-server-sim + 1.0.6 Test Object Simulator (Server) Test object simulator (server) diff --git a/pkits-testsuite/pom.xml b/pkits-testsuite/pom.xml index 537f79f..6095c10 100644 --- a/pkits-testsuite/pom.xml +++ b/pkits-testsuite/pom.xml @@ -4,10 +4,11 @@ de.gematik.pki.pkits pkits-global - 1.0.1 + 1.0.6 pkits-testsuite + 1.0.6 PKI Test Suite PKI test suite @@ -29,7 +30,6 @@ 3.3.0 ${version.maven-surefire-plugin} - 1.6.1 http://localhost:8084/tsl/tsl.xml?activeTslSeqNr=700000 diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/ApprovalTestsBaseIT.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/ApprovalTestsBaseIT.java index 5d4eda6..8ae7f2e 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/ApprovalTestsBaseIT.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/ApprovalTestsBaseIT.java @@ -36,6 +36,7 @@ import de.gematik.pki.gemlibpki.tsl.TslConverter; import de.gematik.pki.gemlibpki.tsl.TslReader; +import de.gematik.pki.gemlibpki.tsl.TslUtils; import de.gematik.pki.gemlibpki.utils.CertReader; import de.gematik.pki.gemlibpki.utils.GemLibPkiUtils; import de.gematik.pki.gemlibpki.utils.P12Container; @@ -44,6 +45,7 @@ import de.gematik.pki.pkits.ocsp.responder.data.OcspResponderConfigDto; import de.gematik.pki.pkits.testsuite.UseCase; import de.gematik.pki.pkits.testsuite.approval.support.OcspResponderType; +import de.gematik.pki.pkits.testsuite.approval.support.OcspSeqNrUpdateMode; import de.gematik.pki.pkits.testsuite.approval.support.PcapHelper; import de.gematik.pki.pkits.testsuite.approval.support.PcapManager; import de.gematik.pki.pkits.testsuite.approval.support.TestResultLoggerExtension; @@ -66,6 +68,7 @@ import de.gematik.pki.pkits.testsuite.config.TestSuiteConfig; import de.gematik.pki.pkits.testsuite.config.TslSettings; import de.gematik.pki.pkits.testsuite.exceptions.TestSuiteException; +import eu.europa.esig.trustedlist.jaxb.tsl.TrustStatusListType; import java.io.IOException; import java.lang.reflect.Method; import java.math.BigInteger; @@ -78,6 +81,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.function.Consumer; import java.util.function.Function; import javax.xml.datatype.DatatypeConfigurationException; import lombok.NonNull; @@ -85,6 +89,11 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.awaitility.core.ConditionTimeoutException; +import org.bouncycastle.asn1.x500.RDN; +import org.bouncycastle.asn1.x500.X500Name; +import org.bouncycastle.asn1.x500.style.BCStyle; +import org.bouncycastle.asn1.x500.style.IETFUtils; +import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; @@ -304,7 +313,7 @@ protected void testCaseMessage(@NonNull final TestInfo testInfo) { .forEach(afo -> log.info("{} - {}", afo.afoId(), afo.description())); } - protected void initialState() throws DatatypeConfigurationException, IOException { + protected void initialState() { currentTestInfo.setPhase("initialState"); @@ -313,7 +322,6 @@ protected void initialState() throws DatatypeConfigurationException, IOException if (tslSettings.isInitialStateTslImport()) { initialTslDownloadByTestObject(); } else { - // tslSequenceNr.setExpectedNrInTestObject(tslSequenceNr.getCurrentNrInTestObject()); log.info( "\n===> Initial state TSL import skipped by user request. - {}\n", currentTestInfo); } @@ -330,7 +338,9 @@ protected void initialState() throws DatatypeConfigurationException, IOException currentTestInfo.resetPhase(); } - void initialStateWithAlternativeTemplate() throws DatatypeConfigurationException, IOException { + void initialStateWithAlternativeTemplate() { + + currentTestInfo.setPhase("initialStateWithAlternativeTemplate"); log.info("initialStateWithAlternativeTemplate - start"); final int offeredSeqNr = tslSequenceNr.getNextTslSeqNr(); @@ -344,7 +354,8 @@ void initialStateWithAlternativeTemplate() throws DatatypeConfigurationException tslTemplate, defaultTslSigner, SIGNER_KEY_USAGE_CHECK_ENABLED, - SIGNER_VALIDITY_CHECK_ENABLED); + SIGNER_VALIDITY_CHECK_ENABLED, + null); tslSequenceNr.setLastOfferedNr(offeredSeqNr); tslDownload.waitUntilTslDownloadCompleted(IGNORE_SEQUENCE_NUMBER, IGNORE_SEQUENCE_NUMBER); @@ -354,17 +365,20 @@ void initialStateWithAlternativeTemplate() throws DatatypeConfigurationException final Path certPath = getPathOfAlternativeCertificate(); useCaseWithCert(certPath, USECASE_VALID, OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_EXPECT); + + currentTestInfo.resetPhase(); log.info("initialStateWithAlternativeTemplate - finish\n\n"); } void updateTrustStore( + final String description, final Path tslTemplate, final Path tslSignerP12Path, final OcspRequestExpectationBehaviour ocspRequestExpectationBehaviour, final Path useCaseCertPath, - final UseCaseResult useCaseResult) - throws DatatypeConfigurationException, IOException { + final UseCaseResult useCaseResult) { updateTrustStore( + description, tslTemplate, tslSignerP12Path, ocspRequestExpectationBehaviour, @@ -374,16 +388,46 @@ void updateTrustStore( } void updateTrustStore( + final String description, final Path tslTemplate, final Path tslSignerP12Path, final OcspRequestExpectationBehaviour ocspRequestExpectationBehaviour, final Path useCaseCertPath, final UseCaseResult useCaseResult, - final OcspRequestExpectationBehaviour ocspRequestExpectationBehaviourForUseCase) - throws DatatypeConfigurationException, IOException { + final OcspRequestExpectationBehaviour ocspRequestExpectationBehaviourForUseCase) { + updateTrustStore( + description, + tslTemplate, + tslSignerP12Path, + ocspRequestExpectationBehaviour, + useCaseCertPath, + useCaseResult, + ocspRequestExpectationBehaviourForUseCase, + null, + OcspSeqNrUpdateMode.DO_NOT_UPDATE_OCSP_SEQ_NR); + } + + void updateTrustStore( + final String description, + final Path tslTemplate, + final Path tslSignerP12Path, + final OcspRequestExpectationBehaviour ocspRequestExpectationBehaviour, + final Path useCaseCertPath, + final UseCaseResult useCaseResult, + final OcspRequestExpectationBehaviour ocspRequestExpectationBehaviourForUseCase, + final Consumer modifyTsl, + final OcspSeqNrUpdateMode ocspSeqNrUpdateMode) { + + final String customPhaseName = StringUtils.substringBetween(description, "<", ">"); + final String phaseName = StringUtils.defaultString(customPhaseName, "updateTrustStore"); + + currentTestInfo.setPhase(phaseName); + + log.info( + "START updateTrustStore -\ndescription: {},\n{}\n", + description, + PkitsTestSuiteUtils.getCallerTrace()); - currentTestInfo.setPhase("updateTrustStore"); - log.info("START updateTrustStore - {}", PkitsTestSuiteUtils.getCallerTrace()); final int offeredSeqNr = tslSequenceNr.getNextTslSeqNr(); log.info("Offering TSL with seqNr. {} for download.", offeredSeqNr); @@ -393,7 +437,8 @@ void updateTrustStore( tslTemplate, tslSignerP12Path, SIGNER_KEY_USAGE_CHECK_ENABLED, - SIGNER_VALIDITY_CHECK_ENABLED); + SIGNER_VALIDITY_CHECK_ENABLED, + modifyTsl); tslDownload.configureOcspResponderTslSignerStatusGood(); tslSequenceNr.setLastOfferedNr(offeredSeqNr); @@ -406,12 +451,17 @@ void updateTrustStore( } else if (ocspRequestExpectationBehaviour == OCSP_REQUEST_IGNORE) { tslDownload.waitUntilOcspRequestForSignerOptional(); } else { - throw new TestSuiteException("not implemented"); + assertNoOcspRequest(tslDownload); + } + + if (ocspSeqNrUpdateMode == OcspSeqNrUpdateMode.UPDATE_OCSP_SEQ_NR) { + setExpectedOcspTslSeqNr(tslSequenceNr.getExpectedNrInTestObject()); } if (useCaseResult == null) { log.info( - "END updateTrustStore (without useCaseResult) - {}", + "END updateTrustStore (without useCaseResult) -\ndescription: {},\n{}\n", + description, PkitsTestSuiteUtils.getCallerTrace()); return; } @@ -428,7 +478,11 @@ void updateTrustStore( useCaseWithCert( useCaseCertPath, useCaseResult, OCSP_RESP_TYPE_DEFAULT_USECASE, ocspRequestExpectation); - log.info("END updateTrustStore - {}", PkitsTestSuiteUtils.getCallerTrace()); + log.info( + "END updateTrustStore (with useCaseResult) -\ndescription: {},\n{}\n", + description, + PkitsTestSuiteUtils.getCallerTrace()); + currentTestInfo.resetPhase(); } @@ -504,7 +558,6 @@ private void useCaseWithCert( ocspRequestExpectationBehaviour); assertThat(UseCase.exec(certPath)).as(message).isEqualTo(useCaseResult.getExpectedReturnCode()); - // mje 14.2. tslSequenceNr.saveCurrentTestObjectSeqNr(tslSequenceNr.getLastOfferedNr()); if (ocspRequestExpectationBehaviour != OCSP_REQUEST_IGNORE) { log.info("{}", tslSequenceNr); @@ -597,31 +650,29 @@ private void checkOcspHistory( OcspHistory.check(ocspRespUri, certSerialNr, tslSequenceNr, ocspRequestExpectationBehaviour); } - TslDownload getTslDownloadDefaultTemplate(final int offeredSeqNr) - throws DatatypeConfigurationException, IOException { + TslDownload getTslDownloadDefaultTemplate(final int offeredSeqNr) { return getTslDownloadWithTemplate(offeredSeqNr, tslSettings.getDefaultTemplate()); } - TslDownload getTslDownloadAlternativeTemplate(final int offeredSeqNr) - throws DatatypeConfigurationException, IOException { + TslDownload getTslDownloadAlternativeTemplate(final int offeredSeqNr) { return getTslDownloadWithTemplate(offeredSeqNr, tslSettings.getAlternativeTemplate()); } protected static final String TSL_DIRNAME = "./out/tsl"; protected static final String TSL_FILENAME_PREFIX = "Tsl_"; - protected static Path getTslOutputPath(final BigInteger tslSeqNr, final String tslId) { - return Path.of(TSL_DIRNAME, "%s%04d_%s.xml".formatted(TSL_FILENAME_PREFIX, tslSeqNr, tslId)); + protected static Path getTslOutputPath(final BigInteger tslSeqNr, final String postfix) { + return Path.of(TSL_DIRNAME, "%s%04d_%s.xml".formatted(TSL_FILENAME_PREFIX, tslSeqNr, postfix)); } - TslDownload getTslDownloadWithTemplate(final int offeredSeqNr, final Path template) - throws DatatypeConfigurationException, IOException { + TslDownload getTslDownloadWithTemplate(final int offeredSeqNr, final Path template) { return getTslDownloadWithTemplateAndSigner( offeredSeqNr, template, defaultTslSigner, SIGNER_KEY_USAGE_CHECK_ENABLED, - SIGNER_VALIDITY_CHECK_ENABLED); + SIGNER_VALIDITY_CHECK_ENABLED, + null); } TslDownload getTslDownloadWithTemplateAndSigner( @@ -629,8 +680,8 @@ TslDownload getTslDownloadWithTemplateAndSigner( final Path tslTemplate, final Path tslSignerP12Path, final boolean signerKeyUsageCheck, - final boolean signerValidityCheck) - throws DatatypeConfigurationException, IOException { + final boolean signerValidityCheck, + final Consumer modifyTsl) { final P12Container tslSignerP12 = P12Reader.getContentFromP12( @@ -658,6 +709,10 @@ TslDownload getTslDownloadWithTemplateAndSigner( .tslSignerCert(tslSignerCert) .build(); + if (modifyTsl != null) { + modifyTsl.accept(tslDownload); + } + writeTsl(tslDownload, ""); return tslDownload; @@ -679,30 +734,55 @@ protected void signAndSetTslBytes( tslDownload.setTslBytes(tslBytesSigned); } - protected void writeTsl(final TslDownload tslDownload, final String postfix) throws IOException { + private static String getCertIssuerCn(final TrustStatusListType tsl) { + try { + final X509Certificate signerCert = TslUtils.getFirstTslSignerCertificate(tsl); + + final X500Name x500name = new JcaX509CertificateHolder(signerCert).getIssuer(); + final RDN cnRdn = x500name.getRDNs(BCStyle.CN)[0]; + + final String issuerCn = IETFUtils.valueToString(cnRdn.getFirst().getValue()); + + return "_" + StringUtils.replace(issuerCn, " ", "_"); + + } catch (final Exception e) { + } + + return ""; + } + + protected void writeTsl(final TslDownload tslDownload, final String postfix) { final String phase = StringUtils.isNotBlank(currentTestInfo.getPhase()) ? "__" + currentTestInfo.getPhase() : ""; + final String trustAnchorIssuerCn = getCertIssuerCn(tslDownload.getTsl()); + + final String extendedPostfix = + "%s__%s_n%d%s%s%s" + .formatted( + tslDownload.getTsl().getId(), + currentTestInfo.getMethodName(), + currentTestInfo.tslCounter, + phase, + postfix, + trustAnchorIssuerCn); + final Path tslOutputPath = - getTslOutputPath( - TslReader.getSequenceNumber(tslDownload.getTsl()), - tslDownload.getTsl().getId() - + "__" - + currentTestInfo.getMethodName() - + "_n" - + currentTestInfo.tslCounter - + phase - + postfix); + getTslOutputPath(TslReader.getSequenceNumber(tslDownload.getTsl()), extendedPostfix); currentTestInfo.tslCounter++; - if (!Files.exists(tslOutputPath.getParent())) { - Files.createDirectories(tslOutputPath.getParent()); - Files.createFile(tslOutputPath); + try { + if (!Files.exists(tslOutputPath.getParent())) { + Files.createDirectories(tslOutputPath.getParent()); + Files.createFile(tslOutputPath); + } + Files.write(tslOutputPath, tslDownload.getTslBytes()); + log.info("saved TSL to file: {}", tslOutputPath); + } catch (final IOException e) { + throw new TestSuiteException("cannot save TSL to file", e); } - Files.write(tslOutputPath, tslDownload.getTslBytes()); - log.info("saved TSL to file: {}", tslOutputPath); } protected void assignOcspTslSeqNrFromHistory( @@ -713,15 +793,10 @@ protected void assignOcspTslSeqNrFromHistory( final int currentTslSeqNrForOcsp = lastOcspRequestHistoryEntries.get(lastOcspRequestHistoryEntries.size() - 1).getTslSeqNr(); - // if (currentTslSeqNrForOcsp == offeredSeqNr) { - // throw new TestSuiteException("tslSeqNr equals to offeredSeqNr " + offeredSeqNr); - // } - setExpectedOcspTslSeqNr(currentTslSeqNrForOcsp); } - protected TslDownload initialTslDownloadByTestObject() - throws DatatypeConfigurationException, IOException { + protected TslDownload initialTslDownloadByTestObject() { final int offeredSeqNr = tslSequenceNr.getNextTslSeqNr(); log.info("Offering TSL with seqNr. {} for download.", offeredSeqNr); @@ -747,17 +822,20 @@ protected static byte[] createTslForTestObject( final String tslSingerPassw, final int seqNr, final boolean signerKeyUsageCheck, - final boolean signerValidityCheck) - throws DatatypeConfigurationException { + final boolean signerValidityCheck) { final TslModification tslModification = getTslModification(seqNr); - return TslGeneration.createTslFromFile( - tslTemplate, - tslModification, - tslSinger, - tslSingerPassw, - signerKeyUsageCheck, - signerValidityCheck); + try { + return TslGeneration.createTslFromFile( + tslTemplate, + tslModification, + tslSinger, + tslSingerPassw, + signerKeyUsageCheck, + signerValidityCheck); + } catch (final DatatypeConfigurationException e) { + throw new TestSuiteException("cannot create TSL", e); + } } private static String getTslDownloadUrlPrimary(final int seqNr) { @@ -816,8 +894,7 @@ void retrieveCurrentTslSeqNrInTestObject() { @Test @Order(1) @DisplayName("Check initial state") - void checkInitialState(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void checkInitialState(final TestInfo testInfo) { testCaseMessage(testInfo); retrieveCurrentTslSeqNrInTestObject(); diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/CertificateApprovalTestsIT.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/CertificateApprovalTestsIT.java index d405975..759cf19 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/CertificateApprovalTestsIT.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/CertificateApprovalTestsIT.java @@ -33,9 +33,7 @@ import de.gematik.pki.pkits.testsuite.common.VariableSource; import de.gematik.pki.pkits.testsuite.config.Afo; import de.gematik.pki.pkits.testsuite.config.TestEnvironment; -import java.io.IOException; import java.nio.file.Path; -import javax.xml.datatype.DatatypeConfigurationException; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; @@ -63,10 +61,11 @@ class CertificateApprovalTestsIT extends ApprovalTestsBaseIT { @ArgumentsSource(CertificateProvider.class) @VariableSource(value = PKITS_CERT_VALID) @DisplayName("Test use case with valid certificates") - void verifyConnectCertsValid(final Path certPath, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyConnectCertsValid(final Path certPath, final TestInfo testInfo) { + testCaseMessage(testInfo); initialState(); + useCaseWithCert(certPath, USECASE_VALID, OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_EXPECT); } @@ -76,11 +75,9 @@ void verifyConnectCertsValid(final Path certPath, final TestInfo testInfo) @Afo(afoId = "GS-A_4384", description = "RSA cipher suites for TLS") @Disabled("Our SUT does not support RSA yet") @DisplayName("Test use case with valid RSA certificate") - void verifyConnectCertsValidRsa(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyConnectCertsValidRsa(final TestInfo testInfo) { testCaseMessage(testInfo); - initialState(); final Path certPath = Path.of("./testDataTemplates/certificates/valid-rsa/ee_default-rsa.p12"); @@ -114,12 +111,11 @@ void verifyConnectCertsValidRsa(final TestInfo testInfo) @ArgumentsSource(CertificateProvider.class) @VariableSource(value = PKITS_CERT_INVALID) @DisplayName("Test use case with invalid certificates") - void verifyConnectCertsInvalid(final Path certPath, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyConnectCertsInvalid(final Path certPath, final TestInfo testInfo) { testCaseMessage(testInfo); - initialState(); + useCaseWithCert(certPath, USECASE_INVALID, OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_IGNORE); } } diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/ListApprovalTestsAndAfos.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/ListApprovalTestsAndAfos.java index c2ca01a..9483cb7 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/ListApprovalTestsAndAfos.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/ListApprovalTestsAndAfos.java @@ -440,6 +440,14 @@ public int compareTo(final CustomTestInfo o) { .toComparison(); } + boolean sameClassName(final String className) { + return StringUtils.equalsAny(className, getSimpleClassName(), getClassName()); + } + + boolean sameMethodName(final String methodName) { + return method.getName().equals(methodName); + } + @Override public String toString() { return "CustomTestInfo{class='%s', declaringClassName='%s', method='%s', displayName='%s'}" diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/OcspApprovalTestsIT.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/OcspApprovalTestsIT.java index 1bbd377..93efc83 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/OcspApprovalTestsIT.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/OcspApprovalTestsIT.java @@ -37,9 +37,7 @@ import de.gematik.pki.pkits.testsuite.config.Afo; import de.gematik.pki.pkits.testsuite.config.TestEnvironment; import eu.europa.esig.dss.spi.x509.revocation.ocsp.OCSPRespStatus; -import java.io.IOException; import java.nio.file.Path; -import javax.xml.datatype.DatatypeConfigurationException; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -59,8 +57,7 @@ class OcspApprovalTestsIT extends ApprovalTestsBaseIT { @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 1") @DisplayName("Test OCSP grace period") - void verifyOcspGracePeriod(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspGracePeriod(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -91,8 +88,7 @@ void verifyOcspGracePeriod(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 4c") @DisplayName("Test OCSP response with timeout and delay") - void verifyOcspResponseTimeoutAndDelay(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTimeoutAndDelay(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -135,11 +131,11 @@ void verifyOcspResponseTimeoutAndDelay(final TestInfo testInfo) TestSuiteConstants.OCSP_SIGNER_NOT_IN_TSL_FILENAME, TestSuiteConstants.OCSP_SIGNER_DIFFERENT_KEY }) - void verifyMissingOcspSignerInTsl(final String signerFilename, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyMissingOcspSignerInTsl(final String signerFilename, final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); + final P12Container signer = P12Reader.getContentFromP12( ocspSettings.getKeystorePathOcsp().resolve(signerFilename), @@ -162,8 +158,7 @@ void verifyMissingOcspSignerInTsl(final String signerFilename, final TestInfo te @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 5a1") @DisplayName("Test invalid signature in OCSP response") - void verifyInvalidSignatureInOcspResponse(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyInvalidSignatureInOcspResponse(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -208,8 +203,7 @@ private void verifyOcspResponseDate( @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName("Test OCSP response with producedAt in past within tolerance") - void verifyOcspResponseProducedAtPastWithinTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseProducedAtPastWithinTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -226,8 +220,7 @@ void verifyOcspResponseProducedAtPastWithinTolerance(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName("Test OCSP response with producedAt in past out of tolerance") - void verifyOcspResponseProducedAtPastOutOfTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseProducedAtPastOutOfTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -244,8 +237,7 @@ void verifyOcspResponseProducedAtPastOutOfTolerance(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName("Test OCSP response with producedAt in future within tolerance") - void verifyOcspResponseProducedAtFutureWithinTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseProducedAtFutureWithinTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -272,8 +264,7 @@ void verifyOcspResponseProducedAtFutureWithinTolerance(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName("Test OCSP response with producedAt in future out of tolerance") - void verifyOcspResponseProducedAtFutureOutOfTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseProducedAtFutureOutOfTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -299,8 +290,7 @@ void verifyOcspResponseProducedAtFutureOutOfTolerance(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName("Test OCSP response with thisUpdate in future within tolerance") - void verifyOcspResponseThisUpdateFutureWithinTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseThisUpdateFutureWithinTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -327,8 +317,7 @@ void verifyOcspResponseThisUpdateFutureWithinTolerance(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName("Test OCSP response with thisUpdate in future out of tolerance") - void verifyOcspResponseThisUpdateFutureOutOfTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseThisUpdateFutureOutOfTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -355,8 +344,7 @@ void verifyOcspResponseThisUpdateFutureOutOfTolerance(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName("Test OCSP response with nextUpdate in past within tolerance") - void verifyOcspResponseNextUpdatePastWithinTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseNextUpdatePastWithinTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -373,8 +361,7 @@ void verifyOcspResponseNextUpdatePastWithinTolerance(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName("Test OCSP response with nextUpdate in past out of tolerance") - void verifyOcspResponseNextUpdatePastOutOfTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseNextUpdatePastOutOfTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -391,8 +378,7 @@ void verifyOcspResponseNextUpdatePastOutOfTolerance(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName("Test OCSP response with missing nextUpdate") - void verifyOcspResponseMissingNextUpdate(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseMissingNextUpdate(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -417,8 +403,9 @@ void verifyOcspResponseMissingNextUpdate(final TestInfo testInfo) "de.gematik.pki.pkits.testsuite.common.TestSuiteConstants#provideOcspResponseVariousStatusAndResponseBytes") @DisplayName("Test various status of OCSP responses with and without response bytes") void verifyOcspResponseVariousStatusAndResponseBytes( - final OCSPRespStatus ocspRespStatus, final boolean withResponseBytes, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + final OCSPRespStatus ocspRespStatus, + final boolean withResponseBytes, + final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -445,8 +432,7 @@ void verifyOcspResponseVariousStatusAndResponseBytes( @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6b") @DisplayName("Test invalid cert id in OCSP response") void verifyInvalidCerIdInOcspResponse( - final CertificateIdGeneration certificateIdGeneration, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + final CertificateIdGeneration certificateIdGeneration, final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -469,8 +455,7 @@ void verifyInvalidCerIdInOcspResponse( @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 7b") @DisplayName("Test missing CertHash in OCSP response") - void verifyMissingCertHashInOcspResponse(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyMissingCertHashInOcspResponse(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -493,11 +478,11 @@ void verifyMissingCertHashInOcspResponse(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 7c") @DisplayName("Test invalid CertHash in OCSP response") - void verifyInvalidCertHashInOcspResponse(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyInvalidCertHashInOcspResponse(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); + final Path certPath = getPathOfFirstValidCert(); final OcspResponderConfigDto dto = @@ -520,8 +505,7 @@ void verifyInvalidCertHashInOcspResponse(final TestInfo testInfo) @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 8b und 8c") @DisplayName("Test OCSP response with certificate status revoked and unknown") void verifyOcspCertificateStatusRevokedAndUnknown( - final CustomCertificateStatusType customCertificateStatusType, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + final CustomCertificateStatusType customCertificateStatusType, final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -543,8 +527,7 @@ void verifyOcspCertificateStatusRevokedAndUnknown( @Test @Afo(afoId = "RFC 6960", description = "4.2.1. ASN.1 Specification of the OCSP Response") @DisplayName("Test OCSP response with responder id byName") - void verifyOcspResponseResponderIdByName(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseResponderIdByName(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -569,8 +552,7 @@ void verifyOcspResponseResponderIdByName(final TestInfo testInfo) @ValueSource(booleans = {true, false}) @DisplayName("Test OCSP response with null parameter in CertId") void verifyOcspResponseWithNullParameterInCertId( - final boolean withNullParameterHashAlgoOfCertId, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + final boolean withNullParameterHashAlgoOfCertId, final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/PkitsTestsuiteRunner.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/PkitsTestsuiteRunner.java index db774c2..4354f68 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/PkitsTestsuiteRunner.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/PkitsTestsuiteRunner.java @@ -301,13 +301,27 @@ private static List parseTestNamesToInputTestInfos(final String t StringUtils.splitByWholeSeparatorPreserveAllTokens(testNamesStr, ","); return Arrays.stream(testNames) .map( - testName -> { + testOrClass -> { final String classNameSeparator = "#"; - String className = ""; - String methodName = testName; - if (testName.contains(classNameSeparator)) { - className = StringUtils.substringBefore(testName, classNameSeparator); - methodName = StringUtils.substringAfter(testName, classNameSeparator); + + String className; + String methodName; + + if (testOrClass.contains(classNameSeparator)) { + className = StringUtils.substringBefore(testOrClass, classNameSeparator); + methodName = StringUtils.substringAfter(testOrClass, classNameSeparator); + } else { + try { + // assuming all approval and utils test classes are in the same package as + // ApprovalTestsBaseIT + Class.forName( + ClassUtils.getPackageName(ApprovalTestsBaseIT.class) + "." + testOrClass); + className = testOrClass; + methodName = ""; + } catch (final ClassNotFoundException e) { + className = ""; + methodName = testOrClass; + } } return new InputTestInfo(className, methodName, true); }) @@ -321,27 +335,27 @@ static List getTestToRun( return inputTestInfoList.stream() .filter(inputTestInfo -> inputTestInfo.selected) - .map( + .flatMap( inputTestInfo -> { + final List matchedCustomTestInfos = new ArrayList<>(); for (final CustomTestInfo customTestInfo : customTestInfoList) { - final boolean sameClassName = - StringUtils.isBlank(inputTestInfo.className) - || StringUtils.equalsAny( - inputTestInfo.className, - customTestInfo.getSimpleClassName(), - customTestInfo.getClassName()); + final boolean sameClassName = customTestInfo.sameClassName(inputTestInfo.className); + final boolean sameMethodName = - customTestInfo.method.getName().equals(inputTestInfo.methodName); + customTestInfo.sameMethodName(inputTestInfo.methodName); - if (sameClassName && sameMethodName) { - return customTestInfo; + if (sameClassName || sameMethodName) { + matchedCustomTestInfos.add(customTestInfo); } } - throw new TestSuiteException( - "unknown test case: %s of class %s" - .formatted(inputTestInfo.methodName, inputTestInfo.className)); + if (matchedCustomTestInfos.isEmpty()) { + throw new TestSuiteException( + "unknown test case method <%s> or class with test cases <%s>" + .formatted(inputTestInfo.methodName, inputTestInfo.className)); + } + return matchedCustomTestInfos.stream(); }) .toList(); } diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslApprovalTestsIT.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslApprovalTestsIT.java index e2cc40d..529e16b 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslApprovalTestsIT.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslApprovalTestsIT.java @@ -35,22 +35,24 @@ import de.gematik.pki.gemlibpki.utils.CertReader; import de.gematik.pki.gemlibpki.utils.GemLibPkiUtils; import de.gematik.pki.pkits.common.PkitsConstants; +import de.gematik.pki.pkits.testsuite.approval.support.OcspSeqNrUpdateMode; import de.gematik.pki.pkits.testsuite.common.PkitsTestSuiteUtils; import de.gematik.pki.pkits.testsuite.common.TestSuiteConstants; import de.gematik.pki.pkits.testsuite.common.tsl.TslDownload; import de.gematik.pki.pkits.testsuite.config.Afo; import de.gematik.pki.pkits.testsuite.config.TestEnvironment; +import de.gematik.pki.pkits.testsuite.exceptions.TestSuiteException; import de.gematik.pki.pkits.tsl.provider.api.TslProviderManager; import de.gematik.pki.pkits.tsl.provider.data.TslProviderConfigDto.TslProviderEndpointsConfig; import de.gematik.pki.pkits.tsl.provider.data.TslRequestHistoryEntryDto; import eu.europa.esig.trustedlist.jaxb.tsl.TrustStatusListType; -import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.security.cert.X509Certificate; import java.time.ZonedDateTime; import java.util.List; import java.util.concurrent.Callable; +import java.util.function.Consumer; import java.util.stream.Collectors; import javax.xml.datatype.DatatypeConfigurationException; import lombok.extern.slf4j.Slf4j; @@ -67,11 +69,16 @@ class TslApprovalTestsIT extends ApprovalTestsBaseIT { public static final X509Certificate VALID_ISSUER_CERT_TSL_CA8 = CertReader.readX509(TestSuiteConstants.VALID_ISSUER_CERT_TSL_CA8_PATH); + + /** TSLTypeID 4 */ public static final Path alternativeCaRevokedPretty = Path.of(TSL_TEMPLATES_DIRNAME, "TSL_altCA_revoked_pretty.xml"); - private void verifyUpdateTrustStoreInTestObject_initialStateWithAlternativeCert() - throws DatatypeConfigurationException, IOException { + /** TSLTypeID 194 */ + public final Path tslAlternativeCaRevokedLater = + Path.of(TSL_TEMPLATES_DIRNAME, "TSL_altCA_revokedLater.xml"); + + private void verifyUpdateTrustStoreInTestObject_initialStateWithAlternativeCert() { log.info("verifyUpdateTrustStoreInTestObject: initialStateWithAlternativeCert"); @@ -89,8 +96,7 @@ private void verifyUpdateTrustStoreInTestObject_initialStateWithAlternativeCert( useCaseWithCert(certPath, USECASE_VALID, OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_EXPECT); } - private void verifyUpdateTrustStoreInTestObject1_AlternativeCaRevoked() - throws DatatypeConfigurationException, IOException { + private void verifyUpdateTrustStoreInTestObject1_AlternativeCaRevoked() { log.info("verifyUpdateTrustStoreInTestObject: case 1 - AlternativeCaRevoked"); final Path tslTemplatePath = tslSettings.getAlternativeRevokedTemplate(); @@ -109,8 +115,7 @@ private void verifyUpdateTrustStoreInTestObject1_AlternativeCaRevoked() useCaseWithCert(certPath, USECASE_INVALID, OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_EXPECT); } - private void verifyUpdateTrustStoreInTestObject2_AlternativeCaNoLineBreaks() - throws DatatypeConfigurationException, IOException { + private void verifyUpdateTrustStoreInTestObject2_AlternativeCaNoLineBreaks() { log.info("verifyUpdateTrustStoreInTestObject: case 2 - AlternativeCaNoLineBreaks"); final Path tslTemplatePath = testSuiteConfig @@ -132,8 +137,7 @@ private void verifyUpdateTrustStoreInTestObject2_AlternativeCaNoLineBreaks() useCaseWithCert(certPath, USECASE_VALID, OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_EXPECT); } - private void verifyUpdateTrustStoreInTestObject3_Default() - throws DatatypeConfigurationException, IOException { + private void verifyUpdateTrustStoreInTestObject3_Default() { log.info("verifyUpdateTrustStoreInTestObject: case 3 - Default"); final Path tslTemplatePath = testSuiteConfig.getTestSuiteParameter().getTslSettings().getDefaultTemplate(); @@ -158,8 +162,7 @@ private void verifyUpdateTrustStoreInTestObject3_Default() @Afo(afoId = "GS-A_4649", description = "TUC_PKI_020: XML-Dokument validieren") @DisplayName("Test update of TSL with different XML format (pretty print)") @Disabled("Correct Testcase with PrettyPrint TSL (PKITS-158 and GLP-263)") - void verifyUpdateTrustStoreInTestObject(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyUpdateTrustStoreInTestObject(final TestInfo testInfo) { testCaseMessage(testInfo); @@ -176,8 +179,7 @@ void verifyUpdateTrustStoreInTestObject(final TestInfo testInfo) afoId = "TIP1-A_5120", description = "Clients des TSL-Dienstes: HTTP-Komprimierung unterstützen") @DisplayName("Test compression of TSL download") - void verifyTslDownloadCompression(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyTslDownloadCompression(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -208,8 +210,7 @@ void verifyTslDownloadCompression(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4648", description = "TUC_PKI_019: Prüfung der Aktualität der TSL - Schritt 6") @DisplayName("Test TSL service does not provide updated TSL") - void verifyIrregularDifferencesBetweenCurrentAndNewTsls(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyIrregularDifferencesBetweenCurrentAndNewTsls(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -262,25 +263,27 @@ void verifyIrregularDifferencesBetweenCurrentAndNewTsls(final TestInfo testInfo) "initial tsl seqNr: {}, id: {}", initialTslDownload.getTsl().getId(), initialTslDownload.getTsl().getSchemeInformation().getTSLSequenceNumber()); - final int offeredSeqNr = tslSequenceNr.getNextTslSeqNr(); - log.info("Offering TSL with seqNr. {} for download.", offeredSeqNr); - - final TslDownload tslDownload = getTslDownloadAlternativeTemplate(offeredSeqNr); - - final byte[] tslBytes = tslDownload.getTslBytes(); - - final String newId = initialTslDownload.getTsl().getId(); - final byte[] tslBytesWithNewId = TslModifier.modifiedTslId(tslBytes, newId); - signAndSetTslBytes(tslDownload, defaultTslSigner, tslBytesWithNewId); - writeTsl(tslDownload, "_modified"); - - tslSequenceNr.setLastOfferedNr(offeredSeqNr); - tslDownload.waitUntilTslDownloadCompletedOptional(tslSequenceNr.getExpectedNrInTestObject()); - - final Path certPath = getPathOfAlternativeCertificate(); - useCaseWithCert( - certPath, USECASE_INVALID, OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_DO_NOT_EXPECT); + final Consumer rewriteTslIdToInitial = + (tslDownload) -> { + final byte[] tslBytes = tslDownload.getTslBytes(); + + final String newId = initialTslDownload.getTsl().getId(); + final byte[] tslBytesWithNewId = TslModifier.modifiedTslId(tslBytes, newId); + + signAndSetTslBytes(tslDownload, defaultTslSigner, tslBytesWithNewId); + }; + + updateTrustStore( + "Offer a TSL with the same tsl id, but new (incremented) seqNr", + tslSettings.getAlternativeTemplate(), + defaultTslSigner, + OCSP_REQUEST_IGNORE, + getPathOfAlternativeCertificate(), + USECASE_INVALID, + OCSP_REQUEST_DO_NOT_EXPECT, + rewriteTslIdToInitial, + OcspSeqNrUpdateMode.DO_NOT_UPDATE_OCSP_SEQ_NR); } } @@ -290,13 +293,13 @@ void verifyIrregularDifferencesBetweenCurrentAndNewTsls(final TestInfo testInfo) afoId = "GS-A_4642", description = "TUC_PKI_001: Periodische Aktualisierung TI-Vertrauensraum - Schritt 6") @DisplayName("Test bad CA certificate is not extractable from TSL") - void verifyForBadCertificateOfTSPService(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyForBadCertificateOfTSPService(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); updateTrustStore( + "Offer a TSL with alternative test CAs whose ASN1 structure is invalid.", tslSettings.getDefectAlternativeCaBrokenTemplate(), defaultTslSigner, OCSP_REQUEST_EXPECT, @@ -316,13 +319,13 @@ void verifyForBadCertificateOfTSPService(final TestInfo testInfo) afoId = "GS-A_4642", description = "TUC_PKI_001: Periodische Aktualisierung TI-Vertrauensraum - Schritt 6") @DisplayName("Test proper handling of unspecified CA certificate in TSL") - void verifyForUnspecifiedCertificateOfTSPService(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyForUnspecifiedCertificateOfTSPService(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); updateTrustStore( + "Offer a TSL with alternative test CAs and \"irrelevant, unexpected\" CA.", tslSettings.getDefectAlternativeCaUnspecifiedTemplate(), defaultTslSigner, OCSP_REQUEST_EXPECT, @@ -340,13 +343,14 @@ void verifyForUnspecifiedCertificateOfTSPService(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4749", description = "TUC_PKI_007: Prüfung Zertifikatstyp - Schritt 8") @DisplayName("Test CA certificate with missing service information extension in TSL") - void verifyForWrongServiceInfoExtCertificateOfTSPService(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyForWrongServiceInfoExtCertificateOfTSPService(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); updateTrustStore( + "Offer a TSL with alternative test CAs whose ServiceInformationExtension elements are" + + " wrong.", tslSettings.getDefectAlternativeCaWrongSrvInfoExtTemplate(), defaultTslSigner, OCSP_REQUEST_EXPECT, @@ -365,13 +369,13 @@ void verifyForWrongServiceInfoExtCertificateOfTSPService(final TestInfo testInfo @Test @Afo(afoId = "A_17700", description = "TSL-Auswertung ServiceTypeIdentifier \"unspecified\"") @DisplayName("Test CA certificate with ServiceTypeIdentifier \"unspecified\" in TSL") - void verifyForUnspecifiedServiceTypeIdentifierOfTSPService(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyForUnspecifiedServiceTypeIdentifierOfTSPService(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); updateTrustStore( + "Import TSL with ServiceTypeIdentifier \"unspecified\"", tslSettings.getAlternativeCaUnspecifiedStiTemplate(), defaultTslSigner, OCSP_REQUEST_EXPECT, @@ -383,8 +387,7 @@ void verifyForUnspecifiedServiceTypeIdentifierOfTSPService(final TestInfo testIn @Test @Afo(afoId = "GS-A_4652", description = "TUC_PKI_018: Zertifikatsprüfung in der TI - Schritt 5a") @DisplayName("Test CA certificate in TSL is revoked and EE certificate is issued later.") - void verifyRevokedCaCertificateInTslLater(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyRevokedCaCertificateInTslLater(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -392,6 +395,7 @@ void verifyRevokedCaCertificateInTslLater(final TestInfo testInfo) waitForOcspCacheToExpire(); updateTrustStore( + "Offer a TSL with alternative test CAs with ServiceStatus REVOKED", alternativeCaRevokedPretty, defaultTslSigner, OCSP_REQUEST_EXPECT, @@ -409,43 +413,46 @@ void verifyRevokedCaCertificateInTslLater(final TestInfo testInfo) @Test @Afo(afoId = "GS-A_4652", description = "TUC_PKI_018: Zertifikatsprüfung in der TI - Schritt 5") @DisplayName("Test CA certificate in TSL is revoked and EE certificate is issued earlier.") - void verifyRevokedCaCertificateInTsl(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyRevokedCaCertificateInTsl(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); waitForOcspCacheToExpire(); - final Path tslTemplatePath = Path.of(TSL_TEMPLATES_DIRNAME, "TSL_altCA_revokedLater.xml"); - - final int offeredSeqNr = tslSequenceNr.getNextTslSeqNr(); - log.info("Offering TSL with seqNr. {} for download.", offeredSeqNr); - - final TslDownload tslDownload = getTslDownloadWithTemplate(offeredSeqNr, tslTemplatePath); - - final ZonedDateTime newStatusStartingTime = GemLibPkiUtils.now().plusDays(1); - - final byte[] tslBytes = tslDownload.getTslBytes(); - final byte[] tslBytesWithNewStatusStartingTime = - TslModifier.modifiedStatusStartingTime( - tslBytes, - PkitsConstants.GEMATIK_TEST_TSP, - null, - TslConstants.SVCSTATUS_REVOKED, - newStatusStartingTime); - - signAndSetTslBytes(tslDownload, defaultTslSigner, tslBytesWithNewStatusStartingTime); - writeTsl(tslDownload, "_modified"); - - printCurrentTslSeqNr(); - tslSequenceNr.setLastOfferedNr(offeredSeqNr); - tslDownload.waitUntilTslDownloadCompleted( - tslSequenceNr.getExpectedNrInTestObject(), getExpectedOcspTslSeqNr()); - tslSequenceNr.setExpectedNrInTestObject(offeredSeqNr); + final Consumer rewriteStatusStartingTimeToNowPlusOneDay = + tslDownload -> { + final ZonedDateTime newStatusStartingTime = GemLibPkiUtils.now().plusDays(1); + + final byte[] tslBytes = tslDownload.getTslBytes(); + final byte[] tslBytesWithNewStatusStartingTime; + try { + + tslBytesWithNewStatusStartingTime = + TslModifier.modifiedStatusStartingTime( + tslBytes, + PkitsConstants.GEMATIK_TEST_TSP, + null, + TslConstants.SVCSTATUS_REVOKED, + newStatusStartingTime); + } catch (final DatatypeConfigurationException e) { + throw new TestSuiteException("cannot modify TSL", e); + } + + signAndSetTslBytes(tslDownload, defaultTslSigner, tslBytesWithNewStatusStartingTime); + }; - final Path certPath = getPathOfAlternativeCertificate(); - useCaseWithCert(certPath, USECASE_VALID, OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_EXPECT); + updateTrustStore( + "Offer a TSL with alternative CAs, ServiceStatus REVOKED, StatusStartingTime one day in the" + + " future.", + tslAlternativeCaRevokedLater, + defaultTslSigner, + OCSP_REQUEST_EXPECT, + getPathOfAlternativeCertificate(), + USECASE_VALID, + OCSP_REQUEST_EXPECT, + rewriteStatusStartingTimeToNowPlusOneDay, + OcspSeqNrUpdateMode.DO_NOT_UPDATE_OCSP_SEQ_NR); } /** gematikId: UE_PKI_TC_0105_009 */ @@ -453,39 +460,43 @@ void verifyRevokedCaCertificateInTsl(final TestInfo testInfo) @Afo(afoId = "GS-A_4648", description = "Prüfung der Aktualität der TSL - Schritt 4") @Afo(afoId = "GS-GS-A_4651", description = "TUC_PKI_012: XML-Signatur-Prüfung") @DisplayName("Test TSL signature invalid - \"to be signed block\" with integrity violation") - void verifyTslSignatureInvalid(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyTslSignatureInvalid(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); - final int offeredSeqNr = tslSequenceNr.getNextTslSeqNr(); - log.info("Offering TSL with seqNr. {} for download.", offeredSeqNr); - - // create TSL and verify signature - final TslDownload tslDownload = getTslDownloadAlternativeTemplate(offeredSeqNr); - assertThat(TslValidator.checkSignature(tslDownload.getTslBytes(), VALID_ISSUER_CERT_TSL_CA8)) - .isTrue(); - - // break integrity of TSL and verify signature again - final String mailToStrOld = getFirstSchemeOperatorMailAddressOfTsl(tslDownload.getTslBytes()); - final String mailToStrNew = "mailto:signatureInvalid@gematik.de"; - final String tslStr = new String(tslDownload.getTslBytes(), StandardCharsets.UTF_8); - final byte[] brokenTsl = - tslStr.replace(mailToStrOld, mailToStrNew).getBytes(StandardCharsets.UTF_8); - - tslDownload.setTslBytes(brokenTsl); - writeTsl(tslDownload, "_modified"); - - log.info("Verify test tsl has wrong signature."); - assertThat(TslValidator.checkSignature(tslDownload.getTslBytes(), VALID_ISSUER_CERT_TSL_CA8)) - .isFalse(); - - tslSequenceNr.setLastOfferedNr(offeredSeqNr); - tslDownload.waitUntilTslDownloadCompletedOptional(tslSequenceNr.getExpectedNrInTestObject()); + final Consumer rewriteMailToInvalidateSignature = + tslDownload -> { + assertThat( + TslValidator.checkSignature(tslDownload.getTslBytes(), VALID_ISSUER_CERT_TSL_CA8)) + .isTrue(); + + // break integrity of TSL and verify signature again + final String mailToStrOld = + getFirstSchemeOperatorMailAddressOfTsl(tslDownload.getTslBytes()); + final String mailToStrNew = "mailto:signatureInvalid@gematik.de"; + final String tslStr = new String(tslDownload.getTslBytes(), StandardCharsets.UTF_8); + final byte[] brokenTsl = + tslStr.replace(mailToStrOld, mailToStrNew).getBytes(StandardCharsets.UTF_8); + + tslDownload.setTslBytes(brokenTsl); + + log.info("Verify test tsl has wrong signature."); + assertThat( + TslValidator.checkSignature(tslDownload.getTslBytes(), VALID_ISSUER_CERT_TSL_CA8)) + .isFalse(); + }; - final Path certPath = getPathOfAlternativeCertificate(); - useCaseWithCert(certPath, USECASE_INVALID, OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_IGNORE); + updateTrustStore( + "Offer a TSL with alternative test CAs. The signature of the TSL is invalid.", + tslSettings.getAlternativeTemplate(), + defaultTslSigner, + OCSP_REQUEST_IGNORE, + getPathOfAlternativeCertificate(), + USECASE_INVALID, + OCSP_REQUEST_IGNORE, + rewriteMailToInvalidateSignature, + OcspSeqNrUpdateMode.DO_NOT_UPDATE_OCSP_SEQ_NR); useCaseWithCert( getPathOfFirstValidCert(), @@ -510,8 +521,7 @@ private String getFirstSchemeOperatorMailAddressOfTsl(final byte[] tslBytes) { @Afo(afoId = "GS-A_4648", description = "TUC_PKI_019: Prüfung der Aktualität der TSL - Schritt 1") @Afo(afoId = "GS-A_4647", description = "TUC_PKI_016: Download der TSL-Datei - Schritt 3 und 4") @DisplayName("Test TSL download not possible") - void verifyRetryFailingTslDownload(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyRetryFailingTslDownload(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -599,8 +609,7 @@ void verifyRetryFailingTslDownload(final TestInfo testInfo) @Afo(afoId = "GS-A_4648", description = "TUC_PKI_019: Prüfung der Aktualität der TSL - Schritt 1") @Afo(afoId = "GS-A_4647", description = "TUC_PKI_016: Download der TSL-Datei - Schritt 3 und 4") @DisplayName("Test TSL download on primary endpoint not possible") - void verifyUseBackupTslDownload(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyUseBackupTslDownload(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslSignerApprovalTestsIT.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslSignerApprovalTestsIT.java index e4af5d3..f7ff715 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslSignerApprovalTestsIT.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslSignerApprovalTestsIT.java @@ -43,6 +43,7 @@ import de.gematik.pki.pkits.ocsp.responder.data.OcspResponderConfigDto.CustomCertificateStatusDto; import de.gematik.pki.pkits.ocsp.responder.data.OcspResponderConfigDto.CustomCertificateStatusType; import de.gematik.pki.pkits.ocsp.responder.data.OcspResponderConfigDto.OcspResponderConfigDtoBuilder; +import de.gematik.pki.pkits.testsuite.approval.support.OcspSeqNrUpdateMode; import de.gematik.pki.pkits.testsuite.approval.support.UseCaseResult; import de.gematik.pki.pkits.testsuite.common.PkitsTestSuiteUtils; import de.gematik.pki.pkits.testsuite.common.TestSuiteConstants; @@ -50,13 +51,13 @@ import de.gematik.pki.pkits.testsuite.common.ocsp.OcspHistory.OcspRequestExpectationBehaviour; import de.gematik.pki.pkits.testsuite.common.tsl.TslDownload; import de.gematik.pki.pkits.testsuite.config.Afo; +import de.gematik.pki.pkits.testsuite.exceptions.TestSuiteException; import eu.europa.esig.dss.spi.x509.revocation.ocsp.OCSPRespStatus; import eu.europa.esig.trustedlist.jaxb.tsl.TrustStatusListType; -import java.io.IOException; import java.nio.file.Path; import java.security.cert.CertificateEncodingException; import java.security.cert.X509Certificate; -import javax.xml.datatype.DatatypeConfigurationException; +import java.util.function.Consumer; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -82,8 +83,7 @@ private void updateTrustStoreUsingOcspResponderConfig( final OcspResponderConfigDtoBuilder ocspResponderConfigDtoBuilder, final TslUpdateExpectation tslUpdateExpected, final Path certPath, - final UseCaseResult useCaseResult) - throws DatatypeConfigurationException, IOException { + final UseCaseResult useCaseResult) { currentTestInfo.setPhase("updateTrustStoreUsingOcspResponderConfig"); @@ -130,8 +130,7 @@ private void updateTrustStoreUsingOcspResponderConfig( TestSuiteConstants.OCSP_SIGNER_DIFFERENT_KEY }) void verifyMissingOcspSignerInTslForTslSignerCert( - final String ocspSignerFilename, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + final String ocspSignerFilename, final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -165,8 +164,7 @@ void verifyMissingOcspSignerInTslForTslSignerCert( description = "TUC_PKI_001: Periodische Aktualisierung TI-Vertrauensraum - Schritt 4") @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 5a1") @DisplayName("Test invalid OCSP response signature for TSL signer certificate") - void verifyOcspResponseWithInvalidSignatureForTslSignerCert(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseWithInvalidSignatureForTslSignerCert(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -195,8 +193,7 @@ private void verifyOcspResponseDateForTslSignerCert( final DtoDateConfigOption dateConfigOption, final int deltaMilliseconds, final TslUpdateExpectation tslUpdateExcected, - final UseCaseResult useCaseResult) - throws DatatypeConfigurationException, IOException { + final UseCaseResult useCaseResult) { final OcspResponderConfigDtoBuilder dtoBuilder = OcspResponderConfigDto.builder().eeCert(getDefaultTslSignerCert()).signer(ocspSigner); @@ -223,8 +220,7 @@ private void verifyOcspResponseDateForTslSignerCert( @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName( "Test OCSP response of TSL signer certificate with producedAt in past within tolerance") - void verifyOcspResponseTslSignerCertProducedAtPastWithinTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertProducedAtPastWithinTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -254,8 +250,7 @@ void verifyOcspResponseTslSignerCertProducedAtPastWithinTolerance(final TestInfo @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName( "Test OCSP response of TSL signer certificate with producedAt in past out of tolerance") - void verifyOcspResponseTslSignerCertProducedAtPastOutOfTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertProducedAtPastOutOfTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -285,8 +280,7 @@ void verifyOcspResponseTslSignerCertProducedAtPastOutOfTolerance(final TestInfo @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName( "Test OCSP response of TSL signer certificate with producedAt in future within tolerance") - void verifyOcspResponseTslSignerCertProducedAtFutureWithinTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertProducedAtFutureWithinTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -299,11 +293,13 @@ void verifyOcspResponseTslSignerCertProducedAtFutureWithinTolerance(final TestIn producedAtDeltaMilliseconds, TSL_UPDATE_EXPECTED, USECASE_VALID); + useCaseWithCert( getPathOfFirstValidCert(), USECASE_VALID, OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_EXPECT); + waitForOcspCacheToExpire( testSuiteConfig.getTestObject().getOcspGracePeriodSeconds() + producedAtDeltaMilliseconds / 1000); @@ -317,8 +313,7 @@ void verifyOcspResponseTslSignerCertProducedAtFutureWithinTolerance(final TestIn @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName( "Test OCSP response of TSL signer certificate with producedAt in future out of tolerance") - void verifyOcspResponseTslSignerCertProducedAtFutureOutOfTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertProducedAtFutureOutOfTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -351,8 +346,7 @@ void verifyOcspResponseTslSignerCertProducedAtFutureOutOfTolerance(final TestInf @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName( "Test OCSP response of TSL signer certificate with thisUpdate in future within tolerance") - void verifyOcspResponseTslSignerCertThisUpdateFutureWithinTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertThisUpdateFutureWithinTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -365,11 +359,13 @@ void verifyOcspResponseTslSignerCertThisUpdateFutureWithinTolerance(final TestIn thisUpdateDeltaMilliseconds, TSL_UPDATE_EXPECTED, USECASE_VALID); + useCaseWithCert( getPathOfFirstValidCert(), USECASE_VALID, OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_EXPECT); + waitForOcspCacheToExpire( testSuiteConfig.getTestObject().getOcspGracePeriodSeconds() + thisUpdateDeltaMilliseconds / 1000); @@ -383,8 +379,7 @@ void verifyOcspResponseTslSignerCertThisUpdateFutureWithinTolerance(final TestIn @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName( "Test OCSP response of TSL signer certificate with thisUpdate in future out of tolerance") - void verifyOcspResponseTslSignerCertThisUpdateFutureOutOfTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertThisUpdateFutureOutOfTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -415,8 +410,7 @@ void verifyOcspResponseTslSignerCertThisUpdateFutureOutOfTolerance(final TestInf @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName( "Test OCSP response of TSL signer certificate with nextUpdate in past within tolerance") - void verifyOcspResponseTslSignerCertNextUpdatePastWithinTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertNextUpdatePastWithinTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -445,8 +439,7 @@ void verifyOcspResponseTslSignerCertNextUpdatePastWithinTolerance(final TestInfo @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName( "Test OCSP response of TSL signer certificate with nextUpdate in past out of tolerance") - void verifyOcspResponseTslSignerCertNextUpdatePastOutOfTolerance(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertNextUpdatePastOutOfTolerance(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -474,8 +467,7 @@ void verifyOcspResponseTslSignerCertNextUpdatePastOutOfTolerance(final TestInfo description = "TUC_PKI_001: Periodische Aktualisierung TI-Vertrauensraum - Schritt 4") @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 6") @DisplayName("Test OCSP response of TSL signer certificate with missing nextUpdate") - void verifyOcspResponseTslSignerCertMissingNextUpdate(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertMissingNextUpdate(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -512,8 +504,9 @@ void verifyOcspResponseTslSignerCertMissingNextUpdate(final TestInfo testInfo) "Test various status of OCSP responses of TSL signer certificate with and without response" + " bytes") void verifyOcspResponseTslSignerCertVariousStatusAndResponseBytes( - final OCSPRespStatus ocspRespStatus, final boolean withResponseBytes, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + final OCSPRespStatus ocspRespStatus, + final boolean withResponseBytes, + final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -546,8 +539,7 @@ void verifyOcspResponseTslSignerCertVariousStatusAndResponseBytes( description = "TUC_PKI_001: Periodische Aktualisierung TI-Vertrauensraum - Schritt 4") @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 7b") @DisplayName("Test OCSP response of TSL signer certificate with missing CertHash") - void verifyOcspResponseTslSignerCertMissingCertHash(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertMissingCertHash(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -579,8 +571,7 @@ void verifyOcspResponseTslSignerCertMissingCertHash(final TestInfo testInfo) description = "TUC_PKI_001: Periodische Aktualisierung TI-Vertrauensraum - Schritt 4") @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 7c") @DisplayName("Test OCSP response of TSL signer certificate with invalid CertHash") - void verifyOcspResponseTslSignerCertInvalidCertHash(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertInvalidCertHash(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -616,8 +607,7 @@ void verifyOcspResponseTslSignerCertInvalidCertHash(final TestInfo testInfo) @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP-Abfrage - Schritt 8b und 8c") @DisplayName("Test OCSP response of TSL signer certificate with status revoked and unknown") void verifyOcspResponseTslSignerCertStatusRevokedAndUnknown( - final CustomCertificateStatusType customCertificateStatusType, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + final CustomCertificateStatusType customCertificateStatusType, final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -649,8 +639,7 @@ void verifyOcspResponseTslSignerCertStatusRevokedAndUnknown( description = "TUC_PKI_001: Periodische Aktualisierung TI-Vertrauensraum - Schritt 4") @Afo(afoId = "RFC 6960", description = "4.2.1. ASN.1 Specification of the OCSP Response") @DisplayName("Test OCSP response of TSL signer certificate with responder id byName") - void verifyOcspResponseTslSignerCertResponderIdByName(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertResponderIdByName(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -684,8 +673,7 @@ void verifyOcspResponseTslSignerCertResponderIdByName(final TestInfo testInfo) @ValueSource(booleans = {true, false}) @DisplayName("Test OCSP response of TSL signer certificate with null parameter in CertId") void verifyOcspResponseTslSignerCertWithNullParameterInCertId( - final boolean withNullParameterHashAlgoOfCertId, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + final boolean withNullParameterHashAlgoOfCertId, final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -717,8 +705,7 @@ void verifyOcspResponseTslSignerCertWithNullParameterInCertId( description = "TUC_PKI_001: Periodische Aktualisierung TI-Vertrauensraum - Schritt 4") @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP check - step 4c") @DisplayName("Test OCSP response TSL signer certificate with timeout and delay") - void verifyOcspResponseTslSignerCertTimeoutAndDelay(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyOcspResponseTslSignerCertTimeoutAndDelay(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -789,8 +776,7 @@ void verifyOcspResponseTslSignerCertTimeoutAndDelay(final TestInfo testInfo) @Afo(afoId = "GS-A_4657", description = "TUC_PKI_006: OCSP check - step 6b") @DisplayName("Test invalid cert id in OCSP response for TSL signer cert") void verifyOcspResponseTslSignerCertInvalidCertId( - final CertificateIdGeneration certificateIdGeneration, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + final CertificateIdGeneration certificateIdGeneration, final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -826,8 +812,7 @@ void verifyOcspResponseTslSignerCertInvalidCertId( description = "TUC_PKI_011: Prüfung des TSL-Signer-Zertifikates - Schritt 2") @Afo(afoId = "GS-A_4653", description = "TUC_PKI_002: Gültigkeitsprüfung des Zertifikats") @DisplayName("Test TSL signer certificate that is not yet valid - notBefore is in the future") - void verifyTslSignerCertNotYetValid(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyTslSignerCertNotYetValid(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -852,8 +837,7 @@ void verifyTslSignerCertNotYetValid(final TestInfo testInfo) description = "TUC_PKI_011: Prüfung des TSL-Signer-Zertifikates - Schritt 2") @Afo(afoId = "GS-A_4653", description = "TUC_PKI_002: Gültigkeitsprüfung des Zertifikats") @DisplayName("Test TSL signer certificate that is expired") - void verifyTslSignerCertExpired(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyTslSignerCertExpired(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -867,22 +851,26 @@ void verifyTslSignerCertExpired(final TestInfo testInfo) OCSP_REQUEST_EXPECT); } - private void breakTslSigner(final TslDownload tslDownload) - throws CertificateEncodingException, IOException { + private final Consumer breakTslSigner = + tslDownload -> { + final byte[] tslBytes = tslDownload.getTslBytes(); + final TrustStatusListType tsl = TslConverter.bytesToTsl(tslBytes); + final X509Certificate signerCert = TslUtils.getFirstTslSignerCertificate(tsl); - final byte[] tslBytes = tslDownload.getTslBytes(); - final TrustStatusListType tsl = TslConverter.bytesToTsl(tslBytes); - final X509Certificate signerCert = TslUtils.getFirstTslSignerCertificate(tsl); + final byte[] signerCertBrokenBytes; + try { + signerCertBrokenBytes = signerCert.getEncoded(); + } catch (CertificateEncodingException e) { + throw new TestSuiteException("cannot read signerCert", e); + } - final byte[] signerCertBrokenBytes = signerCert.getEncoded(); - GemLibPkiUtils.change4Bytes(signerCertBrokenBytes, 4); + GemLibPkiUtils.change4Bytes(signerCertBrokenBytes, 4); - final byte[] tslWithSignerCertBroken = - TslModifier.modifiedSignerCert(tslBytes, signerCertBrokenBytes); + final byte[] tslWithSignerCertBroken = + TslModifier.modifiedSignerCert(tslBytes, signerCertBrokenBytes); - tslDownload.setTslBytes(tslWithSignerCertBroken); - writeTsl(tslDownload, "_modified"); - } + tslDownload.setTslBytes(tslWithSignerCertBroken); + }; /** gematikId: UE_PKI_TC_0105_001 */ @Test @@ -890,28 +878,22 @@ private void breakTslSigner(final TslDownload tslDownload) afoId = "GS-A_4642", description = "TUC_PKI_001: Periodische Aktualisierung TI-Vertrauensraum - Schritt 3") @DisplayName("Test TSL signer certificate is broken") - void verifyTslSignerCertBroken(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException, CertificateEncodingException { + void verifyTslSignerCertBroken(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); - final int offeredSeqNr = tslSequenceNr.getNextTslSeqNr(); - log.info("Offering TSL with seqNr. {} for download.", offeredSeqNr); - final TslDownload tslDownload = getTslDownloadAlternativeTemplate(offeredSeqNr); - - tslDownload.configureOcspResponderTslSignerStatusGood(); - - breakTslSigner(tslDownload); - - tslSequenceNr.setLastOfferedNr(offeredSeqNr); - tslDownload.waitForTslDownload(tslSequenceNr.getExpectedNrInTestObject()); - - assertNoOcspRequest(tslDownload); - - final Path certPath = getPathOfAlternativeCertificate(); - useCaseWithCert( - certPath, USECASE_INVALID, OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_DO_NOT_EXPECT); + updateTrustStore( + "Offer a TSL with alternative test CAs (the TSL signer certificate contains an invalid ASN1" + + " structure).", + tslSettings.getAlternativeTemplate(), + defaultTslSigner, + OCSP_REQUEST_DO_NOT_EXPECT, + getPathOfAlternativeCertificate(), + USECASE_INVALID, + OCSP_REQUEST_DO_NOT_EXPECT, + breakTslSigner, + OcspSeqNrUpdateMode.DO_NOT_UPDATE_OCSP_SEQ_NR); final Path validCertPath = getPathOfFirstValidCert(); useCaseWithCert( @@ -926,8 +908,7 @@ void verifyTslSignerCertBroken(final TestInfo testInfo) private void verifyForBadCertificateFromTrustAnchors( final String p12Filename, final boolean signerKeyUsageCheck, - final boolean signerValidityCheck) - throws DatatypeConfigurationException, IOException { + final boolean signerValidityCheck) { final Path p12ContainerBadPath = Path.of(TRUST_ANCHOR_TEMPLATES_DIRNAME, p12Filename); final P12Container p12ContainerBad = P12Reader.getContentFromP12(p12ContainerBadPath, "00"); @@ -942,7 +923,8 @@ private void verifyForBadCertificateFromTrustAnchors( tslTemplate, p12ContainerBadPath, signerKeyUsageCheck, - signerValidityCheck); + signerValidityCheck, + null); final OcspResponderConfigDtoBuilder dtoBuilder = OcspResponderConfigDto.builder() @@ -969,8 +951,7 @@ private void verifyForBadCertificateFromTrustAnchors( afoId = "GS-A_4650", description = "TUC_PKI_011: Prüfung des TSL-Signer-Zertifikates - Schritt 3") @DisplayName("Test TSL signer certificates with invalid key usage and extended key usage") - void verifyTslSignerCertInvalidKeyUsageAndExtendedKeyUsage(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyTslSignerCertInvalidKeyUsageAndExtendedKeyUsage(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslVaApprovalTestsIT.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslVaApprovalTestsIT.java index d235f95..762ff10 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslVaApprovalTestsIT.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslVaApprovalTestsIT.java @@ -26,13 +26,13 @@ import de.gematik.pki.gemlibpki.utils.GemLibPkiUtils; import de.gematik.pki.pkits.common.PkitsCommonUtils; -import de.gematik.pki.pkits.testsuite.approval.support.UseCaseResult; +import de.gematik.pki.pkits.testsuite.approval.support.OcspSeqNrUpdateMode; import de.gematik.pki.pkits.testsuite.common.ocsp.OcspHistory.OcspRequestExpectationBehaviour; +import de.gematik.pki.pkits.testsuite.common.tsl.TslDownload; import de.gematik.pki.pkits.testsuite.config.Afo; -import java.io.IOException; import java.nio.file.Path; import java.time.ZonedDateTime; -import javax.xml.datatype.DatatypeConfigurationException; +import java.util.function.Consumer; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; @@ -106,8 +106,6 @@ class TslVaApprovalTestsIT extends TslVaApprovalUtilsBaseIT { static final Path tslTemplateAlternativeTrustAnchor2TrustAnchorChange = Path.of(TSL_TEMPLATES_DIRNAME, "TSL_altTA2_TAchange.xml"); - private static final UseCaseResult SKIP_USECASE = null; - /** gematikId: UE_PKI_TC_0106_001 */ @Test @Afo( @@ -115,15 +113,14 @@ class TslVaApprovalTestsIT extends TslVaApprovalUtilsBaseIT { description = "TUC_PKI_001: Periodische Aktualisierung TI-Vertrauensraum - Schritt 5") @Afo(afoId = "GS-A_4643", description = "TUC_PKI_013: Import TI-Vertrauensanker aus TSL") @DisplayName("Test updating trust anchor") - void verifyUpdateTrustAnchor(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyUpdateTrustAnchor(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); - log.info("verifyUpdateTrustAnchor step 2.1"); - updateTrustStore( + "Offer a TSL with announcement of trust anchor change." + + " ", tslTemplateTrustAnchorChange, defaultTslSigner, OCSP_REQUEST_EXPECT, @@ -134,11 +131,16 @@ void verifyUpdateTrustAnchor(final TestInfo testInfo) log.info("verifyUpdateTrustAnchor - new trust anchor should be activated now"); - verifyInvalidTrustAnchorWasNotImported(tslSettings.getAlternativeTemplate(), defaultTslSigner); + verifyInvalidTrustAnchorWasNotImported( + "Offer a TSL (with alternative test CAs), signed with old (no longer active) trust anchor." + + " ", + tslSettings.getAlternativeTemplate(), + defaultTslSigner); - log.info("verifyUpdateTrustAnchor step 2.3"); printCurrentTslSeqNr(); updateTrustStore( + "Offer a TSL (with alternate test CAs), signed with the new (announced) first alternative" + + " trust anchor. ", tslTemplateAlternativeTrustAnchorAlternativeCa, alternativeTslSignerP12Path, OCSP_REQUEST_EXPECT, @@ -148,48 +150,41 @@ void verifyUpdateTrustAnchor(final TestInfo testInfo) fallBackFromAlternativeToDefaultTrustAnchorAndCheck(alternativeTslSignerP12Path); } - private void fallBackFromAlternativeToDefaultTrustAnchorAndCheck(final Path tslSignerP12Path) - throws DatatypeConfigurationException, IOException { + private void fallBackFromAlternativeToDefaultTrustAnchorAndCheck(final Path tslSignerP12Path) { log.info("fallBackFromAlternativeToDefaultTrustAnchorAndCheck - start"); updateTrustStore( + getSwitchMessage(TA_NAME_ALT1, TA_NAME_DEFAULT) + + " ", tslTemplateAlternativeTrustAnchorTrustAnchorChange, tslSignerP12Path, OCSP_REQUEST_EXPECT, getPathOfFirstValidCert(), - USECASE_VALID); - - setExpectedOcspTslSeqNr(tslSequenceNr.getExpectedNrInTestObject()); + USECASE_VALID, + OCSP_REQUEST_EXPECT, + null, + OcspSeqNrUpdateMode.UPDATE_OCSP_SEQ_NR); log.info("fallBackFromAlternativeToDefaultTrustAnchorAndCheck - finish\n\n"); } - private void tryToImportAnnouncedInvalidTrustAnchor( - final Path tslTemplate, - final Path tslSignerP12Path, - final OcspRequestExpectationBehaviour ocspRequestExpectationBehaviour) - throws DatatypeConfigurationException, IOException { + private void verifyInvalidTrustAnchorWasNotImported( + final String description, final Path tslTemplate, final Path tslSignerP12Path) { - log.info("tryToImportAnnouncedInvalidTrustAnchor - start: tsl template {}", tslTemplate); + log.info("Test if Trust Anchor was erroneously imported"); + log.info("verifyInvalidTrustAnchorWasNotImported - start: tslTemplate {}", tslTemplate); updateTrustStore( + description, tslTemplate, tslSignerP12Path, - ocspRequestExpectationBehaviour, - getPathOfAlternativeCertificate(), - USECASE_INVALID); - - log.info("tryToImportAnnouncedInvalidTrustAnchor - finish\n\n"); - } - - private void verifyInvalidTrustAnchorWasNotImported( - final Path tslTemplate, final Path tslSignerP12Path) - throws DatatypeConfigurationException, IOException { - - log.info("verifyInvalidTrustAnchorWasNotImported - start: tslTemplate {}", tslTemplate); - - updateTrustStore(tslTemplate, tslSignerP12Path, OCSP_REQUEST_IGNORE, null, SKIP_USECASE); + OCSP_REQUEST_IGNORE, + null, + SKIP_USECASE, + null, + null, + OcspSeqNrUpdateMode.DO_NOT_UPDATE_OCSP_SEQ_NR); final Path certPath = getPathOfAlternativeCertificate(); @@ -229,39 +224,79 @@ private void verifyInvalidTrustAnchorWasNotImported( afoId = "GS-A_4643", description = "TUC_PKI_013: Import TI-Vertrauensanker aus TSL - Schritt 4") @DisplayName("Test updating trust anchor with certificates that have invalid times") - void verifyNewTrustAnchorInvalidTime(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyNewTrustAnchorInvalidTime(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); - log.info("case 1: verify new trust anchor expired"); + final ZonedDateTime now = GemLibPkiUtils.now(); + final Consumer rewriteStatusStartingTime = + getActivationTimeModifier(defaultTslSigner, now); + + // --------------------------------------------------------------------------------- + + log.info("start case 1: verify new trust anchor expired"); initialStateWithAlternativeTemplate(); - tryToImportAnnouncedInvalidTrustAnchor( - tslTemplateDefectTrustAnchorChangeExpired, defaultTslSigner, OCSP_REQUEST_EXPECT); + log.info("StartingStatusTime of announced trust anchor: {}", now); + updateTrustStore( + "Try to import invalid trust anchor: offer a TSL announcing a new trust anchor (but" + + " expired). ", + tslTemplateDefectTrustAnchorChangeExpired, + defaultTslSigner, + OCSP_REQUEST_EXPECT, + getPathOfAlternativeCertificate(), + USECASE_INVALID, + OCSP_REQUEST_DO_NOT_EXPECT, + rewriteStatusStartingTime, + OcspSeqNrUpdateMode.DO_NOT_UPDATE_OCSP_SEQ_NR); verifyInvalidTrustAnchorWasNotImported( + "Offer a TSL with alternative CAs and the TSL signer certificate from the new trust anchor" + + " (but expired). ", tslTemplateInvalidAlternativeTrustAnchorExpiredAlternativeCa, tslSignerFromExpiredTrustAnchorP12Path); - log.info("case 2: verify new trust anchor not yet valid"); - initialStateWithAlternativeTemplate(); + // --------------------------------------------------------------------------------- - tryToImportAnnouncedInvalidTrustAnchor( - tslTemplateDefectTrustAnchorChangeNotYetValid, defaultTslSigner, OCSP_REQUEST_EXPECT); + log.info("start case 2: verify new trust anchor not yet valid"); + initialStateWithAlternativeTemplate(); + log.info("StartingStatusTime of announced trust anchor: {}", now); + updateTrustStore( + "Try to import invalid trust anchor: offer a TSL announcing a new trust anchor (but not yet" + + " valid). ", + tslTemplateDefectTrustAnchorChangeNotYetValid, + defaultTslSigner, + OCSP_REQUEST_EXPECT, + getPathOfAlternativeCertificate(), + USECASE_INVALID, + OCSP_REQUEST_DO_NOT_EXPECT, + rewriteStatusStartingTime, + OcspSeqNrUpdateMode.DO_NOT_UPDATE_OCSP_SEQ_NR); verifyInvalidTrustAnchorWasNotImported( + "Offer a TSL with alternative CAs and with the TSL signer certificate from the new trust" + + " anchor (but not yet valid). ", tslTemplateInvalidAlternativeTrustAnchorNotYetValidAlternativeCa, tslSignerFromNotYetValidTrustAnchorP12Path); + // --------------------------------------------------------------------------------- log.info("case 3: StatusStartingTime is expired"); initialStateWithAlternativeTemplate(); - tryToImportAnnouncedInvalidTrustAnchor( + updateTrustStore( + "Try to import invalid trust anchor: offer a TSL announcing a new valid trust anchor, that" + + " would expire to the time of specified StatusStartingTime." + + " ", tslTemplateDefectTrustAnchorChangeStartingTimeFuture, defaultTslSigner, - OCSP_REQUEST_EXPECT); + OCSP_REQUEST_EXPECT, + getPathOfAlternativeCertificate(), + USECASE_INVALID); + // --------------------------------------------------------------------------------- + log.info( + "Check if expected TSL is in the test object (TSL sequence number is in" + + " ServiceSupplyPoint)"); useCaseWithCert( getPathOfFirstValidCert(), USECASE_VALID, @@ -278,23 +313,46 @@ void verifyNewTrustAnchorInvalidTime(final TestInfo testInfo) afoId = "GS-A_4643", description = "TUC_PKI_013: Import TI-Vertrauensanker aus TSL - Schritt 1") @DisplayName("Test multiple announced trust anchors in single TSL") - void verifyMultipleAnnouncedTrustAnchorsInTsl(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyMultipleAnnouncedTrustAnchorsInTsl(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); initialStateWithAlternativeTemplate(); - tryToImportAnnouncedInvalidTrustAnchor( - tslTemplateDefectTrustAnchorChangeTwoEntries, defaultTslSigner, OCSP_REQUEST_EXPECT); + final ZonedDateTime now = GemLibPkiUtils.now(); + final Consumer rewriteStatusStartingTime = + getActivationTimeModifier(defaultTslSigner, now); + + log.info("StartingStatusTime of announced trust anchor: {}", now); + + updateTrustStore( + "Try to import invalid trust anchor: offer a TSL announcing two trust - the first and" + + " second alternative - anchors at the same time, but without alternative CAs." + + " ", + tslTemplateDefectTrustAnchorChangeTwoEntries, + defaultTslSigner, + OCSP_REQUEST_EXPECT, + getPathOfAlternativeCertificate(), + USECASE_INVALID, + OCSP_REQUEST_DO_NOT_EXPECT, + rewriteStatusStartingTime, + OcspSeqNrUpdateMode.DO_NOT_UPDATE_OCSP_SEQ_NR); + // --------------------------------------------------------------------------------- verifyInvalidTrustAnchorWasNotImported( - tslTemplateAlternativeTrustAnchorAlternativeCa, alternativeTslSignerP12Path); + "Offer a TSL with alternative CAs and the first alternative TSL signer certificate." + + " ", + tslTemplateAlternativeTrustAnchorAlternativeCa, + alternativeTslSignerP12Path); verifyInvalidTrustAnchorWasNotImported( - tslTemplateAlternativeTrustAnchorAlternativeCa, alternativeSecondTslSignerP12Path); + "Offer a TSL with alternative CAs and the second alternative TSL signer certificate." + + " ", + tslTemplateAlternativeTrustAnchorAlternativeCa, + alternativeSecondTslSignerP12Path); + // --------------------------------------------------------------------------------- useCaseWithCert( getPathOfFirstValidCert(), USECASE_VALID, @@ -311,21 +369,29 @@ void verifyMultipleAnnouncedTrustAnchorsInTsl(final TestInfo testInfo) afoId = "GS-A_4643", description = "TUC_PKI_013: Import TI-Vertrauensanker aus TSL - Schritt 2") @DisplayName("Test for an announced broken trust anchor and cannot be extracted") - void verifyNewTrustAnchorsIsBroken(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + void verifyNewTrustAnchorsIsBroken(final TestInfo testInfo) { testCaseMessage(testInfo); initialStateWithAlternativeTemplate(); - tryToImportAnnouncedInvalidTrustAnchor( - tslTemplateDefectTrustAnchorChangeBroken, defaultTslSigner, OCSP_REQUEST_EXPECT); + log.info("Announce new trust anchor, TSL signer CA is broken"); + updateTrustStore( + "Try to import invalid trust anchor: offer of a TSL (without alternative CAs) announcing a" + + " new trust anchor that has broken ASN.1 certificate structure. ", + tslTemplateDefectTrustAnchorChangeBroken, + defaultTslSigner, + OCSP_REQUEST_EXPECT, + getPathOfAlternativeCertificate(), + USECASE_INVALID); - useCaseWithCert( + updateTrustStore( + "Offer the default TSL.", + tslSettings.getDefaultTemplate(), + defaultTslSigner, + OCSP_REQUEST_EXPECT, getPathOfFirstValidCert(), - USECASE_VALID, - OCSP_RESP_TYPE_DEFAULT_USECASE, - OCSP_REQUEST_EXPECT); + USECASE_VALID); } /** gematikId: UE_PKI_TC_0106_005, UE_PKI_TC_0106_006 */ @@ -341,8 +407,7 @@ void verifyNewTrustAnchorsIsBroken(final TestInfo testInfo) "Test overwrite behaviour and proper handling of StatusStartingTime of announced trust" + " anchors") void verifyHandlingOfStatusStartingTimeAndOverwriteAnnouncedInactiveTrustAnchors( - final int testOrder, final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + final int testOrder, final TestInfo testInfo) { if (testOrder == 1) { log.info("execute test case verifyHandlingOfStatusStartingTimeOfAnnouncedTrustAnchor"); @@ -361,8 +426,7 @@ private void waitWithExtraSeconds(long waitingTimeSeconds) { log.info("waiting is over"); } - private void verifyHandlingOfStatusStartingTimeOfAnnouncedTrustAnchor(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + private void verifyHandlingOfStatusStartingTimeOfAnnouncedTrustAnchor(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -370,25 +434,32 @@ private void verifyHandlingOfStatusStartingTimeOfAnnouncedTrustAnchor(final Test final long tripleTslDownloadTime = getTripleTslDownloadTime(); final ZonedDateTime newActivationTime = GemLibPkiUtils.now().plusSeconds(tripleTslDownloadTime); - log.info("StartingStatusTime of new trust anchor: {}", newActivationTime); + log.info("StartingStatusTime of announced trust anchor: {}", newActivationTime); - importNewValidTrustAnchor( + updateTrustStore( + "Offer a TSL without alternative test CAs and with announcement of a new trust anchor to be" + + " activated after next 3 TSL downloads." + + " ", tslTemplateTrustAnchorChange, defaultTslSigner, - newActivationTime, - OcspSeqNrUpdateMode.UPDATE_OCSP_SEQ_NR); - - useCaseWithCert( + OCSP_REQUEST_EXPECT, getPathOfAlternativeCertificate(), USECASE_INVALID, - OCSP_RESP_TYPE_DEFAULT_USECASE, - OCSP_REQUEST_DO_NOT_EXPECT); + OCSP_REQUEST_DO_NOT_EXPECT, + getActivationTimeModifier(defaultTslSigner, newActivationTime), + OcspSeqNrUpdateMode.UPDATE_OCSP_SEQ_NR); + // --------------------------------------------------------------------------------- try { - tryToImportAnnouncedInvalidTrustAnchor( + updateTrustStore( + "Try to import invalid trust anchor - too early: Offer a TSL with alternative CAs and the" + + " TSL signer certificate from the new trust anchor. Trust anchor is not yet" + + " active. ", tslTemplateAlternativeTrustAnchorAlternativeCa, alternativeTslSignerP12Path, - OCSP_REQUEST_IGNORE); + OCSP_REQUEST_IGNORE, + getPathOfAlternativeCertificate(), + USECASE_INVALID); } catch (final Exception e) { // TODO integrate this fallback into tryToImportAnnouncedInvalidTrustAnchor around // useCaseWithCert @@ -399,23 +470,28 @@ private void verifyHandlingOfStatusStartingTimeOfAnnouncedTrustAnchor(final Test "a trust anchor was unexpectedly imported into the test object - a fallback was performed" + " to switch to the default trust anchor"); } + // --------------------------------------------------------------------------------- waitWithExtraSeconds(tripleTslDownloadTime); log.info( "new trust anchor should be activated now - StartingStatusTime: {}", newActivationTime); + verifyInvalidTrustAnchorWasNotImported( + "Offer a TSL with alternative CAs and TSL signer certificate from the standard trust" + + " space. ", + tslSettings.getAlternativeTemplate(), + defaultTslSigner); - verifyInvalidTrustAnchorWasNotImported(tslSettings.getAlternativeTemplate(), defaultTslSigner); + // --------------------------------------------------------------------------------- - importNewValidTrustAnchor( + updateTrustStore( + "Offer a TSL with alternative test CAs and TSL signer certificate from the new trust" + + " anchor. Trust anchor should be active." + + " ", tslTemplateAlternativeTrustAnchorAlternativeCa, alternativeTslSignerP12Path, - null, - OcspSeqNrUpdateMode.DO_NOT_UPDATE_OCSP_SEQ_NR); - - useCaseWithCert( + OCSP_REQUEST_EXPECT, getPathOfAlternativeCertificate(), USECASE_VALID, - OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_EXPECT); fallBackFromAlternativeToDefaultTrustAnchorAndCheck(alternativeTslSignerP12Path); @@ -441,8 +517,7 @@ private static long getTripleTslDownloadTime() { return tripleTslDownloadTime; } - private void verifyOverwriteAnnouncedInactiveTrustAnchor(final TestInfo testInfo) - throws DatatypeConfigurationException, IOException { + private void verifyOverwriteAnnouncedInactiveTrustAnchor(final TestInfo testInfo) { testCaseMessage(testInfo); initialState(); @@ -452,51 +527,81 @@ private void verifyOverwriteAnnouncedInactiveTrustAnchor(final TestInfo testInfo final long tripleTslDownloadTime = getTripleTslDownloadTime(); final ZonedDateTime newActivationTime = now.plusSeconds(tripleTslDownloadTime); - importNewValidTrustAnchor( + log.info("StartingStatusTime of announced trust anchor: {}", newActivationTime); + updateTrustStore( + "Announce first new trust anchor (TA1): Offer a TSL without alternative test CAs and with" + + " announcement of a new trust anchor. Activation time: 3 x TSL download interval." + + " ", tslTemplateTrustAnchorChangeFuture, defaultTslSigner, - newActivationTime, + OCSP_REQUEST_EXPECT, + null, + SKIP_USECASE, + null, + getActivationTimeModifier(defaultTslSigner, newActivationTime), OcspSeqNrUpdateMode.DO_NOT_UPDATE_OCSP_SEQ_NR); + // --------------------------------------------------------------------------------- + final long tripleTslDownloadTimeM10 = tripleTslDownloadTime - 10; if (tripleTslDownloadTimeM10 < 0) { // TODO implement fallback log.error("activation of new trust anchor is in the past (too early)"); } - final ZonedDateTime newActivationTime2 = now.plusSeconds(tripleTslDownloadTimeM10); + log.info("StartingStatusTime of announced trust anchor: {}", newActivationTime2); - log.info("StartingStatusTime of new trust anchor: {}", newActivationTime2); - - importNewValidTrustAnchor( + updateTrustStore( + "Announce first new trust anchor (TA2): Offer a TSL without alternative test CAs and with" + + " announcement of another new trust anchor. Activation time: (3 x TSL download" + + " interval) - 10 seconds. ", tslTemplateTrustAnchorChangeAlternativeTrustAnchor2FutureShort, defaultTslSigner, - newActivationTime2, + OCSP_REQUEST_EXPECT, + null, + SKIP_USECASE, + null, + getActivationTimeModifier(defaultTslSigner, newActivationTime2), OcspSeqNrUpdateMode.UPDATE_OCSP_SEQ_NR); + // --------------------------------------------------------------------------------- waitWithExtraSeconds(tripleTslDownloadTime); log.info( "new trust anchor should be activated now - StartingStatusTime: {}", newActivationTime2); + log.info( + "Try to use first new trust anchor TA1 (must not be in the truststore of the test object)"); verifyInvalidTrustAnchorWasNotImported( - tslTemplateAlternativeTrustAnchorAlternativeCa, alternativeTslSignerP12Path); + "Offer a TSL with alternative test CAs and TSL signer certificate from the first new trust" + + " anchor. ", + tslTemplateAlternativeTrustAnchorAlternativeCa, + alternativeTslSignerP12Path); + + log.info( + "Try to use second new trust anchor TA2 (should be in the truststore of the test object)"); - importNewValidTrustAnchor( + updateTrustStore( + "Offer a TSL with alternative test CAs and TSL signer certificate from the second" + + " (alternative) new trust anchor. ", tslTemplateAlternativeTrustAnchor2AlternativeCa, alternativeSecondTslSignerP12Path, - null, - OcspSeqNrUpdateMode.DO_NOT_UPDATE_OCSP_SEQ_NR); - - useCaseWithCert( + OcspRequestExpectationBehaviour.OCSP_REQUEST_EXPECT, getPathOfAlternativeCertificate(), USECASE_VALID, - OCSP_RESP_TYPE_DEFAULT_USECASE, OCSP_REQUEST_EXPECT); - importNewValidTrustAnchor( + // --------------------------------------------------------------------------------- + + updateTrustStore( + getSwitchMessage(TA_NAME_ALT2, TA_NAME_DEFAULT) + + "", tslTemplateAlternativeTrustAnchor2TrustAnchorChange, alternativeSecondTslSignerP12Path, + OCSP_REQUEST_EXPECT, + null, + SKIP_USECASE, + null, null, OcspSeqNrUpdateMode.UPDATE_OCSP_SEQ_NR); diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslVaApprovalUtilsBaseIT.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslVaApprovalUtilsBaseIT.java index 7258c02..10840f2 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslVaApprovalUtilsBaseIT.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslVaApprovalUtilsBaseIT.java @@ -16,16 +16,15 @@ package de.gematik.pki.pkits.testsuite.approval; -import static de.gematik.pki.pkits.testsuite.common.TestSuiteConstants.SIGNER_KEY_USAGE_CHECK_ENABLED; -import static de.gematik.pki.pkits.testsuite.common.TestSuiteConstants.SIGNER_VALIDITY_CHECK_ENABLED; - import de.gematik.pki.gemlibpki.tsl.TslConstants; import de.gematik.pki.gemlibpki.tsl.TslModifier; import de.gematik.pki.pkits.common.PkitsConstants; +import de.gematik.pki.pkits.testsuite.approval.support.UseCaseResult; import de.gematik.pki.pkits.testsuite.common.tsl.TslDownload; -import java.io.IOException; +import de.gematik.pki.pkits.testsuite.exceptions.TestSuiteException; import java.nio.file.Path; import java.time.ZonedDateTime; +import java.util.function.Consumer; import javax.xml.datatype.DatatypeConfigurationException; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; @@ -33,6 +32,7 @@ @Slf4j public abstract class TslVaApprovalUtilsBaseIT extends ApprovalTestsBaseIT { + protected static final UseCaseResult SKIP_USECASE = null; final Path alternativeTslSignerP12Path = Path.of(TRUST_ANCHOR_TEMPLATES_DIRNAME, "TSL-Signing-Unit-9-TEST-ONLY.p12"); @@ -42,63 +42,43 @@ public abstract class TslVaApprovalUtilsBaseIT extends ApprovalTestsBaseIT { final Path tslSignerFromExpiredTrustAnchorP12Path = Path.of(TRUST_ANCHOR_TEMPLATES_DIRNAME, "valid_tsl_signer_from_expired_ta.p12"); - protected enum OcspSeqNrUpdateMode { - UPDATE_OCSP_SEQ_NR, - DO_NOT_UPDATE_OCSP_SEQ_NR + protected static final String TA_NAME_DEFAULT = "default"; + protected static final String TA_NAME_ALT1 = "first alternative"; + protected static final String TA_NAME_ALT2 = "second alternative"; + + protected static String getSwitchMessage(final String anchorType1, final String anchorType2) { + return "Offer a TSL to switch from the %s trust anchor to the %s trust anchor." + .formatted(anchorType1, anchorType2); + } + + Consumer getActivationTimeModifier( + final Path tslSignerPath, final ZonedDateTime newActivationTime) { + return (tslDownload) -> { + if (newActivationTime != null) { + setNewActivationTime(tslDownload, tslSignerPath, newActivationTime); + } + }; } private void setNewActivationTime( final TslDownload tslDownload, @NonNull final Path tslSignerPath, - final ZonedDateTime newActivationTime) - throws DatatypeConfigurationException, IOException { + final ZonedDateTime newActivationTime) { byte[] tslBytes = tslDownload.getTslBytes(); - tslBytes = - TslModifier.modifiedStatusStartingTime( - tslBytes, - PkitsConstants.GEMATIK_TEST_TSP, - TslConstants.STI_SRV_CERT_CHANGE, - null, - newActivationTime); - - signAndSetTslBytes(tslDownload, tslSignerPath, tslBytes); - writeTsl(tslDownload, "_modified"); - } - - protected void importNewValidTrustAnchor( - @NonNull final Path tslTemplate, - @NonNull final Path tslSignerPath, - final ZonedDateTime newActivationTime, - final OcspSeqNrUpdateMode ocspSeqNrUpdateMode) - throws DatatypeConfigurationException, IOException { - - log.info("importNewValidTrustAnchor - start: tsl template {}", tslTemplate); - - final int offeredSeqNr = tslSequenceNr.getNextTslSeqNr(); - log.info("Offering TSL with seqNr. {} for download.", offeredSeqNr); - - final TslDownload tslDownload = - getTslDownloadWithTemplateAndSigner( - offeredSeqNr, - tslTemplate, - tslSignerPath, - SIGNER_KEY_USAGE_CHECK_ENABLED, - SIGNER_VALIDITY_CHECK_ENABLED); - if (newActivationTime != null) { - setNewActivationTime(tslDownload, tslSignerPath, newActivationTime); + try { + tslBytes = + TslModifier.modifiedStatusStartingTime( + tslBytes, + PkitsConstants.GEMATIK_TEST_TSP, + TslConstants.STI_SRV_CERT_CHANGE, + null, + newActivationTime); + } catch (final DatatypeConfigurationException e) { + throw new TestSuiteException("cannot modify TSL", e); } - printCurrentTslSeqNr(); - tslSequenceNr.setLastOfferedNr(offeredSeqNr); - tslDownload.waitUntilTslDownloadCompleted(offeredSeqNr, getExpectedOcspTslSeqNr()); - tslSequenceNr.setExpectedNrInTestObject(offeredSeqNr); - - if (ocspSeqNrUpdateMode == OcspSeqNrUpdateMode.UPDATE_OCSP_SEQ_NR) { - setExpectedOcspTslSeqNr(tslSequenceNr.getExpectedNrInTestObject()); - } - - log.info("importNewValidTrustAnchor - finish\n\n"); + signAndSetTslBytes(tslDownload, tslSignerPath, tslBytes); } } diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslVaSwitchUtils.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslVaSwitchUtils.java index 409725b..22610a4 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslVaSwitchUtils.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/TslVaSwitchUtils.java @@ -20,9 +20,8 @@ import static de.gematik.pki.pkits.testsuite.common.ocsp.OcspHistory.OcspRequestExpectationBehaviour.OCSP_REQUEST_EXPECT; import de.gematik.pki.gemlibpki.utils.GemLibPkiUtils; -import java.io.IOException; +import de.gematik.pki.pkits.testsuite.approval.support.OcspSeqNrUpdateMode; import java.nio.file.Path; -import javax.xml.datatype.DatatypeConfigurationException; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -32,11 +31,17 @@ class TslVaSwitchUtils extends TslVaApprovalUtilsBaseIT { @Test @Order(101) - void switchFromDefaultToAlternativeFirst() throws DatatypeConfigurationException, IOException { + void switchFromDefaultToAlternativeFirst() { - switchTrustAnchor(TslVaApprovalTestsIT.tslTemplateTrustAnchorChange, defaultTslSigner, true); + switchTrustAnchor( + getSwitchMessage(TA_NAME_DEFAULT, TA_NAME_ALT1), + TslVaApprovalTestsIT.tslTemplateTrustAnchorChange, + defaultTslSigner, + true); updateTrustStore( + "Offer a TSL (with alternate test CAs), signed with the new (announced) first alternative" + + " trust anchor.", TslVaApprovalTestsIT.tslTemplateAlternativeTrustAnchorAlternativeCa, alternativeTslSignerP12Path, OCSP_REQUEST_EXPECT, @@ -46,13 +51,15 @@ void switchFromDefaultToAlternativeFirst() throws DatatypeConfigurationException @Test @Order(102) - void switchFromAlternativeFirstToDefault() throws DatatypeConfigurationException, IOException { + void switchFromAlternativeFirstToDefault() { switchTrustAnchor( + getSwitchMessage(TA_NAME_ALT1, TA_NAME_DEFAULT), TslVaApprovalTestsIT.tslTemplateAlternativeTrustAnchorTrustAnchorChange, alternativeTslSignerP12Path, false); updateTrustStore( + "Offer the default TSL.", tslSettings.getDefaultTemplate(), defaultTslSigner, OCSP_REQUEST_EXPECT, @@ -62,13 +69,16 @@ void switchFromAlternativeFirstToDefault() throws DatatypeConfigurationException @Test @Order(103) - void switchFromDefaultToAlternativeSecond() throws DatatypeConfigurationException, IOException { + void switchFromDefaultToAlternativeSecond() { switchTrustAnchor( + getSwitchMessage(TA_NAME_DEFAULT, TA_NAME_ALT2), TslVaApprovalTestsIT.tslTemplateTrustAnchorChangeAlternativeTrustAnchor2FutureShort, defaultTslSigner, true); updateTrustStore( + "Offer a TSL with alternative test CAs and TSL signer certificate from the second" + + " (alternative) new trust anchor.", TslVaApprovalTestsIT.tslTemplateAlternativeTrustAnchor2AlternativeCa, alternativeSecondTslSignerP12Path, OCSP_REQUEST_EXPECT, @@ -78,13 +88,15 @@ void switchFromDefaultToAlternativeSecond() throws DatatypeConfigurationExceptio @Test @Order(104) - void switchFromAlternativeSecondToDefault() throws DatatypeConfigurationException, IOException { + void switchFromAlternativeSecondToDefault() { switchTrustAnchor( + getSwitchMessage(TA_NAME_ALT2, TA_NAME_DEFAULT), TslVaApprovalTestsIT.tslTemplateAlternativeTrustAnchor2TrustAnchorChange, alternativeSecondTslSignerP12Path, false); updateTrustStore( + "Offer the default TSL.", tslSettings.getDefaultTemplate(), defaultTslSigner, OCSP_REQUEST_EXPECT, @@ -93,8 +105,10 @@ void switchFromAlternativeSecondToDefault() throws DatatypeConfigurationExceptio } void switchTrustAnchor( - final Path tslTemplate, final Path tslSignerP12Path, final boolean withInitialState) - throws DatatypeConfigurationException, IOException { + final String description, + final Path tslTemplate, + final Path tslSignerP12Path, + final boolean withInitialState) { retrieveCurrentTslSeqNrInTestObject(); if (withInitialState) { @@ -107,10 +121,15 @@ void switchTrustAnchor( log.info( "switchTrustAnchor:\ntslTemplate {}\n, tslSignerP12Path {}", tslTemplate, tslSignerP12Path); - importNewValidTrustAnchor( + updateTrustStore( + description, tslTemplate, tslSignerP12Path, - GemLibPkiUtils.now(), + OCSP_REQUEST_EXPECT, + null, + SKIP_USECASE, + null, + getActivationTimeModifier(tslSignerP12Path, GemLibPkiUtils.now()), OcspSeqNrUpdateMode.UPDATE_OCSP_SEQ_NR); log.info("switchTrustAnchor\n\n"); diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/support/OcspSeqNrUpdateMode.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/support/OcspSeqNrUpdateMode.java new file mode 100644 index 0000000..3688b32 --- /dev/null +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/approval/support/OcspSeqNrUpdateMode.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023 gematik GmbH + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package de.gematik.pki.pkits.testsuite.approval.support; + +public enum OcspSeqNrUpdateMode { + UPDATE_OCSP_SEQ_NR, + DO_NOT_UPDATE_OCSP_SEQ_NR +} diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/common/PkitsTestSuiteUtils.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/common/PkitsTestSuiteUtils.java index a0503e3..6798d85 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/common/PkitsTestSuiteUtils.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/common/PkitsTestSuiteUtils.java @@ -62,8 +62,10 @@ public static long waitForEventMillis( .pollInterval(Duration.ofMillis(pollIntervalMillis)) .until(eventChecker); } catch (final ConditionTimeoutException e) { - final String message = "Timeout for event \"%s\":: %s".formatted(name, getCallerTrace()); - log.error(message, e); + final String message = + "Timeout for event \"%s\"\n%s:%s\n:: %s%n" + .formatted(name, e.getClass().getCanonicalName(), e.getMessage(), getCallerTrace()); + log.error(message); throw new TestSuiteException(message, e); } final ZonedDateTime zdtEnd = ZonedDateTime.now(); diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/common/tsl/TslDownload.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/common/tsl/TslDownload.java index fdcb816..40b9401 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/common/tsl/TslDownload.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/common/tsl/TslDownload.java @@ -148,7 +148,7 @@ public void waitUntilOcspRequestForSignerOptional() { try { waitUntilOcspRequestForSigner(); } catch (final TestSuiteException e) { - log.info("no ocsp optional requests received -> continue\n\n"); + log.info("no (optional) OCSP requests received -> CONTINUE\n\n"); } } diff --git a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/config/TslSettings.java b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/config/TslSettings.java index 4da6334..497f6ed 100644 --- a/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/config/TslSettings.java +++ b/pkits-testsuite/src/main/java/de/gematik/pki/pkits/testsuite/config/TslSettings.java @@ -39,6 +39,7 @@ public class TslSettings { description = "Alternative template to generate a TSL with additional CAs during tests.") Path alternativeTemplate = Path.of("./testDataTemplates/tsl/TSL_altCA.xml"); + /** TSLTypeID 202 */ @ParameterDescription( withDefault = true, description = @@ -46,6 +47,7 @@ public class TslSettings { Path defectAlternativeCaBrokenTemplate = Path.of("./testDataTemplates/tsl/TSL_defect_altCA_broken.xml"); + /** TSLTypeID 203 */ @ParameterDescription( withDefault = true, description = @@ -53,6 +55,7 @@ public class TslSettings { Path defectAlternativeCaUnspecifiedTemplate = Path.of("./testDataTemplates/tsl/TSL_defect_unspecified-CA_altCA.xml"); + /** TSLTypeID 204 */ @ParameterDescription( withDefault = true, description = diff --git a/pkits-testsuite/src/site/pdf.xml b/pkits-testsuite/src/site/pdf.xml deleted file mode 100644 index 9d80adf..0000000 --- a/pkits-testsuite/src/site/pdf.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - gematik PKI test suite test report - gematik GmbH - - - - - - - - - ${project.name} - v. ${project.version} - Test report - ${project.name} - - ${project.organization.name} - - - diff --git a/pkits-testsuite/src/site/resources/pdf-config.xml b/pkits-testsuite/src/site/resources/pdf-config.xml deleted file mode 100644 index d9260ed..0000000 --- a/pkits-testsuite/src/site/resources/pdf-config.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - 16.50in - 11.70in - 0.3in - 0.3in - 0.5in - 0.5in - - - - - \ No newline at end of file diff --git a/pkits-tls-client/pom.xml b/pkits-tls-client/pom.xml index 7d4bf05..1d09f38 100644 --- a/pkits-tls-client/pom.xml +++ b/pkits-tls-client/pom.xml @@ -4,10 +4,11 @@ de.gematik.pki.pkits pkits-global - 1.0.1 + 1.0.6 pkits-tls-client + 1.0.6 TLS Client TLS Client diff --git a/pkits-tsl-provider/pom.xml b/pkits-tsl-provider/pom.xml index 3737f9a..b19eb49 100644 --- a/pkits-tsl-provider/pom.xml +++ b/pkits-tsl-provider/pom.xml @@ -4,10 +4,11 @@ de.gematik.pki.pkits pkits-global - 1.0.1 + 1.0.6 pkits-tsl-provider + 1.0.6 TSL Server Simulator Spring Boot TSL Provider diff --git a/pom.xml b/pom.xml index 62206e4..cdb7ac2 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ de.gematik.pki.pkits pkits-global - 1.0.1 + 1.0.6 pom PkiTs Uebergreifende Java PKI Testsuite @@ -104,6 +104,7 @@ 3.4.2 3.2.0 3.10.1 + 3.1.1 3.2.1 ${version.maven-surefire-plugin} 3.5.0 @@ -331,6 +332,11 @@ + + org.apache.maven.plugins + maven-deploy-plugin + ${version.maven-deploy-plugin} + @@ -512,6 +518,10 @@ + + org.apache.maven.plugins + maven-deploy-plugin +