diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/AbstractAttestationCertificateAuthority.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/AbstractAttestationCertificateAuthority.java
index fbb73305..6eb1c254 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/AbstractAttestationCertificateAuthority.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/AbstractAttestationCertificateAuthority.java
@@ -14,7 +14,6 @@ import hirs.data.persist.DeviceInfoReport;
import hirs.data.persist.EventLogMeasurements;
import hirs.data.persist.ReferenceDigestRecord;
import hirs.data.persist.ReferenceDigestValue;
-import hirs.data.persist.ReferenceManifest;
import hirs.data.persist.SupplyChainPolicy;
import hirs.data.persist.SupplyChainValidationSummary;
import hirs.data.persist.SupportReferenceManifest;
@@ -776,7 +775,7 @@ public abstract class AbstractAttestationCertificateAuthority
dv.getHw().getManufacturer(),
dv.getHw().getProductName());
BaseReferenceManifest dbBaseRim = null;
- ReferenceManifest support;
+ SupportReferenceManifest support;
EventLogMeasurements measurements;
String tagId = "";
String fileName = "";
@@ -788,9 +787,8 @@ public abstract class AbstractAttestationCertificateAuthority
for (ByteString logFile : dv.getLogfileList()) {
try {
support = SupportReferenceManifest.select(referenceManifestManager)
- .includeArchived()
- .byHashCode(Base64.getEncoder().encodeToString(messageDigest.digest(
- logFile.toByteArray())))
+ .byHexDecHash(Hex.encodeHexString(messageDigest.digest(
+ logFile.toByteArray()))).includeArchived()
.getRIM();
if (support == null) {
support = new SupportReferenceManifest(
@@ -803,8 +801,8 @@ public abstract class AbstractAttestationCertificateAuthority
support.setPlatformManufacturer(dv.getHw().getManufacturer());
support.setPlatformModel(dv.getHw().getProductName());
support.setFileName(String.format("%s_[%s].rimel", defaultClientName,
- support.getRimHash().substring(
- support.getRimHash().length() - NUM_OF_VARIABLES)));
+ support.getHexDecHash().substring(
+ support.getHexDecHash().length() - NUM_OF_VARIABLES)));
support.setDeviceName(dv.getNw().getHostname());
this.referenceManifestManager.save(support);
} else {
@@ -830,9 +828,10 @@ public abstract class AbstractAttestationCertificateAuthority
for (ByteString swidFile : dv.getSwidfileList()) {
try {
dbBaseRim = BaseReferenceManifest.select(referenceManifestManager)
+ .byBase64Hash(Base64.getEncoder()
+ .encodeToString(messageDigest
+ .digest(swidFile.toByteArray())))
.includeArchived()
- .byHashCode(Base64.getEncoder().encodeToString(messageDigest.digest(
- swidFile.toByteArray())))
.getRIM();
if (dbBaseRim == null) {
dbBaseRim = new BaseReferenceManifest(
@@ -864,9 +863,8 @@ public abstract class AbstractAttestationCertificateAuthority
//update Support RIMs and Base RIMs.
for (ByteString swidFile : dv.getSwidfileList()) {
dbBaseRim = BaseReferenceManifest.select(referenceManifestManager)
- .includeArchived()
- .byHashCode(Base64.getEncoder().encodeToString(messageDigest.digest(
- swidFile.toByteArray())))
+ .byBase64Hash(Base64.getEncoder().encodeToString(messageDigest.digest(
+ swidFile.toByteArray()))).includeArchived()
.getRIM();
// get file name to use
@@ -883,7 +881,7 @@ public abstract class AbstractAttestationCertificateAuthority
// now update support rim
SupportReferenceManifest dbSupport = SupportReferenceManifest
.select(referenceManifestManager)
- .byRimHash(swid.getHashValue()).getRIM();
+ .byHexDecHash(swid.getHashValue()).getRIM();
if (dbSupport != null) {
dbSupport.setFileName(swid.getName());
dbSupport.setSwidTagVersion(dbBaseRim.getSwidTagVersion());
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 a30ded72..64001df0 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/service/SupplyChainValidationServiceImpl.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/service/SupplyChainValidationServiceImpl.java
@@ -412,8 +412,8 @@ public class SupplyChainValidationServiceImpl implements SupplyChainValidationSe
for (SwidResource swidRes : resources) {
supportReferenceManifest = SupportReferenceManifest.select(referenceManifestManager)
- .byRimHash(swidRes.getHashValue()).getRIM();
- if (supportReferenceManifest !=null
+ .byHexDecHash(swidRes.getHashValue()).getRIM();
+ if (supportReferenceManifest != null
&& swidRes.getName().equals(supportReferenceManifest.getFileName())) {
referenceManifestValidator.validateSupportRimHash(
supportReferenceManifest.getRimBytes(), swidRes.getHashValue());
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 76bcc5d8..41a842fe 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
@@ -252,8 +252,11 @@ public class ReferenceManifestDetailsPageController
boolean hashLinked = false;
if (baseRim.getRimLinkHash() != null) {
ReferenceManifest rim = BaseReferenceManifest.select(referenceManifestManager)
- .byHashCode(baseRim.getRimLinkHash()).getRIM();
+ .byBase64Hash(baseRim.getRimLinkHash()).getRIM();
hashLinked = (rim != null);
+ if (hashLinked) {
+ data.put("rimLinkId", rim.getId());
+ }
}
data.put("linkHashValid", hashLinked);
data.put("rimType", baseRim.getRimType());
diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java
index 243d1d8b..f73d4c16 100644
--- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java
+++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/ReferenceManifestPageController.java
@@ -1,40 +1,26 @@
package hirs.attestationca.portal.page.controllers;
+import hirs.FilteredRecordsList;
import hirs.attestationca.portal.datatables.DataTableInput;
import hirs.attestationca.portal.datatables.DataTableResponse;
+import hirs.attestationca.portal.datatables.OrderedListQueryDataTableAdapter;
import hirs.attestationca.portal.page.Page;
import hirs.attestationca.portal.page.PageController;
-
-import hirs.FilteredRecordsList;
-import hirs.attestationca.portal.datatables.OrderedListQueryDataTableAdapter;
import hirs.attestationca.portal.page.PageMessages;
import hirs.attestationca.portal.page.params.NoPageParams;
import hirs.data.persist.BaseReferenceManifest;
-import hirs.data.persist.SupportReferenceManifest;
-import hirs.persist.DBManagerException;
-import hirs.persist.ReferenceManifestManager;
-import hirs.persist.CriteriaModifier;
import hirs.data.persist.ReferenceManifest;
+import hirs.data.persist.SupportReferenceManifest;
import hirs.data.persist.SwidResource;
import hirs.data.persist.certificate.Certificate;
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.servlet.http.HttpServletResponse;
-
+import hirs.persist.CriteriaModifier;
+import hirs.persist.DBManagerException;
+import hirs.persist.ReferenceManifestManager;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.binary.Hex;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
@@ -50,6 +36,21 @@ import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springframework.web.servlet.view.RedirectView;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* Controller for the Reference Manifest page.
*/
@@ -437,19 +438,34 @@ public class ReferenceManifestPageController
ReferenceManifest existingManifest;
+ MessageDigest digest = null;
+ String rimHash = "";
+ try {
+ digest = MessageDigest.getInstance("SHA-256");
+ } catch (NoSuchAlgorithmException noSaEx) {
+ LOGGER.error(noSaEx);
+ }
+
// look for existing manifest in the database
try {
if (supportRim) {
+ if (digest != null) {
+ rimHash = Hex.encodeHexString(
+ digest.digest(referenceManifest.getRimBytes()));
+ }
existingManifest = SupportReferenceManifest
.select(referenceManifestManager)
+ .byHexDecHash(rimHash)
.includeArchived()
- .byHashCode(referenceManifest.getRimHash())
.getRIM();
} else {
+ if (digest != null) {
+ rimHash = Base64.encodeBase64String(
+ digest.digest(referenceManifest.getRimBytes()));
+ }
existingManifest = BaseReferenceManifest
- .select(referenceManifestManager)
+ .select(referenceManifestManager).byBase64Hash(rimHash)
.includeArchived()
- .byHashCode(referenceManifest.getRimHash())
.getRIM();
}
} catch (DBManagerException e) {
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 a1db77c5..67baed5a 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
@@ -376,7 +376,14 @@