diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ValidationReportsPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ValidationReportsPageController.java index b0cf463e..7b84263b 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ValidationReportsPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ValidationReportsPageController.java @@ -35,15 +35,17 @@ import javax.servlet.http.HttpServletResponse; import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; +import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; -import java.util.Arrays; import java.util.Enumeration; +import java.util.List; import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * Controller for the Validation Reports page. @@ -59,7 +61,7 @@ public class ValidationReportsPageController extends PageController 4) { + reportData.delete(reportData.lastIndexOf(",") - 4, reportData.length()); + } } } bufferedWriter.append(columnHeaders + "\n"); @@ -259,13 +266,42 @@ public class ValidationReportsPageController extends PageController> parseComponents(final PlatformCredential pc) { ArrayList> parsedComponents = new ArrayList>(); + ArrayList> chainComponents = new ArrayList<>(); + + StringBuilder componentFailureString = new StringBuilder(); if (pc.getComponentIdentifiers() != null && pc.getComponentIdentifiers().size() > 0) { - LOGGER.info("Component failures: " + pc.getComponentFailures()); - ArrayList componentFailures = - new ArrayList(Arrays.asList(pc.getComponentFailures().split(";"))); + componentFailureString.append(pc.getComponentFailures()); + // get all the certificates associated with the platform serial + List chainCertificates = PlatformCredential + .select(certificateManager) + .byBoardSerialNumber(pc.getPlatformSerial()) + .getCertificates().stream().collect(Collectors.toList()); + // combine all components in each certificate for (ComponentIdentifier ci : pc.getComponentIdentifiers()) { + ArrayList issuerAndComponent = new ArrayList(); + issuerAndComponent.add(pc.getIssuer()); + issuerAndComponent.add(ci); + chainComponents.add(issuerAndComponent); + } + + for (PlatformCredential cert : chainCertificates) { + componentFailureString.append(cert.getComponentFailures()); + if (!cert.isBase()) { + for (ComponentIdentifier ci : cert.getComponentIdentifiers()) { + ArrayList issuerAndComponent = new ArrayList(); + issuerAndComponent.add(cert.getIssuer()); + issuerAndComponent.add(ci); + chainComponents.add(issuerAndComponent); + } + } + } + LOGGER.info("Component failures: " + componentFailureString.toString()); + for (ArrayList issuerAndComponent : chainComponents) { ArrayList componentData = new ArrayList(); + String issuer = (String) issuerAndComponent.get(0); + issuer = issuer.replaceAll(",", " "); + ComponentIdentifier ci = (ComponentIdentifier) issuerAndComponent.get(1); if (ci instanceof ComponentIdentifierV2) { componentData.add(((ComponentIdentifierV2) ci).getComponentClass().toString()); } else { @@ -274,8 +310,9 @@ public class ValidationReportsPageController extends PageController