private void verifyPdbSignature() throws IOException, PdbException {

		XmlElement xmlelem;

		try {
			xmlelem = parser.peek();
		}
		catch (Exception e) {
			if (!isXML) {
				if (hasErrors()) {
					throw new PdbException(getErrorAndWarningMessages());
				}
				throw new PdbException("PDB Execution failure of " + PDB_EXE + ".\n" +
					"This was likely caused by severe execution failure which can occur if executed\n" +
					"on an unsupported platform. It may be necessary to rebuild the PDB executable\n" +
					"for your platform (see Ghidra/Features/PDB/src).");
			}
			throw new PdbException("PDB parsing problem: " + e.getMessage());
		}

		if (!"pdb".equals(xmlelem.getName())) {
			throw new PdbException("Unexpected PDB XML element: " + xmlelem.getName());
		}

		String xmlGuid = xmlelem.getAttribute("guid");
		String xmlAge = xmlelem.getAttribute("age");

		String warning = "";
		String pdbGuid = programAttributes.getPdbGuid();

		if (pdbGuid == null) {
			String pdbSignature = programAttributes.getPdbSignature();
			if (pdbSignature != null) {
				pdbGuid = reformatSignatureToGuidForm(pdbSignature);
			}
		}

		String pdbAge = programAttributes.getPdbAge();

		if ((xmlGuid == null) || (pdbGuid == null)) {

			if (xmlGuid == null) {
				warning += "No GUID was listed in the XML file.";
			}

			if (pdbGuid == null) {
				warning += " Could not find a PDB GUID for the binary.";
			}

			warning += " Could not complete verification of matching PDB signatures.";
		}
		else {
			// Reformat PDB GUID so that it matches the way GUIDs are stored in XML
			pdbGuid = pdbGuid.toUpperCase();
			pdbGuid = "{" + pdbGuid + "}";

			if (!allowNonExactMatch) {
				if (!xmlGuid.equals(pdbGuid)) {
					warning = "PDB signature does not match.\n" + "Program GUID: " + pdbGuid +
						"\nXML GUID: " + xmlGuid;
				}
				else {
					// Also check that PDB ages match, if they are both available
					if ((xmlAge != null) && (pdbAge != null)) {

						int pdbAgeDecimal = Integer.parseInt(pdbAge, 16);
						int xmlAgeDecimal = Integer.parseInt(xmlAge);

						if (xmlAgeDecimal != pdbAgeDecimal) {
							warning = "PDB ages do not match.";
						}
					}
				}
			}
		}

		if (warning.length() > 0) {
			if (SystemUtilities.isInHeadlessMode()) {
				throw new PdbException(warning + ".. Skipping PDB processing.");
			}
			int option = OptionDialog.showYesNoDialog(null, "Continue Loading PDB?",
				warning + "\n " + "\nContinue anyway?" + "\n " +
					"\nPlease note: Invalid disassembly may be produced!");
			if (option != OptionDialog.OPTION_ONE) {
				throw new PdbException(warning);
			}
		}
	}
Check to see if GUID and age in XML file matches GUID/Signature and age of binary

@throws IOException If an I/O error occurs
@throws PdbException If error parsing the PDB.XML data
Ghidra/Features/PDB/src/main/java/ghidra/app/util/bin/format/pdb/PdbParser.java