mirror of
https://github.com/nsacyber/HIRS.git
synced 2024-12-21 05:53:27 +00:00
Merge pull request #540 from nsacyber/v3_issue-534
[#534] Initial Display Fixes
This commit is contained in:
commit
0bfb4ac8dd
@ -1,6 +1,7 @@
|
||||
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;
|
||||
@ -28,9 +29,9 @@ public interface CertificateRepository<T extends Certificate> extends JpaReposit
|
||||
@Query(value = "SELECT * FROM Certificate where platformSerial = ?1 AND DTYPE = 'PlatformCredential'", nativeQuery = true)
|
||||
List<PlatformCredential> byBoardSerialNumber(String boardSerialNumber);
|
||||
@Query(value = "SELECT * FROM Certificate where holderSerialNumber = ?1 AND DTYPE = 'PlatformCredential'", nativeQuery = true)
|
||||
PlatformCredential byHolderSerialNumber(BigInteger holderSerialNumber);
|
||||
@Query(value = "SELECT * FROM Certificate where holderSerialNumber = ?1 AND DTYPE = dType", nativeQuery = true)
|
||||
T byHolderSerialNumber(BigInteger holderSerialNumber, String dType);
|
||||
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)
|
||||
|
@ -1,12 +0,0 @@
|
||||
package hirs.attestationca.persist.entity.manager;
|
||||
|
||||
import hirs.attestationca.persist.entity.userdefined.SupplyChainSettings;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@Repository
|
||||
public interface SettingsRepository extends JpaRepository<SupplyChainSettings, UUID> {
|
||||
SupplyChainSettings findByName(String name);
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
package hirs.attestationca.persist.entity.userdefined;
|
||||
|
||||
import hirs.attestationca.persist.entity.UserDefinedEntity;
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.Table;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
/**
|
||||
* Class represents Supply Chain policy. Supply Chain Policy identifies the methods in
|
||||
* SupplyChainValidator that should be used in order to validate a supply chain.
|
||||
* By default, the policy does not enable any validations.
|
||||
*/
|
||||
@Table(name = "SupplyChainSettings")
|
||||
@Getter
|
||||
@Setter
|
||||
@Entity
|
||||
@ToString(callSuper = true)
|
||||
public class SupplyChainSettings extends UserDefinedEntity {
|
||||
/**
|
||||
* Name of the default Supply Chain Policy.
|
||||
*/
|
||||
public static final String DEFAULT_POLICY = "Default Supply Chain Policy";
|
||||
/**
|
||||
* Number of days in 10 years.
|
||||
*/
|
||||
public static final String TEN_YEARS = "3651";
|
||||
/**
|
||||
* Number of days in 1 year.
|
||||
*/
|
||||
public static final String YEAR = "365";
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean ecValidationEnabled = false;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean pcValidationEnabled = false;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean pcAttributeValidationEnabled = false;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean firmwareValidationEnabled = false;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean utcValidationEnabled = false;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean expiredCertificateValidationEnabled = false;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean replaceEC = false;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default true")
|
||||
private boolean issueAttestationCertificate = true;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default true")
|
||||
private boolean issueDevIdCertificate = true;
|
||||
|
||||
@Column(nullable = false)
|
||||
private String validityDays = TEN_YEARS;
|
||||
|
||||
@Column(nullable = false)
|
||||
private String devIdValidityDays = TEN_YEARS;
|
||||
|
||||
@Column(nullable = false)
|
||||
private String reissueThreshold = YEAR;
|
||||
|
||||
@Column(nullable = false)
|
||||
private String devIdReissueThreshold = YEAR;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean generateOnExpiration = false;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean devIdExpirationFlag = false;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean ignoreImaEnabled = false;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean ignoretBootEnabled = false;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean linuxOs = false;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default true")
|
||||
private boolean ignoreGptEnabled = true;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "boolean default false")
|
||||
private boolean ignoreOsEvtEnabled = false;
|
||||
|
||||
/**
|
||||
* Default constructor necessary for Hibernate.
|
||||
*/
|
||||
protected SupplyChainSettings() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor used to initialize SupplyChainSettings object.
|
||||
*
|
||||
* @param name
|
||||
* A name used to uniquely identify and reference the Supply Chain policy.
|
||||
*/
|
||||
public SupplyChainSettings(final String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor used to initialize SupplyChainSettings object.
|
||||
*
|
||||
* @param name
|
||||
* A name used to uniquely identify and reference the supply chain policy.
|
||||
* @param description
|
||||
* Optional description of the policy that can be added by the user
|
||||
*/
|
||||
public SupplyChainSettings(final String name, final String description) {
|
||||
super(name, description);
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package hirs.attestationca.persist.service;
|
||||
|
||||
import hirs.attestationca.persist.entity.userdefined.Certificate;
|
||||
import hirs.attestationca.persist.service.selector.CertificateSelector;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface CertificateService<T extends Certificate> {
|
||||
|
||||
Certificate saveCertificate(Certificate certificate);
|
||||
|
||||
<T extends Certificate> List<T> fetchCertificates(Class<T> classType);
|
||||
|
||||
Certificate updateCertificate(Certificate certificate, UUID certificateId);
|
||||
|
||||
Certificate updateCertificate(Certificate certificate);
|
||||
|
||||
void deleteCertificate(Certificate certificate);
|
||||
|
||||
<T extends Certificate> Set<T> get(CertificateSelector certificateSelector);
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
package hirs.attestationca.persist.service;
|
||||
|
||||
public interface DefaultService {
|
||||
}
|
@ -1,132 +0,0 @@
|
||||
package hirs.attestationca.persist.service;
|
||||
|
||||
import hirs.attestationca.persist.DBManagerException;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.PersistenceContext;
|
||||
import jakarta.persistence.criteria.CriteriaBuilder;
|
||||
import jakarta.persistence.criteria.CriteriaQuery;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Abstract class that has the underlying Hibernate commands used by other DB Managers.
|
||||
* This class exists primarily to reduce code in {@link hirs.attestationca.persist.service.DefaultDbService} which retries these methods
|
||||
* using a RetryTemplate.
|
||||
*
|
||||
* @param <T> type of objects to manage by this manager
|
||||
*/
|
||||
@Log4j2
|
||||
public abstract class HibernateDbService<T> {
|
||||
|
||||
private static final int MAX_CLASS_CACHE_ENTRIES = 500;
|
||||
|
||||
private final Class<T> clazz;
|
||||
@PersistenceContext
|
||||
private EntityManager entityManager;
|
||||
private CriteriaBuilder criteriaBuilder;
|
||||
private CriteriaQuery<T> criteriaQuery;
|
||||
|
||||
/**
|
||||
* Creates a new <code>AbstractDbManager</code>.
|
||||
*
|
||||
* @param clazz Class to search for when doing Hibernate queries,
|
||||
* unfortunately class type of T cannot be determined using only T
|
||||
* @param entityManager the session factory to use to interact with the database
|
||||
*/
|
||||
public HibernateDbService(final Class<T> clazz, final EntityManager entityManager) {
|
||||
if (clazz == null) {
|
||||
log.error("HibernateDbService cannot be instantiated with a null class");
|
||||
throw new IllegalArgumentException(
|
||||
"HibernateDbService cannot be instantiated with a null class"
|
||||
);
|
||||
}
|
||||
// if (entityManager == null) {
|
||||
// log.error("HibernateDbService cannot be instantiated with a null SessionFactory");
|
||||
// throw new IllegalArgumentException(
|
||||
// "HibernateDbService cannot be instantiated with a null SessionFactory"
|
||||
// );
|
||||
// }
|
||||
this.clazz = clazz;
|
||||
this.entityManager = entityManager;
|
||||
}
|
||||
|
||||
public HibernateDbService() {
|
||||
clazz = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of all <code>T</code>s of type <code>clazz</code> in the database, with an
|
||||
* additional restriction also specified in the query.
|
||||
* <p>
|
||||
* This would be useful if <code>T</code> has several subclasses being
|
||||
* managed. This class argument allows the caller to limit which types of
|
||||
* <code>T</code> should be returned.
|
||||
*
|
||||
* @param clazz class type of <code>T</code>s to search for (may be null to
|
||||
* use Class<T>)
|
||||
* @param additionalRestriction - an added Criterion to use in the query, null for none
|
||||
* @return list of <code>T</code> names
|
||||
* @throws DBManagerException if unable to search the database
|
||||
*/
|
||||
protected List<T> doGetList(final Class<? extends T> clazz)
|
||||
throws DBManagerException {
|
||||
log.debug("Getting object list");
|
||||
Class<? extends T> searchClass = clazz;
|
||||
if (clazz == null) {
|
||||
log.debug("clazz is null");
|
||||
searchClass = this.clazz;
|
||||
}
|
||||
|
||||
List<T> objects = new ArrayList<>();
|
||||
|
||||
return objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the object from the database. This removes all of the database
|
||||
* entries that stored information with regards to the this object.
|
||||
* <p>
|
||||
* If the object is referenced by any other tables then this will throw a
|
||||
* <code>DBManagerException</code>.
|
||||
*
|
||||
* @param name name of the object to delete
|
||||
* @return true if successfully found and deleted the object
|
||||
* @throws DBManagerException if unable to find the baseline or delete it
|
||||
* from the database
|
||||
*/
|
||||
// protected boolean doDelete(final String name) throws DBManagerException {
|
||||
// log.debug("deleting object: {}", name);
|
||||
// if (name == null) {
|
||||
// log.debug("null name argument");
|
||||
// return false;
|
||||
// }
|
||||
//
|
||||
// boolean deleted = false;
|
||||
// Session session = entityManager.unwrap(Session.class);
|
||||
// try {
|
||||
// log.debug("retrieving object from db");
|
||||
// criteriaBuilder = session.getCriteriaBuilder();
|
||||
// criteriaQuery = criteriaBuilder.createQuery(clazz);
|
||||
// Root<T> root = criteriaQuery.from(clazz);
|
||||
// criteriaQuery.select(root).where(criteriaBuilder.equal(root.get("name"), name));
|
||||
//
|
||||
// Object object = session.createQuery(criteriaQuery).getSingleResult();
|
||||
//
|
||||
// if (clazz.isInstance(object)) {
|
||||
// T objectOfTypeT = clazz.cast(object);
|
||||
// log.debug("found object, deleting it");
|
||||
// session.delete(objectOfTypeT);
|
||||
// deleted = true;
|
||||
// }
|
||||
// } catch (Exception e) {
|
||||
// final String msg = "unable to retrieve object";
|
||||
// log.error(msg, e);
|
||||
// throw new DBManagerException(msg, e);
|
||||
// }
|
||||
// return deleted;
|
||||
// }
|
||||
|
||||
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
package hirs.attestationca.persist.service;
|
||||
|
||||
import hirs.attestationca.persist.entity.userdefined.ReferenceManifest;
|
||||
import hirs.attestationca.persist.entity.userdefined.rim.ReferenceDigestValue;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface ReferenceDigestValueService {
|
||||
|
||||
ReferenceDigestValue saveReferenceDigestValue(ReferenceDigestValue referenceDigestValue);
|
||||
|
||||
List<ReferenceDigestValue> fetchDigestValues();
|
||||
|
||||
ReferenceDigestValue updateRefDigestValue(ReferenceDigestValue referenceDigestValue, UUID rdvId);
|
||||
|
||||
List<ReferenceDigestValue> getValuesByRimId(ReferenceManifest baseRim);
|
||||
|
||||
void deleteRefDigestValueById(UUID rdvId);
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package hirs.attestationca.persist.service;
|
||||
|
||||
import hirs.attestationca.persist.OrderedListQuerier;
|
||||
import hirs.attestationca.persist.entity.userdefined.ReferenceManifest;
|
||||
import hirs.attestationca.persist.service.selector.ReferenceManifestSelector;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface ReferenceManifestService<T extends ReferenceManifest> extends OrderedListQuerier<T> {
|
||||
|
||||
ReferenceManifest saveReferenceManifest(ReferenceManifest referenceManifest);
|
||||
|
||||
List<ReferenceManifest> fetchReferenceManifests();
|
||||
// DataTablesOutput<ReferenceManifest> fetchReferenceManifests(DataTablesInput input);
|
||||
|
||||
ReferenceManifest updateReferenceManifest(ReferenceManifest referenceManifest, UUID rimId);
|
||||
|
||||
void deleteReferenceManifestById(UUID rimId);
|
||||
|
||||
<T extends ReferenceManifest> Set<T> get(ReferenceManifestSelector referenceManifestSelector);
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
package hirs.attestationca.persist.service;
|
||||
|
||||
import hirs.attestationca.persist.entity.manager.SettingsRepository;
|
||||
import hirs.attestationca.persist.entity.userdefined.SupplyChainSettings;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class SettingsServiceImpl {
|
||||
|
||||
@Autowired(required = false)
|
||||
private EntityManager entityManager;
|
||||
|
||||
@Autowired
|
||||
private SettingsRepository repository;
|
||||
|
||||
public SupplyChainSettings updateSettings(SupplyChainSettings settings) {
|
||||
SupplyChainSettings existing = repository.findByName(settings.getName());
|
||||
|
||||
if (existing != null) {
|
||||
settings.setId(existing.getId());
|
||||
}
|
||||
return repository.save(settings);
|
||||
}
|
||||
|
||||
public void saveSettings(SupplyChainSettings settings) {
|
||||
repository.save(settings);
|
||||
}
|
||||
|
||||
public SupplyChainSettings getByName(String name) {
|
||||
if (name == null) {
|
||||
return null;
|
||||
}
|
||||
return repository.findByName(name);
|
||||
}
|
||||
|
||||
// public Policy getDefaultPolicy(Appraiser appraiser) {
|
||||
// return repository.findByAppraiser(appraiser);
|
||||
// }
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
package hirs.attestationca.persist.service;
|
||||
|
||||
import hirs.attestationca.persist.entity.userdefined.SupplyChainValidation;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface SupplyChainValidationService {
|
||||
SupplyChainValidation saveSupplyChainValidation(SupplyChainValidation supplyChainValidation);
|
||||
|
||||
List<SupplyChainValidation> fetchSupplyChainValidations();
|
||||
|
||||
SupplyChainValidation updateSupplyChainValidation(SupplyChainValidation supplyChainValidation, UUID scvId);
|
||||
|
||||
void deleteSupplyChainValidation(UUID scvId);
|
||||
}
|
@ -36,12 +36,5 @@ public class HIRSApplication extends SpringBootServletInitializer {
|
||||
SpringApplication springApplication = new SpringApplication(HIRSApplication.class);
|
||||
springApplication.setDefaultProperties(Collections.singletonMap("server.servlet.context-path", "/portal"));
|
||||
springApplication.run(args);
|
||||
|
||||
// log.debug("Debug log message");
|
||||
log.info("Info log message");
|
||||
log.error("Error log message");
|
||||
log.warn("Warn log message");
|
||||
log.fatal("Fatal log message");
|
||||
// log.trace("Trace log message");
|
||||
}
|
||||
}
|
@ -28,7 +28,6 @@ public class HIRSDbInitializer extends AbstractAnnotationConfigDispatcherServlet
|
||||
log.debug("Unable to locate MultipartResolver with name 'multipartResolver': no multipart request handling provided");
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
log.error("DAVY********************************************************************************");
|
||||
log.error(ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package hirs.attestationca.portal.datatables;
|
||||
|
||||
import hirs.attestationca.persist.CriteriaModifier;
|
||||
import hirs.attestationca.persist.FilteredRecordsList;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
@ -15,6 +16,7 @@ import java.util.UUID;
|
||||
* of ordered lists.
|
||||
* @param <T> The type of object to query
|
||||
*/
|
||||
@Log4j2
|
||||
public final class OrderedListQueryDataTableAdapter<T> {
|
||||
|
||||
private OrderedListQueryDataTableAdapter() {
|
||||
@ -67,6 +69,7 @@ public final class OrderedListQueryDataTableAdapter<T> {
|
||||
//Object that will store query values
|
||||
FilteredRecordsList<T> filteredRecordsList = new FilteredRecordsList<>();
|
||||
|
||||
|
||||
filteredRecordsList.setRecordsTotal(dbManager.count());
|
||||
filteredRecordsList.addAll(dbManager.findAll());
|
||||
filteredRecordsList.setRecordsFiltered(10);
|
||||
|
@ -213,9 +213,8 @@ 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 = (EndorsementCredential) certificateRepository
|
||||
.byHolderSerialNumber(pc.getHolderSerialNumber(),
|
||||
"EndorsementCredential");
|
||||
associatedEC = certificateRepository
|
||||
.getEcByHolderSerialNumber(pc.getHolderSerialNumber());
|
||||
|
||||
if (associatedEC != null) {
|
||||
log.debug("EC ID for holder s/n " + pc
|
||||
|
@ -340,7 +340,7 @@ public final class CertificateStringMapBuilder {
|
||||
}
|
||||
|
||||
PlatformCredential prevCertificate = certificateRepository
|
||||
.byHolderSerialNumber(certificate.getSerialNumber());
|
||||
.getPcByHolderSerialNumber(certificate.getSerialNumber());
|
||||
|
||||
if (prevCertificate != null) {
|
||||
data.put("prevCertId", prevCertificate.getId().toString());
|
||||
|
Loading…
Reference in New Issue
Block a user