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 4858b716..55a79c1c 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/service/SupplyChainValidationServiceImpl.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/service/SupplyChainValidationServiceImpl.java @@ -320,7 +320,7 @@ public class SupplyChainValidationServiceImpl implements SupplyChainValidationSe Level level = Level.ERROR; AppraisalStatus fwStatus = null; String manufacturer = device.getDeviceInfo() - .getHardwareInfo().getManufacturer(); + .getHardwareInfo().getManufacturer(); IssuedAttestationCertificate attCert = IssuedAttestationCertificate .select(this.certificateManager) @@ -342,47 +342,48 @@ public class SupplyChainValidationServiceImpl implements SupplyChainValidationSe .toArray(new String[swid.getPcrValues().size()]); } pcrPolicy.setBaselinePcrs(baseline); - } - if (attCert != null && fwStatus == null) { - String[] pcrsSet = attCert.getPcrValues().split("\\+"); - String[] pcrs1 = pcrsSet[0].split("\\n"); - String[] pcrs256 = pcrsSet[1].split("\\n"); - String[] quote = new String[TPMMeasurementRecord.MAX_PCR_ID + 1]; - int offset = 0; + if (attCert != null) { + String[] pcrsSet = attCert.getPcrValues().split("\\+"); + String[] pcrs1 = pcrsSet[0].split("\\n"); + String[] pcrs256 = pcrsSet[1].split("\\n"); + String[] quote = new String[TPMMeasurementRecord.MAX_PCR_ID + 1]; + int offset = 0; - fwStatus = new AppraisalStatus(PASS, - SupplyChainCredentialValidator.FIRMWARE_VALID); + fwStatus = new AppraisalStatus(PASS, + SupplyChainCredentialValidator.FIRMWARE_VALID); - if (baseline[0].length() == TPMMeasurementRecord.SHA_BYTE_LENGTH) { - // quote from provisioner is formated to indicate the encryption - if (pcrs1[0].split(":")[0].contains("sha")) { - offset = 1; + if (baseline[0].length() == TPMMeasurementRecord.SHA_BYTE_LENGTH) { + // quote from provisioner is formated to indicate the encryption + if (pcrs1[0].split(":")[0].contains("sha")) { + offset = 1; + } + for (int i = 0; i <= TPMMeasurementRecord.MAX_PCR_ID; i++) { + //update quote with the pcr only, based on offset + quote[i] = pcrs1[i + offset].split(":")[1].trim(); + } + } else if (baseline[0].length() == TPMMeasurementRecord.SHA_256_BYTE_LENGTH) { + // quote from provisioner is formated to indicate the encryption + if (pcrs256[0].split(":")[0].contains("sha")) { + offset = 1; + } + for (int i = 0; i <= TPMMeasurementRecord.MAX_PCR_ID; i++) { + //update quote with the pcr only, based on offset + quote[i] = pcrs256[i + offset].split(":")[1].trim(); + } } - for (int i = 0; i <= TPMMeasurementRecord.MAX_PCR_ID; i++) { - //update quote with the pcr only, based on offset - quote[i] = pcrs1[i + offset].split(":")[1].trim(); - } - } else if (baseline[0].length() == TPMMeasurementRecord.SHA_256_BYTE_LENGTH) { - // quote from provisioner is formated to indicate the encryption - if (pcrs256[0].split(":")[0].contains("sha")) { - offset = 1; - } - for (int i = 0; i <= TPMMeasurementRecord.MAX_PCR_ID; i++) { - //update quote with the pcr only, based on offset - quote[i] = pcrs256[i + offset].split(":")[1].trim(); + + StringBuilder sb = pcrPolicy.validatePcrs(quote); + if (sb.length() > 0) { + level = Level.ERROR; + fwStatus = new AppraisalStatus(FAIL, sb.toString()); + } else { + level = Level.INFO; } + } else if (fwStatus != null) { + fwStatus = new AppraisalStatus(FAIL, "Associated Issued Attestation" + + " Certificate can not be found."); } - StringBuilder sb = pcrPolicy.validatePcrs(quote); - if (sb.length() > 0) { - level = Level.ERROR; - fwStatus = new AppraisalStatus(FAIL, sb.toString()); - } else { - level = Level.INFO; - } - } else { - fwStatus = new AppraisalStatus(FAIL, "Associated Issued Attestation" - + " Certificate can not be found."); } return buildValidationRecord(SupplyChainValidation.ValidationType.FIRMWARE, @@ -514,7 +515,8 @@ public class SupplyChainValidationServiceImpl implements SupplyChainValidationSe * @param validationType the type of validation * @param result the appraisal status * @param message the validation message to include in the summary and log - * @param archivableEntity the archivableEntity associated with the validation + * @param archivableEntity the archivableEntity associated with the + * validation * @param logLevel the log level * @return a SupplyChainValidation */ 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 ebd3e015..1637a3e4 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 @@ -18,6 +18,7 @@ import java.security.cert.CertificateException; import java.util.Arrays; import java.util.HashMap; import java.util.List; +import java.util.ArrayList; import java.util.UUID; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -157,7 +158,7 @@ public class ReferenceManifestDetailsPageController data.put("rimType", rim.getRimType()); List resources = rim.parseResource(); String resourceFilename = null; - TCGEventLog logProcessor = new TCGEventLog(); + TCGEventLog logProcessor; try { for (SwidResource swidRes : resources) { @@ -171,8 +172,7 @@ public class ReferenceManifestDetailsPageController swidRes.setPcrValues(Arrays.asList( logProcessor.getExpectedPCRValues())); } else { - swidRes.setPcrValues(Arrays.asList( - logProcessor.getExpectedPCRValues())); + swidRes.setPcrValues(new ArrayList<>()); } } } catch (NoSuchFileException nsfEx) { 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 642fbf60..05090a0f 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 @@ -94,7 +94,7 @@
-
Support RIM(s)
+
Payload/Support RIM(s)
-
-
-
- -
-
- ${pcrValue.key} - ${pcrValue.value} -
+ + +
+ File Size: + ${resource.getSize()}
+ Hash: + ${resource.getHashValue()}
+ + RIM Format: + ${resource.getRimFormat()}
+
+ + RIM Type: + ${resource.getRimType()}
+
+ + URI Global: + ${resource.getRimUriGlobal()}
+
+ +
+ +
+
+ +
+
+ ${pcrValue.key} + ${pcrValue.value} +
+
+
- +
-
+
- -
+ + +
Support RIM file named ${resource.getName()} was not imported via the Reference Integrity Manifest page.
+
+
diff --git a/HIRS_Utils/src/main/java/hirs/data/persist/SwidResource.java b/HIRS_Utils/src/main/java/hirs/data/persist/SwidResource.java index b851c3ae..0db88fe5 100644 --- a/HIRS_Utils/src/main/java/hirs/data/persist/SwidResource.java +++ b/HIRS_Utils/src/main/java/hirs/data/persist/SwidResource.java @@ -213,9 +213,6 @@ public class SwidResource { return innerMap; } - /** - * - */ private void parsePcrValues() { TCGEventLog logProcessor = new TCGEventLog();