/*
* Copyright (C) 2013 Intel Corporation
* All rights reserved.
*/
package com.intel.mtwilson.policy.impl;
import com.intel.mtwilson.as.data.MwAssetTagCertificate;
import com.intel.mtwilson.as.data.TblHosts;
import com.intel.mtwilson.model.Bios;
import com.intel.mtwilson.model.Vmm;
import com.intel.mtwilson.policy.HostReport;
import com.intel.mtwilson.policy.Policy;
import com.intel.mtwilson.policy.Rule;
import java.util.List;
import java.util.Set;
/**
* The job of a VendorHostTrustPolicyFactory is, given a complete host report from that
* same vendor's HostAgent, to instantiate a list of TrustPolicy objects that are appropriate
* for that host. For example, an Intel host needs a policy to verify the AIK.
* For a VMWare host we might need a policy to check the "is event log trusted" flag from vcenter,
* or some other vmware-specific data.
*
* Implementations of this interface DO NOT load policy information from or save it to a database.
*
* @author jbuhacoff
*/
public interface VendorHostTrustPolicyFactory {
// Set<Rule> createWhitelistFromHost(HostReport hostReport); // without host-specific rules
// Set<Rule> createHostSpecificRules(HostReport hostReport); // my conceptual problem is ... these could be BIOS or VMM .... does it really matter ?????????
Set<Rule> loadTrustRulesForBios(Bios bios, TblHosts host);
// Set<Rule> loadComparisonRulesForBios(Bios vmm, TblHosts host); // not needed currently
Set<Rule> loadTrustRulesForVmm(Vmm vmm, TblHosts host);
Set<Rule> loadComparisonRulesForVmm(Vmm vmm, TblHosts host); // similar to loadTrustRulesForVmm but excluding the dynamic modules and excluding the host specific modules
Set<Rule> loadTrustRulesForLocation(String location, TblHosts host);
Set<Rule> loadTrustRulesForAssetTag(MwAssetTagCertificate atagCerts, TblHosts host);
}