diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/service/SupplyChainValidationServiceImpl.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/service/SupplyChainValidationServiceImpl.java index 64001df0..cbbc269a 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/service/SupplyChainValidationServiceImpl.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/service/SupplyChainValidationServiceImpl.java @@ -369,7 +369,7 @@ public class SupplyChainValidationServiceImpl implements SupplyChainValidationSe .getHardwareInfo().getManufacturer(); String model = device.getDeviceInfo() .getHardwareInfo().getProductName(); - ReferenceManifest validationObject = null; + ReferenceManifest validationObject; Set baseReferenceManifests = null; BaseReferenceManifest baseReferenceManifest = null; ReferenceManifest supportReferenceManifest = null; @@ -388,7 +388,7 @@ public class SupplyChainValidationServiceImpl implements SupplyChainValidationSe } } - validationObject = baseReferenceManifest; + validationObject = measurement; String failedString = ""; if (baseReferenceManifest == null) { failedString = "Base Reference Integrity Manifest\n"; @@ -548,6 +548,9 @@ public class SupplyChainValidationServiceImpl implements SupplyChainValidationSe + "%s for %s can not be found", failedString, manufacturer)); } + EventLogMeasurements eventLog = (EventLogMeasurements) measurement; + eventLog.setOverallValidationResult(fwStatus.getAppStatus()); + this.referenceManifestManager.update(eventLog); return buildValidationRecord(SupplyChainValidation.ValidationType.FIRMWARE, fwStatus.getAppStatus(), fwStatus.getMessage(), validationObject, level); } @@ -620,9 +623,11 @@ public class SupplyChainValidationServiceImpl implements SupplyChainValidationSe LOGGER.error(ex); } + eventLog.setOverallValidationResult(fwStatus.getAppStatus()); + this.referenceManifestManager.update(eventLog); quoteScv = buildValidationRecord(SupplyChainValidation .ValidationType.FIRMWARE, - fwStatus.getAppStatus(), fwStatus.getMessage(), sRim, level); + fwStatus.getAppStatus(), fwStatus.getMessage(), eventLog, level); // Generate validation summary, save it, and return it. List validations = new ArrayList<>(); diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java index 41a842fe..b3b1f18e 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestDetailsPageController.java @@ -506,6 +506,7 @@ public class ReferenceManifestDetailsPageController data.put("baseId", ""); data.put("rimType", measurements.getRimType()); data.put("hostName", measurements.getDeviceName()); + data.put("validationResult", measurements.getOverallValidationResult()); if (measurements.getDeviceName() != null) { digestRecords = referenceDigestManager diff --git a/HIRS_AttestationCAPortal/src/main/webapp/WEB-INF/jsp/reference-manifests.jsp b/HIRS_AttestationCAPortal/src/main/webapp/WEB-INF/jsp/reference-manifests.jsp index c9837d13..4c090170 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/WEB-INF/jsp/reference-manifests.jsp +++ b/HIRS_AttestationCAPortal/src/main/webapp/WEB-INF/jsp/reference-manifests.jsp @@ -52,7 +52,7 @@ { data: 'id', orderable: false, - searchable:false, + searchable: false, render: function(data, type, full, meta) { // Set up a delete icon with link to handleDeleteRequest(). // sets up a hidden input field containing the ID which is diff --git a/HIRS_AttestationCAPortal/src/main/webapp/WEB-INF/jsp/rim-details.jsp b/HIRS_AttestationCAPortal/src/main/webapp/WEB-INF/jsp/rim-details.jsp index b9e0bad9..ad8cd9f7 100644 --- a/HIRS_AttestationCAPortal/src/main/webapp/WEB-INF/jsp/rim-details.jsp +++ b/HIRS_AttestationCAPortal/src/main/webapp/WEB-INF/jsp/rim-details.jsp @@ -25,7 +25,7 @@
- +
Base RIM
@@ -236,7 +236,7 @@
${initialData.events.size()} entries
- +
Base/Support
diff --git a/HIRS_Utils/src/main/java/hirs/data/persist/EventLogMeasurements.java b/HIRS_Utils/src/main/java/hirs/data/persist/EventLogMeasurements.java index cf226377..22e6a596 100644 --- a/HIRS_Utils/src/main/java/hirs/data/persist/EventLogMeasurements.java +++ b/HIRS_Utils/src/main/java/hirs/data/persist/EventLogMeasurements.java @@ -10,6 +10,8 @@ import org.apache.logging.log4j.Logger; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; @@ -29,6 +31,8 @@ public class EventLogMeasurements extends ReferenceManifest { @Column @JsonIgnore private int pcrHash = 0; + @Enumerated(EnumType.STRING) + private AppraisalStatus.Status overallValidationResult = AppraisalStatus.Status.FAIL; /** * This class enables the retrieval of SupportReferenceManifest by their attributes. @@ -171,4 +175,20 @@ public class EventLogMeasurements extends ReferenceManifest { public void setPcrHash(final int pcrHash) { this.pcrHash = pcrHash; } + + /** + * Getter for the overall validation result for display purposes. + * @return the result status + */ + public AppraisalStatus.Status getOverallValidationResult() { + return overallValidationResult; + } + + /** + * Setter for the overall validation result for display purposes. + * @param overallValidationResult the current status for this validation. + */ + public void setOverallValidationResult(final AppraisalStatus.Status overallValidationResult) { + this.overallValidationResult = overallValidationResult; + } }