From 3852bd7c6ecef3d72c6f89b36077f4feaf15f87a Mon Sep 17 00:00:00 2001
From: Cyrus <24922493+cyrus-dev@users.noreply.github.com>
Date: Fri, 25 Sep 2020 11:19:50 -0400
Subject: [PATCH 1/3] This code push removes a large switch/case statement
 structure and refactors it into a json file call.  This follows the similar
 implementation of the Component Class but for UEFI vendor names.

---
 .../attributes/ComponentClass.java            |  52 +-
 .../java/hirs/tpm/eventlog/uefi/UefiGuid.java | 518 +++++-------------
 .../src/main/java/hirs/utils/JsonUtils.java   | 101 ++++
 .../src/main/resources/vendor-table.json      | 233 ++++++++
 .../tpm/eventlog/uefi/UefiProcessingTest.java | 266 ++++-----
 .../tcgeventlog/uefi/vendor-table.json        | 233 ++++++++
 package/rpm/HIRS.spec                         |   2 +
 7 files changed, 867 insertions(+), 538 deletions(-)
 create mode 100644 HIRS_Utils/src/main/java/hirs/utils/JsonUtils.java
 create mode 100644 HIRS_Utils/src/main/resources/vendor-table.json
 create mode 100644 HIRS_Utils/src/test/resources/tcgeventlog/uefi/vendor-table.json

diff --git a/HIRS_Utils/src/main/java/hirs/data/persist/certificate/attributes/ComponentClass.java b/HIRS_Utils/src/main/java/hirs/data/persist/certificate/attributes/ComponentClass.java
index 287fbbca..491daf97 100644
--- a/HIRS_Utils/src/main/java/hirs/data/persist/certificate/attributes/ComponentClass.java
+++ b/HIRS_Utils/src/main/java/hirs/data/persist/certificate/attributes/ComponentClass.java
@@ -1,18 +1,10 @@
 package hirs.data.persist.certificate.attributes;
 
-import com.eclipsesource.json.Json;
 import com.eclipsesource.json.JsonObject;
 import com.eclipsesource.json.JsonObject.Member;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import hirs.utils.JsonUtils;
 
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
 import java.nio.file.FileSystems;
-import java.nio.file.Files;
 import java.nio.file.Path;
 
 /**
@@ -33,7 +25,6 @@ import java.nio.file.Path;
  */
 public class ComponentClass {
 
-    private static final Logger LOGGER = LoggerFactory.getLogger(ComponentClass.class);
     private static final Path JSON_PATH = FileSystems.getDefault()
             .getPath("/opt", "hirs", "default-properties", "component-class.json");
     private static final String OTHER_STRING = "Other";
@@ -120,7 +111,7 @@ public class ComponentClass {
                 // Number Format Exception
                 break;
             default:
-                getCategory(getJsonObject(componentClassPath));
+                getCategory(JsonUtils.getSpecificJsonObject(componentClassPath, "Components"));
                 break;
         }
     }
@@ -161,38 +152,11 @@ public class ComponentClass {
         return String.format("%s - %s", category, component);
     }
 
-    /**
-     * Getter for the JSON Object that is associated with the component value
-     * mapped in the associated JSON file.
-     *
-     * @return a JSON Object
-     */
-    private JsonObject getJsonObject(final Path componentClassPath) {
-        // find the file and load it
-        JsonObject components = null;
-
-        if (Files.notExists(componentClassPath)) {
-            LOGGER.info(String.format("No file found at %s.", componentClassPath.toString()));
-        } else {
-            try {
-                InputStream inputStream = new FileInputStream(componentClassPath.toString());
-                JsonObject componentFile = Json.parse(new InputStreamReader(inputStream,
-                        StandardCharsets.UTF_8)).asObject();
-                components = componentFile.get("Components").asObject();
-            } catch (IOException ex) {
-                // add log file thing here indication issue with JSON File
-                components = null;
-            }
-        }
-
-        return components;
-    }
-
     /**
      * Getter for the Category mapped to the associated value in.
      *
      * @param categories a JSON object associated with mapped categories in file
-     * @componentIndentifier.
+     * {}@link componentIdentifier}.
      */
     private void getCategory(final JsonObject categories) {
         int componentID;
@@ -252,19 +216,19 @@ public class ComponentClass {
      * @return the int representation of the component
      */
     private static int getComponentIntValue(final String component) {
-        int componetValue = ERROR;
+        int componentValue = ERROR;
 
         if (component != null) {
             try {
                 if (component.contains("x")) {
-                    componetValue = Integer.decode(component);
+                    componentValue = Integer.decode(component);
                 } else {
                     if (component.contains("#")) {
-                        componetValue = Integer.valueOf(
+                        componentValue = Integer.valueOf(
                                 component.replace("#", ""),
                                 Short.SIZE);
                     } else {
-                        componetValue = Integer.valueOf(
+                        componentValue = Integer.valueOf(
                                 component, Short.SIZE);
                     }
                 }
@@ -273,6 +237,6 @@ public class ComponentClass {
             }
         }
 
-        return componetValue;
+        return componentValue;
     }
 }
diff --git a/HIRS_Utils/src/main/java/hirs/tpm/eventlog/uefi/UefiGuid.java b/HIRS_Utils/src/main/java/hirs/tpm/eventlog/uefi/UefiGuid.java
index b7ab30d3..c67031ac 100644
--- a/HIRS_Utils/src/main/java/hirs/tpm/eventlog/uefi/UefiGuid.java
+++ b/HIRS_Utils/src/main/java/hirs/tpm/eventlog/uefi/UefiGuid.java
@@ -1,405 +1,179 @@
 package hirs.tpm.eventlog.uefi;
 
 import java.math.BigInteger;
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
 import java.util.UUID;
 
+import com.eclipsesource.json.JsonObject;
 import hirs.utils.HexUtils;
+import hirs.utils.JsonUtils;
 
 /**
  * Class to process GUID per the UEFI specification
  * GUIDs are essentially UUID as defined by RFC-1422, however Microsoft refers to GUIDS.
  */
 public class UefiGuid {
-    /** number of 100ns intervals since UUID Epoch. */
-    private static final long UUID_EPOCH_INTERVALS =  0x01b21dd213814000L;
-    /** used for conversion to uuid time. */
+    /**
+     * number of 100ns intervals since UUID Epoch.
+     */
+    private static final long UUID_EPOCH_INTERVALS = 0x01b21dd213814000L;
+    /**
+     * used for conversion to uuid time.
+     */
     private static final int UUID_EPOCH_DIVISOR = 10000;
-    /** guid byte array. */
-    private byte[] guid = new byte[UefiConstants.SIZE_16 ];
-    /** UUID object. */
+
+    private static final Path JSON_PATH = FileSystems.getDefault().getPath("/opt",
+            "hirs", "default-properties", "vendor-table.json");
+    private JsonObject uefiVendorRef;
+    /**
+     * guid byte array.
+     */
+    private byte[] guid;
+    /**
+     * UUID object.
+     */
     private UUID uuid;
 
     /**
      * UefiGUID constructor.
+     *
      * @param guidBytes byte array holding a valid guid.
      */
     public UefiGuid(final byte[] guidBytes) {
-      System.arraycopy(guidBytes, 0, guid, 0, UefiConstants.SIZE_16);
-      uuid = processGuid(guidBytes);
+        guid = new byte[UefiConstants.SIZE_16];
+        System.arraycopy(guidBytes, 0, guid, 0, UefiConstants.SIZE_16);
+        uuid = processGuid(guidBytes);
+        uefiVendorRef = JsonUtils.getSpecificJsonObject(JSON_PATH, "VendorTable");
     }
 
- /** Converts a GUID with a byte array to a RFC-1422 UUID object.
-  * Assumes a MS format and converts to Big Endian format used by most others , including Linux
-  * Matched uuids found in /sys/firmware/efi/efivars on Centos 7.
-  */
-private static UUID processGuid(final byte[] guid) {
-   byte[] msb1 = new byte[UefiConstants.SIZE_4];
-   System.arraycopy(guid, 0, msb1, 0, UefiConstants.SIZE_4);
-   byte[] msb1r = HexUtils.leReverseByte(msb1);
-   byte[] msb2 = new byte[UefiConstants.SIZE_4];
-   System.arraycopy(guid, UefiConstants.OFFSET_4, msb2, 0, UefiConstants.SIZE_4);
-   byte[] msb2r = HexUtils.leReverseByte(msb2);
-   byte[] msb2rs = new byte[UefiConstants.SIZE_4];
-   System.arraycopy(msb2r, 0, msb2rs, UefiConstants.OFFSET_2, UefiConstants.SIZE_2);
-   System.arraycopy(msb2r, UefiConstants.OFFSET_2, msb2rs, 0, UefiConstants.SIZE_2);
-   byte[] msbt = new byte[UefiConstants.SIZE_8];
-   System.arraycopy(msb1r, 0, msbt, 0, UefiConstants.SIZE_4);
-   System.arraycopy(msb2rs, 0, msbt, UefiConstants.OFFSET_4, UefiConstants.SIZE_4);
-   long msbl = new BigInteger(msbt).longValue();
-   byte[] lsb = new byte[UefiConstants.SIZE_8];
-   System.arraycopy(guid, UefiConstants.OFFSET_8, lsb, 0, UefiConstants.SIZE_8);
-   long lsbl = new BigInteger(lsb).longValue();
-   UUID tmpUuid = new UUID(msbl, lsbl);
-   return tmpUuid;
- }
+    /**
+     * Converts a GUID with a byte array to a RFC-1422 UUID object.
+     * Assumes a MS format and converts to Big Endian format used by most others , including Linux
+     * Matched uuids found in /sys/firmware/efi/efivars on Centos 7.
+     */
+    private static UUID processGuid(final byte[] guid) {
+        byte[] msb1 = new byte[UefiConstants.SIZE_4];
+        System.arraycopy(guid, 0, msb1, 0, UefiConstants.SIZE_4);
+        byte[] msb1r = HexUtils.leReverseByte(msb1);
+        byte[] msb2 = new byte[UefiConstants.SIZE_4];
+        System.arraycopy(guid, UefiConstants.OFFSET_4, msb2, 0, UefiConstants.SIZE_4);
+        byte[] msb2r = HexUtils.leReverseByte(msb2);
+        byte[] msb2rs = new byte[UefiConstants.SIZE_4];
+        System.arraycopy(msb2r, 0, msb2rs, UefiConstants.OFFSET_2, UefiConstants.SIZE_2);
+        System.arraycopy(msb2r, UefiConstants.OFFSET_2, msb2rs, 0, UefiConstants.SIZE_2);
+        byte[] msbt = new byte[UefiConstants.SIZE_8];
+        System.arraycopy(msb1r, 0, msbt, 0, UefiConstants.SIZE_4);
+        System.arraycopy(msb2rs, 0, msbt, UefiConstants.OFFSET_4, UefiConstants.SIZE_4);
+        long msbl = new BigInteger(msbt).longValue();
+        byte[] lsb = new byte[UefiConstants.SIZE_8];
+        System.arraycopy(guid, UefiConstants.OFFSET_8, lsb, 0, UefiConstants.SIZE_8);
+        long lsbl = new BigInteger(lsb).longValue();
+        return new UUID(msbl, lsbl);
+    }
 
-/**
- * Returns a String that represents a specification name referenced by the EFI_CONFIGURATION_TABLE
- * VendorGUID field.  For structure of EFI_CONFIGURATION_TABLE type, the UEFI specification
- * has set of GUIDs published that represent standards that one can find further information on
- * the configuration table being referenced.
- * Refer to section 4.6 of UEFI spec v 2.8, page 101.
- *
- * @return A String of major UUID parameters
- */
-@SuppressWarnings("checkstyle:methodlength")
-public String getVendorTableReference() {
+    /**
+     * Returns the standard GUID length.
+     *
+     * @return guid length
+     */
+    public static int getGuidLength() {
+        return UefiConstants.SIZE_16;
+    }
 
- String reference = "";
+    /**
+     * Returns a String that represents a specification name referenced by the
+     * EFI_CONFIGURATION_TABLE VendorGUID field.  For structure of
+     * EFI_CONFIGURATION_TABLE type, the UEFI specification has set of GUIDs
+     * published that represent standards that one can find further information on
+     * the configuration table being referenced.
+     * Refer to section 4.6 of UEFI spec v 2.8, page 101.
+     *
+     * @return A String of major UUID parameters
+     */
+    public String getVendorTableReference() {
+        return getVendorTableReference(uuid.toString().toLowerCase());
+    }
 
- switch (uuid.toString().toLowerCase()) {
- // UUIDS listed in the UEFI Specification
- case "eb9d2d30-2d88-11d3-9a16-0090273fc14d": reference = "ACPI_TABLE_GUID"; break;
- case "eb9d2d32-2d88-11d3-9a16-0090273fc14d": reference = "SAL_SYSTEM_TABLE_GUID"; break;
- case "eb9d2d31-2d88-11d3-9a16-0090273fc14d": reference = "SMBIOS_TABLE_GUID"; break;
- case "f2fd1544-9794-4a2c-992e-e5bbcf20e394": reference = "SMBIOS3_TABLE_GUID"; break;
- case "eb9d2d2f-2d88-11d3-9a16-0090273fc14d": reference = "MPS_TABLE_GUID"; break;
- case "8868e871-e4f1-11d3-bc22-0080c73c8881": reference = "EFI_ACPI_TABLE_GUID"; break;
- case "87367f87-1119-41ce-aaec-8be01101f558":
-                reference = "EFI_JSON_CONFIG_DATA_TABLE_GUID "; break;
- case "35e7a725-8dd2-4cac-8011-33cda8109056":
-                reference = "EFI_JSON_CAPSULE_DATA_TABLE_GUID"; break;
- case "dbc461c3-b3de-422a-b9b4-9886fd49a1e5":
-                reference = "EFI_JSON_CAPSULE_RESULT_TABLE_GUID"; break;
- case "77ab535a-45fc-624b-5560-f7b281d1f96e": reference = "EFI_VIRTUAL_DISK_GUID"; break;
- case "3d5abd30-4175-87Ce-6d64-d2ADe523C4bb": reference = "EFI_VIRTUAL_CD_GUID"; break;
- case "5Cea02c9-4d07-69d3-269f-4496Fbe096f9":
-                reference = "EFI_PERSISTENT_VIRTUAL_DISK_GUID"; break;
- case "08018188-42cd-bb48-100f-5387D53ded3d": reference = "EFI_PERSISTENT_VIRTUAL_CD_GUID"; break;
+    /**
+     * Returns a String that represents a specification name referenced by the
+     * EFI_CONFIGURATION_TABLE VendorGUID field.  For structure of
+     * EFI_CONFIGURATION_TABLE type, the UEFI specification has set of GUIDs
+     * published that represent standards that one can find further
+     * information on the configuration table being referenced.
+     * Refer to section 4.6 of UEFI spec v 2.8, page 101.
+     *
+     * @param lookupValue specific value to look up
+     * @return A String of major UUID parameters
+     */
+    public String getVendorTableReference(final String lookupValue) {
+        return uefiVendorRef.getString(lookupValue, "Unknown GUID reference");
+    }
 
- // DXE GUIds from https://github.com/linuxboot/linuxboot/blob/master/boards/qemu/image-files.txt
- case "fc510ee7-ffdc-11d4-bd41-0080c73c8881": reference = "DXE Apriori-FVRECOVERY"; break;
- case "1b45cc0a-156a-428a-62af-49864da0e6e6": reference = "PEI Apriori file name"; break;
- case "80cf7257-87ab-47f9-a3fe-d50b76d89541": reference = "PcdDxe"; break;
- case "b601f8c4-43b7-4784-95b1-f4226cb40cee": reference = "RuntimeDxe"; break;
- case "f80697e9-7fd6-4665-8646-88e33ef71dfc": reference = "SecurityStubDxe"; break;
- case "1a1e4886-9517-440e-9fde-3be44cee2136": reference = "CpuDxe"; break;
- case "11a6edf6-a9be-426d-a6cc-b22fe51d9224": reference = "PciHotPlugInitDxe"; break;
- case "128fb770-5e79-4176-9e51-9bb268a17dd1": reference = "PciHostBridgeDxe"; break;
- case "93b80004-9fb3-11d4-9a3a-0090273fc14d": reference = "PCI Bus Driver - PciBusDxe"; break;
- case "9b680fce-ad6b-4f3a-b60b-f59899003443": reference = "DevicePathDxe"; break;
- case "f9d88642-0737-49bc-81b5-6889cd57d9ea": reference = "SmbiosDxe"; break;
- case "4110465d-5ff3-4f4b-b580-24ed0d06747a": reference = "SmbiosPlatformDxe"; break;
- case "9622e42c-8e38-4a08-9e8f-54f784652f6b": reference = "AcpiTableDxe"; break;
- case "49970331-e3fa-4637-9abc-3b7868676970": reference = "AcpiPlatform"; break;
- case "7e374e25-8e01-4fee-87f2-390c23c606cd": reference = "ACPI data"; break;
- case "bdce85bb-fbaa-4f4e-9264-501a2c249581": reference = "S3SaveStateDxe"; break;
- case "d9dcc5df-4007-435e-9098-8970935504b2": reference = "PlatformDxe"; break;
- case "8657015b-ea43-440d-949a-af3be365c0fc": reference = "IoMmuDxe"; break;
- case "cbd2e4d5-7068-4ff5-b462-9822b4ad8d60": reference = "VariableRuntimeDxe"; break;
+    /**
+     * Returns a string of the entity that the UUID represents.
+     * Contains a Vendor String lookup on the UUID.
+     *
+     * @return UUID description.
+     */
+    public String toString() {
+        return String.format("%s : %s", uuid.toString(), getVendorTableReference());
+    }
 
- //PIWG Dxe driver Files (FvFile)
- // from https://bugs.launchpad.net/ubuntu/+source/edk2/+bug/1272444
- case "70d57d67-7f05-494d-a014-b75d7345b700": reference = "Storage Security Command Driver"; break;
- case "3acc966d-8e33-45c6-b4fe-62724bcd15a9": reference = "AHCI Bus Driver"; break;
- case "67bbc344-84bc-4e5c-b4df-f5e4a00e1f3a": reference = "Host Controller Driver"; break;
- case "86edaae5-073c-4c89-b949-8984ac8a55f3": reference = "MMC/SD Media Device Driver"; break;
- case "9e863906-a40f-4875-977F-5b93ff237fc6": reference = "Serial Terminal Driver"; break;
- case "a6cc6bc8-2ada-46C3-bba4-e99672CC9530": reference = "PCI Serial Driver"; break;
- case "69fd8e47-a161-4550-b01a-5594ceb2b2b2": reference = "PCI IDE/ATAPI Bus Driver"; break;
- case "51ccf399-4fdf-4e55-a45b-e123f84d456a":
-               reference = "Platform Console Management Driver"; break;
- case "6b38f7b4-ad98-40e9-9093-aca2b5a253c4": reference = "Generic Disk I/O Driver"; break;
- case "2d2e62cf-9ecf-43b7-8219-94e7fC713dfe": reference = "Usb Keyboard Driver"; break;
- case "9fb4b4a7-42C0-4bcd-8540-9bcc6711f83e": reference = "Usb Mass Storage Driver"; break;
- case "e3752948-b9a1-4770-90c4-df41c38986be": reference = "QEMU Video Driver"; break;
- case "240612B7-a063-11d4-9a3a-0090273fc14d": reference = "Usb Bus Driver"; break;
- case "bdfe430e-8F2a-4db0-9991-6f856594777e": reference = "Usb Ehci Driver"; break;
- case "2fb92efa-2ee0-4bae-9eB6-7464125E1EF7": reference = "Usb Ehci Driver"; break;
- case "a92cdb4b-82f1-4e0b-a516-8a655d371524": reference = "Virtio Network Driver"; break;
- case "4579b72d-7ec4-4dd4-8486-083c86b182a7": reference = "iSCSI Driver"; break;
- case "3b1deaB5-c75d-442e-9238-8e2ffb62b0bb": reference = "UEFI PXE Base Code Driver"; break;
- case "6b6963ab-906d-4a65-a7ca-bd40e5d6af2b": reference = "UDP Network Service Driver"; break;
- case "6d6963ab-906d-4a65-a7ca-bd40e5d6af4d": reference = "Tcp Network Service Driver"; break;
- case "dc3641b8-2fa8-4ed3-bc1f-f9962a03454b": reference = "MTFTP4 Network Service Driver"; break;
- case "9fb1a1f3-3b71-4324-b39a-745cbb015fff": reference = "IP4 Network Service Driver"; break;
- case "26841bde-920a-4e7a-9Fbe-637f477143a6":
-                reference = "IP4 CONFIG Network Service Driver"; break;
- case "94734718-0bbc-47fb-96a5-ee7a5ae6a2ad": reference = "DHCP Protocol Driver"; break;
- case "529d3f93-e8e9-4e73-b1e1-bdf6a9d50113": reference = "ARP Network Service Driver "; break;
- case "e4f61863-fe2c-4b56-a8d4-08519bc439df": reference = "VLAN Configuration Driver"; break;
- case "a2f436ea-a127-4ef8-957c-8048606ff670": reference = "Simple Network Protocol Driver"; break;
- case "961578fe-b6b7-44c3-af35-6bc705cd2b1f": reference = "FAT File System Driver"; break;
- case "0abd8284-6da3-4616-971a-83a5148067ba": reference = "ISA Floppy Driver"; break;
- case "3dc82376-637b-40a6-a8fc-a565417f2c38": reference = "PS/2 Keyboard Driver"; break;
- case "93b80003-9fb3-11d4-9a3a-0090273fc14d": reference = "ISA Serial Driver"; break;
- case "240612b5-a063-11d4-9a3a-0090273fc14a": reference = "ISA Bus Driver"; break;
- case "99549f44-49bb-4820-b9d2-901329412d67": reference = "IDE Controller Init Driver"; break;
- case "0a66e322-3740-4cce-ad62-bd172cecca35": reference = "Scsi Disk Driver"; break;
- case "1fa1f39e-feff-4aae-bd7b-38a070a3b609": reference = "Partition Driver"; break;
- case "9e863906-a40f-4875-977f-5b93ff237fc6": reference = "Serial Terminal Driver"; break;
- case "cccb0c28-4b24-11d5-9a5a-0090273fc14d": reference = "Graphics Console Driver"; break;
- case "408edcec-cf6d-477c-a5a8-b4844e3de281": reference = "Console Splitter Driver"; break;
- case "fab5d4f4-83c0-4aaf-8480-442d11df6cea": reference = "Virtio SCSI Host Driver"; break;
- case "11d92dfb-3Ca9-4f93-ba2e-4780ed3e03b5": reference = "Virtio Block Driver"; break;
- case "33cb97af-6c33-4c42-986b-07581fa366d4": reference = "Block MMIO to Block IO Driver"; break;
- // PIWG Volumes (Fv)
- case "a881d567-6cb0-4eee-8435-2e72d33e45B5": reference = "PIWG Default Volume"; break;
+    /**
+     * Returns a string of the entity that the UUID represents.
+     * Does not contain a vendor lookup on the UUID.
+     *
+     * @return UUID description.
+     */
+    public String toStringNoLookup() {
+        return uuid.toString();
+    }
 
- // UEFI UUIDS for Certificates
- case "3c5766e8-269c-4e34-aa14-ed776e85b3b6":reference = "EFI_CERT_RSA2048_GUID"; break;
- case "e2b36190-879b-4a3d-ad8d-f2e7bba32784":reference = "EFI_CERT_RSA2048_SHA256_GUID"; break;
- case "c1c41626-504c-4092-aca9-41f936934328":reference = "EFI_CERT_SHA256_GUID"; break;
- case "826ca512-cf10-4ac9-b187-be01496631bd":reference = "EFI_CERT_SHA1_GUID"; break;
- case "67f8444f-8743-48f1-a328-1eaab8736080":reference = "EFI_CERT_RSA2048_SHA1_GUID"; break;
- case "a5c059a1-94e4-4aa7-87b5-ab155c2bf072":reference = "EFI_CERT_X509_GUID"; break;
- case "0b6e5233-a65c-44c9-9407-d9ab83bfc8bd":reference = "EFI_CERT_SHA224_GUID"; break;
- case "ff3e5307-9fd0-48c9-85f1-8ad56c701e01":reference = "EFI_CERT_SHA384_GUID"; break;
- case "093e0fae-a6c4-4f50-9f1b-d41e2b89c19a":reference = "EFI_CERT_SHA512_GUID"; break;
- case "3bd2a492-96c0-4079-b420-fcf98ef103ed":reference = "EFI_CERT_X509_SHA256_GUID"; break;
- case "7076876e-80c2-4ee6-aad2-28b349a6865b":reference = "EFI_CERT_X509_SHA384_GUID"; break;
- case "446dbf63-2502-4cda-bcfa-2465d2b0fe9d":reference = "EFI_CERT_X509_SHA512_GUID"; break;
- case "a7717414-c616-4977-9420-844712a735bf":
-                reference = "EFI_CERT_TYPE_RSA2048_SHA256_GUID"; break;
- // UEFI defined variables
- case "452e8ced-dfff-4b8c-ae01-5118862e682c":
-                reference = "EFI_CERT_EXTERNAL_MANAGEMENT_GUID"; break;
- case "d719b2cb-3d3a-4596-a3bc-dad00e67656f":reference = "EFI_IMAGE_SECURITY_DATABASE_GUID"; break;
- case "4aafd29d-68df-49ee-8aa9-347d375665a7":reference = "EFI_CERT_TYPE_PKCS7_GUID"; break;
- case "c12a7328-f81f-11d2-ba4b-00a0c93ec93b" :reference = "EFI System Partition"; break;
- case "024DEE41-33E7-11D3-9D69-0008C781F39F" :
-                reference = "Partition containing a legacy MBR"; break;
- // RHBoot UEFI Application UUIDs
- // From listed in RHBoot (RHShim) https://github.com/rhboot/efivar/blob/master/src/guids.txt
- case "0abba7dc-e516-4167-bbf5-4d9d1c739416":reference = "fwupdate:"; break;
- case "3b8c8162-188c-46a4-aec9-be43f1d65697":reference = "ux_capsule"; break;
- case "605dab50-e046-4300-abb6-3dd810dd8b23":reference = "RH_Shim"; break;
- case "8be4df61-93ca-11d2-aa0d-00e098032b8c":reference = "EFI_Global_Variable"; break;
- case "91376aff-cba6-42be-949d-06fde81128e8":reference = "GRUB"; break;
+    /**
+     * Returns a string of the entity that the UUID represents.
+     * Does not contain a vendor lookup on the UUID.
+     *
+     * @param guid byte array holding the guid data.
+     * @return true if the UUID has a valid structure.
+     */
+    public static boolean isValidUUID(final byte[] guid) {
+        boolean valid = false;
+        UUID tmpUuid = processGuid(guid);
+        if (tmpUuid.toString().length() != 0) {
+            valid = true;
+        }
+        return valid;
+    }
 
- // Partition Table GUIDs
- case "0fc63daf-8483-4772-8e79-3d69d8477de4":reference = "Linux filesystem data"; break;
- case "e6d6d379-f507-44c2-a23c-238f2a3df928":
-                reference = "Logical Volume Manager (LVM) partition"; break;
- case "4f68bce3-e8cd-4db1-96e7-fbcaf984b709":reference = "Root partition (x86-64)"; break;
- case "a19d880f-05fc-4d3b-a006-743f0f84911e":reference = "RAID partition "; break;
- case "933ac7e1-2eb4-4f13-b844-0e14e2aef915":reference = "/home partition[ (x86-64)"; break;
- case "ebd0a0a2-b9e5-4433-87c0-68b6b72699c7":reference = "GPT Basic data partition"; break;
+    /**
+     * Checks to see if the uuid is the test or Empty UUID ("00000000-0000-0000-0000-000000000000").
+     *
+     * @return true if the uuid is the Empty UUID, false if not
+     */
+    public boolean isEmptyUUID() {
+        return uuid.toString().equals("00000000-0000-0000-0000-000000000000");
+    }
 
- // RHBoot Lenovo specific UUIDS
- case "3cc24e96-22c7-41d8-8863-8e39dcdcc2cf":reference = "lenovo"; break;
- case "82988420-7467-4490-9059-feb448dd1963":reference = "lenovo_me_config"; break;
- case "3f7e615b-0d45-4f80-88dc-26b234958560":reference = "lenovo_diag"; break;
- case "665d3f60-ad3e-4cad-8e26-db46eee9f1b5":reference = "lenovo_rescue"; break;
- case "721c8b66-426c-4e86-8e99-3457c46ab0b9":reference = "lenovo_setup"; break;
- case "f46ee6f4-4785-43a3-923d-7f786c3c8479":reference = "lenovo_startup_interrupt"; break;
- case "126a762d-5758-4fca-8531-201a7f57f850":reference = "lenovo_boot_menu"; break;
- case "a7d8d9a6-6ab0-4aeb-ad9d-163e59a7a380":reference = "lenovo_diag_splash"; break;
- // Company UUIDs (From Internet searches)
- case "77fa9abd-0359-4d32-bd60-28f4e78f784b":reference = "Microsoft Inc."; break;
- case "f5a96b31-dba0-4faa-a42a-7a0c9832768e":reference = "HPE Inc."; break;
- case "2879c886-57ee-45cc-b126-f92f24f906b9":reference = "SUSE Certificate"; break;
- case "70564dce-9afc-4ee3-85fc-949649d7e45c":reference = "Dell Inc."; break;
+    /**
+     * Checks to see if the uuid is the Empty UUID or an unknown.
+     *
+     * @return true if the uuid is the Empty UUID, false if not
+     */
+    public boolean isUnknownUUID() {
+        if (getVendorTableReference().equals("Unknown GUID reference")) {
+            return true;
+        }
+        return false;
+    }
 
- // Intel GUIDS
- case "bfcc0833-2125-42d1-8c6d-13821e23c078":reference = "Intel(R) Desktop Boards"; break;
- case "80b3ad5b-9880-4af9-a645-e56a68be89de":reference = "Intel(R) CISD FW Update"; break;
-
-// Microsoft GUIDS
- case "e3c9e316-0b5c-4db8-817d-f92df00215ae":
-                reference = "Microsoft Reserved Partition (MSR)"; break;
- case "5808c8aa-7e8f-42e0-85d2-e1e90434cfb3":
-                reference = "Logical Disk Manager (LDM) metadata partition "; break;
- case "af9b60a0-1431-4f62-bc68-3311714a69ad":
-                reference = "Logical Disk Manager data partition"; break;
- case "de94bba4-06d1-4d40-a16a-bfd50179d6ac":reference = "Windows Recovery Environment"; break;
- case "9f25ee7a-e7b7-11db-94b5-f7e662935912":reference = "Windows Boot Loader"; break;
-
- // Linux specific GUIDS
- case "0fc63daf-8483-4772-8e79-3d69d8477de":reference = "Linux filesystem data"; break;
- case "44479540-f297-41b2-9af7-d131d5f0458a":reference = "Root partition (x86)"; break;
- case "69dad710-2ce4-4e3c-b16c-21a1d49abed3":reference = "Root partition (32-bit ARM)"; break;
- case "b921b045-1df0-41c3-af44-4c6f280d3fae":
-                reference = "Root partition (64-bit ARM/AArch64)"; break;
- case "0657fd6d-a4ab-43c4-84e5-0933c84b4f4f":reference = "Swap partition"; break;
- case "3b8f8425-20e0-4f3b-907f-1a25a76f98e8":reference = "/srv (server data) partition"; break;
- case "7ffec5c9-2d00-49b7-8941-3ea10a5586b7":reference = "Plain dm-crypt partitiont"; break;
- case "ca7d7ccb-63ed-4c53-861c-1742536059cc":reference = "LUKS partition"; break;
-
- // Linux Boot GUIDS
- // https://github.com/linuxboot/linuxboot/blob/master/boards/s2600wf/vendor-files.txt
- case "9cfd802c-09a1-43d6-8217-aa49c1f90d2c":
-                reference = "Intel Management Engine BIOS Extension (Mebx)"; break;
- case "b62efbbb-3923-4cb9-a6e8-db818e828a80":
-                reference = "Intel Management Engine BIOS Extension (Mebx) Setup Browser"; break;
- case "9ce4325e-003e-11e3-b582-b8ac6f199a57":
-                reference = "Non-Volatile Dual In-line Memory Module (NVDIMM) Driver"; break;
- case "ea9de6d5-7839-46f7-9e63-4de8b00e2e5d":
-                reference = "NVM DIMM Human Interface Infrastructure (HII)"; break;
- case "56a1b86f-0d4a-485d-87de-ad0eba1c8c2a":reference = "IBM C Video Gop"; break;
- case "a1f436ea-a127-4ef8-957c-8048606ff670":reference = "SnpDxe"; break;
- case "a210f973-229d-4f4d-aa37-9895e6c9eaba":reference = "DpcDxe"; break;
- case "025bbfc7-e6a9-4b8b-82ad-6815a1aeaf4a":
-                reference = "MNP Network Service Driver - MnpDxe"; break;
- case "b44b2005-42bc-41c9-80af-abd7dc7d6923":reference = "RSTesSATAEFI"; break;
- case "15e1e31a-9f9d-4c84-82fb-1a707fc0f63b":reference = "RSTeSATAEFI"; break;
- case "2cc25173-bd9f-4c89-89cc-29256a3fd9c3":reference = "RSTesSATALegacy"; break;
- case "bd5d4ca5-674f-4584-8cf9-ce4ea1f54dd1":reference = "RSTeSATALegacy"; break;
-
- //  WinNt GUIDs, add if they are still found in use
- //https://sourceforge.net/p/uefinotes/wiki/FV%20Sources/?version=3
- case "fc5c7020-1a48-4198-9be2-ead5abc8cf2f":reference = "BdsDxe"; break;
- case "d0893f05-b06d-4161-b947-9be9b85ac3a1":reference = "SnpNt32Dxe"; break;
- case "9b3ada4f-ae56-4c24-8Dea-f03b7558ae50":reference = "PcdPeim"; break;
- case "34c8c28F-b61c-45a2-8f2e-89e46becc63b":reference = "PeiVariable"; break;
- case "fe5cea76-4f72-49e8-986f-2cd899dffe5d":reference = "FaultTolerantWriteDxe"; break;
-
- // Linux Boot Image files
- // UEFI Platform Initialization (PI) specifications
- // Driver Execution Environment (DXE) Architectural protocols and platform modules
- //https://github.com/linuxboot/linuxboot/blob/master/boards/winterfell/image-files.txt
- case "5ae3f37e-4eae-41ae-8240-35465b5e81eb":reference = "CORE_DXE"; break;
- case "cbc59c4a-383a-41eb-a8ee-4498aea567e4":reference = "DXE Runtime"; break;
- case "3c1de39f-d207-408a-aacc-731cfb7f1dd7":reference = "DXE PciBus"; break;
- case "80e66e0a-ccd1-43fa-a7b1-2d5ee0f13910":reference = "DXE PciRootBridge"; break;
- case "9f3a0016-ae55-4288-829d-d22fd344c347":reference = "DXE AmiBoardInfo"; break;
- case "13ac6dd0-73d0-11d4-b06b-00aa00bd6de7":reference = "DXE EBC"; break;
- case "e03abadf-e536-4e88-b3a0-b77f78eb34fe":reference = "CPU DXE"; break;
- case "b7d19491-e55a-470d-8508-85a5dfa41974":reference = "SBDXE"; break;
- case "e23f86e1-056e-4888-b685-cfcd67c179d4":reference = "DXE SBRun"; break;
- case "e4ecd0b2-e277-4f2b-becb-e4d75c9a812e":reference = "NBDXE"; break;
- case "5ad34ba6-f024-2149-52e4-da0398e2bb9" :reference = "DXE Services Table"; break;
- // ACPI configuration and tables
- case "750890a6-7acf-4f4f-81bd-b400c2bea95a":reference = "AcpiModeEnable"; break;
- case "d4c05cd1-5eae-431d-a095-13a9e5822045":reference = "MPST"; break;
- case "db93cb2c-bf1c-431a-abc8-8737bc2afc1f":reference = "PRAD-ACPI-table"; break;
- case "3bc5b795-a4e0-4d56-9321-316d18a7aefe":reference = "PRAD"; break;
- case "16d0a23e-c09c-407d-a14a-ad058fdd0ca1":reference = "ACPI"; break;
- case "26a2481e-4424-46a2-9943-cc4039ead8f8":reference = "S3Save"; break;
- case "efd652cc-0e99-40f0-96c0-e08c089070fc":reference = "S3Restore"; break;
- case "8c783970-f02a-4a4d-af09-8797a51eec8d":reference = "PowerManagement"; break;
- case "299141bb-211a-48a5-92c0-6f9a0a3a006e":reference = "PowerManagement-ACPI-table"; break;
- case "2df10014-cf21-4280-8c3f-e539b8ee5150":reference = "PpmPolicyInitDxe"; break;
- case "4b680e2d-0d63-4f62-b930-7ae995b9b3a3":reference = "SmBusDxe"; break;
- // SMM handlers
- case "4a37320b-3fb3-4365-9730-9e89c600395d":reference = "SmmDispatcher"; break;
- case "753630c9-fae5-47a9-bbbf-88d621cd7282":reference = "SmmChildDispatcher"; break;
- case "be216ba8-38c4-4535-a6ca-5dca5b43addf":reference = "SmiVariable"; break;
- case "a56897a1-a77f-4600-84db-22b0a801fa9a":reference = "SmmRuntime"; break;
- case "d2596f82-f0e1-49fa-95bc-62012c795728":reference = "SmmBase Data"; break;
- case "69009842-63f2-43db-964b-efad1c39ec85":reference = "SmmBase Data"; break;
- case "d0632c90-afd7-4492-b186-257c63143c61":reference = "SmmBase"; break;
- case "7e2d983f-f703-4a29-9761-77b51f5354ed":reference = "SmmCommunicate"; break;
- // CMOS and NVRAM handlers
- case "6869c5b3-ac8d-4973-8b37-e354dbf34add":reference = "CmosManagerSmm"; break;
- case "842a454a-75e5-408b-8b1c-36420e4e3f21":reference = "NvramSmi"; break;
- case "5446c293-339b-47cd-b719-585de39408cc":reference = "PostReport"; break;
- case "71ca9ca1-325d-4bfe-afa3-2ec5c94a8680":reference = "DmAcpi"; break;
- case "cef68c66-06ab-4fb3-a3ed-5ffa885b5725":reference = "SMBiosBoard"; break;
- case "b13edd38-684c-41ed-a305-d7b7e32497df":reference = "SMBios64"; break;
- case "ded7956d-7e20-4f20-91a1-190439b04d5b":reference = "SmbiosGetFlashData64"; break;
- case "daf4bf89-ce71-4917-b522-c89d32fbc59f":reference = "SmbiosStaticData"; break;
- // Apple GUIDS
- case "48465300-0000-11aa-aa11-00306543ecac":
-                reference = "Apple Hierarchical File System Plus (HFS+) partition "; break;
- case "7c3457ef-0000-11aa-aa11-00306543ecac":reference = "Apple APFS container"; break;
- case "55465300-0000-11aa-aa11-00306543ecac":reference = "Apple UFS container"; break;
- case "52414944-0000-11aa-aa11-00306543ecac":reference = "Apple RAID partition"; break;
- case "4c616265-6c00-11aa-aa11-00306543ecac":reference = "Apple Label"; break;
- case "53746f72-6167-11aa-aa11-00306543ecac":reference = "Apple Core Storage Container"; break;
- case "6a898cc3-1dd2-11b2-99a6-080020736631":reference = "ZFS Partition"; break;
-
- // Chrome OS GUIDS
- case "2568845d-2332-4675-bc39-8fa5a4748d15":reference = "Chrome OS kernel "; break;
- case "3cb8e202-3b7e-47dd-8a3c-7ff2a13cfcec":reference = "Chrome OS rootfs "; break;
- case "2e0a753d-9e48-43b0-8337-b15192cb1b5e":reference = "Chrome OS future use "; break;
-
- // Android GUIDS
- case "fe3a2a5d-4f32-41a7-b725-accc3285a309":reference = "Android Bootloader"; break;
- case "114eaffe-1552-4022-b26e-9b053604cf84":reference = "Android Bootloader 2"; break;
- case "49a4d17f-93a3-45c1-a0de-f50b2ebe2599":reference = "Android Boot"; break;
- case "4177c722-9e92-4aab-8644-43502bfd5506":reference = "Android Recovery"; break;
- case "38f428e6-d326-425d-9140-6e0ea133647c":reference = "Android System"; break;
- case "bd59408b-4514-490d-bf12-9878d963f378":reference = "Android Config"; break;
- case "8f68cc74-c5e5-48da-be91-a0c8c15e9c80":reference = "Android Factory"; break;
- case "ac6d7924-eb71-4df8-b48d-e267b27148ff":reference = "Android OEM"; break;
-
- // MISC GUIDs
- case "5023b95c-db26-429b-a648-bd47664c8012":reference = "Built-in EFI Shell"; break;
- case "610a0202-d308-00c4-0000-000004300d06":reference = "Mystery UUID"; break;
- case "00000000-0000-0000-0000-000000000000":reference = "Empty UUID"; break;
-
- default: reference = "Unknown GUID reference";
-  }
- return reference;
- }
-
-/**
- * Returns a string of the entity that the UUID represents.
- * Contains a Vendor String lookup on the UUID.
- * @return UUID description.
- */
-public String toString() {
-   String guidinfo = "";
-   guidinfo = uuid.toString() + " : " + getVendorTableReference();
-   return guidinfo;
- }
-
-/**
- * Returns a string of the entity that the UUID represents.
- * Does not contain a vendor lookup on the UUID.
- * @return UUID description.
- */
-public String toStringNoLookup() {
- return  uuid.toString();
-}
-/**
- * Returns a string of the entity that the UUID represents.
- * Does not contain a vendor lookup on the UUID.
- * @param guid byte array holding the guid data.
- * @return true if the UUID has a valid structure.
- */
-public static boolean isValidUUID(final byte[] guid) {
- boolean valid = false;
- UUID tmpUuid = processGuid(guid);
- if (tmpUuid.toString().length() != 0)  {
-       valid = true;
-      }
-    return valid;
- }
-
-/**
- * Checks to see if the uuid is the test or Empty UUID ("00000000-0000-0000-0000-000000000000").
- * @return true if the uuid is the Empty UUID, false if not
- */
-public boolean isEmptyUUID() {
- return uuid.toString().equals("00000000-0000-0000-0000-000000000000");
- }
-
-/**
- * Checks to see if the uuid is the Empty UUID or an unknown.
- * @return true if the uuid is the Empty UUID, false if not
- */
-public boolean isUnknownUUID() {
-    return getVendorTableReference().equals("Unknown GUID reference");
- }
-
-/**
- * Retrieves the timestamp within a time based GUID.
- * @param uuid  uuid object
- * @return long representing the time stamp from the GUID
- */
-public long getTimeFromUUID(final UUID uuid) {
+    /**
+     * Retrieves the timestamp within a time based GUID.
+     *
+     * @param uuid uuid object
+     * @return long representing the time stamp from the GUID
+     */
+    public long getTimeFromUUID(final UUID uuid) {
         return (uuid.timestamp() - UUID_EPOCH_INTERVALS) / UUID_EPOCH_DIVISOR;
-   }
+    }
 }
diff --git a/HIRS_Utils/src/main/java/hirs/utils/JsonUtils.java b/HIRS_Utils/src/main/java/hirs/utils/JsonUtils.java
new file mode 100644
index 00000000..18cfd598
--- /dev/null
+++ b/HIRS_Utils/src/main/java/hirs/utils/JsonUtils.java
@@ -0,0 +1,101 @@
+package hirs.utils;
+
+import com.eclipsesource.json.Json;
+import com.eclipsesource.json.JsonObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+/**
+ * A utility class for common JSON operations using the {@link com.eclipsesource}
+ * library.
+ */
+public final class JsonUtils {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(JsonUtils.class);
+
+    private JsonUtils() { }
+
+    /**
+     * Getter for the JSON Object that is associated with the elementName value
+     * mapped in the associated JSON file.
+     * Default {@link java.nio.charset.Charset} is UTF 8
+     *
+     * @param jsonPath the object holding the location of the file to parse.
+     * @param elementName the specific object to pull from the file
+     * @return a JSON object
+     */
+    public static JsonObject getSpecificJsonObject(final Path jsonPath, final String elementName) {
+        // find the file and load it
+        return getSpecificJsonObject(jsonPath, elementName, StandardCharsets.UTF_8);
+    }
+
+    /**
+     * Getter for the JSON Object that is associated with the elementName value
+     * mapped in the associated JSON file.
+     * Default {@link java.nio.charset.Charset} is UTF 8
+     *
+     * @param jsonPath the object holding the location of the file to parse.
+     * @param elementName the specific object to pull from the file
+     * @param charset the character set to use
+     * @return a JSON object
+     */
+    public static JsonObject getSpecificJsonObject(final Path jsonPath,
+                                                   final String elementName,
+                                                   final Charset charset) {
+        // find the file and load it
+        JsonObject jsonObject = getJsonObject(jsonPath, charset);
+
+        if (jsonObject != null && jsonObject.get(elementName) != null) {
+            return jsonObject.get(elementName).asObject();
+        }
+
+        return new JsonObject();
+    }
+
+    /**
+     * Getter for the JSON Object that is mapped in the associated JSON file.
+     * Default {@link java.nio.charset.Charset} is UTF 8
+     *
+     * @param jsonPath the object holding the location of the file to parse.
+     * @return a JSON object
+     */
+    public static JsonObject getJsonObject(final Path jsonPath) {
+        return getJsonObject(jsonPath, StandardCharsets.UTF_8);
+    }
+
+    /**
+     * Getter for the JSON Object that is mapped in the associated JSON file.
+     *
+     * @param jsonPath the object holding the location of the file to parse.
+     * @param charset the character set to use
+     * @return a JSON object
+     */
+    public static JsonObject getJsonObject(final Path jsonPath, final Charset charset) {
+        // find the file and load it
+        JsonObject jsonObject = new JsonObject();
+
+        if (Files.notExists(jsonPath)) {
+            LOGGER.error(String.format("No file found at %s.", jsonPath.toString()));
+        } else {
+            try {
+                InputStream inputStream = new FileInputStream(jsonPath.toString());
+                jsonObject = Json.parse(new InputStreamReader(inputStream,
+                        charset)).asObject();
+            } catch (IOException ex) {
+                // add log file thing here indication issue with JSON File
+                jsonObject = new JsonObject();
+            }
+        }
+
+        return jsonObject;
+    }
+}
diff --git a/HIRS_Utils/src/main/resources/vendor-table.json b/HIRS_Utils/src/main/resources/vendor-table.json
new file mode 100644
index 00000000..d411dd50
--- /dev/null
+++ b/HIRS_Utils/src/main/resources/vendor-table.json
@@ -0,0 +1,233 @@
+{
+  "VendorTable": {
+    "_comment_1": "UUIDS listed in the UEFI Specification",
+    "eb9d2d30-2d88-11d3-9a16-0090273fc14d": "ACPI_TABLE_GUID",
+    "eb9d2d32-2d88-11d3-9a16-0090273fc14d": "SAL_SYSTEM_TABLE_GUID",
+    "eb9d2d31-2d88-11d3-9a16-0090273fc14d": "SMBIOS_TABLE_GUID",
+    "f2fd1544-9794-4a2c-992e-e5bbcf20e394": "SMBIOS3_TABLE_GUID",
+    "eb9d2d2f-2d88-11d3-9a16-0090273fc14d": "MPS_TABLE_GUID",
+    "8868e871-e4f1-11d3-bc22-0080c73c8881": "EFI_ACPI_TABLE_GUID",
+    "87367f87-1119-41ce-aaec-8be01101f558": "EFI_JSON_CONFIG_DATA_TABLE_GUID",
+    "35e7a725-8dd2-4cac-8011-33cda8109056": "EFI_JSON_CAPSULE_DATA_TABLE_GUID",
+    "dbc461c3-b3de-422a-b9b4-9886fd49a1e5": "EFI_JSON_CAPSULE_RESULT_TABLE_GUID",
+    "77ab535a-45fc-624b-5560-f7b281d1f96e": "EFI_VIRTUAL_DISK_GUID",
+    "3d5abd30-4175-87Ce-6d64-d2ADe523C4bb": "EFI_VIRTUAL_CD_GUID",
+    "5Cea02c9-4d07-69d3-269f-4496Fbe096f9": "EFI_PERSISTENT_VIRTUAL_DISK_GUID",
+    "08018188-42cd-bb48-100f-5387D53ded3d": "EFI_PERSISTENT_VIRTUAL_CD_GUID",
+    "_comment_2": "DXE GUIds from https://github.com/linuxboot/linuxboot/blob/master/boards/qemu/image-files.txt",
+    "fc510ee7-ffdc-11d4-bd41-0080c73c8881": "DXE Apriori-FVRECOVERY",
+    "1b45cc0a-156a-428a-62af-49864da0e6e6": "PEI Apriori file name",
+    "80cf7257-87ab-47f9-a3fe-d50b76d89541": "PcdDxe",
+    "b601f8c4-43b7-4784-95b1-f4226cb40cee": "RuntimeDxe",
+    "f80697e9-7fd6-4665-8646-88e33ef71dfc": "SecurityStubDxe",
+    "1a1e4886-9517-440e-9fde-3be44cee2136": "CpuDxe",
+    "11a6edf6-a9be-426d-a6cc-b22fe51d9224": "PciHotPlugInitDxe",
+    "128fb770-5e79-4176-9e51-9bb268a17dd1": "PciHostBridgeDxe",
+    "93b80004-9fb3-11d4-9a3a-0090273fc14d": "PCI Bus Driver - PciBusDxe",
+    "9b680fce-ad6b-4f3a-b60b-f59899003443": "DevicePathDxe",
+    "f9d88642-0737-49bc-81b5-6889cd57d9ea": "SmbiosDxe",
+    "4110465d-5ff3-4f4b-b580-24ed0d06747a": "SmbiosPlatformDxe",
+    "9622e42c-8e38-4a08-9e8f-54f784652f6b": "AcpiTableDxe",
+    "49970331-e3fa-4637-9abc-3b7868676970": "AcpiPlatform",
+    "7e374e25-8e01-4fee-87f2-390c23c606cd": "ACPI data",
+    "bdce85bb-fbaa-4f4e-9264-501a2c249581": "S3SaveStateDxe",
+    "d9dcc5df-4007-435e-9098-8970935504b2": "PlatformDxe",
+    "8657015b-ea43-440d-949a-af3be365c0fc": "IoMmuDxe",
+    "cbd2e4d5-7068-4ff5-b462-9822b4ad8d60": "VariableRuntimeDxe",
+    "_comment_3": "PIWG Dxe driver Files (FvFile)from https://bugs.launchpad.net/ubuntu/+source/edk2/+bug/1272444",
+    "70d57d67-7f05-494d-a014-b75d7345b700": "Storage Security Command Driver",
+    "3acc966d-8e33-45c6-b4fe-62724bcd15a9": "AHCI Bus Driver",
+    "67bbc344-84bc-4e5c-b4df-f5e4a00e1f3a": "Host Controller Driver",
+    "86edaae5-073c-4c89-b949-8984ac8a55f3": "MMC/SD Media Device Driver",
+    "9e863906-a40f-4875-977F-5b93ff237fc6": "Serial Terminal Driver",
+    "a6cc6bc8-2ada-46C3-bba4-e99672CC9530": "PCI Serial Driver",
+    "69fd8e47-a161-4550-b01a-5594ceb2b2b2": "PCI IDE/ATAPI Bus Driver",
+    "51ccf399-4fdf-4e55-a45b-e123f84d456a": "Platform Console Management Driver",
+    "6b38f7b4-ad98-40e9-9093-aca2b5a253c4": "Generic Disk I/O Driver",
+    "2d2e62cf-9ecf-43b7-8219-94e7fC713dfe": "Usb Keyboard Driver",
+    "9fb4b4a7-42C0-4bcd-8540-9bcc6711f83e": "Usb Mass Storage Driver",
+    "e3752948-b9a1-4770-90c4-df41c38986be": "QEMU Video Driver",
+    "240612B7-a063-11d4-9a3a-0090273fc14d": "Usb Bus Driver",
+    "bdfe430e-8F2a-4db0-9991-6f856594777e": "Usb Ehci Driver",
+    "2fb92efa-2ee0-4bae-9eB6-7464125E1EF7": "Usb Ehci Driver",
+    "a92cdb4b-82f1-4e0b-a516-8a655d371524": "Virtio Network Driver",
+    "4579b72d-7ec4-4dd4-8486-083c86b182a7": "iSCSI Driver",
+    "3b1deaB5-c75d-442e-9238-8e2ffb62b0bb": "UEFI PXE Base Code Driver",
+    "6b6963ab-906d-4a65-a7ca-bd40e5d6af2b": "UDP Network Service Driver",
+    "6d6963ab-906d-4a65-a7ca-bd40e5d6af4d": "Tcp Network Service Driver",
+    "dc3641b8-2fa8-4ed3-bc1f-f9962a03454b": "MTFTP4 Network Service Driver",
+    "9fb1a1f3-3b71-4324-b39a-745cbb015fff": "IP4 Network Service Driver",
+    "26841bde-920a-4e7a-9Fbe-637f477143a6": "IP4 CONFIG Network Service Driver",
+    "94734718-0bbc-47fb-96a5-ee7a5ae6a2ad": "DHCP Protocol Driver",
+    "529d3f93-e8e9-4e73-b1e1-bdf6a9d50113": "ARP Network Service Driver",
+    "e4f61863-fe2c-4b56-a8d4-08519bc439df": "VLAN Configuration Driver",
+    "a2f436ea-a127-4ef8-957c-8048606ff670": "Simple Network Protocol Driver",
+    "961578fe-b6b7-44c3-af35-6bc705cd2b1f": "FAT File System Driver",
+    "0abd8284-6da3-4616-971a-83a5148067ba": "ISA Floppy Driver",
+    "3dc82376-637b-40a6-a8fc-a565417f2c38": "PS/2 Keyboard Driver",
+    "93b80003-9fb3-11d4-9a3a-0090273fc14d": "ISA Serial Driver",
+    "240612b5-a063-11d4-9a3a-0090273fc14a": "ISA Bus Driver",
+    "99549f44-49bb-4820-b9d2-901329412d67": "IDE Controller Init Driver",
+    "0a66e322-3740-4cce-ad62-bd172cecca35": "Scsi Disk Driver",
+    "1fa1f39e-feff-4aae-bd7b-38a070a3b609": "Partition Driver",
+    "9e863906-a40f-4875-977f-5b93ff237fc6": "Serial Terminal Driver",
+    "cccb0c28-4b24-11d5-9a5a-0090273fc14d": "Graphics Console Driver",
+    "408edcec-cf6d-477c-a5a8-b4844e3de281": "Console Splitter Driver",
+    "fab5d4f4-83c0-4aaf-8480-442d11df6cea": "Virtio SCSI Host Driver",
+    "11d92dfb-3Ca9-4f93-ba2e-4780ed3e03b5": "Virtio Block Driver",
+    "33cb97af-6c33-4c42-986b-07581fa366d4": "Block MMIO to Block IO Driver",
+    "_comment_4": "PIWG Volumes (Fv)",
+    "a881d567-6cb0-4eee-8435-2e72d33e45B5": "PIWG Default Volume",
+    "_comment_5": "UEFI UUIDS for Certificates",
+    "3c5766e8-269c-4e34-aa14-ed776e85b3b6": "EFI_CERT_RSA2048_GUID",
+    "e2b36190-879b-4a3d-ad8d-f2e7bba32784": "EFI_CERT_RSA2048_SHA256_GUID",
+    "c1c41626-504c-4092-aca9-41f936934328": "EFI_CERT_SHA256_GUID",
+    "826ca512-cf10-4ac9-b187-be01496631bd": "EFI_CERT_SHA1_GUID",
+    "67f8444f-8743-48f1-a328-1eaab8736080": "EFI_CERT_RSA2048_SHA1_GUID",
+    "a5c059a1-94e4-4aa7-87b5-ab155c2bf072": "EFI_CERT_X509_GUID",
+    "0b6e5233-a65c-44c9-9407-d9ab83bfc8bd": "EFI_CERT_SHA224_GUID",
+    "ff3e5307-9fd0-48c9-85f1-8ad56c701e01": "EFI_CERT_SHA384_GUID",
+    "093e0fae-a6c4-4f50-9f1b-d41e2b89c19a": "EFI_CERT_SHA512_GUID",
+    "3bd2a492-96c0-4079-b420-fcf98ef103ed": "EFI_CERT_X509_SHA256_GUID",
+    "7076876e-80c2-4ee6-aad2-28b349a6865b": "EFI_CERT_X509_SHA384_GUID",
+    "446dbf63-2502-4cda-bcfa-2465d2b0fe9d": "EFI_CERT_X509_SHA512_GUID",
+    "a7717414-c616-4977-9420-844712a735bf": "EFI_CERT_TYPE_RSA2048_SHA256_GUID",
+    "_comment_6": "UEFI defined variables",
+    "452e8ced-dfff-4b8c-ae01-5118862e682c": "EFI_CERT_EXTERNAL_MANAGEMENT_GUID",
+    "d719b2cb-3d3a-4596-a3bc-dad00e67656f": "EFI_IMAGE_SECURITY_DATABASE_GUID",
+    "4aafd29d-68df-49ee-8aa9-347d375665a7": "EFI_CERT_TYPE_PKCS7_GUID",
+    "c12a7328-f81f-11d2-ba4b-00a0c93ec93b": "EFI System Partition",
+    "024DEE41-33E7-11D3-9D69-0008C781F39F": "Partition containing a legacy MBR",
+    "_comment_7": "RHBoot UEFI Application UUIDs From listed in RHBoot (RHShim) https://github.com/rhboot/efivar/blob/master/src/guids.txt",
+    "0abba7dc-e516-4167-bbf5-4d9d1c739416": "fwupdate:",
+    "3b8c8162-188c-46a4-aec9-be43f1d65697": "ux_capsule",
+    "605dab50-e046-4300-abb6-3dd810dd8b23": "RH_Shim",
+    "8be4df61-93ca-11d2-aa0d-00e098032b8c": "EFI_Global_Variable",
+    "91376aff-cba6-42be-949d-06fde81128e8": "GRUB",
+    "_comment_8": "Partition Table GUIDs",
+    "0fc63daf-8483-4772-8e79-3d69d8477de4": "Linux filesystem data",
+    "e6d6d379-f507-44c2-a23c-238f2a3df928": "Logical Volume Manager (LVM) partition",
+    "4f68bce3-e8cd-4db1-96e7-fbcaf984b709": "Root partition (x86-64)",
+    "a19d880f-05fc-4d3b-a006-743f0f84911e": "RAID partition",
+    "933ac7e1-2eb4-4f13-b844-0e14e2aef915": "/home partition[ (x86-64)",
+    "ebd0a0a2-b9e5-4433-87c0-68b6b72699c7": "GPT Basic data partition",
+    "_comment_9": "RHBoot Lenovo specific UUIDS",
+    "3cc24e96-22c7-41d8-8863-8e39dcdcc2cf": "lenovo",
+    "82988420-7467-4490-9059-feb448dd1963": "lenovo_me_config",
+    "f7e615b-0d45-4f80-88dc-26b234958560": "lenovo_diag",
+    "665d3f60-ad3e-4cad-8e26-db46eee9f1b5": "lenovo_rescue",
+    "721c8b66-426c-4e86-8e99-3457c46ab0b9": "lenovo_setup",
+    "f46ee6f4-4785-43a3-923d-7f786c3c8479": "lenovo_startup_interrupt",
+    "126a762d-5758-4fca-8531-201a7f57f850": "lenovo_boot_menu",
+    "a7d8d9a6-6ab0-4aeb-ad9d-163e59a7a380": "lenovo_diag_splash",
+    "_comment_10": "Company UUIDs (From Internet searches)",
+    "77fa9abd-0359-4d32-bd60-28f4e78f784b": "Microsoft Inc.",
+    "f5a96b31-dba0-4faa-a42a-7a0c9832768e": "HPE Inc.",
+    "2879c886-57ee-45cc-b126-f92f24f906b9": "SUSE Certificate",
+    "70564dce-9afc-4ee3-85fc-949649d7e45c": "Dell Inc.",
+    "_comment_11": "Intel GUIDS",
+    "bfcc0833-2125-42d1-8c6d-13821e23c078": "Intel(R) Desktop Boards",
+    "80b3ad5b-9880-4af9-a645-e56a68be89de": "Intel(R) CISD FW Update",
+    "_comment_12": "Microsoft GUIDS",
+    "e3c9e316-0b5c-4db8-817d-f92df00215ae": "Microsoft Reserved Partition (MSR)",
+    "5808c8aa-7e8f-42e0-85d2-e1e90434cfb3": "Logical Disk Manager (LDM) metadata partition ",
+    "af9b60a0-1431-4f62-bc68-3311714a69ad": "Logical Disk Manager data partition",
+    "de94bba4-06d1-4d40-a16a-bfd50179d6ac": "Windows Recovery Environment",
+    "9f25ee7a-e7b7-11db-94b5-f7e662935912": "Windows Boot Loader",
+    "_comment_13": "Linux specific GUIDS",
+    "0fc63daf-8483-4772-8e79-3d69d8477de": "Linux filesystem data",
+    "44479540-f297-41b2-9af7-d131d5f0458a4": "Root partition (x86)",
+    "69dad710-2ce4-4e3c-b16c-21a1d49abed3": "Root partition (32-bit ARM)",
+    "b921b045-1df0-41c3-af44-4c6f280d3fae": "Root partition (64-bit ARM/AArch64)",
+    "0657fd6d-a4ab-43c4-84e5-0933c84b4f4f": "Swap partition",
+    "3b8f8425-20e0-4f3b-907f-1a25a76f98e8": "/srv (server data) partition",
+    "7ffec5c9-2d00-49b7-8941-3ea10a5586b7": "Plain dm-crypt partitiont",
+    "ca7d7ccb-63ed-4c53-861c-1742536059cc": "LUKS partition",
+    "_comment_14": "Linux Boot GUIDS https://github.com/linuxboot/linuxboot/blob/master/boards/s2600wf/vendor-files.txt",
+    "9cfd802c-09a1-43d6-8217-aa49c1f90d2c": "Intel Management Engine BIOS Extension (Mebx)",
+    "b62efbbb-3923-4cb9-a6e8-db818e828a80": "Intel Management Engine BIOS Extension (Mebx) Setup Browser",
+    "9ce4325e-003e-11e3-b582-b8ac6f199a57": "Non-Volatile Dual In-line Memory Module (NVDIMM) Driver",
+    "ea9de6d5-7839-46f7-9e63-4de8b00e2e5d": "NVM DIMM Human Interface Infrastructure (HII)",
+    "56a1b86f-0d4a-485d-87de-ad0eba1c8c2a": "IBM C Video Gop",
+    "a1f436ea-a127-4ef8-957c-8048606ff670": "SnpDxe",
+    "a210f973-229d-4f4d-aa37-9895e6c9eaba": "DpcDxe",
+    "025bbfc7-e6a9-4b8b-82ad-6815a1aeaf4a": "MNP Network Service Driver - MnpDxe",
+    "b44b2005-42bc-41c9-80af-abd7dc7d6923": "RSTesSATAEFI",
+    "15e1e31a-9f9d-4c84-82fb-1a707fc0f63b": "RSTeSATAEFI",
+    "2cc25173-bd9f-4c89-89cc-29256a3fd9c3": "RSTesSATALegacy",
+    "bd5d4ca5-674f-4584-8cf9-ce4ea1f54dd1": "RSTeSATALegacy",
+    "_comment_15": "WinNt GUIDs, add if they are still found in use https://sourceforge.net/p/uefinotes/wiki/FV%20Sources/?version=3",
+    "fc5c7020-1a48-4198-9be2-ead5abc8cf2f": "BdsDxe",
+    "d0893f05-b06d-4161-b947-9be9b85ac3a1": "SnpNt32Dxe",
+    "9b3ada4f-ae56-4c24-8Dea-f03b7558ae50": "PcdPeim",
+    "34c8c28F-b61c-45a2-8f2e-89e46becc63b": "PeiVariable",
+    "fe5cea76-4f72-49e8-986f-2cd899dffe5d": "FaultTolerantWriteDxe",
+    "_comment_16": "Linux Boot Image files UEFI Platform Initialization (PI) specifications Driver Execution Environment (DXE) Architectural protocols and platform modules https://github.com/linuxboot/linuxboot/blob/master/boards/winterfell/image-files.txt",
+    "5ae3f37e-4eae-41ae-8240-35465b5e81eb": "CORE_DXE",
+    "cbc59c4a-383a-41eb-a8ee-4498aea567e4": "DXE Runtime",
+    "3c1de39f-d207-408a-aacc-731cfb7f1dd7": "DXE PciBus",
+    "80e66e0a-ccd1-43fa-a7b1-2d5ee0f13910": "DXE PciRootBridge",
+    "9f3a0016-ae55-4288-829d-d22fd344c347": "DXE AmiBoardInfo",
+    "13ac6dd0-73d0-11d4-b06b-00aa00bd6de7": "DXE EBC",
+    "e03abadf-e536-4e88-b3a0-b77f78eb34fe": "CPU DXE",
+    "b7d19491-e55a-470d-8508-85a5dfa41974": "SBDXE",
+    "e23f86e1-056e-4888-b685-cfcd67c179d4": "DXE SBRun",
+    "e4ecd0b2-e277-4f2b-becb-e4d75c9a812e": "NBDXE",
+    "5ad34ba6-f024-2149-52e4-da0398e2bb9": "DXE Services Table",
+    "_comment_17": "ACPI configuration and tables",
+    "750890a6-7acf-4f4f-81bd-b400c2bea95a": "AcpiModeEnable",
+    "d4c05cd1-5eae-431d-a095-13a9e5822045": "MPST",
+    "db93cb2c-bf1c-431a-abc8-8737bc2afc1f": "PRAD-ACPI-table",
+    "3bc5b795-a4e0-4d56-9321-316d18a7aefe": "PRAD",
+    "16d0a23e-c09c-407d-a14a-ad058fdd0ca1": "ACPI",
+    "26a2481e-4424-46a2-9943-cc4039ead8f8": "S3Save",
+    "efd652cc-0e99-40f0-96c0-e08c089070fc": "S3Restore",
+    "8c783970-f02a-4a4d-af09-8797a51eec8d": "PowerManagement",
+    "299141bb-211a-48a5-92c0-6f9a0a3a006e0": "PowerManagement-ACPI-table",
+    "2df10014-cf21-4280-8c3f-e539b8ee5150": "PpmPolicyInitDxe",
+    "4b680e2d-0d63-4f62-b930-7ae995b9b3a3": "SmBusDxe",
+    "_comment_18": "SMM handlers",
+    "4a37320b-3fb3-4365-9730-9e89c600395d": "SmmDispatcher",
+    "753630c9-fae5-47a9-bbbf-88d621cd7282": "SmmChildDispatcher",
+    "be216ba8-38c4-4535-a6ca-5dca5b43addf": "SmiVariable",
+    "a56897a1-a77f-4600-84db-22b0a801fa9a": "SmmRuntime",
+    "d2596f82-f0e1-49fa-95bc-62012c795728": "SmmBase Data",
+    "69009842-63f2-43db-964b-efad1c39ec85": "SmmBase Data",
+    "d0632c90-afd7-4492-b186-257c63143c61": "SmmBase",
+    "7e2d983f-f703-4a29-9761-77b51f5354ed": "SmmCommunicate",
+    "_comment_19": "CMOS and NVRAM handlers",
+    "6869c5b3-ac8d-4973-8b37-e354dbf34add": "CmosManagerSmm",
+    "842a454a-75e5-408b-8b1c-36420e4e3f21": "NvramSmi",
+    "5446c293-339b-47cd-b719-585de39408cc": "PostReport",
+    "71ca9ca1-325d-4bfe-afa3-2ec5c94a8680": "DmAcpi",
+    "cef68c66-06ab-4fb3-a3ed-5ffa885b5725": "SMBiosBoard",
+    "b13edd38-684c-41ed-a305-d7b7e32497df": "SMBios64",
+    "ded7956d-7e20-4f20-91a1-190439b04d5b": "SmbiosGetFlashData64",
+    "daf4bf89-ce71-4917-b522-c89d32fbc59f": "SmbiosStaticData",
+    "_comment_20": "Apple GUIDS",
+    "48465300-0000-11aa-aa11-00306543ecac": "Apple Hierarchical File System Plus (HFS+) partition ",
+    "7c3457ef-0000-11aa-aa11-00306543ecac": "Apple APFS container",
+    "55465300-0000-11aa-aa11-00306543ecac": "Apple UFS container",
+    "52414944-0000-11aa-aa11-00306543ecac": "Apple RAID partition",
+    "4c616265-6c00-11aa-aa11-00306543ecac": "Apple Label",
+    "53746f72-6167-11aa-aa11-00306543ecac": "Apple Core Storage Container",
+    "6a898cc3-1dd2-11b2-99a6-080020736631": "ZFS Partition",
+    "_comment_21": "Chrome OS GUIDS",
+    "2568845d-2332-4675-bc39-8fa5a4748d15": "Chrome OS kernel ",
+    "3cb8e202-3b7e-47dd-8a3c-7ff2a13cfcec": "Chrome OS rootfs ",
+    "2e0a753d-9e48-43b0-8337-b15192cb1b5e": "Chrome OS future use ",
+    "_comment_22": "Android GUIDS",
+    "fe3a2a5d-4f32-41a7-b725-accc3285a309": "Android Bootloader",
+    "114eaffe-1552-4022-b26e-9b053604cf84": "Android Bootloader 2",
+    "49a4d17f-93a3-45c1-a0de-f50b2ebe2599": "Android Boot",
+    "4177c722-9e92-4aab-8644-43502bfd5506": "Android Recovery",
+    "38f428e6-d326-425d-9140-6e0ea133647c": "Android System",
+    "bd59408b-4514-490d-bf12-9878d963f378": "Android Config",
+    "8f68cc74-c5e5-48da-be91-a0c8c15e9c80": "Android Factory",
+    "ac6d7924-eb71-4df8-b48d-e267b27148ff": "Android OEM",
+    "_comment_23": "MISC GUIDs",
+    "5023b95c-db26-429b-a648-bd47664c8012": "Built-in EFI Shell",
+    "610a0202-d308-00c4-0000-000004300d06": "Mystery UUID",
+    "00000000-0000-0000-0000-000000000000": "Empty UUID"
+  }
+}
diff --git a/HIRS_Utils/src/test/java/hirs/tpm/eventlog/uefi/UefiProcessingTest.java b/HIRS_Utils/src/test/java/hirs/tpm/eventlog/uefi/UefiProcessingTest.java
index 0771b38f..7dc4d931 100644
--- a/HIRS_Utils/src/test/java/hirs/tpm/eventlog/uefi/UefiProcessingTest.java
+++ b/HIRS_Utils/src/test/java/hirs/tpm/eventlog/uefi/UefiProcessingTest.java
@@ -1,8 +1,14 @@
 package hirs.tpm.eventlog.uefi;
 
 import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.security.NoSuchAlgorithmException;
 import java.security.cert.CertificateException;
+
+import com.eclipsesource.json.JsonObject;
+import hirs.utils.JsonUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -14,138 +20,154 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 /**
- *  Class for testing TCG Event Log processing of UEFI defined Data.
+ * Class for testing TCG Event Log processing of UEFI defined Data.
  */
 public class UefiProcessingTest {
     // Variable files collected using an Event Parsing tool
+    private static final String JSON_FILE = "/tcgeventlog/uefi/vendor-table.json";
     private static final String UEFI_VARIABLE_BOOT = "/tcgeventlog/uefi/EV_EFI_VARIABLE_BOOT.txt";
     private static final String UEFI_VARIABLE_BOOT_SECURE_BOOT
-                                               = "/tcgeventlog/uefi/EV_EFI_VAR_SECURE_BOOT.txt";
+            = "/tcgeventlog/uefi/EV_EFI_VAR_SECURE_BOOT.txt";
     private static final String UEFI_VARIABLE_BOOT_DRIVER_CONFIG_KEK
-                                  = "/tcgeventlog/uefi/EV_EFI_VARIABLE_DRIVER_CONFIG_KEK.txt";
+            = "/tcgeventlog/uefi/EV_EFI_VARIABLE_DRIVER_CONFIG_KEK.txt";
     private static final String UEFI_GPT_EVENT = "/tcgeventlog/uefi/EV_EFI_GPT_EVENT.txt";
     private static final String UEFI_FW_BLOB = "/tcgeventlog/uefi/EFI_PLATFORM_FIRMWARE_BLOB.txt";
     private static final String UEFI_DEVICE_PATH = "/tcgeventlog/uefi/EFI_DEVICE_PATH.txt";
 
     private static final Logger LOGGER
-             = LogManager.getLogger(UefiProcessingTest.class);
+            = LogManager.getLogger(UefiProcessingTest.class);
 
-/**
- * Initializes a <code>SessionFactory</code>.
- * The factory is used for an in-memory database that is used for testing.
- */
-@BeforeClass
-public static final void setup() {
-    LOGGER.debug("retrieving session factory");
+    /**
+     * Initializes a <code>SessionFactory</code>.
+     * The factory is used for an in-memory database that is used for testing.
+     */
+    @BeforeClass
+    public static final void setup() {
+        LOGGER.debug("retrieving session factory");
+    }
+
+    /**
+     * Closes the <code>SessionFactory</code> from setup.
+     */
+    @AfterClass
+    public static final void tearDown() {
+        LOGGER.debug("closing session factory");
+    }
+
+    /**
+     * Tests the processing of UEFI Variables.
+     *
+     * @throws IOException              when processing the test fails.
+     * @throws NoSuchAlgorithmException if non TCG Algorithm is encountered.
+     * @throws CertificateException     if parsing issue for X509 cert is encountered.
+     * @throws URISyntaxException File location exception
+     */
+    @Test
+    public final void testUefiVariables() throws IOException,
+            CertificateException, NoSuchAlgorithmException, URISyntaxException {
+        LOGGER.debug("Testing the parsing of UEFI Variables");
+        Path jsonPath = Paths.get(this.getClass()
+                .getResource(JSON_FILE).toURI());
+        String uefiTxt = IOUtils.toString(this.getClass().getResourceAsStream(UEFI_VARIABLE_BOOT),
+                "UTF-8");
+        byte[] uefiVariableBytes = HexUtils.hexStringToByteArray(uefiTxt);
+        UefiVariable uefiVariable = new UefiVariable(uefiVariableBytes);
+        UefiGuid guid = uefiVariable.getEfiVarGuid();
+        String varName = uefiVariable.getEfiVarName();
+        JsonObject jsonObject = JsonUtils.getSpecificJsonObject(jsonPath, "VendorTable");
+        String guidStr = jsonObject.getString(
+                guid.toStringNoLookup().toLowerCase(), "Unknown GUID reference");
+        Assert.assertEquals(guidStr,
+                "EFI_Global_Variable");
+        Assert.assertEquals(varName, "BootOrder");
+
+        uefiTxt = IOUtils.toString(this.getClass()
+                        .getResourceAsStream(UEFI_VARIABLE_BOOT_SECURE_BOOT),
+                "UTF-8");
+        uefiVariableBytes = HexUtils.hexStringToByteArray(uefiTxt);
+        uefiVariable = new UefiVariable(uefiVariableBytes);
+        guid = uefiVariable.getEfiVarGuid();
+        varName = uefiVariable.getEfiVarName();
+        guidStr = jsonObject.getString(
+                guid.toStringNoLookup().toLowerCase(), "Unknown GUID reference");
+        Assert.assertEquals(guidStr,
+                "EFI_Global_Variable");
+        Assert.assertEquals(varName, "SecureBoot");
+
+        uefiTxt = IOUtils.toString(this.getClass().getResourceAsStream(
+                UEFI_VARIABLE_BOOT_DRIVER_CONFIG_KEK), "UTF-8");
+        uefiVariableBytes = HexUtils.hexStringToByteArray(uefiTxt);
+        uefiVariable = new UefiVariable(uefiVariableBytes);
+        varName = uefiVariable.getEfiVarName();
+        Assert.assertEquals(varName, "KEK");
+    }
+
+    /**
+     * Tests the processing of a UEFI defined GPT Partition event.
+     *
+     * @throws IOException              when processing the test fails.
+     * @throws NoSuchAlgorithmException if non TCG Algorithm is encountered.
+     * @throws CertificateException     if parsing issue for X509 cert is encountered.
+     * @throws URISyntaxException File location exception
+     */
+    @Test
+    public final void testUefiPartiton() throws IOException,
+            CertificateException, NoSuchAlgorithmException, URISyntaxException {
+        LOGGER.debug("Testing the parsing of GPT Data");
+        Path jsonPath = Paths.get(this.getClass()
+                .getResource(JSON_FILE).toURI());
+        String uefiTxt = IOUtils.toString(this.getClass().getResourceAsStream(UEFI_GPT_EVENT),
+                "UTF-8");
+        byte[] uefiPartitionBytes = HexUtils.hexStringToByteArray(uefiTxt);
+        UefiPartition gptPart = new UefiPartition(uefiPartitionBytes);
+        String gptPartName = gptPart.getName();
+        UefiGuid gptTypeuid = gptPart.getPartitionTypeGUID();
+        UefiGuid gptUniqueGuid = gptPart.getUniquePartitionGUID();
+        JsonObject jsonObject = JsonUtils.getSpecificJsonObject(jsonPath, "VendorTable");
+        String guidStr = jsonObject.getString(
+                gptTypeuid.toStringNoLookup().toLowerCase(), "Unknown GUID reference");
+        Assert.assertEquals(guidStr,
+                "EFI System Partition");
+        Assert.assertEquals(gptUniqueGuid.toString(),
+                "8ca7623c-041e-4fab-8c12-f49a86b85d73 : Unknown GUID reference");
+        Assert.assertEquals(gptPartName, "EFI system partition");
+    }
+
+    /**
+     * Tests the processing of a UEFI defined GPT Partition event.
+     *
+     * @throws IOException              when processing the test fails.
+     * @throws NoSuchAlgorithmException if non TCG Algorithm is encountered.
+     * @throws CertificateException     if parsing issue for X509 cert is encountered.
+     */
+    @Test
+    public final void testUefiFirmwareBlob() throws IOException,
+            CertificateException, NoSuchAlgorithmException {
+        LOGGER.debug("Testing the parsing of Uefi Firmware Blob");
+        String uefiTxt = IOUtils.toString(this.getClass()
+                .getResourceAsStream(UEFI_FW_BLOB), "UTF-8");
+        byte[] uefiFwBlobBytes = HexUtils.hexStringToByteArray(uefiTxt);
+        UefiFirmware uefiFWBlob = new UefiFirmware(uefiFwBlobBytes);
+        int fwAddress = uefiFWBlob.getPhysicalAddress();
+        int fwLength = uefiFWBlob.getBlobLength();
+        Assert.assertEquals(fwAddress, 1797287936);
+        Assert.assertEquals(fwLength, 851968);
+    }
+
+    /**
+     * Tests the processing of a UEFI defined Device Path.
+     *
+     * @throws IOException when processing the test fails.
+     * @throws URISyntaxException File location exception
+     */
+    @Test
+    public final void testUefiDevicePath() throws IOException, URISyntaxException {
+        LOGGER.debug("Testing the parsing of Uefi Device Path");
+        String uefiTxt = IOUtils.toString(this.getClass().getResourceAsStream(UEFI_DEVICE_PATH),
+                "UTF-8");
+        byte[] uefiFwBlobBytes = HexUtils.hexStringToByteArray(uefiTxt);
+        UefiDevicePath uefiDevPath = new UefiDevicePath(uefiFwBlobBytes);
+        String devPathType = uefiDevPath.getType();
+        Assert.assertEquals(devPathType, "Media Device Path");
+    }
 }
-
-/**
- * Closes the <code>SessionFactory</code> from setup.
- */
-@AfterClass
-public static final void tearDown() {
-    LOGGER.debug("closing session factory");
-}
-
-/**
- * Tests the processing of UEFI Variables.
- * @throws IOException when processing the test fails.
- * @throws NoSuchAlgorithmException if non TCG Algorithm is encountered.
- * @throws CertificateException if parsing issue for X509 cert is encountered.
- */
-@Test
-public final void testUefiVariables() throws IOException,
-                                             CertificateException, NoSuchAlgorithmException {
-    LOGGER.debug("Testing the parsing of UEFI Variables");
-    String uefiTxt = IOUtils.toString(this.getClass().getResourceAsStream(UEFI_VARIABLE_BOOT),
-                                                                                    "UTF-8");
-    byte[] uefiVariableBytes = HexUtils.hexStringToByteArray(uefiTxt);
-    UefiVariable uefiVariable = new UefiVariable(uefiVariableBytes);
-    UefiGuid guid = uefiVariable.getEfiVarGuid();
-    String varName =  uefiVariable.getEfiVarName();
-    Assert.assertEquals(guid.toString(),
-                      "8be4df61-93ca-11d2-aa0d-00e098032b8c : EFI_Global_Variable");
-    Assert.assertEquals(varName, "BootOrder");
-
-    uefiTxt = IOUtils.toString(this.getClass().getResourceAsStream(UEFI_VARIABLE_BOOT_SECURE_BOOT),
-                                                                                       "UTF-8");
-    uefiVariableBytes = HexUtils.hexStringToByteArray(uefiTxt);
-    uefiVariable = new UefiVariable(uefiVariableBytes);
-    guid = uefiVariable.getEfiVarGuid();
-    varName =  uefiVariable.getEfiVarName();
-    Assert.assertEquals(guid.toString(),
-                         "8be4df61-93ca-11d2-aa0d-00e098032b8c : EFI_Global_Variable");
-    Assert.assertEquals(varName, "SecureBoot");
-
-    uefiTxt = IOUtils.toString(this.getClass().getResourceAsStream(
-                                         UEFI_VARIABLE_BOOT_DRIVER_CONFIG_KEK), "UTF-8");
-    uefiVariableBytes = HexUtils.hexStringToByteArray(uefiTxt);
-    uefiVariable = new UefiVariable(uefiVariableBytes);
-    varName =  uefiVariable.getEfiVarName();
-    Assert.assertEquals(varName, "KEK");
-}
-
-/**
- * Tests the processing of a UEFI defined GPT Partition event.
- * @throws IOException when processing the test fails.
- * @throws NoSuchAlgorithmException if non TCG Algorithm is encountered.
- * @throws CertificateException if parsing issue for X509 cert is encountered.
- */
-@Test
-public final void testUefiPartiton() throws IOException,
-                                             CertificateException, NoSuchAlgorithmException {
-    LOGGER.debug("Testing the parsing of GPT Data");
-    String uefiTxt = IOUtils.toString(this.getClass().getResourceAsStream(UEFI_GPT_EVENT),
-                                                                              "UTF-8");
-    byte[] uefiPartitionBytes = HexUtils.hexStringToByteArray(uefiTxt);
-    UefiPartition gptPart = new UefiPartition(uefiPartitionBytes);
-    String gptPartName = gptPart.getName();
-    UefiGuid gptTypeuid = gptPart.getPartitionTypeGUID();
-    UefiGuid gptUniqueGuid = gptPart.getUniquePartitionGUID();
-    Assert.assertEquals(gptTypeuid.toString(),
-                             "c12a7328-f81f-11d2-ba4b-00a0c93ec93b : EFI System Partition");
-    Assert.assertEquals(gptUniqueGuid.toString(),
-                             "8ca7623c-041e-4fab-8c12-f49a86b85d73 : Unknown GUID reference");
-    Assert.assertEquals(gptPartName, "EFI system partition");
- }
-
-/**
- * Tests the processing of a UEFI defined GPT Partition event.
- * @throws IOException when processing the test fails.
- * @throws NoSuchAlgorithmException if non TCG Algorithm is encountered.
- * @throws CertificateException if parsing issue for X509 cert is encountered.
- */
-@Test
-public final void testUefiFirmwareBlob() throws IOException,
-                                             CertificateException, NoSuchAlgorithmException {
-    LOGGER.debug("Testing the parsing of Uefi Firmware Blob");
-    String uefiTxt = IOUtils.toString(this.getClass().getResourceAsStream(UEFI_FW_BLOB), "UTF-8");
-    byte[] uefiFwBlobBytes = HexUtils.hexStringToByteArray(uefiTxt);
-    UefiFirmware uefiFWBlob = new UefiFirmware(uefiFwBlobBytes);
-    int fwAddress = uefiFWBlob.getPhysicalAddress();
-    int fwLength = uefiFWBlob.getBlobLength();
-    Assert.assertEquals(fwAddress, 1797287936);
-    Assert.assertEquals(fwLength, 851968);
-}
-
-/**
- * Tests the processing of a UEFI defined Device Path.
- * @throws IOException when processing the test fails.
- */
-@Test
-public final void testUefiDevicePath() throws IOException {
-
-    LOGGER.debug("Testing the parsing of Uefi Device Path");
-    String uefiTxt = IOUtils.toString(this.getClass().getResourceAsStream(UEFI_DEVICE_PATH),
-                                                                                  "UTF-8");
-    byte[] uefiFwBlobBytes = HexUtils.hexStringToByteArray(uefiTxt);
-    UefiDevicePath uefiDevPath = new UefiDevicePath(uefiFwBlobBytes);
-    String devPathType = uefiDevPath.getType();
-    String devPathSubType = uefiDevPath.getSubType();
-    Assert.assertEquals(devPathType, "Media Device Path");
-    Assert.assertEquals(devPathSubType,
-              "PIWG Firmware File 15e1e31a-9f9d-4c84-82fb-1a707fc0f63b : RSTeSATAEFI");
-
- }
-}
-
diff --git a/HIRS_Utils/src/test/resources/tcgeventlog/uefi/vendor-table.json b/HIRS_Utils/src/test/resources/tcgeventlog/uefi/vendor-table.json
new file mode 100644
index 00000000..d411dd50
--- /dev/null
+++ b/HIRS_Utils/src/test/resources/tcgeventlog/uefi/vendor-table.json
@@ -0,0 +1,233 @@
+{
+  "VendorTable": {
+    "_comment_1": "UUIDS listed in the UEFI Specification",
+    "eb9d2d30-2d88-11d3-9a16-0090273fc14d": "ACPI_TABLE_GUID",
+    "eb9d2d32-2d88-11d3-9a16-0090273fc14d": "SAL_SYSTEM_TABLE_GUID",
+    "eb9d2d31-2d88-11d3-9a16-0090273fc14d": "SMBIOS_TABLE_GUID",
+    "f2fd1544-9794-4a2c-992e-e5bbcf20e394": "SMBIOS3_TABLE_GUID",
+    "eb9d2d2f-2d88-11d3-9a16-0090273fc14d": "MPS_TABLE_GUID",
+    "8868e871-e4f1-11d3-bc22-0080c73c8881": "EFI_ACPI_TABLE_GUID",
+    "87367f87-1119-41ce-aaec-8be01101f558": "EFI_JSON_CONFIG_DATA_TABLE_GUID",
+    "35e7a725-8dd2-4cac-8011-33cda8109056": "EFI_JSON_CAPSULE_DATA_TABLE_GUID",
+    "dbc461c3-b3de-422a-b9b4-9886fd49a1e5": "EFI_JSON_CAPSULE_RESULT_TABLE_GUID",
+    "77ab535a-45fc-624b-5560-f7b281d1f96e": "EFI_VIRTUAL_DISK_GUID",
+    "3d5abd30-4175-87Ce-6d64-d2ADe523C4bb": "EFI_VIRTUAL_CD_GUID",
+    "5Cea02c9-4d07-69d3-269f-4496Fbe096f9": "EFI_PERSISTENT_VIRTUAL_DISK_GUID",
+    "08018188-42cd-bb48-100f-5387D53ded3d": "EFI_PERSISTENT_VIRTUAL_CD_GUID",
+    "_comment_2": "DXE GUIds from https://github.com/linuxboot/linuxboot/blob/master/boards/qemu/image-files.txt",
+    "fc510ee7-ffdc-11d4-bd41-0080c73c8881": "DXE Apriori-FVRECOVERY",
+    "1b45cc0a-156a-428a-62af-49864da0e6e6": "PEI Apriori file name",
+    "80cf7257-87ab-47f9-a3fe-d50b76d89541": "PcdDxe",
+    "b601f8c4-43b7-4784-95b1-f4226cb40cee": "RuntimeDxe",
+    "f80697e9-7fd6-4665-8646-88e33ef71dfc": "SecurityStubDxe",
+    "1a1e4886-9517-440e-9fde-3be44cee2136": "CpuDxe",
+    "11a6edf6-a9be-426d-a6cc-b22fe51d9224": "PciHotPlugInitDxe",
+    "128fb770-5e79-4176-9e51-9bb268a17dd1": "PciHostBridgeDxe",
+    "93b80004-9fb3-11d4-9a3a-0090273fc14d": "PCI Bus Driver - PciBusDxe",
+    "9b680fce-ad6b-4f3a-b60b-f59899003443": "DevicePathDxe",
+    "f9d88642-0737-49bc-81b5-6889cd57d9ea": "SmbiosDxe",
+    "4110465d-5ff3-4f4b-b580-24ed0d06747a": "SmbiosPlatformDxe",
+    "9622e42c-8e38-4a08-9e8f-54f784652f6b": "AcpiTableDxe",
+    "49970331-e3fa-4637-9abc-3b7868676970": "AcpiPlatform",
+    "7e374e25-8e01-4fee-87f2-390c23c606cd": "ACPI data",
+    "bdce85bb-fbaa-4f4e-9264-501a2c249581": "S3SaveStateDxe",
+    "d9dcc5df-4007-435e-9098-8970935504b2": "PlatformDxe",
+    "8657015b-ea43-440d-949a-af3be365c0fc": "IoMmuDxe",
+    "cbd2e4d5-7068-4ff5-b462-9822b4ad8d60": "VariableRuntimeDxe",
+    "_comment_3": "PIWG Dxe driver Files (FvFile)from https://bugs.launchpad.net/ubuntu/+source/edk2/+bug/1272444",
+    "70d57d67-7f05-494d-a014-b75d7345b700": "Storage Security Command Driver",
+    "3acc966d-8e33-45c6-b4fe-62724bcd15a9": "AHCI Bus Driver",
+    "67bbc344-84bc-4e5c-b4df-f5e4a00e1f3a": "Host Controller Driver",
+    "86edaae5-073c-4c89-b949-8984ac8a55f3": "MMC/SD Media Device Driver",
+    "9e863906-a40f-4875-977F-5b93ff237fc6": "Serial Terminal Driver",
+    "a6cc6bc8-2ada-46C3-bba4-e99672CC9530": "PCI Serial Driver",
+    "69fd8e47-a161-4550-b01a-5594ceb2b2b2": "PCI IDE/ATAPI Bus Driver",
+    "51ccf399-4fdf-4e55-a45b-e123f84d456a": "Platform Console Management Driver",
+    "6b38f7b4-ad98-40e9-9093-aca2b5a253c4": "Generic Disk I/O Driver",
+    "2d2e62cf-9ecf-43b7-8219-94e7fC713dfe": "Usb Keyboard Driver",
+    "9fb4b4a7-42C0-4bcd-8540-9bcc6711f83e": "Usb Mass Storage Driver",
+    "e3752948-b9a1-4770-90c4-df41c38986be": "QEMU Video Driver",
+    "240612B7-a063-11d4-9a3a-0090273fc14d": "Usb Bus Driver",
+    "bdfe430e-8F2a-4db0-9991-6f856594777e": "Usb Ehci Driver",
+    "2fb92efa-2ee0-4bae-9eB6-7464125E1EF7": "Usb Ehci Driver",
+    "a92cdb4b-82f1-4e0b-a516-8a655d371524": "Virtio Network Driver",
+    "4579b72d-7ec4-4dd4-8486-083c86b182a7": "iSCSI Driver",
+    "3b1deaB5-c75d-442e-9238-8e2ffb62b0bb": "UEFI PXE Base Code Driver",
+    "6b6963ab-906d-4a65-a7ca-bd40e5d6af2b": "UDP Network Service Driver",
+    "6d6963ab-906d-4a65-a7ca-bd40e5d6af4d": "Tcp Network Service Driver",
+    "dc3641b8-2fa8-4ed3-bc1f-f9962a03454b": "MTFTP4 Network Service Driver",
+    "9fb1a1f3-3b71-4324-b39a-745cbb015fff": "IP4 Network Service Driver",
+    "26841bde-920a-4e7a-9Fbe-637f477143a6": "IP4 CONFIG Network Service Driver",
+    "94734718-0bbc-47fb-96a5-ee7a5ae6a2ad": "DHCP Protocol Driver",
+    "529d3f93-e8e9-4e73-b1e1-bdf6a9d50113": "ARP Network Service Driver",
+    "e4f61863-fe2c-4b56-a8d4-08519bc439df": "VLAN Configuration Driver",
+    "a2f436ea-a127-4ef8-957c-8048606ff670": "Simple Network Protocol Driver",
+    "961578fe-b6b7-44c3-af35-6bc705cd2b1f": "FAT File System Driver",
+    "0abd8284-6da3-4616-971a-83a5148067ba": "ISA Floppy Driver",
+    "3dc82376-637b-40a6-a8fc-a565417f2c38": "PS/2 Keyboard Driver",
+    "93b80003-9fb3-11d4-9a3a-0090273fc14d": "ISA Serial Driver",
+    "240612b5-a063-11d4-9a3a-0090273fc14a": "ISA Bus Driver",
+    "99549f44-49bb-4820-b9d2-901329412d67": "IDE Controller Init Driver",
+    "0a66e322-3740-4cce-ad62-bd172cecca35": "Scsi Disk Driver",
+    "1fa1f39e-feff-4aae-bd7b-38a070a3b609": "Partition Driver",
+    "9e863906-a40f-4875-977f-5b93ff237fc6": "Serial Terminal Driver",
+    "cccb0c28-4b24-11d5-9a5a-0090273fc14d": "Graphics Console Driver",
+    "408edcec-cf6d-477c-a5a8-b4844e3de281": "Console Splitter Driver",
+    "fab5d4f4-83c0-4aaf-8480-442d11df6cea": "Virtio SCSI Host Driver",
+    "11d92dfb-3Ca9-4f93-ba2e-4780ed3e03b5": "Virtio Block Driver",
+    "33cb97af-6c33-4c42-986b-07581fa366d4": "Block MMIO to Block IO Driver",
+    "_comment_4": "PIWG Volumes (Fv)",
+    "a881d567-6cb0-4eee-8435-2e72d33e45B5": "PIWG Default Volume",
+    "_comment_5": "UEFI UUIDS for Certificates",
+    "3c5766e8-269c-4e34-aa14-ed776e85b3b6": "EFI_CERT_RSA2048_GUID",
+    "e2b36190-879b-4a3d-ad8d-f2e7bba32784": "EFI_CERT_RSA2048_SHA256_GUID",
+    "c1c41626-504c-4092-aca9-41f936934328": "EFI_CERT_SHA256_GUID",
+    "826ca512-cf10-4ac9-b187-be01496631bd": "EFI_CERT_SHA1_GUID",
+    "67f8444f-8743-48f1-a328-1eaab8736080": "EFI_CERT_RSA2048_SHA1_GUID",
+    "a5c059a1-94e4-4aa7-87b5-ab155c2bf072": "EFI_CERT_X509_GUID",
+    "0b6e5233-a65c-44c9-9407-d9ab83bfc8bd": "EFI_CERT_SHA224_GUID",
+    "ff3e5307-9fd0-48c9-85f1-8ad56c701e01": "EFI_CERT_SHA384_GUID",
+    "093e0fae-a6c4-4f50-9f1b-d41e2b89c19a": "EFI_CERT_SHA512_GUID",
+    "3bd2a492-96c0-4079-b420-fcf98ef103ed": "EFI_CERT_X509_SHA256_GUID",
+    "7076876e-80c2-4ee6-aad2-28b349a6865b": "EFI_CERT_X509_SHA384_GUID",
+    "446dbf63-2502-4cda-bcfa-2465d2b0fe9d": "EFI_CERT_X509_SHA512_GUID",
+    "a7717414-c616-4977-9420-844712a735bf": "EFI_CERT_TYPE_RSA2048_SHA256_GUID",
+    "_comment_6": "UEFI defined variables",
+    "452e8ced-dfff-4b8c-ae01-5118862e682c": "EFI_CERT_EXTERNAL_MANAGEMENT_GUID",
+    "d719b2cb-3d3a-4596-a3bc-dad00e67656f": "EFI_IMAGE_SECURITY_DATABASE_GUID",
+    "4aafd29d-68df-49ee-8aa9-347d375665a7": "EFI_CERT_TYPE_PKCS7_GUID",
+    "c12a7328-f81f-11d2-ba4b-00a0c93ec93b": "EFI System Partition",
+    "024DEE41-33E7-11D3-9D69-0008C781F39F": "Partition containing a legacy MBR",
+    "_comment_7": "RHBoot UEFI Application UUIDs From listed in RHBoot (RHShim) https://github.com/rhboot/efivar/blob/master/src/guids.txt",
+    "0abba7dc-e516-4167-bbf5-4d9d1c739416": "fwupdate:",
+    "3b8c8162-188c-46a4-aec9-be43f1d65697": "ux_capsule",
+    "605dab50-e046-4300-abb6-3dd810dd8b23": "RH_Shim",
+    "8be4df61-93ca-11d2-aa0d-00e098032b8c": "EFI_Global_Variable",
+    "91376aff-cba6-42be-949d-06fde81128e8": "GRUB",
+    "_comment_8": "Partition Table GUIDs",
+    "0fc63daf-8483-4772-8e79-3d69d8477de4": "Linux filesystem data",
+    "e6d6d379-f507-44c2-a23c-238f2a3df928": "Logical Volume Manager (LVM) partition",
+    "4f68bce3-e8cd-4db1-96e7-fbcaf984b709": "Root partition (x86-64)",
+    "a19d880f-05fc-4d3b-a006-743f0f84911e": "RAID partition",
+    "933ac7e1-2eb4-4f13-b844-0e14e2aef915": "/home partition[ (x86-64)",
+    "ebd0a0a2-b9e5-4433-87c0-68b6b72699c7": "GPT Basic data partition",
+    "_comment_9": "RHBoot Lenovo specific UUIDS",
+    "3cc24e96-22c7-41d8-8863-8e39dcdcc2cf": "lenovo",
+    "82988420-7467-4490-9059-feb448dd1963": "lenovo_me_config",
+    "f7e615b-0d45-4f80-88dc-26b234958560": "lenovo_diag",
+    "665d3f60-ad3e-4cad-8e26-db46eee9f1b5": "lenovo_rescue",
+    "721c8b66-426c-4e86-8e99-3457c46ab0b9": "lenovo_setup",
+    "f46ee6f4-4785-43a3-923d-7f786c3c8479": "lenovo_startup_interrupt",
+    "126a762d-5758-4fca-8531-201a7f57f850": "lenovo_boot_menu",
+    "a7d8d9a6-6ab0-4aeb-ad9d-163e59a7a380": "lenovo_diag_splash",
+    "_comment_10": "Company UUIDs (From Internet searches)",
+    "77fa9abd-0359-4d32-bd60-28f4e78f784b": "Microsoft Inc.",
+    "f5a96b31-dba0-4faa-a42a-7a0c9832768e": "HPE Inc.",
+    "2879c886-57ee-45cc-b126-f92f24f906b9": "SUSE Certificate",
+    "70564dce-9afc-4ee3-85fc-949649d7e45c": "Dell Inc.",
+    "_comment_11": "Intel GUIDS",
+    "bfcc0833-2125-42d1-8c6d-13821e23c078": "Intel(R) Desktop Boards",
+    "80b3ad5b-9880-4af9-a645-e56a68be89de": "Intel(R) CISD FW Update",
+    "_comment_12": "Microsoft GUIDS",
+    "e3c9e316-0b5c-4db8-817d-f92df00215ae": "Microsoft Reserved Partition (MSR)",
+    "5808c8aa-7e8f-42e0-85d2-e1e90434cfb3": "Logical Disk Manager (LDM) metadata partition ",
+    "af9b60a0-1431-4f62-bc68-3311714a69ad": "Logical Disk Manager data partition",
+    "de94bba4-06d1-4d40-a16a-bfd50179d6ac": "Windows Recovery Environment",
+    "9f25ee7a-e7b7-11db-94b5-f7e662935912": "Windows Boot Loader",
+    "_comment_13": "Linux specific GUIDS",
+    "0fc63daf-8483-4772-8e79-3d69d8477de": "Linux filesystem data",
+    "44479540-f297-41b2-9af7-d131d5f0458a4": "Root partition (x86)",
+    "69dad710-2ce4-4e3c-b16c-21a1d49abed3": "Root partition (32-bit ARM)",
+    "b921b045-1df0-41c3-af44-4c6f280d3fae": "Root partition (64-bit ARM/AArch64)",
+    "0657fd6d-a4ab-43c4-84e5-0933c84b4f4f": "Swap partition",
+    "3b8f8425-20e0-4f3b-907f-1a25a76f98e8": "/srv (server data) partition",
+    "7ffec5c9-2d00-49b7-8941-3ea10a5586b7": "Plain dm-crypt partitiont",
+    "ca7d7ccb-63ed-4c53-861c-1742536059cc": "LUKS partition",
+    "_comment_14": "Linux Boot GUIDS https://github.com/linuxboot/linuxboot/blob/master/boards/s2600wf/vendor-files.txt",
+    "9cfd802c-09a1-43d6-8217-aa49c1f90d2c": "Intel Management Engine BIOS Extension (Mebx)",
+    "b62efbbb-3923-4cb9-a6e8-db818e828a80": "Intel Management Engine BIOS Extension (Mebx) Setup Browser",
+    "9ce4325e-003e-11e3-b582-b8ac6f199a57": "Non-Volatile Dual In-line Memory Module (NVDIMM) Driver",
+    "ea9de6d5-7839-46f7-9e63-4de8b00e2e5d": "NVM DIMM Human Interface Infrastructure (HII)",
+    "56a1b86f-0d4a-485d-87de-ad0eba1c8c2a": "IBM C Video Gop",
+    "a1f436ea-a127-4ef8-957c-8048606ff670": "SnpDxe",
+    "a210f973-229d-4f4d-aa37-9895e6c9eaba": "DpcDxe",
+    "025bbfc7-e6a9-4b8b-82ad-6815a1aeaf4a": "MNP Network Service Driver - MnpDxe",
+    "b44b2005-42bc-41c9-80af-abd7dc7d6923": "RSTesSATAEFI",
+    "15e1e31a-9f9d-4c84-82fb-1a707fc0f63b": "RSTeSATAEFI",
+    "2cc25173-bd9f-4c89-89cc-29256a3fd9c3": "RSTesSATALegacy",
+    "bd5d4ca5-674f-4584-8cf9-ce4ea1f54dd1": "RSTeSATALegacy",
+    "_comment_15": "WinNt GUIDs, add if they are still found in use https://sourceforge.net/p/uefinotes/wiki/FV%20Sources/?version=3",
+    "fc5c7020-1a48-4198-9be2-ead5abc8cf2f": "BdsDxe",
+    "d0893f05-b06d-4161-b947-9be9b85ac3a1": "SnpNt32Dxe",
+    "9b3ada4f-ae56-4c24-8Dea-f03b7558ae50": "PcdPeim",
+    "34c8c28F-b61c-45a2-8f2e-89e46becc63b": "PeiVariable",
+    "fe5cea76-4f72-49e8-986f-2cd899dffe5d": "FaultTolerantWriteDxe",
+    "_comment_16": "Linux Boot Image files UEFI Platform Initialization (PI) specifications Driver Execution Environment (DXE) Architectural protocols and platform modules https://github.com/linuxboot/linuxboot/blob/master/boards/winterfell/image-files.txt",
+    "5ae3f37e-4eae-41ae-8240-35465b5e81eb": "CORE_DXE",
+    "cbc59c4a-383a-41eb-a8ee-4498aea567e4": "DXE Runtime",
+    "3c1de39f-d207-408a-aacc-731cfb7f1dd7": "DXE PciBus",
+    "80e66e0a-ccd1-43fa-a7b1-2d5ee0f13910": "DXE PciRootBridge",
+    "9f3a0016-ae55-4288-829d-d22fd344c347": "DXE AmiBoardInfo",
+    "13ac6dd0-73d0-11d4-b06b-00aa00bd6de7": "DXE EBC",
+    "e03abadf-e536-4e88-b3a0-b77f78eb34fe": "CPU DXE",
+    "b7d19491-e55a-470d-8508-85a5dfa41974": "SBDXE",
+    "e23f86e1-056e-4888-b685-cfcd67c179d4": "DXE SBRun",
+    "e4ecd0b2-e277-4f2b-becb-e4d75c9a812e": "NBDXE",
+    "5ad34ba6-f024-2149-52e4-da0398e2bb9": "DXE Services Table",
+    "_comment_17": "ACPI configuration and tables",
+    "750890a6-7acf-4f4f-81bd-b400c2bea95a": "AcpiModeEnable",
+    "d4c05cd1-5eae-431d-a095-13a9e5822045": "MPST",
+    "db93cb2c-bf1c-431a-abc8-8737bc2afc1f": "PRAD-ACPI-table",
+    "3bc5b795-a4e0-4d56-9321-316d18a7aefe": "PRAD",
+    "16d0a23e-c09c-407d-a14a-ad058fdd0ca1": "ACPI",
+    "26a2481e-4424-46a2-9943-cc4039ead8f8": "S3Save",
+    "efd652cc-0e99-40f0-96c0-e08c089070fc": "S3Restore",
+    "8c783970-f02a-4a4d-af09-8797a51eec8d": "PowerManagement",
+    "299141bb-211a-48a5-92c0-6f9a0a3a006e0": "PowerManagement-ACPI-table",
+    "2df10014-cf21-4280-8c3f-e539b8ee5150": "PpmPolicyInitDxe",
+    "4b680e2d-0d63-4f62-b930-7ae995b9b3a3": "SmBusDxe",
+    "_comment_18": "SMM handlers",
+    "4a37320b-3fb3-4365-9730-9e89c600395d": "SmmDispatcher",
+    "753630c9-fae5-47a9-bbbf-88d621cd7282": "SmmChildDispatcher",
+    "be216ba8-38c4-4535-a6ca-5dca5b43addf": "SmiVariable",
+    "a56897a1-a77f-4600-84db-22b0a801fa9a": "SmmRuntime",
+    "d2596f82-f0e1-49fa-95bc-62012c795728": "SmmBase Data",
+    "69009842-63f2-43db-964b-efad1c39ec85": "SmmBase Data",
+    "d0632c90-afd7-4492-b186-257c63143c61": "SmmBase",
+    "7e2d983f-f703-4a29-9761-77b51f5354ed": "SmmCommunicate",
+    "_comment_19": "CMOS and NVRAM handlers",
+    "6869c5b3-ac8d-4973-8b37-e354dbf34add": "CmosManagerSmm",
+    "842a454a-75e5-408b-8b1c-36420e4e3f21": "NvramSmi",
+    "5446c293-339b-47cd-b719-585de39408cc": "PostReport",
+    "71ca9ca1-325d-4bfe-afa3-2ec5c94a8680": "DmAcpi",
+    "cef68c66-06ab-4fb3-a3ed-5ffa885b5725": "SMBiosBoard",
+    "b13edd38-684c-41ed-a305-d7b7e32497df": "SMBios64",
+    "ded7956d-7e20-4f20-91a1-190439b04d5b": "SmbiosGetFlashData64",
+    "daf4bf89-ce71-4917-b522-c89d32fbc59f": "SmbiosStaticData",
+    "_comment_20": "Apple GUIDS",
+    "48465300-0000-11aa-aa11-00306543ecac": "Apple Hierarchical File System Plus (HFS+) partition ",
+    "7c3457ef-0000-11aa-aa11-00306543ecac": "Apple APFS container",
+    "55465300-0000-11aa-aa11-00306543ecac": "Apple UFS container",
+    "52414944-0000-11aa-aa11-00306543ecac": "Apple RAID partition",
+    "4c616265-6c00-11aa-aa11-00306543ecac": "Apple Label",
+    "53746f72-6167-11aa-aa11-00306543ecac": "Apple Core Storage Container",
+    "6a898cc3-1dd2-11b2-99a6-080020736631": "ZFS Partition",
+    "_comment_21": "Chrome OS GUIDS",
+    "2568845d-2332-4675-bc39-8fa5a4748d15": "Chrome OS kernel ",
+    "3cb8e202-3b7e-47dd-8a3c-7ff2a13cfcec": "Chrome OS rootfs ",
+    "2e0a753d-9e48-43b0-8337-b15192cb1b5e": "Chrome OS future use ",
+    "_comment_22": "Android GUIDS",
+    "fe3a2a5d-4f32-41a7-b725-accc3285a309": "Android Bootloader",
+    "114eaffe-1552-4022-b26e-9b053604cf84": "Android Bootloader 2",
+    "49a4d17f-93a3-45c1-a0de-f50b2ebe2599": "Android Boot",
+    "4177c722-9e92-4aab-8644-43502bfd5506": "Android Recovery",
+    "38f428e6-d326-425d-9140-6e0ea133647c": "Android System",
+    "bd59408b-4514-490d-bf12-9878d963f378": "Android Config",
+    "8f68cc74-c5e5-48da-be91-a0c8c15e9c80": "Android Factory",
+    "ac6d7924-eb71-4df8-b48d-e267b27148ff": "Android OEM",
+    "_comment_23": "MISC GUIDs",
+    "5023b95c-db26-429b-a648-bd47664c8012": "Built-in EFI Shell",
+    "610a0202-d308-00c4-0000-000004300d06": "Mystery UUID",
+    "00000000-0000-0000-0000-000000000000": "Empty UUID"
+  }
+}
diff --git a/package/rpm/HIRS.spec b/package/rpm/HIRS.spec
index 0fd718ce..db8f6337 100644
--- a/package/rpm/HIRS.spec
+++ b/package/rpm/HIRS.spec
@@ -260,6 +260,7 @@ fi
 %attr(664, root, tomcat) /opt/hirs/default-properties/attestationca/banner.properties
 %attr(664, root, tomcat) /opt/hirs/default-properties/attestationca/persistence.properties
 %attr(664, root, tomcat) /opt/hirs/default-properties/component-class.json
+%attr(664, root, tomcat) /opt/hirs/default-properties/vendor-table.json
 %attr(774, root, tomcat) /opt/hirs/scripts/common/aca
 %attr(774, root, tomcat) /opt/hirs/scripts/aca
 %attr(774, root, tomcat) /opt/hirs/extras/aca/tomcat-mysql-hirs.pp
@@ -329,6 +330,7 @@ cp HIRS_Utils/src/main/resources/persistence.properties %{buildroot}/opt/hirs/de
 cp HIRS_Utils/src/main/resources/logging.properties %{buildroot}/opt/hirs/default-properties/attestationca/
 cp HIRS_Utils/src/main/resources/banner.properties %{buildroot}/opt/hirs/default-properties/attestationca/
 cp HIRS_Utils/src/main/resources/component-class.json %{buildroot}/opt/hirs/default-properties/
+cp HIRS_Utils/src/main/resources/vendor-table.json %{buildroot}/opt/hirs/default-properties/
 
 # install extras
 mkdir -p %{buildroot}/opt/hirs/extras

From 24e460e0c4aeb792edecf779c757961a7521cee5 Mon Sep 17 00:00:00 2001
From: Cyrus <24922493+cyrus-dev@users.noreply.github.com>
Date: Mon, 26 Oct 2020 11:09:26 -0400
Subject: [PATCH 2/3] This is a refactore that changes BiosMeasurements into
 EventLogMeasurements for evolving naming convention updates.

---
 .../AbstractAttestationCertificateAuthority.java |  6 +++---
 .../SupplyChainValidationServiceImpl.java        |  4 ++--
 ...asurements.java => EventLogMeasurements.java} | 16 ++++++++--------
 3 files changed, 13 insertions(+), 13 deletions(-)
 rename HIRS_Utils/src/main/java/hirs/data/persist/{BiosMeasurements.java => EventLogMeasurements.java} (91%)

diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/AbstractAttestationCertificateAuthority.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/AbstractAttestationCertificateAuthority.java
index 769c7b3a..f990bd26 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/AbstractAttestationCertificateAuthority.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/AbstractAttestationCertificateAuthority.java
@@ -9,7 +9,7 @@ import hirs.attestationca.exceptions.UnexpectedServerException;
 import hirs.attestationca.service.SupplyChainValidationService;
 import hirs.data.persist.AppraisalStatus;
 import hirs.data.persist.BaseReferenceManifest;
-import hirs.data.persist.BiosMeasurements;
+import hirs.data.persist.EventLogMeasurements;
 import hirs.data.persist.Device;
 import hirs.data.persist.DeviceInfoReport;
 import hirs.data.persist.ReferenceManifest;
@@ -810,13 +810,13 @@ public abstract class AbstractAttestationCertificateAuthority
                     clientName);
             try {
                 // find previous version.  If it exists, delete it
-                support = BiosMeasurements.select(referenceManifestManager)
+                support = EventLogMeasurements.select(referenceManifestManager)
                         .byManufacturer(dv.getHw().getManufacturer())
                         .includeArchived().getRIM();
                 if (support != null) {
                     this.referenceManifestManager.delete(support);
                 }
-                support = new BiosMeasurements(fileName,
+                support = new EventLogMeasurements(fileName,
                         dv.getLivelog().toByteArray());
                 support.setPlatformManufacturer(dv.getHw().getManufacturer());
                 support.setPlatformModel(dv.getHw().getProductName());
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 3d30cbe4..33769908 100644
--- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/service/SupplyChainValidationServiceImpl.java
+++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/service/SupplyChainValidationServiceImpl.java
@@ -7,7 +7,7 @@ import java.security.NoSuchAlgorithmException;
 import java.security.cert.CertificateException;
 
 import hirs.data.persist.BaseReferenceManifest;
-import hirs.data.persist.BiosMeasurements;
+import hirs.data.persist.EventLogMeasurements;
 import hirs.data.persist.SupportReferenceManifest;
 import hirs.data.persist.TPMMeasurementRecord;
 import hirs.data.persist.PCRPolicy;
@@ -340,7 +340,7 @@ public class SupplyChainValidationServiceImpl implements SupplyChainValidationSe
                 .byManufacturer(manufacturer).getRIM();
         supportReferenceManifest = SupportReferenceManifest.select(referenceManifestManager)
                 .byManufacturer(manufacturer).getRIM();
-        measurement = BiosMeasurements.select(referenceManifestManager)
+        measurement = EventLogMeasurements.select(referenceManifestManager)
                 .byManufacturer(manufacturer).includeArchived().getRIM();
 
         String failedString = "";
diff --git a/HIRS_Utils/src/main/java/hirs/data/persist/BiosMeasurements.java b/HIRS_Utils/src/main/java/hirs/data/persist/EventLogMeasurements.java
similarity index 91%
rename from HIRS_Utils/src/main/java/hirs/data/persist/BiosMeasurements.java
rename to HIRS_Utils/src/main/java/hirs/data/persist/EventLogMeasurements.java
index f63835db..11f63d32 100644
--- a/HIRS_Utils/src/main/java/hirs/data/persist/BiosMeasurements.java
+++ b/HIRS_Utils/src/main/java/hirs/data/persist/EventLogMeasurements.java
@@ -23,8 +23,8 @@ import java.util.Collection;
  * however this is the live log from the client.
  */
 @Entity
-public class BiosMeasurements extends ReferenceManifest {
-    private static final Logger LOGGER = LogManager.getLogger(BiosMeasurements.class);
+public class EventLogMeasurements extends ReferenceManifest {
+    private static final Logger LOGGER = LogManager.getLogger(EventLogMeasurements.class);
 
     @Column
     @JsonIgnore
@@ -33,7 +33,7 @@ public class BiosMeasurements extends ReferenceManifest {
     /**
      * This class enables the retrieval of SupportReferenceManifest by their attributes.
      */
-    public static class Selector extends ReferenceManifestSelector<BiosMeasurements> {
+    public static class Selector extends ReferenceManifestSelector<EventLogMeasurements> {
         /**
          * Construct a new ReferenceManifestSelector that
          * will use the given (@link ReferenceManifestManager}
@@ -43,7 +43,7 @@ public class BiosMeasurements extends ReferenceManifest {
          * reference manifests.
          */
         public Selector(final ReferenceManifestManager referenceManifestManager) {
-            super(referenceManifestManager, BiosMeasurements.class, false);
+            super(referenceManifestManager, EventLogMeasurements.class, false);
         }
 
         /**
@@ -86,7 +86,7 @@ public class BiosMeasurements extends ReferenceManifest {
      * @param rimBytes byte array representation of the RIM
      * @throws java.io.IOException if unable to unmarshal the string
      */
-    public BiosMeasurements(final byte[] rimBytes) throws IOException {
+    public EventLogMeasurements(final byte[] rimBytes) throws IOException {
         this("blank.measurement", rimBytes);
     }
     /**
@@ -96,8 +96,8 @@ public class BiosMeasurements extends ReferenceManifest {
      * @param rimBytes byte array representation of the RIM
      * @throws java.io.IOException if unable to unmarshal the string
      */
-    public BiosMeasurements(final String fileName,
-                            final byte[] rimBytes
+    public EventLogMeasurements(final String fileName,
+                                final byte[] rimBytes
                             ) throws IOException {
         super(rimBytes);
         this.setFileName(fileName);
@@ -109,7 +109,7 @@ public class BiosMeasurements extends ReferenceManifest {
     /**
      * Default constructor necessary for Hibernate.
      */
-    protected BiosMeasurements() {
+    protected EventLogMeasurements() {
         super();
         this.pcrHash = 0;
     }

From 49714fb3f27570bef92bab07d05ff26a5f005973 Mon Sep 17 00:00:00 2001
From: Cyrus <24922493+cyrus-dev@users.noreply.github.com>
Date: Wed, 4 Nov 2020 07:44:07 -0500
Subject: [PATCH 3/3] Updated the Component Class Registry to rev. 4

---
 HIRS_Utils/src/main/resources/component-class.json | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/HIRS_Utils/src/main/resources/component-class.json b/HIRS_Utils/src/main/resources/component-class.json
index 96608b1a..e0761ef7 100644
--- a/HIRS_Utils/src/main/resources/component-class.json
+++ b/HIRS_Utils/src/main/resources/component-class.json
@@ -219,7 +219,7 @@
         "0x00000006": "Touch Pad",
         "0x00000007": "Touch Screen",
         "0x00000008": "Camera",
-        "0x00000009": "Fingerpoint Reader",
+        "0x00000009": "Fingerprint Reader",
         "0x0000000A": "Keyboard",
         "0x0000000B": "Smartcard Reader",
         "0x0000000C": "Biometric Reader",
@@ -322,6 +322,16 @@
         "0x0000000A": "Ribbon Cable",
         "0x0000000B": "PCI Express Cable"
       }
+    },
+    "Firmware": {
+      "ID": "0x00130000",
+      "Types": {
+        "0x00000002": "UEFI",
+        "0x00000003": "System BIOS",
+        "0x00000004": "Drive BIOS",
+        "0x00000005": "Bootloader",
+        "0x00000006": "System Management Module"
+      }
     }
   }
 }
\ No newline at end of file