This check in updates the code to list the certificates on their

specific page, rather than all on any of them.  Next will be introducing
the new parsing code for RIM and TLS so that Trust Chains show up [no ci]
This commit is contained in:
Cyrus 2023-06-21 16:12:26 -04:00
parent 0bfb4ac8dd
commit 520c18fcdf
12 changed files with 224 additions and 47 deletions

View File

@ -0,0 +1,17 @@
package hirs.attestationca.persist.entity.manager;
import hirs.attestationca.persist.entity.userdefined.certificate.CertificateAuthorityCredential;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.UUID;
@Repository
public interface CACredentialRepository extends JpaRepository<CertificateAuthorityCredential, UUID> {
@Query(value = "SELECT * FROM Certificate where DTYPE='CertificateAuthorityCredential'", nativeQuery = true)
@Override
List<CertificateAuthorityCredential> findAll();
}

View File

@ -1,7 +1,6 @@
package hirs.attestationca.persist.entity.manager;
import hirs.attestationca.persist.entity.userdefined.Certificate;
import hirs.attestationca.persist.entity.userdefined.certificate.EndorsementCredential;
import hirs.attestationca.persist.entity.userdefined.certificate.PlatformCredential;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
@ -30,8 +29,6 @@ public interface CertificateRepository<T extends Certificate> extends JpaReposit
List<PlatformCredential> byBoardSerialNumber(String boardSerialNumber);
@Query(value = "SELECT * FROM Certificate where holderSerialNumber = ?1 AND DTYPE = 'PlatformCredential'", nativeQuery = true)
PlatformCredential getPcByHolderSerialNumber(BigInteger holderSerialNumber);
@Query(value = "SELECT * FROM Certificate where holderSerialNumber = ?1 AND DTYPE = 'EndorsementCredential'", nativeQuery = true)
EndorsementCredential getEcByHolderSerialNumber(BigInteger holderSerialNumber);
@Query(value = "SELECT * FROM Certificate where certificateHash = ?1 AND DTYPE = ?2", nativeQuery = true)
T findByCertificateHash(int certificateHash, String dType);
@Query(value = "SELECT * FROM Certificate where subjectKeyIdentifier = ?1", nativeQuery = true)

View File

@ -0,0 +1,20 @@
package hirs.attestationca.persist.entity.manager;
import hirs.attestationca.persist.entity.userdefined.certificate.EndorsementCredential;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.math.BigInteger;
import java.util.List;
import java.util.UUID;
@Repository
public interface EndorsementCredentialRepository extends JpaRepository<EndorsementCredential, UUID> {
@Query(value = "SELECT * FROM Certificate where DTYPE='EndorsementCredential'", nativeQuery = true)
@Override
List<EndorsementCredential> findAll();
@Query(value = "SELECT * FROM Certificate where holderSerialNumber = ?1 AND DTYPE = 'EndorsementCredential'", nativeQuery = true)
EndorsementCredential getEcByHolderSerialNumber(BigInteger holderSerialNumber);
}

View File

@ -0,0 +1,17 @@
package hirs.attestationca.persist.entity.manager;
import hirs.attestationca.persist.entity.userdefined.certificate.IssuedAttestationCertificate;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.UUID;
@Repository
public interface IssuedCertificateRepository extends JpaRepository<IssuedAttestationCertificate, UUID> {
@Query(value = "SELECT * FROM Certificate where DTYPE='IssuedAttestationCertificate'", nativeQuery = true)
@Override
List<IssuedAttestationCertificate> findAll();
}

View File

@ -0,0 +1,17 @@
package hirs.attestationca.persist.entity.manager;
import hirs.attestationca.persist.entity.userdefined.certificate.PlatformCredential;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.UUID;
@Repository
public interface PlatformCertificateRepository extends JpaRepository<PlatformCredential, UUID> {
@Query(value = "SELECT * FROM Certificate where DTYPE='PlatformCredential'", nativeQuery = true)
@Override
List<PlatformCredential> findAll();
}

View File

@ -24,6 +24,7 @@ import org.bouncycastle.asn1.DERIA5String;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.DERTaggedObject;
import org.bouncycastle.asn1.DLSequence;
import org.bouncycastle.asn1.DLTaggedObject;
import org.bouncycastle.asn1.x500.X500Name;
import org.bouncycastle.asn1.x509.AccessDescription;
import org.bouncycastle.asn1.x509.AttCertIssuer;
@ -665,7 +666,7 @@ public abstract class Certificate extends ArchivableEntity {
// V1 X509Certificate
return CertificateType.X509_CERTIFICATE;
}
} else if (testSeq.toArray()[0] instanceof DERTaggedObject) {
} else if (testSeq.toArray()[0] instanceof DERTaggedObject || testSeq.toArray()[0] instanceof DLTaggedObject) {
// V2 or V3 X509Certificate
return CertificateType.X509_CERTIFICATE;
}

View File

@ -31,7 +31,7 @@ import java.util.Properties;
@EnableWebMvc
@EnableTransactionManagement
@PropertySource({ "classpath:hibernate.properties", "classpath:portal.properties" })
@ComponentScan({"hirs.attestationca.portal", "hirs.attestationca.portal.page.controllers", "hirs.attestationca.persist.entity"})//, "hirs.attestationca.persist.service"})
@ComponentScan({"hirs.attestationca.portal", "hirs.attestationca.portal.page.controllers", "hirs.attestationca.persist.entity"})
@EnableJpaRepositories(basePackages = "hirs.attestationca.persist.entity.manager")
public class PersistenceJPAConfig implements WebMvcConfigurer {

View File

@ -2,10 +2,16 @@ package hirs.attestationca.portal.datatables;
import hirs.attestationca.persist.CriteriaModifier;
import hirs.attestationca.persist.FilteredRecordsList;
import hirs.attestationca.persist.entity.userdefined.rim.ReferenceDigestValue;
import jakarta.persistence.EntityManager;
import jakarta.persistence.criteria.CriteriaQuery;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.util.CollectionUtils;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -16,13 +22,10 @@ import java.util.UUID;
* of ordered lists.
* @param <T> The type of object to query
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@Log4j2
public final class OrderedListQueryDataTableAdapter<T> {
private OrderedListQueryDataTableAdapter() {
// do not construct
}
/**
* Gets the ordered list of records using a default, no-op criteria modifier.
* @param clazz the type of objects to query for
@ -36,7 +39,14 @@ public final class OrderedListQueryDataTableAdapter<T> {
final JpaRepository<T, UUID> dbManager,
final DataTableInput dataTableInput,
final String orderColumnName) {
return getOrderedList(clazz, dbManager, dataTableInput, orderColumnName, null);
CriteriaModifier defaultModifier = new CriteriaModifier() {
@Override
public void modify(final CriteriaQuery criteriaQuery) {
// Do nothing
}
};
return getOrderedList(clazz, dbManager, dataTableInput, orderColumnName, defaultModifier);
}
/**
@ -50,7 +60,7 @@ public final class OrderedListQueryDataTableAdapter<T> {
* @return the filtered record list
*/
public static <T> FilteredRecordsList<T> getOrderedList(final Class<? extends T> clazz,
final JpaRepository<T, UUID> dbManager,
final JpaRepository<?, UUID> dbManager,
final DataTableInput dataTableInput,
final String orderColumnName,
final CriteriaModifier criteriaModifier) {
@ -70,6 +80,48 @@ public final class OrderedListQueryDataTableAdapter<T> {
FilteredRecordsList<T> filteredRecordsList = new FilteredRecordsList<>();
filteredRecordsList.setRecordsTotal(dbManager.count());
filteredRecordsList.addAll((Collection<? extends T>) dbManager.findAll());
filteredRecordsList.setRecordsFiltered(10);
return filteredRecordsList;
// return dbManager.getOrderedList(clazz, orderColumnName, isAscending,
// dataTableInput.getStart(), dataTableInput.getLength(),
// dataTableInput.getSearch().getValue(),
// searchableColumnMap, criteriaModifier);
}
public static FilteredRecordsList<ReferenceDigestValue> getOrderedList(final JpaRepository<ReferenceDigestValue, UUID> dbManager,
final DataTableInput dataTableInput,
final String orderColumnName,
final CriteriaModifier criteriaModifier,
final EntityManager entityManager) {
Map<String, Boolean> searchableColumnMap = new HashMap<>();
for (Column column : dataTableInput.getColumns()) {
searchableColumnMap.put(column.getData(), column.isSearchable());
}
List<Order> orders = dataTableInput.getOrder();
boolean isAscending = true;
if (!CollectionUtils.isEmpty(orders)) {
isAscending = orders.get(0).isAscending();
}
// Session session = entityManager.unwrap(Session.class);
// CriteriaBuilder cb = session.getCriteriaBuilder();
// CriteriaQuery<ReferenceDigestValue> criteriaQuery = cb.createQuery(ReferenceDigestValue.class);
// Root<ReferenceDigestValue> rimRoot = criteriaQuery.from(ReferenceDigestValue.class);
//
// TypedQuery<ReferenceDigestValue> query = entityManager.createQuery(criteriaQuery);
//Object that will store query values
FilteredRecordsList<ReferenceDigestValue> filteredRecordsList = new FilteredRecordsList<>();
filteredRecordsList.setRecordsTotal(dbManager.count());
filteredRecordsList.addAll(dbManager.findAll());
filteredRecordsList.setRecordsFiltered(10);

View File

@ -1,5 +1,6 @@
package hirs.attestationca.portal.page.controllers;
import hirs.attestationca.persist.entity.manager.CACredentialRepository;
import hirs.attestationca.persist.entity.manager.CertificateRepository;
import hirs.attestationca.persist.entity.manager.ComponentResultRepository;
import hirs.attestationca.portal.page.Page;
@ -31,19 +32,23 @@ public class CertificateDetailsPageController extends PageController<Certificate
*/
static final String INITIAL_DATA = "initialData";
private final CertificateRepository certificateRepository;
private final CACredentialRepository caCredentialRepository;
private final ComponentResultRepository componentResultRepository;
/**
* Constructor providing the Page's display and routing specification.
* @param certificateRepository the certificate repository
* @param componentResultRepository the component result repository
* @param caCredentialRepository the ca credential manager
*/
@Autowired
public CertificateDetailsPageController(final CertificateRepository certificateRepository,
final ComponentResultRepository componentResultRepository) {
final ComponentResultRepository componentResultRepository,
final CACredentialRepository caCredentialRepository) {
super(Page.CERTIFICATE_DETAILS);
this.certificateRepository = certificateRepository;
this.componentResultRepository = componentResultRepository;
this.caCredentialRepository = caCredentialRepository;
}
/**
@ -81,7 +86,7 @@ public class CertificateDetailsPageController extends PageController<Certificate
switch (type) {
case "certificateauthority":
data.putAll(CertificateStringMapBuilder.getCertificateAuthorityInformation(
uuid, certificateRepository));
uuid, certificateRepository, caCredentialRepository));
break;
case "endorsement":
data.putAll(CertificateStringMapBuilder.getEndorsementInformation(uuid,

View File

@ -3,7 +3,11 @@ package hirs.attestationca.portal.page.controllers;
import hirs.attestationca.persist.CriteriaModifier;
import hirs.attestationca.persist.DBServiceException;
import hirs.attestationca.persist.FilteredRecordsList;
import hirs.attestationca.persist.entity.manager.CACredentialRepository;
import hirs.attestationca.persist.entity.manager.CertificateRepository;
import hirs.attestationca.persist.entity.manager.EndorsementCredentialRepository;
import hirs.attestationca.persist.entity.manager.IssuedCertificateRepository;
import hirs.attestationca.persist.entity.manager.PlatformCertificateRepository;
import hirs.attestationca.persist.entity.userdefined.Certificate;
import hirs.attestationca.persist.entity.userdefined.certificate.CertificateAuthorityCredential;
import hirs.attestationca.persist.entity.userdefined.certificate.EndorsementCredential;
@ -67,6 +71,10 @@ public class CertificatePageController extends PageController<NoPageParams> {
private CertificateAuthorityCredential certificateAuthorityCredential;
private final CertificateRepository certificateRepository;
private final PlatformCertificateRepository platformCertificateRepository;
private final EndorsementCredentialRepository endorsementCredentialRepository;
private final IssuedCertificateRepository issuedCertificateRepository;
private final CACredentialRepository caCredentialRepository;
private static final String TRUSTCHAIN = "trust-chain";
private static final String PLATFORMCREDENTIAL = "platform-credentials";
@ -81,15 +89,27 @@ public class CertificatePageController extends PageController<NoPageParams> {
/**
* Constructor providing the Page's display and routing specification.
*
* @param certificateRepository the certificate manager
* @param certificateRepository the general certificate manager
* @param platformCertificateRepository the platform credential manager
* @param endorsementCredentialRepository the endorsement credential manager
* @param issuedCertificateRepository the issued certificate manager
* @param caCredentialRepository the ca credential manager
// * @param acaCertificate the ACA's X509 certificate
*/
@Autowired
public CertificatePageController(final CertificateRepository certificateRepository
public CertificatePageController(final CertificateRepository certificateRepository,
final PlatformCertificateRepository platformCertificateRepository,
final EndorsementCredentialRepository endorsementCredentialRepository,
final IssuedCertificateRepository issuedCertificateRepository,
final CACredentialRepository caCredentialRepository
// final X509Certificate acaCertificate
) {
super(Page.TRUST_CHAIN);
this.certificateRepository = certificateRepository;
this.platformCertificateRepository = platformCertificateRepository;
this.endorsementCredentialRepository = endorsementCredentialRepository;
this.issuedCertificateRepository = issuedCertificateRepository;
this.caCredentialRepository = caCredentialRepository;
// try {
certificateAuthorityCredential = null;
@ -145,7 +165,7 @@ public class CertificatePageController extends PageController<NoPageParams> {
mav = getBaseModelAndView(Page.TRUST_CHAIN);
// Map with the ACA certificate information
data.putAll(CertificateStringMapBuilder.getCertificateAuthorityInformation(
certificateAuthorityCredential, this.certificateRepository));
certificateAuthorityCredential, this.certificateRepository, this.caCredentialRepository));
mav.addObject(ACA_CERT_DATA, data);
break;
default:
@ -197,15 +217,19 @@ public class CertificatePageController extends PageController<NoPageParams> {
}
};
FilteredRecordsList<Certificate> records
= OrderedListQueryDataTableAdapter.getOrderedList(
getCertificateClass(certificateType), this.certificateRepository,
input, orderColumnName, criteriaModifier);
/**
* Ok I think what I will do is make repositories for each certificate type to I can
* tell it what the type T is.
*/
FilteredRecordsList<Certificate> records = new FilteredRecordsList<>();
// special parsing for platform credential
// Add the EndorsementCredential for each PlatformCredential based on the
// serial number. (pc.HolderSerialNumber = ec.SerialNumber)
if (certificateType.equals(PLATFORMCREDENTIAL)) {
records = OrderedListQueryDataTableAdapter.getOrderedList(
getCertificateClass(certificateType), platformCertificateRepository,
input, orderColumnName, criteriaModifier);
EndorsementCredential associatedEC;
if (!records.isEmpty()) {
@ -213,7 +237,7 @@ public class CertificatePageController extends PageController<NoPageParams> {
for (int i = 0; i < records.size(); i++) {
PlatformCredential pc = (PlatformCredential) records.get(i);
// find the EC using the PC's "holder serial number"
associatedEC = certificateRepository
associatedEC = this.endorsementCredentialRepository
.getEcByHolderSerialNumber(pc.getHolderSerialNumber());
if (associatedEC != null) {
@ -224,6 +248,14 @@ public class CertificatePageController extends PageController<NoPageParams> {
pc.setEndorsementCredential(associatedEC);
}
}
} else if (certificateType.equals(ENDORSEMENTCREDENTIAL)) {
records = OrderedListQueryDataTableAdapter.getOrderedList(
getCertificateClass(certificateType), endorsementCredentialRepository,
input, orderColumnName, criteriaModifier);
} else if (certificateType.equals(TRUSTCHAIN)) {
records = OrderedListQueryDataTableAdapter.getOrderedList(
getCertificateClass(certificateType), caCredentialRepository,
input, orderColumnName, criteriaModifier);
}
log.debug("Returning list of size: " + records.size());
@ -315,7 +347,6 @@ public class CertificatePageController extends PageController<NoPageParams> {
// send a 404 error when invalid certificate
response.sendError(HttpServletResponse.SC_NOT_FOUND);
}
}
/**
@ -617,11 +648,11 @@ public class CertificatePageController extends PageController<NoPageParams> {
// build the certificate from the uploaded bytes
try {
fileBytes = file.getBytes();
} catch (IOException e) {
} catch (IOException ioEx) {
final String failMessage = String.format(
"Failed to read uploaded file (%s): ", fileName);
log.error(failMessage, e);
messages.addError(failMessage + e.getMessage());
log.error(failMessage, ioEx);
messages.addError(failMessage + ioEx.getMessage());
return null;
}
try {
@ -639,11 +670,11 @@ public class CertificatePageController extends PageController<NoPageParams> {
messages.addError(failMessage);
return null;
}
} catch (IOException e) {
} catch (IOException ioEx) {
final String failMessage = String.format(
"Failed to parse uploaded file (%s): ", fileName);
log.error(failMessage, e);
messages.addError(failMessage + e.getMessage());
log.error(failMessage, ioEx);
messages.addError(failMessage + ioEx.getMessage());
return null;
} catch (DecoderException dEx) {
final String failMessage = String.format(

View File

@ -10,7 +10,6 @@ import hirs.attestationca.persist.entity.userdefined.rim.ReferenceDigestValue;
import hirs.attestationca.persist.entity.userdefined.rim.SupportReferenceManifest;
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.attestationca.portal.page.params.NoPageParams;
@ -22,6 +21,9 @@ import jakarta.validation.Valid;
import lombok.extern.log4j.Log4j2;
import org.hibernate.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@ -105,13 +107,23 @@ public class RimDatabasePageController extends PageController<NoPageParams> {
};
log.info("Querying with the following datatableinput: " + input.toString());
FilteredRecordsList<ReferenceDigestValue> referenceDigestValues = new FilteredRecordsList<>();
Pageable paging = PageRequest.of(input.getStart(), input.getLength(), Sort.by(orderColumnName));
FilteredRecordsList<ReferenceDigestValue> referenceDigestValues =
OrderedListQueryDataTableAdapter.getOrderedList(
ReferenceDigestValue.class,
referenceDigestValueRepository,
input, orderColumnName, criteriaModifier);
org.springframework.data.domain.Page<ReferenceDigestValue> pagedResult = referenceDigestValueRepository.findAll(paging);
if (pagedResult.hasContent()) {
referenceDigestValues.addAll(pagedResult.getContent());
}
referenceDigestValues.setRecordsTotal(referenceDigestValueRepository.count());
referenceDigestValues.setRecordsFiltered(input.getLength());
// FilteredRecordsList<ReferenceDigestValue> referenceDigestValues =
// OrderedListQueryDataTableAdapter.getOrderedList(
// referenceDigestValueRepository,
// input, orderColumnName, criteriaModifier, entityManager);
// might be able to get rid of this, maybe right a query that looks for not updated
SupportReferenceManifest support;
for (ReferenceDigestValue rdv : referenceDigestValues) {
// We are updating the base rim ID field if necessary and
@ -123,7 +135,6 @@ public class RimDatabasePageController extends PageController<NoPageParams> {
referenceDigestValueRepository.save(rdv);
} catch (DBManagerException e) {
log.error("Failed to update TPM Event with Base RIM ID");
log.error(rdv);
}
}
}

View File

@ -1,5 +1,6 @@
package hirs.attestationca.portal.page.utils;
import hirs.attestationca.persist.entity.manager.CACredentialRepository;
import hirs.attestationca.persist.entity.manager.CertificateRepository;
import hirs.attestationca.persist.entity.manager.ComponentResultRepository;
import hirs.attestationca.persist.entity.userdefined.Certificate;
@ -65,8 +66,12 @@ public final class CertificateStringMapBuilder {
if (certificate.getSubject() != null) {
data.put("subject", certificate.getSubject());
data.put("isSelfSigned",
String.valueOf(certificate.getHolderIssuer().equals(certificate.getSubject())));
if (certificate.getHolderIssuer() != null) {
data.put("isSelfSigned",
String.valueOf(certificate.getHolderIssuer().equals(certificate.getSubject())));
} else {
data.put("isSelfSigned", "false");
}
} else {
data.put("isSelfSigned", "false");
}
@ -182,8 +187,8 @@ public final class CertificateStringMapBuilder {
}
return containsAllChain(issuerCert, certificateRepository);
}
} catch (IOException e) {
log.error(e);
} catch (IOException ioEx) {
log.error(ioEx);
return certificate;
}
}
@ -195,17 +200,18 @@ public final class CertificateStringMapBuilder {
* Returns the Certificate Authority information.
*
* @param uuid ID for the certificate.
* @param certificateRepository the certificate manager for retrieving certs.
* @param caCertificateRepository the certificate manager for retrieving certs.
* @return a hash map with the endorsement certificate information.
*/
public static HashMap<String, String> getCertificateAuthorityInformation(final UUID uuid,
final CertificateRepository certificateRepository) {
CertificateAuthorityCredential certificate = (CertificateAuthorityCredential) certificateRepository.getCertificate(uuid);
final CertificateRepository certificateRepository,
final CACredentialRepository caCertificateRepository) {
CertificateAuthorityCredential certificate = caCertificateRepository.getReferenceById(uuid);
String notFoundMessage = "Unable to find Certificate Authority "
+ "Credential with ID: " + uuid;
return getCertificateAuthorityInfoHelper(certificateRepository, certificate, notFoundMessage);
return getCertificateAuthorityInfoHelper(certificateRepository, caCertificateRepository, certificate, notFoundMessage);
}
/**
@ -213,17 +219,20 @@ public final class CertificateStringMapBuilder {
*
* @param certificate the certificate
* @param certificateRepository the certificate repository for retrieving certs.
* @param caCertificateRepository the certificate repository for retrieving certs.
* @return a hash map with the endorsement certificate information.
*/
public static HashMap<String, String> getCertificateAuthorityInformation(
final CertificateAuthorityCredential certificate,
final CertificateRepository certificateRepository) {
return getCertificateAuthorityInfoHelper(certificateRepository, certificate,
final CertificateRepository certificateRepository,
final CACredentialRepository caCertificateRepository) {
return getCertificateAuthorityInfoHelper(certificateRepository, caCertificateRepository, certificate,
"No cert provided for mapping");
}
private static HashMap<String, String> getCertificateAuthorityInfoHelper(
final CertificateRepository certificateRepository,
final CACredentialRepository caCertificateRepository,
final CertificateAuthorityCredential certificate, final String notFoundMessage) {
HashMap<String, String> data = new HashMap<>();
@ -251,7 +260,7 @@ public final class CertificateStringMapBuilder {
public static HashMap<String, String> getEndorsementInformation(final UUID uuid,
final CertificateRepository certificateRepository) {
HashMap<String, String> data = new HashMap<>();
EndorsementCredential certificate = (EndorsementCredential) certificateRepository.findById(uuid).get();
EndorsementCredential certificate = (EndorsementCredential) certificateRepository.getCertificate(uuid);
if (certificate != null) {
data.putAll(getGeneralCertificateInfo(certificate, certificateRepository));
@ -296,7 +305,7 @@ public final class CertificateStringMapBuilder {
final ComponentResultRepository componentResultRepository)
throws IllegalArgumentException, IOException {
HashMap<String, Object> data = new HashMap<>();
PlatformCredential certificate = (PlatformCredential) certificateRepository.findById(uuid).get();
PlatformCredential certificate = (PlatformCredential) certificateRepository.getCertificate(uuid);
if (certificate != null) {
data.putAll(getGeneralCertificateInfo(certificate, certificateRepository));