mirror of
https://github.com/nsacyber/HIRS.git
synced 2025-02-11 13:35:19 +00:00
TPMBaseline.isEmpty() method, activated tests
Added unit test for TPMBaseline.isEmpty(). Change exception type thrown in generator class Added unit tests to account for both an empty and a non-empty baseline object Checkstyle changes
This commit is contained in:
parent
02cb30ad6d
commit
e2e07a3ec2
@ -23,6 +23,7 @@ import java.util.Set;
|
|||||||
public abstract class TPMBaseline extends Baseline {
|
public abstract class TPMBaseline extends Baseline {
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger(TPMBaseline.class);
|
private static final Logger LOGGER = LogManager.getLogger(TPMBaseline.class);
|
||||||
|
private static final String NOT_SPECIFIED = "Not Specified";
|
||||||
|
|
||||||
@ElementCollection(fetch = FetchType.EAGER)
|
@ElementCollection(fetch = FetchType.EAGER)
|
||||||
@CollectionTable(name = "TPMBaselineRecords",
|
@CollectionTable(name = "TPMBaselineRecords",
|
||||||
@ -273,4 +274,34 @@ public abstract class TPMBaseline extends Baseline {
|
|||||||
|
|
||||||
return pcrRecords.remove(record);
|
return pcrRecords.remove(record);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the properties of FirmwareInfo, HardwareInfo, OSInfo, and TPMInfo and the contents of
|
||||||
|
* pcrRecords to determine if this instance of TPMBaseline is empty or not.
|
||||||
|
*
|
||||||
|
* @return true if baseline has no data
|
||||||
|
*/
|
||||||
|
public boolean isEmpty() {
|
||||||
|
LOGGER.debug("Check for empty baseline");
|
||||||
|
return (firmwareInfo.getBiosReleaseDate().equals(NOT_SPECIFIED)
|
||||||
|
&& firmwareInfo.getBiosVendor().equals(NOT_SPECIFIED)
|
||||||
|
&& firmwareInfo.getBiosVersion().equals(NOT_SPECIFIED)
|
||||||
|
&& hardwareInfo.getBaseboardSerialNumber().equals(NOT_SPECIFIED)
|
||||||
|
&& hardwareInfo.getChassisSerialNumber().equals(NOT_SPECIFIED)
|
||||||
|
&& hardwareInfo.getManufacturer().equals(NOT_SPECIFIED)
|
||||||
|
&& hardwareInfo.getProductName().equals(NOT_SPECIFIED)
|
||||||
|
&& hardwareInfo.getSystemSerialNumber().equals(NOT_SPECIFIED)
|
||||||
|
&& hardwareInfo.getVersion().equals(NOT_SPECIFIED)
|
||||||
|
&& osInfo.getDistribution().equals(NOT_SPECIFIED)
|
||||||
|
&& osInfo.getDistributionRelease().equals(NOT_SPECIFIED)
|
||||||
|
&& osInfo.getOSArch().equals(NOT_SPECIFIED)
|
||||||
|
&& osInfo.getOSName().equals(NOT_SPECIFIED)
|
||||||
|
&& osInfo.getOSVersion().equals(NOT_SPECIFIED)
|
||||||
|
&& tpmInfo.getTPMMake().equals(NOT_SPECIFIED)
|
||||||
|
&& tpmInfo.getTPMVersionMajor() == 0
|
||||||
|
&& tpmInfo.getTPMVersionMinor() == 0
|
||||||
|
&& tpmInfo.getTPMVersionRevMajor() == 0
|
||||||
|
&& tpmInfo.getTPMVersionRevMinor() == 0
|
||||||
|
&& pcrRecords.isEmpty());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,7 @@ public class TPMBaselineGenerator {
|
|||||||
= LogManager.getLogger(TPMBaselineGenerator.class);
|
= LogManager.getLogger(TPMBaselineGenerator.class);
|
||||||
|
|
||||||
private static final String KERNEL_UPDATE_BASELINE_NAME = "Kernel Update %s %s";
|
private static final String KERNEL_UPDATE_BASELINE_NAME = "Kernel Update %s %s";
|
||||||
|
private static final String VALID_REGEX = "[0-9a-zA-Z./()_,\" -]+";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -595,19 +596,14 @@ public class TPMBaselineGenerator {
|
|||||||
HashMap<TPMBaselineFields, String> fieldMap = new HashMap<>();
|
HashMap<TPMBaselineFields, String> fieldMap = new HashMap<>();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
while (reader.ready()) {
|
while (dataRow != null && dataRow.matches(VALID_REGEX)) {
|
||||||
if (StringUtils.isBlank(dataRow)) {
|
|
||||||
dataRow = reader.readLine();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
String[] dataArray = dataRow.split(",", 2); // looking for two values per row
|
String[] dataArray = dataRow.split(",", 2); // looking for two values per row
|
||||||
if (dataArray.length != 2) { // could be 1, if there were no commas
|
if (dataArray.length != 2) { // could be 1, if there were no commas
|
||||||
final String msg = String.format(
|
final String msg = String.format(
|
||||||
"invalid number of fields: %d", dataArray.length);
|
"invalid number of fields: %d", dataArray.length);
|
||||||
LOGGER.error(msg);
|
LOGGER.error(msg);
|
||||||
throw new TPMBaselineGeneratorException(msg);
|
throw new TPMBaselineGeneratorException(msg);
|
||||||
} else if (!dataArray[1].matches("[0-9a-zA-Z./()_,\" -]+")) {
|
} else if (!dataArray[1].matches(VALID_REGEX)) {
|
||||||
final String msg = String.format("One record contained invalid data"
|
final String msg = String.format("One record contained invalid data"
|
||||||
+ "while parsing a CSV file for TPM Baseline '%s'.", baselineName);
|
+ "while parsing a CSV file for TPM Baseline '%s'.", baselineName);
|
||||||
LOGGER.error(msg);
|
LOGGER.error(msg);
|
||||||
@ -641,6 +637,10 @@ public class TPMBaselineGenerator {
|
|||||||
TPMBaselineFields.toOSInfo(fieldMap, baseline.getOSInfo()));
|
TPMBaselineFields.toOSInfo(fieldMap, baseline.getOSInfo()));
|
||||||
baseline.setTPMInfo(
|
baseline.setTPMInfo(
|
||||||
TPMBaselineFields.toTPMInfo(fieldMap, baseline.getTPMInfo()));
|
TPMBaselineFields.toTPMInfo(fieldMap, baseline.getTPMInfo()));
|
||||||
|
|
||||||
|
if (baseline.isEmpty()) {
|
||||||
|
throw new TPMBaselineGeneratorException("TPM baseline is empty!");
|
||||||
|
}
|
||||||
//Checks that PCR values are actual
|
//Checks that PCR values are actual
|
||||||
} catch (NumberFormatException nfe) {
|
} catch (NumberFormatException nfe) {
|
||||||
String recordInfo = "";
|
String recordInfo = "";
|
||||||
|
@ -623,6 +623,24 @@ public class TPMBaselineTest extends SpringPersistenceTest {
|
|||||||
Assert.assertEquals(baseline.getTPMInfo(), tpmInfo);
|
Assert.assertEquals(baseline.getTPMInfo(), tpmInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify that a baseline with valid data returns false from isEmpty().
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public final void testIsEmptyFalse() {
|
||||||
|
final TpmWhiteListBaseline baseline = getDefaultWhiteListBaseline();
|
||||||
|
Assert.assertFalse(baseline.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify that a baseline with no data returns true from isEmpty().
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public final void testIsEmptyTrue() {
|
||||||
|
final TpmWhiteListBaseline baseline = new TpmWhiteListBaseline();
|
||||||
|
Assert.assertTrue(baseline.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
private TpmWhiteListBaseline getDefaultWhiteListBaseline() {
|
private TpmWhiteListBaseline getDefaultWhiteListBaseline() {
|
||||||
final int pcr0 = 0;
|
final int pcr0 = 0;
|
||||||
TpmWhiteListBaseline baseline = new TpmWhiteListBaseline("TestTpmWhiteListBaseline");
|
TpmWhiteListBaseline baseline = new TpmWhiteListBaseline("TestTpmWhiteListBaseline");
|
||||||
|
@ -88,6 +88,7 @@ public class TPMBaselineGeneratorTest {
|
|||||||
* if error encountered when retrieving measurement entries from
|
* if error encountered when retrieving measurement entries from
|
||||||
* input stream
|
* input stream
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public final void generateBaselineFromCSVFileNullBaselineName()
|
public final void generateBaselineFromCSVFileNullBaselineName()
|
||||||
throws IOException, ParseException, TPMBaselineGeneratorException {
|
throws IOException, ParseException, TPMBaselineGeneratorException {
|
||||||
Exception expectedEx = null;
|
Exception expectedEx = null;
|
||||||
@ -131,6 +132,7 @@ public class TPMBaselineGeneratorTest {
|
|||||||
* @throws ParseException
|
* @throws ParseException
|
||||||
* if error encountered parsing data
|
* if error encountered parsing data
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public final void generateBaselineFromCSVFileContainsNoRecords()
|
public final void generateBaselineFromCSVFileContainsNoRecords()
|
||||||
throws IOException, ParseException {
|
throws IOException, ParseException {
|
||||||
Exception expectedEx = null;
|
Exception expectedEx = null;
|
||||||
@ -187,6 +189,7 @@ public class TPMBaselineGeneratorTest {
|
|||||||
* @throws ParseException
|
* @throws ParseException
|
||||||
* if error encountered parsing data
|
* if error encountered parsing data
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public final void generateBaselineFromCSVFileContainsInvalidRecords()
|
public final void generateBaselineFromCSVFileContainsInvalidRecords()
|
||||||
throws IOException, ParseException {
|
throws IOException, ParseException {
|
||||||
Exception expectedEx = null;
|
Exception expectedEx = null;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user