mirror of
https://github.com/nsacyber/HIRS.git
synced 2024-12-18 12:46:30 +00:00
issue_825: Successfully merged main into this branch
This commit is contained in:
commit
86d2084171
@ -103,7 +103,6 @@ public class BaseReferenceManifest extends ReferenceManifest {
|
||||
* @param rimBytes byte array representation of the RIM
|
||||
* @throws IOException if unable to unmarshal the string
|
||||
*/
|
||||
@SuppressWarnings("checkstyle:AvoidInlineConditionals")
|
||||
public BaseReferenceManifest(final String fileName, final byte[] rimBytes)
|
||||
throws UnmarshalException {
|
||||
super(rimBytes);
|
||||
@ -127,9 +126,11 @@ public class BaseReferenceManifest extends ReferenceManifest {
|
||||
SwidTagConstants.SWIDTAG_NAMESPACE, SwidTagConstants.META).item(0);
|
||||
setTagId(softwareIdentity.getAttribute(SwidTagConstants.TAGID));
|
||||
this.swidName = softwareIdentity.getAttribute(SwidTagConstants.NAME);
|
||||
this.swidCorpus = Boolean.parseBoolean(softwareIdentity.getAttribute(SwidTagConstants.CORPUS)) ? 1 : 0;
|
||||
this.swidCorpus =
|
||||
Boolean.parseBoolean(softwareIdentity.getAttribute(SwidTagConstants.CORPUS)) ? 1 : 0;
|
||||
this.setSwidPatch(Boolean.parseBoolean(softwareIdentity.getAttribute(SwidTagConstants.PATCH)));
|
||||
this.setSwidSupplemental(Boolean.parseBoolean(softwareIdentity.getAttribute(SwidTagConstants.SUPPLEMENTAL)));
|
||||
this.setSwidSupplemental(
|
||||
Boolean.parseBoolean(softwareIdentity.getAttribute(SwidTagConstants.SUPPLEMENTAL)));
|
||||
this.setSwidVersion(softwareIdentity.getAttribute(SwidTagConstants.VERSION));
|
||||
this.setSwidTagVersion(softwareIdentity.getAttribute(SwidTagConstants.TAGVERSION));
|
||||
|
||||
@ -147,20 +148,22 @@ public class BaseReferenceManifest extends ReferenceManifest {
|
||||
*/
|
||||
private void parseSoftwareMeta(final Element softwareMeta) {
|
||||
if (softwareMeta != null) {
|
||||
this.colloquialVersion = softwareMeta.getAttribute(SwidTagConstants._COLLOQUIAL_VERSION_STR);
|
||||
this.product = softwareMeta.getAttribute(SwidTagConstants._PRODUCT_STR);
|
||||
this.revision = softwareMeta.getAttribute(SwidTagConstants._REVISION_STR);
|
||||
this.edition = softwareMeta.getAttribute(SwidTagConstants._EDITION_STR);
|
||||
this.rimLinkHash = softwareMeta.getAttribute(SwidTagConstants._RIM_LINK_HASH_STR);
|
||||
this.bindingSpec = softwareMeta.getAttribute(SwidTagConstants._BINDING_SPEC_STR);
|
||||
this.bindingSpecVersion = softwareMeta.getAttribute(SwidTagConstants._BINDING_SPEC_VERSION_STR);
|
||||
this.setPlatformManufacturerId(softwareMeta.getAttribute(SwidTagConstants._PLATFORM_MANUFACTURER_ID_STR));
|
||||
this.setPlatformManufacturer(softwareMeta.getAttribute(SwidTagConstants._PLATFORM_MANUFACTURER_STR));
|
||||
this.setPlatformModel(softwareMeta.getAttribute(SwidTagConstants._PLATFORM_MODEL_STR));
|
||||
this.platformVersion = softwareMeta.getAttribute(SwidTagConstants._PLATFORM_VERSION_STR);
|
||||
this.payloadType = softwareMeta.getAttribute(SwidTagConstants._PAYLOAD_TYPE_STR);
|
||||
this.pcURIGlobal = softwareMeta.getAttribute(SwidTagConstants._PC_URI_GLOBAL_STR);
|
||||
this.pcURILocal = softwareMeta.getAttribute(SwidTagConstants._PC_URI_LOCAL_STR);
|
||||
this.colloquialVersion = softwareMeta.getAttribute(SwidTagConstants.COLLOQUIAL_VERSION_STR);
|
||||
this.product = softwareMeta.getAttribute(SwidTagConstants.PRODUCT_STR);
|
||||
this.revision = softwareMeta.getAttribute(SwidTagConstants.REVISION_STR);
|
||||
this.edition = softwareMeta.getAttribute(SwidTagConstants.EDITION_STR);
|
||||
this.rimLinkHash = softwareMeta.getAttribute(SwidTagConstants.RIM_LINK_HASH_STR);
|
||||
this.bindingSpec = softwareMeta.getAttribute(SwidTagConstants.BINDING_SPEC_STR);
|
||||
this.bindingSpecVersion = softwareMeta.getAttribute(SwidTagConstants.BINDING_SPEC_VERSION_STR);
|
||||
this.setPlatformManufacturerId(
|
||||
softwareMeta.getAttribute(SwidTagConstants.PLATFORM_MANUFACTURER_ID_STR));
|
||||
this.setPlatformManufacturer(
|
||||
softwareMeta.getAttribute(SwidTagConstants.PLATFORM_MANUFACTURER_FULL_STR));
|
||||
this.setPlatformModel(softwareMeta.getAttribute(SwidTagConstants.PLATFORM_MODEL_STR));
|
||||
this.platformVersion = softwareMeta.getAttribute(SwidTagConstants.PLATFORM_VERSION_STR);
|
||||
this.payloadType = softwareMeta.getAttribute(SwidTagConstants.PAYLOAD_TYPE_STR);
|
||||
this.pcURIGlobal = softwareMeta.getAttribute(SwidTagConstants.PC_URI_GLOBAL_STR);
|
||||
this.pcURILocal = softwareMeta.getAttribute(SwidTagConstants.PC_URI_LOCAL_STR);
|
||||
} else {
|
||||
log.warn("SoftwareMeta Tag not found.");
|
||||
}
|
||||
@ -202,7 +205,6 @@ public class BaseReferenceManifest extends ReferenceManifest {
|
||||
* This method validates the .swidtag file at the given filepath against the
|
||||
* schema. A successful validation results in the output of the tag's name
|
||||
* and tagId attributes, otherwise a generic error message is printed.
|
||||
*
|
||||
*/
|
||||
private Element getDirectoryTag(final byte[] rimBytes) {
|
||||
if (rimBytes == null || rimBytes.length == 0) {
|
||||
@ -254,7 +256,6 @@ public class BaseReferenceManifest extends ReferenceManifest {
|
||||
* This method iterates over the list of File elements under the directory.
|
||||
*
|
||||
* @param rimBytes the bytes to find the files
|
||||
*
|
||||
*/
|
||||
public List<SwidResource> getFileResources(final byte[] rimBytes) {
|
||||
Element directoryTag = getDirectoryTag(rimBytes);
|
||||
@ -267,8 +268,8 @@ public class BaseReferenceManifest extends ReferenceManifest {
|
||||
swidResource = new SwidResource();
|
||||
swidResource.setName(file.getAttribute(SwidTagConstants.NAME));
|
||||
swidResource.setSize(file.getAttribute(SwidTagConstants.SIZE));
|
||||
swidResource.setHashValue(file.getAttribute(SwidTagConstants._SHA256_HASH.getPrefix() + ":"
|
||||
+ SwidTagConstants._SHA256_HASH.getLocalPart()));
|
||||
swidResource.setHashValue(file.getAttribute(SwidTagConstants.SHA_256_HASH.getPrefix() + ":"
|
||||
+ SwidTagConstants.SHA_256_HASH.getLocalPart()));
|
||||
validHashes.add(swidResource);
|
||||
}
|
||||
|
||||
@ -353,9 +354,15 @@ public class BaseReferenceManifest extends ReferenceManifest {
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
if (!super.equals(o)) return false;
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
if (!super.equals(o)) {
|
||||
return false;
|
||||
}
|
||||
BaseReferenceManifest that = (BaseReferenceManifest) o;
|
||||
return swidCorpus == that.swidCorpus && Objects.equals(swidName, that.swidName)
|
||||
&& Objects.equals(colloquialVersion, that.colloquialVersion)
|
||||
|
@ -348,9 +348,9 @@ public class IdentityClaimProcessor extends AbstractProcessor {
|
||||
String defaultClientName = String.format("%s_%s",
|
||||
dv.getHw().getManufacturer(),
|
||||
dv.getHw().getProductName());
|
||||
BaseReferenceManifest dbBaseRim = null;
|
||||
SupportReferenceManifest support = null;
|
||||
EventLogMeasurements measurements;
|
||||
BaseReferenceManifest baseRim = null;
|
||||
SupportReferenceManifest supportRim = null;
|
||||
EventLogMeasurements integrityMeasurements;
|
||||
boolean isReplacement = false;
|
||||
String replacementRimId = "";
|
||||
String tagId = "";
|
||||
@ -362,55 +362,55 @@ public class IdentityClaimProcessor extends AbstractProcessor {
|
||||
if (dv.getSwidfileCount() > 0) {
|
||||
for (ByteString swidFile : dv.getSwidfileList()) {
|
||||
try {
|
||||
dbBaseRim = (BaseReferenceManifest) referenceManifestRepository
|
||||
baseRim = (BaseReferenceManifest) referenceManifestRepository
|
||||
.findByBase64Hash(Base64.getEncoder()
|
||||
.encodeToString(messageDigest
|
||||
.digest(swidFile.toByteArray())));
|
||||
if (dbBaseRim == null) {
|
||||
if (baseRim == null) {
|
||||
/*
|
||||
Either the swidFile does not have a corresponding base RIM in the backend
|
||||
or it was deleted. Check if there is a replacement by comparing tagId against
|
||||
all other base RIMs, and then set the corresponding support rim's deviceName.
|
||||
*/
|
||||
dbBaseRim = new BaseReferenceManifest(
|
||||
baseRim = new BaseReferenceManifest(
|
||||
String.format("%s.swidtag",
|
||||
defaultClientName),
|
||||
swidFile.toByteArray());
|
||||
List<BaseReferenceManifest> baseRims = referenceManifestRepository.findAllBaseRims();
|
||||
for (BaseReferenceManifest bRim : baseRims) {
|
||||
if (bRim.getTagId().equals(dbBaseRim.getTagId())) {
|
||||
dbBaseRim = bRim;
|
||||
replacementRimId = dbBaseRim.getAssociatedRim().toString();
|
||||
if (bRim.getTagId().equals(baseRim.getTagId())) {
|
||||
baseRim = bRim;
|
||||
replacementRimId = baseRim.getAssociatedRim().toString();
|
||||
isReplacement = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
dbBaseRim.setDeviceName(dv.getNw().getHostname());
|
||||
this.referenceManifestRepository.save(dbBaseRim);
|
||||
} else if (dbBaseRim.isArchived()) {
|
||||
baseRim.setDeviceName(dv.getNw().getHostname());
|
||||
this.referenceManifestRepository.save(baseRim);
|
||||
} else if (baseRim.isArchived()) {
|
||||
/*
|
||||
This block accounts for RIMs that may have been soft-deleted (archived)
|
||||
in an older version of the ACA.
|
||||
*/
|
||||
List<ReferenceManifest> rims = referenceManifestRepository.findByArchiveFlag(false);
|
||||
for (ReferenceManifest rim : rims) {
|
||||
if (rim.isBase() && rim.getTagId().equals(dbBaseRim.getTagId()) &&
|
||||
rim.getCreateTime().after(dbBaseRim.getCreateTime())) {
|
||||
dbBaseRim.setDeviceName(null);
|
||||
dbBaseRim = (BaseReferenceManifest) rim;
|
||||
dbBaseRim.setDeviceName(dv.getNw().getHostname());
|
||||
if (rim.isBase() && rim.getTagId().equals(baseRim.getTagId()) &&
|
||||
rim.getCreateTime().after(baseRim.getCreateTime())) {
|
||||
baseRim.setDeviceName(null);
|
||||
baseRim = (BaseReferenceManifest) rim;
|
||||
baseRim.setDeviceName(dv.getNw().getHostname());
|
||||
}
|
||||
}
|
||||
if (dbBaseRim.isArchived()) {
|
||||
if (baseRim.isArchived()) {
|
||||
throw new Exception("Unable to locate an unarchived base RIM.");
|
||||
} else {
|
||||
this.referenceManifestRepository.save(dbBaseRim);
|
||||
this.referenceManifestRepository.save(baseRim);
|
||||
}
|
||||
} else {
|
||||
dbBaseRim.setDeviceName(dv.getNw().getHostname());
|
||||
this.referenceManifestRepository.save(dbBaseRim);
|
||||
baseRim.setDeviceName(dv.getNw().getHostname());
|
||||
this.referenceManifestRepository.save(baseRim);
|
||||
}
|
||||
tagId = dbBaseRim.getTagId();
|
||||
tagId = baseRim.getTagId();
|
||||
} catch (UnmarshalException e) {
|
||||
log.error(e);
|
||||
} catch (Exception ex) {
|
||||
@ -425,11 +425,11 @@ public class IdentityClaimProcessor extends AbstractProcessor {
|
||||
if (dv.getLogfileCount() > 0) {
|
||||
for (ByteString logFile : dv.getLogfileList()) {
|
||||
try {
|
||||
support =
|
||||
supportRim =
|
||||
(SupportReferenceManifest) referenceManifestRepository.findByHexDecHashAndRimType(
|
||||
Hex.encodeHexString(messageDigest.digest(logFile.toByteArray())),
|
||||
ReferenceManifest.SUPPORT_RIM);
|
||||
if (support == null) {
|
||||
if (supportRim == null) {
|
||||
/*
|
||||
Either the logFile does not have a corresponding support RIM in the backend
|
||||
or it was deleted. The support RIM for a replacement base RIM is handled
|
||||
@ -439,28 +439,28 @@ public class IdentityClaimProcessor extends AbstractProcessor {
|
||||
Optional<ReferenceManifest> replacementRim =
|
||||
referenceManifestRepository.findById(UUID.fromString(replacementRimId));
|
||||
if (replacementRim.isPresent()) {
|
||||
support = (SupportReferenceManifest) replacementRim.get();
|
||||
support.setDeviceName(dv.getNw().getHostname());
|
||||
supportRim = (SupportReferenceManifest) replacementRim.get();
|
||||
supportRim.setDeviceName(dv.getNw().getHostname());
|
||||
} else {
|
||||
throw new Exception("Unable to locate support RIM " + replacementRimId);
|
||||
}
|
||||
} else {
|
||||
support = new SupportReferenceManifest(
|
||||
supportRim = new SupportReferenceManifest(
|
||||
String.format("%s.rimel",
|
||||
defaultClientName),
|
||||
logFile.toByteArray());
|
||||
// this is a validity check
|
||||
new TCGEventLog(support.getRimBytes());
|
||||
new TCGEventLog(supportRim.getRimBytes());
|
||||
// no issues, continue
|
||||
support.setPlatformManufacturer(dv.getHw().getManufacturer());
|
||||
support.setPlatformModel(dv.getHw().getProductName());
|
||||
support.setFileName(String.format("%s_[%s].rimel", defaultClientName,
|
||||
support.getHexDecHash().substring(
|
||||
support.getHexDecHash().length() - NUM_OF_VARIABLES)));
|
||||
supportRim.setPlatformManufacturer(dv.getHw().getManufacturer());
|
||||
supportRim.setPlatformModel(dv.getHw().getProductName());
|
||||
supportRim.setFileName(String.format("%s_[%s].rimel", defaultClientName,
|
||||
supportRim.getHexDecHash().substring(
|
||||
supportRim.getHexDecHash().length() - NUM_OF_VARIABLES)));
|
||||
}
|
||||
support.setDeviceName(dv.getNw().getHostname());
|
||||
this.referenceManifestRepository.save(support);
|
||||
} else if (support.isArchived()) {
|
||||
supportRim.setDeviceName(dv.getNw().getHostname());
|
||||
this.referenceManifestRepository.save(supportRim);
|
||||
} else if (supportRim.isArchived()) {
|
||||
/*
|
||||
This block accounts for RIMs that may have been soft-deleted (archived)
|
||||
in an older version of the ACA.
|
||||
@ -468,21 +468,21 @@ public class IdentityClaimProcessor extends AbstractProcessor {
|
||||
List<ReferenceManifest> rims = referenceManifestRepository.findByArchiveFlag(false);
|
||||
for (ReferenceManifest rim : rims) {
|
||||
if (rim.isSupport() &&
|
||||
rim.getTagId().equals(support.getTagId()) &&
|
||||
rim.getCreateTime().after(support.getCreateTime())) {
|
||||
support.setDeviceName(null);
|
||||
support = (SupportReferenceManifest) rim;
|
||||
support.setDeviceName(dv.getNw().getHostname());
|
||||
rim.getTagId().equals(supportRim.getTagId()) &&
|
||||
rim.getCreateTime().after(supportRim.getCreateTime())) {
|
||||
supportRim.setDeviceName(null);
|
||||
supportRim = (SupportReferenceManifest) rim;
|
||||
supportRim.setDeviceName(dv.getNw().getHostname());
|
||||
}
|
||||
}
|
||||
if (support.isArchived()) {
|
||||
if (supportRim.isArchived()) {
|
||||
throw new Exception("Unable to locate an unarchived support RIM.");
|
||||
} else {
|
||||
this.referenceManifestRepository.save(support);
|
||||
this.referenceManifestRepository.save(supportRim);
|
||||
}
|
||||
} else {
|
||||
support.setDeviceName(dv.getNw().getHostname());
|
||||
this.referenceManifestRepository.save(support);
|
||||
supportRim.setDeviceName(dv.getNw().getHostname());
|
||||
this.referenceManifestRepository.save(supportRim);
|
||||
}
|
||||
} catch (IOException ioEx) {
|
||||
log.error(ioEx);
|
||||
@ -497,18 +497,18 @@ public class IdentityClaimProcessor extends AbstractProcessor {
|
||||
|
||||
//update Support RIMs and Base RIMs.
|
||||
for (ByteString swidFile : dv.getSwidfileList()) {
|
||||
dbBaseRim = (BaseReferenceManifest) referenceManifestRepository
|
||||
baseRim = (BaseReferenceManifest) referenceManifestRepository
|
||||
.findByBase64Hash(Base64.getEncoder().encodeToString(messageDigest.digest(
|
||||
swidFile.toByteArray())));
|
||||
if (dbBaseRim != null) {
|
||||
if (baseRim != null) {
|
||||
// get file name to use
|
||||
for (SwidResource swid : dbBaseRim.getFileResources()) {
|
||||
for (SwidResource swid : baseRim.getFileResources()) {
|
||||
matcher = pattern.matcher(swid.getName());
|
||||
if (matcher.matches()) {
|
||||
//found the file name
|
||||
int dotIndex = swid.getName().lastIndexOf(".");
|
||||
fileName = swid.getName().substring(0, dotIndex);
|
||||
dbBaseRim.setFileName(String.format("%s.swidtag",
|
||||
baseRim.setFileName(String.format("%s.swidtag",
|
||||
fileName));
|
||||
}
|
||||
|
||||
@ -519,19 +519,19 @@ public class IdentityClaimProcessor extends AbstractProcessor {
|
||||
ReferenceManifest.SUPPORT_RIM);
|
||||
if (dbSupport != null) {
|
||||
dbSupport.setFileName(swid.getName());
|
||||
dbSupport.setSwidTagVersion(dbBaseRim.getSwidTagVersion());
|
||||
dbSupport.setTagId(dbBaseRim.getTagId());
|
||||
dbSupport.setSwidTagVersion(dbBaseRim.getSwidTagVersion());
|
||||
dbSupport.setSwidVersion(dbBaseRim.getSwidVersion());
|
||||
dbSupport.setSwidPatch(dbBaseRim.isSwidPatch());
|
||||
dbSupport.setSwidSupplemental(dbBaseRim.isSwidSupplemental());
|
||||
dbBaseRim.setAssociatedRim(dbSupport.getId());
|
||||
dbSupport.setSwidTagVersion(baseRim.getSwidTagVersion());
|
||||
dbSupport.setTagId(baseRim.getTagId());
|
||||
dbSupport.setSwidTagVersion(baseRim.getSwidTagVersion());
|
||||
dbSupport.setSwidVersion(baseRim.getSwidVersion());
|
||||
dbSupport.setSwidPatch(baseRim.isSwidPatch());
|
||||
dbSupport.setSwidSupplemental(baseRim.isSwidSupplemental());
|
||||
baseRim.setAssociatedRim(dbSupport.getId());
|
||||
dbSupport.setUpdated(true);
|
||||
dbSupport.setAssociatedRim(dbBaseRim.getId());
|
||||
dbSupport.setAssociatedRim(baseRim.getId());
|
||||
this.referenceManifestRepository.save(dbSupport);
|
||||
}
|
||||
}
|
||||
this.referenceManifestRepository.save(dbBaseRim);
|
||||
this.referenceManifestRepository.save(baseRim);
|
||||
}
|
||||
}
|
||||
|
||||
@ -542,40 +542,40 @@ public class IdentityClaimProcessor extends AbstractProcessor {
|
||||
fileName = String.format("%s.measurement",
|
||||
dv.getNw().getHostname());
|
||||
try {
|
||||
EventLogMeasurements temp = new EventLogMeasurements(fileName,
|
||||
EventLogMeasurements deviceLiveLog = new EventLogMeasurements(fileName,
|
||||
dv.getLivelog().toByteArray());
|
||||
// find previous version.
|
||||
measurements = referenceManifestRepository
|
||||
integrityMeasurements = referenceManifestRepository
|
||||
.byMeasurementDeviceName(dv.getNw().getHostname());
|
||||
|
||||
if (measurements != null) {
|
||||
if (integrityMeasurements != null) {
|
||||
// Find previous log and delete it
|
||||
referenceManifestRepository.delete(measurements);
|
||||
referenceManifestRepository.delete(integrityMeasurements);
|
||||
}
|
||||
|
||||
List<BaseReferenceManifest> baseRims = referenceManifestRepository
|
||||
.getBaseByManufacturerModel(dv.getHw().getManufacturer(),
|
||||
dv.getHw().getProductName());
|
||||
measurements = temp;
|
||||
measurements.setPlatformManufacturer(dv.getHw().getManufacturer());
|
||||
measurements.setPlatformModel(dv.getHw().getProductName());
|
||||
integrityMeasurements = deviceLiveLog;
|
||||
integrityMeasurements.setPlatformManufacturer(dv.getHw().getManufacturer());
|
||||
integrityMeasurements.setPlatformModel(dv.getHw().getProductName());
|
||||
if (tagId != null && !tagId.trim().isEmpty()) {
|
||||
measurements.setTagId(tagId);
|
||||
integrityMeasurements.setTagId(tagId);
|
||||
}
|
||||
measurements.setDeviceName(dv.getNw().getHostname());
|
||||
measurements.archive();
|
||||
integrityMeasurements.setDeviceName(dv.getNw().getHostname());
|
||||
integrityMeasurements.archive();
|
||||
|
||||
this.referenceManifestRepository.save(measurements);
|
||||
this.referenceManifestRepository.save(integrityMeasurements);
|
||||
|
||||
for (BaseReferenceManifest baseRim : baseRims) {
|
||||
if (baseRim != null) {
|
||||
for (BaseReferenceManifest bRim : baseRims) {
|
||||
if (bRim != null) {
|
||||
// pull the base versions of the swidtag and rimel and set the
|
||||
// event log hash for use during provision
|
||||
SupportReferenceManifest sBaseRim = referenceManifestRepository
|
||||
.getSupportRimEntityById(baseRim.getAssociatedRim());
|
||||
baseRim.setEventLogHash(temp.getHexDecHash());
|
||||
sBaseRim.setEventLogHash(temp.getHexDecHash());
|
||||
referenceManifestRepository.save(baseRim);
|
||||
.getSupportRimEntityById(bRim.getAssociatedRim());
|
||||
bRim.setEventLogHash(deviceLiveLog.getHexDecHash());
|
||||
sBaseRim.setEventLogHash(deviceLiveLog.getHexDecHash());
|
||||
referenceManifestRepository.save(bRim);
|
||||
referenceManifestRepository.save(sBaseRim);
|
||||
}
|
||||
}
|
||||
@ -611,11 +611,11 @@ public class IdentityClaimProcessor extends AbstractProcessor {
|
||||
List<SupportReferenceManifest> patchRims = new ArrayList<>();
|
||||
List<SupportReferenceManifest> dbSupportRims = this.referenceManifestRepository
|
||||
.getSupportByManufacturerModel(manufacturer, model);
|
||||
List<ReferenceDigestValue> sourcedValues = referenceDigestValueRepository
|
||||
List<ReferenceDigestValue> expectedValues = referenceDigestValueRepository
|
||||
.findByManufacturerAndModel(manufacturer, model);
|
||||
|
||||
Map<String, ReferenceDigestValue> digestValueMap = new HashMap<>();
|
||||
sourcedValues.stream().forEach((rdv) -> {
|
||||
expectedValues.stream().forEach((rdv) -> {
|
||||
digestValueMap.put(rdv.getDigestValue(), rdv);
|
||||
});
|
||||
|
||||
@ -634,9 +634,9 @@ public class IdentityClaimProcessor extends AbstractProcessor {
|
||||
&& referenceDigestValueRepository.findBySupportRimHash(baseSupportRim.getHexDecHash())
|
||||
.isEmpty()) {
|
||||
try {
|
||||
TCGEventLog logProcessor = new TCGEventLog(baseSupportRim.getRimBytes());
|
||||
TCGEventLog eventLog = new TCGEventLog(baseSupportRim.getRimBytes());
|
||||
ReferenceDigestValue rdv;
|
||||
for (TpmPcrEvent tpe : logProcessor.getEventList()) {
|
||||
for (TpmPcrEvent tpe : eventLog.getEventList()) {
|
||||
rdv = new ReferenceDigestValue(baseSupportRim.getAssociatedRim(),
|
||||
baseSupportRim.getId(), manufacturer, model, tpe.getPcrIndex(),
|
||||
tpe.getEventDigestStr(), baseSupportRim.getHexDecHash(),
|
||||
@ -648,8 +648,8 @@ public class IdentityClaimProcessor extends AbstractProcessor {
|
||||
// since I have the base already I don't have to care about the backward
|
||||
// linkage
|
||||
for (SupportReferenceManifest supplemental : supplementalRims) {
|
||||
logProcessor = new TCGEventLog(supplemental.getRimBytes());
|
||||
for (TpmPcrEvent tpe : logProcessor.getEventList()) {
|
||||
eventLog = new TCGEventLog(supplemental.getRimBytes());
|
||||
for (TpmPcrEvent tpe : eventLog.getEventList()) {
|
||||
// all RDVs will have the same base rim
|
||||
rdv = new ReferenceDigestValue(baseSupportRim.getAssociatedRim(),
|
||||
supplemental.getId(), manufacturer, model, tpe.getPcrIndex(),
|
||||
@ -683,8 +683,8 @@ public class IdentityClaimProcessor extends AbstractProcessor {
|
||||
ReferenceDigestValue dbRdv;
|
||||
String patchedValue;
|
||||
for (SupportReferenceManifest patch : patchRims) {
|
||||
logProcessor = new TCGEventLog(patch.getRimBytes());
|
||||
for (TpmPcrEvent tpe : logProcessor.getEventList()) {
|
||||
eventLog = new TCGEventLog(patch.getRimBytes());
|
||||
for (TpmPcrEvent tpe : eventLog.getEventList()) {
|
||||
patchedValue = tpe.getEventDigestStr();
|
||||
dbRdv = digestValueMap.get(patchedValue);
|
||||
|
||||
|
@ -12,8 +12,8 @@ import hirs.attestationca.persist.entity.userdefined.rim.EventLogMeasurements;
|
||||
import hirs.attestationca.persist.entity.userdefined.rim.ReferenceDigestValue;
|
||||
import hirs.attestationca.persist.enums.AppraisalStatus;
|
||||
import hirs.attestationca.persist.service.ValidationService;
|
||||
import hirs.utils.rim.ReferenceManifestValidator;
|
||||
import hirs.utils.SwidResource;
|
||||
import hirs.utils.rim.ReferenceManifestValidator;
|
||||
import hirs.utils.tpm.eventlog.TCGEventLog;
|
||||
import hirs.utils.tpm.eventlog.TpmPcrEvent;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
@ -24,7 +24,12 @@ import java.security.KeyStore;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static hirs.attestationca.persist.enums.AppraisalStatus.Status.FAIL;
|
||||
import static hirs.attestationca.persist.enums.AppraisalStatus.Status.PASS;
|
||||
@ -35,7 +40,6 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator {
|
||||
private static PcrValidator pcrValidator;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param device
|
||||
* @param policySettings
|
||||
* @param referenceManifestRepository
|
||||
@ -66,7 +70,8 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator {
|
||||
// In this case, try to look up the event log associated with the device, then get the base rim associated by event log hash
|
||||
List<ReferenceManifest> deviceRims = referenceManifestRepository.findByDeviceName(hostName);
|
||||
for (ReferenceManifest deviceRim : deviceRims) {
|
||||
if (deviceRim instanceof BaseReferenceManifest && !deviceRim.isSwidSupplemental() && !deviceRim.isSwidPatch()) {
|
||||
if (deviceRim instanceof BaseReferenceManifest && !deviceRim.isSwidSupplemental() &&
|
||||
!deviceRim.isSwidPatch()) {
|
||||
baseReferenceManifest = (BaseReferenceManifest) deviceRim;
|
||||
}
|
||||
|
||||
@ -77,7 +82,9 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator {
|
||||
|
||||
// Attempt to get an event log from the database matching the expected hash
|
||||
if (baseReferenceManifest == null && measurement != null) {
|
||||
baseReferenceManifest = (BaseReferenceManifest)referenceManifestRepository.findByEventLogHashAndRimType(measurement.getHexDecHash(), ReferenceManifest.BASE_RIM);
|
||||
baseReferenceManifest =
|
||||
(BaseReferenceManifest) referenceManifestRepository.findByEventLogHashAndRimType(
|
||||
measurement.getHexDecHash(), ReferenceManifest.BASE_RIM);
|
||||
}
|
||||
|
||||
String failedString = "";
|
||||
@ -101,7 +108,7 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator {
|
||||
|
||||
if (passed) {
|
||||
List<SwidResource> resources =
|
||||
((BaseReferenceManifest) baseReferenceManifest).getFileResources();
|
||||
baseReferenceManifest.getFileResources();
|
||||
fwStatus = new AppraisalStatus(PASS,
|
||||
SupplyChainCredentialValidator.FIRMWARE_VALID);
|
||||
|
||||
@ -131,20 +138,22 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator {
|
||||
try {
|
||||
certs.add(cac.getX509Certificate());
|
||||
} catch (IOException e) {
|
||||
log.error("Error building CA chain for " + signingCert.getSubjectKeyIdentifier() + ": "
|
||||
+ e.getMessage());
|
||||
log.error(
|
||||
"Error building CA chain for " + signingCert.getSubjectKeyIdentifier() + ": "
|
||||
+ e.getMessage());
|
||||
}
|
||||
}
|
||||
referenceManifestValidator.setTrustStore(certs);
|
||||
try {
|
||||
if (referenceManifestValidator.validateXmlSignature(signingCert.getX509Certificate().getPublicKey(),
|
||||
signingCert.getSubjectKeyIdString(), signingCert.getEncodedPublicKey())) {
|
||||
if (referenceManifestValidator.validateXmlSignature(
|
||||
signingCert.getX509Certificate().getPublicKey(),
|
||||
signingCert.getSubjectKeyIdString(), signingCert.getEncodedPublicKey())) {
|
||||
try {
|
||||
if (!SupplyChainCredentialValidator.verifyCertificate(
|
||||
signingCert.getX509Certificate(), keyStore)) {
|
||||
signingCert.getX509Certificate(), keyStore)) {
|
||||
passed = false;
|
||||
fwStatus = new AppraisalStatus(FAIL,
|
||||
"Firmware validation failed: invalid certificate path.");
|
||||
"Firmware validation failed: invalid certificate path.");
|
||||
}
|
||||
} catch (IOException ioEx) {
|
||||
log.error("Error getting X509 cert from manager: " + ioEx.getMessage());
|
||||
@ -197,10 +206,10 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator {
|
||||
}
|
||||
|
||||
if (passed) {
|
||||
TCGEventLog logProcessor;
|
||||
TCGEventLog expectedEventLog;
|
||||
try {
|
||||
logProcessor = new TCGEventLog(supportReferenceManifest.getRimBytes());
|
||||
baseline = logProcessor.getExpectedPCRValues();
|
||||
expectedEventLog = new TCGEventLog(supportReferenceManifest.getRimBytes());
|
||||
baseline = expectedEventLog.getExpectedPCRValues();
|
||||
} catch (CertificateException cEx) {
|
||||
log.error(cEx);
|
||||
} catch (NoSuchAlgorithmException noSaEx) {
|
||||
@ -233,21 +242,21 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator {
|
||||
// part 2 of firmware validation check: bios measurements
|
||||
// vs baseline tcg event log
|
||||
// find the measurement
|
||||
TCGEventLog tcgMeasurementLog;
|
||||
LinkedList<TpmPcrEvent> tpmPcrEvents = new LinkedList<>();
|
||||
List<ReferenceDigestValue> eventValue;
|
||||
HashMap<String, ReferenceDigestValue> eventValueMap = new HashMap<>();
|
||||
TCGEventLog actualEventLog;
|
||||
LinkedList<TpmPcrEvent> failedPcrValues = new LinkedList<>();
|
||||
List<ReferenceDigestValue> rimIntegrityMeasurements;
|
||||
HashMap<String, ReferenceDigestValue> expectedEventLogRecords = new HashMap<>();
|
||||
try {
|
||||
if (measurement.getDeviceName().equals(hostName)) {
|
||||
tcgMeasurementLog = new TCGEventLog(measurement.getRimBytes());
|
||||
eventValue = referenceDigestValueRepository
|
||||
actualEventLog = new TCGEventLog(measurement.getRimBytes());
|
||||
rimIntegrityMeasurements = referenceDigestValueRepository
|
||||
.findValuesByBaseRimId(baseReferenceManifest.getId());
|
||||
for (ReferenceDigestValue rdv : eventValue) {
|
||||
eventValueMap.put(rdv.getDigestValue(), rdv);
|
||||
for (ReferenceDigestValue rdv : rimIntegrityMeasurements) {
|
||||
expectedEventLogRecords.put(rdv.getDigestValue(), rdv);
|
||||
}
|
||||
|
||||
tpmPcrEvents.addAll(pcrValidator.validateTpmEvents(
|
||||
tcgMeasurementLog, eventValueMap, policySettings));
|
||||
failedPcrValues.addAll(pcrValidator.validateTpmEvents(
|
||||
actualEventLog, expectedEventLogRecords, policySettings));
|
||||
}
|
||||
} catch (CertificateException cEx) {
|
||||
log.error(cEx);
|
||||
@ -257,11 +266,11 @@ public class FirmwareScvValidator extends SupplyChainCredentialValidator {
|
||||
log.error(ioEx);
|
||||
}
|
||||
|
||||
if (!tpmPcrEvents.isEmpty()) {
|
||||
if (!failedPcrValues.isEmpty()) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(String.format("%d digest(s) were not found:%n",
|
||||
tpmPcrEvents.size()));
|
||||
for (TpmPcrEvent tpe : tpmPcrEvents) {
|
||||
failedPcrValues.size()));
|
||||
for (TpmPcrEvent tpe : failedPcrValues) {
|
||||
sb.append(String.format("PCR Index %d - %s%n",
|
||||
tpe.getPcrIndex(),
|
||||
tpe.getEventTypeStr()));
|
||||
|
@ -39,10 +39,10 @@ configurations.checkstyle {
|
||||
}
|
||||
}
|
||||
checkstyleMain {
|
||||
source ='src/main/java'
|
||||
source = 'src/main/java'
|
||||
}
|
||||
checkstyleTest {
|
||||
source ='src/test/java'
|
||||
source = 'src/test/java'
|
||||
}
|
||||
tasks.withType(Checkstyle) {
|
||||
reports {
|
||||
|
@ -2,11 +2,11 @@
|
||||
<!-- Docs at http://findbugs.sourceforge.net/manual/filter.html -->
|
||||
<FindBugsFilter>
|
||||
<Match>
|
||||
<Package name="~hirs\.structs.*" />
|
||||
<Package name="~hirs\.structs.*"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<!-- https://github.com/spotbugs/spotbugs/pull/2748 -->
|
||||
<Bug pattern="CT_CONSTRUCTOR_THROW" />
|
||||
<Bug pattern="CT_CONSTRUCTOR_THROW"/>
|
||||
</Match>
|
||||
|
||||
<!-- <Match>-->
|
||||
|
@ -2,22 +2,24 @@ package hirs.structs.converters;
|
||||
|
||||
import hirs.structs.elements.Struct;
|
||||
import hirs.structs.elements.StructElementLength;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import org.apache.commons.lang3.reflect.ConstructorUtils;
|
||||
import org.apache.commons.lang3.reflect.FieldUtils;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
/**
|
||||
* StructBuilder implementation.
|
||||
*
|
||||
* @param <T> the type of Struct to build
|
||||
*/
|
||||
public class SimpleStructBuilder<T extends Struct> implements StructBuilder {
|
||||
private T struct;
|
||||
private final Class<T> clazz;
|
||||
private T struct;
|
||||
|
||||
/**
|
||||
* Instantiates the builder.
|
||||
*
|
||||
* @param clazz The type of struct to build
|
||||
*/
|
||||
public SimpleStructBuilder(final Class<T> clazz) {
|
||||
@ -29,7 +31,7 @@ public class SimpleStructBuilder<T extends Struct> implements StructBuilder {
|
||||
try {
|
||||
struct = ConstructorUtils.invokeConstructor(clazz);
|
||||
} catch (InstantiationException | IllegalAccessException
|
||||
| NoSuchMethodException | InvocationTargetException e) {
|
||||
| NoSuchMethodException | InvocationTargetException e) {
|
||||
throw new StructBuilderException(
|
||||
String.format("Unexpected error constructing new instance: %s",
|
||||
clazz.getSimpleName(), e.getMessage()), e);
|
||||
@ -59,17 +61,13 @@ public class SimpleStructBuilder<T extends Struct> implements StructBuilder {
|
||||
public SimpleStructBuilder<T> set(final String field, final Number value) {
|
||||
try {
|
||||
String type = clazz.getDeclaredField(field).getType().getSimpleName();
|
||||
switch (clazz.getDeclaredField(field).getType().getSimpleName()) {
|
||||
case "short":
|
||||
return setField(field, value.shortValue());
|
||||
case "int":
|
||||
return setField(field, value.intValue());
|
||||
case "byte":
|
||||
return setField(field, value.byteValue());
|
||||
default:
|
||||
throw new StructBuilderException(
|
||||
String.format("Unhandled numeric field type: %s", type));
|
||||
}
|
||||
return switch (clazz.getDeclaredField(field).getType().getSimpleName()) {
|
||||
case "short" -> setField(field, value.shortValue());
|
||||
case "int" -> setField(field, value.intValue());
|
||||
case "byte" -> setField(field, value.byteValue());
|
||||
default -> throw new StructBuilderException(
|
||||
String.format("Unhandled numeric field type: %s", type));
|
||||
};
|
||||
} catch (NoSuchFieldException | SecurityException e) {
|
||||
throw new StructBuilderException(
|
||||
String.format("Unexpected error setting field: %s",
|
||||
@ -122,7 +120,7 @@ public class SimpleStructBuilder<T extends Struct> implements StructBuilder {
|
||||
FieldUtils.writeField(field, struct, value);
|
||||
field.setAccessible(false);
|
||||
} catch (NoSuchFieldException | SecurityException
|
||||
| IllegalArgumentException | IllegalAccessException e) {
|
||||
| IllegalArgumentException | IllegalAccessException e) {
|
||||
throw new StructBuilderException(
|
||||
String.format("Unexpected error setting field: %s",
|
||||
fieldName, e.getMessage()), e);
|
||||
|
@ -25,7 +25,7 @@ public class SimpleStructConverter implements StructConverter {
|
||||
|
||||
// using output stream resources, serialize the specified struct
|
||||
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||
DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream)) {
|
||||
DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream)) {
|
||||
|
||||
// obtain the struct elements definition
|
||||
StructElements structElements = struct.getClass().getAnnotation(StructElements.class);
|
||||
|
@ -20,8 +20,8 @@ public interface StructConverter {
|
||||
*
|
||||
* @param data to be parsed
|
||||
* @param type type of data being parsed
|
||||
* @param <T> the {@link Struct} type
|
||||
* @param <T> the {@link Struct} type
|
||||
* @return de-serialized struct
|
||||
*/
|
||||
<T extends Struct> T convert(final byte[] data, final Class<T> type);
|
||||
<T extends Struct> T convert(byte[] data, Class<T> type);
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ import java.lang.annotation.Target;
|
||||
public @interface StructElementLength {
|
||||
|
||||
/**
|
||||
* the field that this length represents.
|
||||
* @return the field that this length represents.
|
||||
*/
|
||||
String fieldName();
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ import java.lang.annotation.Target;
|
||||
public @interface StructElements {
|
||||
|
||||
/**
|
||||
* elements in order to be processed by a converter.
|
||||
* @return elements in order to be processed by a converter.
|
||||
*/
|
||||
String[] elements();
|
||||
}
|
||||
|
@ -10,10 +10,10 @@ import java.util.Arrays;
|
||||
* A container for an encoded {@link hirs.structs.elements.tpm.IdentityRequest},
|
||||
* its associated endorsement credential, and its device information.
|
||||
*/
|
||||
@StructElements(elements = { "requestLength", "request",
|
||||
"endorsementCredentialModulusLength", "endorsementCredentialModulus",
|
||||
"endorsementCredentialLength", "endorsementCredential",
|
||||
"deviceInfoReportLength", "deviceInfoReport" })
|
||||
@StructElements(elements = {"requestLength", "request",
|
||||
"endorsementCredentialModulusLength", "endorsementCredentialModulus",
|
||||
"endorsementCredentialLength", "endorsementCredential",
|
||||
"deviceInfoReportLength", "deviceInfoReport"})
|
||||
public class IdentityRequestEnvelope implements Struct {
|
||||
|
||||
@StructElementLength(fieldName = "request")
|
||||
@ -72,7 +72,6 @@ public class IdentityRequestEnvelope implements Struct {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return the endorsementCredential
|
||||
*/
|
||||
public byte[] getEndorsementCredential() {
|
||||
@ -80,7 +79,6 @@ public class IdentityRequestEnvelope implements Struct {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return the length of the device info report
|
||||
*/
|
||||
public int getDeviceInfoReportLength() {
|
||||
@ -88,7 +86,6 @@ public class IdentityRequestEnvelope implements Struct {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return the device info report
|
||||
*/
|
||||
public byte[] getDeviceInfoReport() {
|
||||
|
@ -9,8 +9,8 @@ import java.util.Arrays;
|
||||
/**
|
||||
* Data structure used by the ACA to respond back to a client's {@link IdentityRequestEnvelope}.
|
||||
*/
|
||||
@StructElements(elements = { "asymmetricContentsSize", "asymmetricContents",
|
||||
"symmetricAttestation" })
|
||||
@StructElements(elements = {"asymmetricContentsSize", "asymmetricContents",
|
||||
"symmetricAttestation"})
|
||||
public class IdentityResponseEnvelope implements Struct {
|
||||
|
||||
@StructElementLength(fieldName = "asymmetricContents")
|
||||
|
@ -12,7 +12,7 @@ import java.util.Arrays;
|
||||
* the envelope contains the Identity Credential that is signed by the ACA. This along with the key
|
||||
* parameters are typically sent to the TPM to activate an Identity.
|
||||
*/
|
||||
@StructElements(elements = { "credentialSize", "algorithm", "credential" })
|
||||
@StructElements(elements = {"credentialSize", "algorithm", "credential"})
|
||||
public class SymmetricAttestation implements Struct {
|
||||
|
||||
@StructElementLength(fieldName = "credential")
|
||||
|
@ -8,8 +8,8 @@ import hirs.structs.elements.StructElements;
|
||||
* As defined in TCPA 4.20, the key parameters data structure describes the parameters used to
|
||||
* generate a key pair and to store the parts of a key.
|
||||
*/
|
||||
@StructElements(elements = { "algorithmId", "encryptionScheme", "signatureScheme", "paramsSize",
|
||||
"params" })
|
||||
@StructElements(elements = {"algorithmId", "encryptionScheme", "signatureScheme", "paramsSize",
|
||||
"params"})
|
||||
public class AsymmetricKeyParams implements Struct {
|
||||
|
||||
private int algorithmId;
|
||||
|
@ -8,7 +8,7 @@ import hirs.structs.elements.StructElements;
|
||||
* portion of an asymmetric key pair. It contains all the information necessary for it's unambiguous
|
||||
* usage.
|
||||
*/
|
||||
@StructElements(elements = { "asymmetricKeyParams", "storePubKey" })
|
||||
@StructElements(elements = {"asymmetricKeyParams", "storePubKey"})
|
||||
public class AsymmetricPublicKey implements Struct {
|
||||
|
||||
/**
|
||||
|
@ -35,11 +35,6 @@ public enum EncryptionScheme {
|
||||
this.encryptionScheme = encryptionScheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.encryptionScheme;
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps an {@link EncryptionScheme} based upon an integer. If the scheme is unmapped, the
|
||||
* default, {@link #PKCS1} is returned.
|
||||
@ -48,11 +43,14 @@ public enum EncryptionScheme {
|
||||
* @return the encryption scheme, or if unknown, the default.
|
||||
*/
|
||||
public static EncryptionScheme fromInt(final int scheme) {
|
||||
switch (scheme) {
|
||||
case OAEP_VALUE:
|
||||
return OAEP;
|
||||
default:
|
||||
return PKCS1;
|
||||
if (scheme == OAEP_VALUE) {
|
||||
return OAEP;
|
||||
}
|
||||
return PKCS1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.encryptionScheme;
|
||||
}
|
||||
}
|
||||
|
@ -11,9 +11,9 @@ import java.util.Arrays;
|
||||
* identity process. This structure contains information that is required by the Attestation
|
||||
* Certificate Authority to attest an identity request.
|
||||
*/
|
||||
@StructElements(elements = { "version", "labelSize", "identityBindingSize", "endorsementSize",
|
||||
@StructElements(elements = {"version", "labelSize", "identityBindingSize", "endorsementSize",
|
||||
"platformSize", "conformanceSize", "identityKey", "label", "identityBinding",
|
||||
"endorsementCredential", "platformCredential", "conformanceCredential" })
|
||||
"endorsementCredential", "platformCredential", "conformanceCredential"})
|
||||
public class IdentityProof implements Struct {
|
||||
|
||||
private Version version;
|
||||
|
@ -10,8 +10,8 @@ import java.util.Arrays;
|
||||
* As specified in TCPA 4.30.2 specification. This structure is sent to the Attestation Certificate
|
||||
* Authority to create an Identity Credential.
|
||||
*/
|
||||
@StructElements(elements = { "asymmetricBlobSize", "symmetricBlobSize", "asymmetricAlgorithm",
|
||||
"symmetricAlgorithm", "asymmetricBlob", "symmetricBlob" })
|
||||
@StructElements(elements = {"asymmetricBlobSize", "symmetricBlobSize", "asymmetricAlgorithm",
|
||||
"symmetricAlgorithm", "asymmetricBlob", "symmetricBlob"})
|
||||
public class IdentityRequest implements Struct {
|
||||
|
||||
@StructElementLength(fieldName = "asymmetricBlob")
|
||||
|
@ -8,7 +8,7 @@ import hirs.structs.elements.StructElements;
|
||||
* portion of an asymmetric key pair. It contains all the information necessary for it's unambiguous
|
||||
* usage.
|
||||
*/
|
||||
@StructElements(elements = { "asymmetricKeyParams", "storePubKey" })
|
||||
@StructElements(elements = {"asymmetricKeyParams", "storePubKey"})
|
||||
public class PublicKey implements Struct {
|
||||
|
||||
private AsymmetricKeyParams asymmetricKeyParams;
|
||||
|
@ -10,7 +10,7 @@ import java.util.Arrays;
|
||||
* Parameters that are used to describe a particular {@link AsymmetricKeyParams} as specified by the
|
||||
* TCPA 4.20.
|
||||
*/
|
||||
@StructElements(elements = { "keyLength", "totalPrimes", "exponentSize", "exponent" })
|
||||
@StructElements(elements = {"keyLength", "totalPrimes", "exponentSize", "exponent"})
|
||||
public class RsaSubParams implements Struct {
|
||||
|
||||
private int keyLength;
|
||||
|
@ -10,7 +10,7 @@ import java.util.Arrays;
|
||||
* As specified in TCPA Main Specification section 4.27.2. This structure represents a public key of
|
||||
* an asymmetric key pair.
|
||||
*/
|
||||
@StructElements(elements = { "keyLength", "key" })
|
||||
@StructElements(elements = {"keyLength", "key"})
|
||||
public class StorePubKey implements Struct {
|
||||
|
||||
@StructElementLength(fieldName = "key")
|
||||
|
@ -10,7 +10,7 @@ import java.util.Arrays;
|
||||
* Part of the TPM Identity Request. This Structure is encrypted inside the request and is typically
|
||||
* unencrypted by an Attestation Certificate Authority.
|
||||
*/
|
||||
@StructElements(elements = { "algorithmId", "encryptionScheme", "keySize", "key" })
|
||||
@StructElements(elements = {"algorithmId", "encryptionScheme", "keySize", "key"})
|
||||
public class SymmetricKey implements Struct {
|
||||
|
||||
/**
|
||||
|
@ -7,8 +7,8 @@ import hirs.structs.elements.StructElements;
|
||||
/**
|
||||
* Represents a symmetric key as specified in section 4.20 of the TCPA.
|
||||
*/
|
||||
@StructElements(elements = { "algorithmId", "encryptionScheme", "signatureScheme", "paramsSize",
|
||||
"params" })
|
||||
@StructElements(elements = {"algorithmId", "encryptionScheme", "signatureScheme", "paramsSize",
|
||||
"params"})
|
||||
public class SymmetricKeyParams implements Struct {
|
||||
|
||||
/**
|
||||
|
@ -10,7 +10,7 @@ import java.util.Arrays;
|
||||
* Represents a dynamic key parameters data structure that is enclosed inside a {@link
|
||||
* SymmetricKeyParams}.
|
||||
*/
|
||||
@StructElements(elements = { "keyLength", "blockSize", "ivSize", "iv" })
|
||||
@StructElements(elements = {"keyLength", "blockSize", "ivSize", "iv"})
|
||||
public class SymmetricSubParams implements Struct {
|
||||
|
||||
private int keyLength;
|
||||
|
@ -7,7 +7,7 @@ import hirs.structs.elements.StructElements;
|
||||
* As specified in the TCPA Main Specification section 4.5. This structure represents the version of
|
||||
* the TPM.
|
||||
*/
|
||||
@StructElements(elements = { "major", "minor", "revisionMajor", "revisionMinor" })
|
||||
@StructElements(elements = {"major", "minor", "revisionMajor", "revisionMinor"})
|
||||
public class Version implements Struct {
|
||||
|
||||
private byte major;
|
||||
|
@ -1,8 +1,9 @@
|
||||
package hirs.structs.converters;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* Tests suite for {@link SimpleStructConverter}.
|
||||
@ -13,24 +14,25 @@ public class SimpleStructBuilderTest {
|
||||
|
||||
/**
|
||||
* Tests {@link SimpleStructBuilder#build()}.
|
||||
* @throws NoSuchFieldException sometimes
|
||||
* @throws IllegalAccessException sometimes
|
||||
*
|
||||
* @throws NoSuchFieldException sometimes
|
||||
* @throws IllegalAccessException sometimes
|
||||
* @throws IllegalArgumentException sometimes
|
||||
*/
|
||||
@Test
|
||||
public final void testBuild() throws NoSuchFieldException, IllegalArgumentException,
|
||||
IllegalAccessException {
|
||||
TestStruct struct = new SimpleStructBuilder<>(TestStruct.class)
|
||||
.set("testShort", NUMBER)
|
||||
.set("testByte", NUMBER)
|
||||
.set("testEmbeddedStruct", new SimpleStructBuilder<>(TestEmbeddedStruct.class)
|
||||
.set("embeddedShort", NUMBER)
|
||||
.set("embedded", ARRAY)
|
||||
.build())
|
||||
.set("testVariableStruct", new SimpleStructBuilder<>(TestVariableStruct.class)
|
||||
.set("testArray", ARRAY)
|
||||
.build())
|
||||
.build();
|
||||
.set("testShort", NUMBER)
|
||||
.set("testByte", NUMBER)
|
||||
.set("testEmbeddedStruct", new SimpleStructBuilder<>(TestEmbeddedStruct.class)
|
||||
.set("embeddedShort", NUMBER)
|
||||
.set("embedded", ARRAY)
|
||||
.build())
|
||||
.set("testVariableStruct", new SimpleStructBuilder<>(TestVariableStruct.class)
|
||||
.set("testArray", ARRAY)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
assertEquals(NUMBER, struct.getTestShort());
|
||||
assertEquals(NUMBER, struct.getTestByte());
|
||||
|
@ -1,8 +1,9 @@
|
||||
package hirs.structs.converters;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* Tests suite for {@link SimpleStructConverter}.
|
||||
@ -10,11 +11,11 @@ import org.junit.jupiter.api.Test;
|
||||
public class SimpleStructConverterTest {
|
||||
|
||||
private static final byte[] EXPECTED_BYTES =
|
||||
new byte[]{0, 5, 0, 0, 0, 10, 0, 7, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 6, 0, 0, 0, 0};
|
||||
new byte[] {0, 5, 0, 0, 0, 10, 0, 7, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 6, 0, 0, 0, 0};
|
||||
|
||||
private final TestStruct testStruct = new TestStruct();
|
||||
|
||||
private StructConverter converter = new SimpleStructConverter();
|
||||
private final StructConverter converter = new SimpleStructConverter();
|
||||
|
||||
/**
|
||||
* Tests {@link SimpleStructConverter#convert(hirs.structs.elements.Struct)}.
|
||||
@ -47,8 +48,9 @@ public class SimpleStructConverterTest {
|
||||
*/
|
||||
@Test
|
||||
public final void testNoElementsStructConvertToArray() {
|
||||
assertThrows(StructConversionException.class, () ->
|
||||
{converter.convert(new TestNoElementsAnnotationStruct());}, ".*@StructElements.*");
|
||||
assertThrows(StructConversionException.class, () -> {
|
||||
converter.convert(new TestNoElementsAnnotationStruct());
|
||||
}, ".*@StructElements.*");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -57,8 +59,9 @@ public class SimpleStructConverterTest {
|
||||
*/
|
||||
@Test
|
||||
public final void testNoElementsStructConvertToStruct() {
|
||||
assertThrows(StructConversionException.class, () ->
|
||||
{converter.convert(new byte[1], TestNoElementsAnnotationStruct.class);}, ".*@StructElements.*");
|
||||
assertThrows(StructConversionException.class, () -> {
|
||||
converter.convert(new byte[1], TestNoElementsAnnotationStruct.class);
|
||||
}, ".*@StructElements.*");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -68,8 +71,9 @@ public class SimpleStructConverterTest {
|
||||
*/
|
||||
@Test
|
||||
public final void testInvalidDataTypeStructConvertToArray() {
|
||||
assertThrows(StructConversionException.class, () ->
|
||||
{converter.convert(new TestInvalidDataTypeStruct());}, "Unsupported field type.*");
|
||||
assertThrows(StructConversionException.class, () -> {
|
||||
converter.convert(new TestInvalidDataTypeStruct());
|
||||
}, "Unsupported field type.*");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -79,8 +83,9 @@ public class SimpleStructConverterTest {
|
||||
*/
|
||||
@Test
|
||||
public final void testInvalidDataTypeStructConvertToStruct() {
|
||||
assertThrows(StructConversionException.class, () ->
|
||||
{converter.convert(new byte[1], TestInvalidDataTypeStruct.class);}, "Unsupported field type.*");
|
||||
assertThrows(StructConversionException.class, () -> {
|
||||
converter.convert(new byte[1], TestInvalidDataTypeStruct.class);
|
||||
}, "Unsupported field type.*");
|
||||
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@ import java.util.Arrays;
|
||||
/**
|
||||
* A struct to be embedded within TestStruct.
|
||||
*/
|
||||
@StructElements(elements = { "embeddedSize", "embeddedShort", "embedded" })
|
||||
@StructElements(elements = {"embeddedSize", "embeddedShort", "embedded"})
|
||||
public class TestEmbeddedStruct implements Struct {
|
||||
|
||||
private static final int EMBEDDED_SIZE = 10;
|
||||
@ -18,7 +18,7 @@ public class TestEmbeddedStruct implements Struct {
|
||||
|
||||
private static final int HASH_CODE = 31;
|
||||
|
||||
private static final byte[] DEFAULT_ARRAY = new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
|
||||
private static final byte[] DEFAULT_ARRAY = new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
|
||||
|
||||
|
||||
@StructElementLength(fieldName = "embedded")
|
||||
@ -28,6 +28,12 @@ public class TestEmbeddedStruct implements Struct {
|
||||
|
||||
private byte[] embedded = DEFAULT_ARRAY;
|
||||
|
||||
/**
|
||||
* Returns true if the provided object is equivalent to this class.
|
||||
*
|
||||
* @param o object to compare
|
||||
* @return true if the provided object is equal to this class
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(final Object o) {
|
||||
if (this == o) {
|
||||
@ -53,6 +59,7 @@ public class TestEmbeddedStruct implements Struct {
|
||||
|
||||
/**
|
||||
* Getter.
|
||||
*
|
||||
* @return value
|
||||
*/
|
||||
public byte[] getEmbedded() {
|
||||
@ -61,6 +68,7 @@ public class TestEmbeddedStruct implements Struct {
|
||||
|
||||
/**
|
||||
* Getter.
|
||||
*
|
||||
* @return value
|
||||
*/
|
||||
public short getEmbeddedShort() {
|
||||
@ -69,6 +77,7 @@ public class TestEmbeddedStruct implements Struct {
|
||||
|
||||
/**
|
||||
* Getter.
|
||||
*
|
||||
* @return value
|
||||
*/
|
||||
public int getEmbeddedSize() {
|
||||
|
@ -6,7 +6,7 @@ import hirs.structs.elements.StructElements;
|
||||
/**
|
||||
* Test Struct that has an unsupported data type.
|
||||
*/
|
||||
@StructElements(elements = { "testLong" })
|
||||
@StructElements(elements = {"testLong"})
|
||||
public class TestInvalidDataTypeStruct implements Struct {
|
||||
|
||||
private static final Long TEST_LONG_VALUE = 1L;
|
||||
|
@ -8,8 +8,8 @@ import hirs.structs.elements.StructElements;
|
||||
* A Struct class designed to fully test the design of the converter being tested.
|
||||
*/
|
||||
@StructElements(
|
||||
elements = { "testShort", "testEmbeddedStruct", "testByte", "testVariableStructLength",
|
||||
"testVariableStruct" })
|
||||
elements = {"testShort", "testEmbeddedStruct", "testByte", "testVariableStructLength",
|
||||
"testVariableStruct"})
|
||||
public class TestStruct implements Struct {
|
||||
|
||||
private static final short TEST_SHORT = 0x5;
|
||||
@ -54,6 +54,7 @@ public class TestStruct implements Struct {
|
||||
|
||||
/**
|
||||
* Getter.
|
||||
*
|
||||
* @return value
|
||||
*/
|
||||
public byte getTestByte() {
|
||||
@ -62,6 +63,7 @@ public class TestStruct implements Struct {
|
||||
|
||||
/**
|
||||
* Getter.
|
||||
*
|
||||
* @return value
|
||||
*/
|
||||
public short getTestShort() {
|
||||
@ -70,6 +72,7 @@ public class TestStruct implements Struct {
|
||||
|
||||
/**
|
||||
* Getter.
|
||||
*
|
||||
* @return value
|
||||
*/
|
||||
public TestEmbeddedStruct getTestEmbeddedStruct() {
|
||||
@ -78,6 +81,7 @@ public class TestStruct implements Struct {
|
||||
|
||||
/**
|
||||
* Getter.
|
||||
*
|
||||
* @return value
|
||||
*/
|
||||
public TestVariableStruct getTestVariableStruct() {
|
||||
@ -86,6 +90,7 @@ public class TestStruct implements Struct {
|
||||
|
||||
/**
|
||||
* Getter.
|
||||
*
|
||||
* @return value
|
||||
*/
|
||||
public int getTestVariableStructLength() {
|
||||
|
@ -14,6 +14,7 @@ public class TestVariableStruct implements Struct {
|
||||
|
||||
/**
|
||||
* Getter.
|
||||
*
|
||||
* @return value
|
||||
*/
|
||||
public byte[] getTestArray() {
|
||||
|
@ -3,8 +3,8 @@ plugins {
|
||||
id 'checkstyle'
|
||||
}
|
||||
// Get version from main project gradle
|
||||
def packVersion = properties.get("packageVersion");
|
||||
def jarVersion = properties.get("jarVersion");
|
||||
def packVersion = properties.get("packageVersion")
|
||||
def jarVersion = properties.get("jarVersion")
|
||||
//println "packageVersion is ${projVersion}"
|
||||
|
||||
|
||||
@ -66,10 +66,10 @@ configurations.checkstyle {
|
||||
}
|
||||
}
|
||||
checkstyleMain {
|
||||
source ='src/main/java'
|
||||
source = 'src/main/java'
|
||||
}
|
||||
checkstyleTest {
|
||||
source ='src/test/java'
|
||||
source = 'src/test/java'
|
||||
}
|
||||
tasks.withType(Checkstyle) {
|
||||
reports {
|
||||
|
@ -2,14 +2,14 @@
|
||||
<!-- Docs at http://findbugs.sourceforge.net/manual/filter.html -->
|
||||
<FindBugsFilter>
|
||||
<Match>
|
||||
<Package name="~hirs\.utils.xjc.*" />
|
||||
<Package name="~hirs\.utils.xjc.*"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<Package name="~hirs\.utils.rim.*" />
|
||||
<Package name="~hirs\.utils.rim.*"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<!-- https://github.com/spotbugs/spotbugs/pull/2748 -->
|
||||
<Bug pattern="CT_CONSTRUCTOR_THROW" />
|
||||
<Bug pattern="CT_CONSTRUCTOR_THROW"/>
|
||||
</Match>
|
||||
|
||||
<!-- <Match>-->
|
||||
|
@ -27,40 +27,38 @@ import java.util.List;
|
||||
@Log4j2
|
||||
public final class PciIds {
|
||||
|
||||
/**
|
||||
* Track status of pciids file.
|
||||
*/
|
||||
@Getter
|
||||
private static String pciidsFileStatus = UefiConstants.FILESTATUS_NOT_ACCESSIBLE;
|
||||
|
||||
/**
|
||||
* Name of pciids file in code.
|
||||
*/
|
||||
private static final String PCIIDS_FILENAME = "/pci.ids";
|
||||
|
||||
/**
|
||||
* This pci ids file can be in different places on different distributions.
|
||||
* Fedora/RHEL/Rocky/CentOS: /usr/share/hwdata/pci.ids
|
||||
* Debian/Ubuntu: /usr/share/misc/pci.ids
|
||||
* Fedora/RHEL/Rocky/CentOS: /usr/share/hwdata/pci.ids
|
||||
* Debian/Ubuntu: /usr/share/misc/pci.ids
|
||||
* If the file is not found on the system (such as with Windows systems),
|
||||
* the file will have to be accessed from code.
|
||||
*/
|
||||
public static final List<String> PCI_IDS_PATH =
|
||||
Collections.unmodifiableList(new ArrayList<>() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
{
|
||||
add("/usr/share/hwdata/pci.ids");
|
||||
add("/usr/share/misc/pci.ids");
|
||||
add("/tmp/pci.ids");
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* The PCI IDs Database object.
|
||||
* This only needs to be loaded one time.
|
||||
* The pci ids library protects the data inside the object by making it immutable.
|
||||
*/
|
||||
public static final PciIdsDatabase DB = new PciIdsDatabase();
|
||||
/**
|
||||
* Name of pciids file in code.
|
||||
*/
|
||||
private static final String PCIIDS_FILENAME = "/pci.ids";
|
||||
/**
|
||||
* Track status of pciids file.
|
||||
*/
|
||||
@Getter
|
||||
private static String pciidsFileStatus = UefiConstants.FILESTATUS_NOT_ACCESSIBLE;
|
||||
|
||||
//Configure the PCI IDs Database object.
|
||||
static {
|
||||
@ -124,7 +122,8 @@ public final class PciIds {
|
||||
/**
|
||||
* Default private constructor so checkstyles doesn't complain.
|
||||
*/
|
||||
private PciIds() { }
|
||||
private PciIds() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Look up the vendor name from the PCI IDs list, if the input string contains an ID.
|
||||
@ -172,7 +171,7 @@ public final class PciIds {
|
||||
* If any part of this fails, return the original model value.
|
||||
*
|
||||
* @param refManufacturer ASN1UTF8String, likely from a ComponentIdentifier
|
||||
* @param refModel ASN1UTF8String, likely from a ComponentIdentifier
|
||||
* @param refModel ASN1UTF8String, likely from a ComponentIdentifier
|
||||
* @return ASN1UTF8String with the discovered device name, or the original model value.
|
||||
*/
|
||||
public static ASN1UTF8String translateDevice(final ASN1UTF8String refManufacturer,
|
||||
@ -199,7 +198,7 @@ public final class PciIds {
|
||||
* If any part of this fails, return the original model value.
|
||||
*
|
||||
* @param refManufacturer String, likely from a ComponentResult
|
||||
* @param refModel String, likely from a ComponentResult
|
||||
* @param refModel String, likely from a ComponentResult
|
||||
* @return String with the discovered device name, or the original model value.
|
||||
*/
|
||||
public static String translateDevice(final String refManufacturer,
|
||||
@ -224,10 +223,10 @@ public final class PciIds {
|
||||
* If any part of this fails, return the original manufacturer value.
|
||||
*
|
||||
* @param refClassCode String, formatted as 2 characters (1 byte) for each of the 3 categories
|
||||
* . Example "010802":
|
||||
* . Class: "01"
|
||||
* . Subclass: "08"
|
||||
* . Programming Interface: "02"
|
||||
* . Example "010802":
|
||||
* . Class: "01"
|
||||
* . Subclass: "08"
|
||||
* . Programming Interface: "02"
|
||||
* @return List<String> 3-element list with the class code
|
||||
* . 1st element: human-readable description of Class
|
||||
* . 2nd element: human-readable description of Subclass
|
||||
|
@ -17,10 +17,20 @@ public final class StringValidator {
|
||||
private final String fieldName;
|
||||
private final Logger logger;
|
||||
|
||||
private StringValidator(final String value, final String fieldName, final Logger logger) {
|
||||
this.value = value;
|
||||
this.fieldName = fieldName;
|
||||
if (logger == null) {
|
||||
this.logger = log;
|
||||
} else {
|
||||
this.logger = logger;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Begins a validation operation.
|
||||
*
|
||||
* @param value the value to check
|
||||
* @param value the value to check
|
||||
* @param fieldName the name of the field (to be used in error reporting)
|
||||
* @return a Validation object, upon which validation methods can be called
|
||||
*/
|
||||
@ -31,9 +41,9 @@ public final class StringValidator {
|
||||
/**
|
||||
* Begins a validation operation.
|
||||
*
|
||||
* @param value the value to check
|
||||
* @param value the value to check
|
||||
* @param fieldName the name of the field (to be used in error reporting)
|
||||
* @param logger a logger to use in lieu of Validation's logger
|
||||
* @param logger a logger to use in lieu of Validation's logger
|
||||
* @return a Validation object, upon which validation methods can be called
|
||||
*/
|
||||
public static StringValidator check(final String value, final String fieldName,
|
||||
@ -41,16 +51,6 @@ public final class StringValidator {
|
||||
return new StringValidator(value, fieldName, logger);
|
||||
}
|
||||
|
||||
private StringValidator(final String value, final String fieldName, final Logger logger) {
|
||||
this.value = value;
|
||||
this.fieldName = fieldName;
|
||||
if (logger == null) {
|
||||
this.logger = log;
|
||||
} else {
|
||||
this.logger = logger;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert that the given field is not null. Throws an IllegalArgumentException if the value
|
||||
* is indeed null.
|
||||
|
@ -34,15 +34,14 @@ public final class Digest extends AbstractDigest {
|
||||
DigestAlgorithm.SHA1,
|
||||
new byte[SHA1_DIGEST_LENGTH]
|
||||
);
|
||||
|
||||
private static final String SHA1_EMPTY_HEX =
|
||||
"da39a3ee5e6b4b0d3255bfef95601890afd80709";
|
||||
|
||||
/**
|
||||
* A SHA1 digest whose content is the hash of an empty buffer.
|
||||
*/
|
||||
public static final Digest SHA1_OF_NO_DATA;
|
||||
|
||||
private static final String SHA1_EMPTY_HEX =
|
||||
"da39a3ee5e6b4b0d3255bfef95601890afd80709";
|
||||
|
||||
static {
|
||||
try {
|
||||
SHA1_OF_NO_DATA = new Digest(
|
||||
@ -59,17 +58,17 @@ public final class Digest extends AbstractDigest {
|
||||
columnDefinition = "varbinary(64)")
|
||||
private final byte[] digest;
|
||||
|
||||
@Getter
|
||||
@XmlElement
|
||||
@Column(nullable = false)
|
||||
@Enumerated(EnumType.ORDINAL)
|
||||
@Getter
|
||||
private final DigestAlgorithm algorithm;
|
||||
|
||||
/**
|
||||
* Creates a new <code>Digest</code>.
|
||||
*
|
||||
* @param algorithm algorithm used to generate the digest
|
||||
* @param digest digest value
|
||||
* @param digest digest value
|
||||
* @throws IllegalArgumentException if digest length does not match that of the algorithm
|
||||
*/
|
||||
public Digest(final DigestAlgorithm algorithm, final byte[] digest)
|
||||
@ -81,6 +80,7 @@ public final class Digest extends AbstractDigest {
|
||||
|
||||
/**
|
||||
* Creates a new <code>Digest</code> when an algorithm isn't specified.
|
||||
*
|
||||
* @param digest byte array value
|
||||
*/
|
||||
public Digest(final byte[] digest) {
|
||||
@ -90,11 +90,22 @@ public final class Digest extends AbstractDigest {
|
||||
/**
|
||||
* Default constructor necessary for Hibernate.
|
||||
*/
|
||||
protected Digest() {
|
||||
private Digest() {
|
||||
this.algorithm = null;
|
||||
this.digest = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to reverse the toString method. Returns a Digest given a String
|
||||
* that was created using an AbstractDigest's toString method.
|
||||
*
|
||||
* @param digest String representation of an AbstractDigest
|
||||
* @return Digest object recreated from the String passed in
|
||||
*/
|
||||
public static Digest fromString(final String digest) {
|
||||
return new Digest(algorithmFromString(digest), digestFromString(digest));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the digest.
|
||||
*
|
||||
@ -113,15 +124,4 @@ public final class Digest extends AbstractDigest {
|
||||
public OptionalDigest asOptionalDigest() {
|
||||
return new OptionalDigest(algorithm, digest);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to reverse the toString method. Returns a Digest given a String
|
||||
* that was created using an AbstractDigest's toString method.
|
||||
*
|
||||
* @param digest String representation of an AbstractDigest
|
||||
* @return Digest object recreated from the String passed in
|
||||
*/
|
||||
public static Digest fromString(final String digest) {
|
||||
return new Digest(algorithmFromString(digest), digestFromString(digest));
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,6 @@ package hirs.utils.digest;
|
||||
/**
|
||||
* Enumeration identifying the different outcomes of a comparison between
|
||||
* two {@link Digest} objects.
|
||||
*
|
||||
*/
|
||||
public enum DigestComparisonResultType {
|
||||
/**
|
||||
|
@ -23,12 +23,12 @@ import java.util.Arrays;
|
||||
@Access(AccessType.FIELD)
|
||||
public final class OptionalDigest extends AbstractDigest {
|
||||
@XmlElement
|
||||
@Column(nullable = true, name = "digest", length = SHA512_DIGEST_LENGTH,
|
||||
@Column(name = "digest", length = SHA512_DIGEST_LENGTH,
|
||||
columnDefinition = "varbinary(64)")
|
||||
private final byte[] digest;
|
||||
|
||||
@XmlElement
|
||||
@Column(nullable = true)
|
||||
@Column
|
||||
@Enumerated(EnumType.ORDINAL)
|
||||
@Getter
|
||||
private final DigestAlgorithm algorithm;
|
||||
@ -37,7 +37,7 @@ public final class OptionalDigest extends AbstractDigest {
|
||||
* Creates a new <code>OptionalDigest</code>.
|
||||
*
|
||||
* @param digestAlgorithm algorithm used to generate the digest
|
||||
* @param optionalDigest digest value
|
||||
* @param optionalDigest digest value
|
||||
* @throws IllegalArgumentException if digest length does not match that of the algorithm
|
||||
*/
|
||||
public OptionalDigest(final DigestAlgorithm digestAlgorithm, final byte[] optionalDigest)
|
||||
@ -50,11 +50,22 @@ public final class OptionalDigest extends AbstractDigest {
|
||||
/**
|
||||
* Default constructor necessary for Hibernate.
|
||||
*/
|
||||
protected OptionalDigest() {
|
||||
private OptionalDigest() {
|
||||
this.algorithm = null;
|
||||
this.digest = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to reverse the toString method. Returns an OptionalDigest given a String
|
||||
* that was created using an AbstractDigest's toString method.
|
||||
*
|
||||
* @param digest String representation of an AbstractDigest
|
||||
* @return OptionalDigest object recreated from the String passed in
|
||||
*/
|
||||
public static OptionalDigest fromString(final String digest) {
|
||||
return new OptionalDigest(algorithmFromString(digest), digestFromString(digest));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the digest.
|
||||
*
|
||||
@ -73,15 +84,4 @@ public final class OptionalDigest extends AbstractDigest {
|
||||
public Digest asDigest() {
|
||||
return new Digest(algorithm, digest);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to reverse the toString method. Returns an OptionalDigest given a String
|
||||
* that was created using an AbstractDigest's toString method.
|
||||
*
|
||||
* @param digest String representation of an AbstractDigest
|
||||
* @return OptionalDigest object recreated from the String passed in
|
||||
*/
|
||||
public static OptionalDigest fromString(final String digest) {
|
||||
return new OptionalDigest(algorithmFromString(digest), digestFromString(digest));
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ public final class DeviceInfoEnums {
|
||||
* Constant variable representing the various Long sized strings.
|
||||
*/
|
||||
public static final int LONG_STRING_LENGTH = 255;
|
||||
|
||||
/**
|
||||
* Default private constructor so checkstyles doesn't complain.
|
||||
*/
|
||||
|
@ -12,8 +12,7 @@ public class PolicyManagerException extends RuntimeException {
|
||||
* Creates a new <code>PolicyManagerException</code> that has the message
|
||||
* <code>msg</code>.
|
||||
*
|
||||
* @param msg
|
||||
* exception message
|
||||
* @param msg exception message
|
||||
*/
|
||||
public PolicyManagerException(final String msg) {
|
||||
super(msg);
|
||||
@ -23,8 +22,7 @@ public class PolicyManagerException extends RuntimeException {
|
||||
* Creates a new <code>PolicyManagerException</code> that wraps the given
|
||||
* <code>Throwable</code>.
|
||||
*
|
||||
* @param t
|
||||
* root cause
|
||||
* @param t root cause
|
||||
*/
|
||||
public PolicyManagerException(final Throwable t) {
|
||||
super(t);
|
||||
@ -34,10 +32,8 @@ public class PolicyManagerException extends RuntimeException {
|
||||
* Creates a new <code>PolicyManagerException</code> that has the message
|
||||
* <code>msg</code> and wraps the root cause.
|
||||
*
|
||||
* @param msg
|
||||
* exception message
|
||||
* @param t
|
||||
* root cause
|
||||
* @param msg exception message
|
||||
* @param t root cause
|
||||
*/
|
||||
public PolicyManagerException(final String msg, final Throwable t) {
|
||||
super(msg, t);
|
||||
|
@ -277,8 +277,8 @@ public class ReferenceManifestValidator {
|
||||
filepath = file.getAttribute(SwidTagConstants.NAME);
|
||||
}
|
||||
if (getHashValue(filepath, "SHA256").equals(
|
||||
file.getAttribute(SwidTagConstants._SHA256_HASH.getPrefix() + ":"
|
||||
+ SwidTagConstants._SHA256_HASH.getLocalPart()))) {
|
||||
file.getAttribute(SwidTagConstants.SHA_256_HASH.getPrefix() + ":"
|
||||
+ SwidTagConstants.SHA_256_HASH.getLocalPart()))) {
|
||||
log.info("Support RIM hash verified for {}", filepath);
|
||||
return true;
|
||||
} else {
|
||||
@ -377,7 +377,7 @@ public class ReferenceManifestValidator {
|
||||
*
|
||||
* @param signature the signature that failed to validate
|
||||
* @param context the context used for validation
|
||||
* @throws XMLSignatureException
|
||||
* @throws XMLSignatureException if there is an issue validating the provided signature
|
||||
*/
|
||||
private void whySignatureInvalid(final XMLSignature signature, final DOMValidateContext context)
|
||||
throws XMLSignatureException {
|
||||
@ -415,7 +415,7 @@ public class ReferenceManifestValidator {
|
||||
throws Exception {
|
||||
if (cert == null || trustStore == null) {
|
||||
throw new Exception("Null certificate or truststore received");
|
||||
} else if (trustStore.size() == 0) {
|
||||
} else if (trustStore.isEmpty()) {
|
||||
throw new Exception("Truststore is empty");
|
||||
}
|
||||
|
||||
@ -542,9 +542,8 @@ public class ReferenceManifestValidator {
|
||||
*
|
||||
* @param pemString the input string
|
||||
* @return an X509Certificate created from the string, or null
|
||||
* @throws Exception if certificate cannot be successfully parsed
|
||||
*/
|
||||
private X509Certificate parseCertFromPEMString(final String pemString) throws Exception {
|
||||
private X509Certificate parseCertFromPEMString(final String pemString) {
|
||||
String certificateHeader = "-----BEGIN CERTIFICATE-----";
|
||||
String certificateFooter = "-----END CERTIFICATE-----";
|
||||
try {
|
||||
@ -614,7 +613,7 @@ public class ReferenceManifestValidator {
|
||||
*
|
||||
* @param certificate the cert to pull the subjectKeyIdentifier from
|
||||
* @return the String representation of the subjectKeyIdentifier
|
||||
* @throws IOException
|
||||
* @throws IOException if there are issues retrieving the certificate subject key identifier
|
||||
*/
|
||||
private String getCertificateSubjectKeyIdentifier(final X509Certificate certificate)
|
||||
throws IOException {
|
||||
@ -631,7 +630,7 @@ public class ReferenceManifestValidator {
|
||||
/**
|
||||
* This method parses the subject key identifier from the KeyName element of a signature.
|
||||
*
|
||||
* @param doc
|
||||
* @param doc document
|
||||
* @return SKID if found, or an empty string.
|
||||
*/
|
||||
private String getKeyName(final Document doc) {
|
||||
|
@ -78,83 +78,83 @@ public final class SwidTagConstants {
|
||||
public static final String FX_SEPARATOR = ":";
|
||||
public static final String RFC3852_PFX = "rcf3852";
|
||||
public static final String RFC3339_PFX = "rcf3339";
|
||||
public static final String _COLLOQUIAL_VERSION_STR = N8060_PFX + FX_SEPARATOR
|
||||
public static final String COLLOQUIAL_VERSION_STR = N8060_PFX + FX_SEPARATOR
|
||||
+ COLLOQUIAL_VERSION;
|
||||
public static final String _PRODUCT_STR = N8060_PFX + FX_SEPARATOR
|
||||
public static final String PRODUCT_STR = N8060_PFX + FX_SEPARATOR
|
||||
+ PRODUCT;
|
||||
public static final String _REVISION_STR = N8060_PFX + FX_SEPARATOR
|
||||
public static final String REVISION_STR = N8060_PFX + FX_SEPARATOR
|
||||
+ REVISION;
|
||||
public static final String _EDITION_STR = N8060_PFX + FX_SEPARATOR
|
||||
public static final String EDITION_STR = N8060_PFX + FX_SEPARATOR
|
||||
+ EDITION;
|
||||
public static final String _RIM_LINK_HASH_STR = RIM_PFX + FX_SEPARATOR
|
||||
public static final String RIM_LINK_HASH_STR = RIM_PFX + FX_SEPARATOR
|
||||
+ RIM_LINK_HASH;
|
||||
public static final String _BINDING_SPEC_STR = RIM_PFX + FX_SEPARATOR
|
||||
public static final String BINDING_SPEC_STR = RIM_PFX + FX_SEPARATOR
|
||||
+ BINDING_SPEC;
|
||||
public static final String _BINDING_SPEC_VERSION_STR = RIM_PFX + FX_SEPARATOR
|
||||
public static final String BINDING_SPEC_VERSION_STR = RIM_PFX + FX_SEPARATOR
|
||||
+ BINDING_SPEC_VERSION;
|
||||
public static final String _PLATFORM_MANUFACTURER_STR = RIM_PFX + FX_SEPARATOR
|
||||
public static final String PLATFORM_MANUFACTURER_FULL_STR = RIM_PFX + FX_SEPARATOR
|
||||
+ PLATFORM_MANUFACTURER_STR;
|
||||
public static final String _PLATFORM_MANUFACTURER_ID_STR = RIM_PFX + FX_SEPARATOR
|
||||
public static final String PLATFORM_MANUFACTURER_ID_STR = RIM_PFX + FX_SEPARATOR
|
||||
+ PLATFORM_MANUFACTURER_ID;
|
||||
public static final String _PLATFORM_MODEL_STR = RIM_PFX + FX_SEPARATOR
|
||||
public static final String PLATFORM_MODEL_STR = RIM_PFX + FX_SEPARATOR
|
||||
+ PLATFORM_MODEL;
|
||||
public static final String _PLATFORM_VERSION_STR = RIM_PFX + FX_SEPARATOR
|
||||
public static final String PLATFORM_VERSION_STR = RIM_PFX + FX_SEPARATOR
|
||||
+ PLATFORM_VERSION;
|
||||
public static final String _PAYLOAD_TYPE_STR = RIM_PFX + FX_SEPARATOR
|
||||
public static final String PAYLOAD_TYPE_STR = RIM_PFX + FX_SEPARATOR
|
||||
+ PAYLOAD_TYPE;
|
||||
public static final String _PC_URI_LOCAL_STR = RIM_PFX + FX_SEPARATOR
|
||||
public static final String PC_URI_LOCAL_STR = RIM_PFX + FX_SEPARATOR
|
||||
+ PC_URI_LOCAL;
|
||||
public static final String _PC_URI_GLOBAL_STR = RIM_PFX + FX_SEPARATOR
|
||||
public static final String PC_URI_GLOBAL_STR = RIM_PFX + FX_SEPARATOR
|
||||
+ PC_URI_GLOBAL;
|
||||
public static final QName _SHA256_HASH = new QName(
|
||||
public static final QName SHA_256_HASH = new QName(
|
||||
"http://www.w3.org/2001/04/xmlenc#sha256", HASH, "SHA256");
|
||||
public static final QName _COLLOQUIAL_VERSION = new QName(
|
||||
public static final QName QNAME_COLLOQUIAL_VERSION = new QName(
|
||||
NIST_NS, COLLOQUIAL_VERSION, N8060_PFX);
|
||||
public static final QName _EDITION = new QName(
|
||||
public static final QName QNAME_EDITION = new QName(
|
||||
NIST_NS, EDITION, N8060_PFX);
|
||||
public static final QName _PRODUCT = new QName(
|
||||
public static final QName QNAME_PRODUCT = new QName(
|
||||
NIST_NS, PRODUCT, N8060_PFX);
|
||||
public static final QName _REVISION = new QName(
|
||||
public static final QName QNAME_REVISION = new QName(
|
||||
NIST_NS, REVISION, N8060_PFX);
|
||||
public static final QName _PAYLOAD_TYPE = new QName(
|
||||
public static final QName QNAME_PAYLOAD_TYPE = new QName(
|
||||
TCG_NS, PAYLOAD_TYPE, RIM_PFX);
|
||||
public static final QName _PLATFORM_MANUFACTURER = new QName(
|
||||
public static final QName QNAME_PLATFORM_MANUFACTURER = new QName(
|
||||
TCG_NS, PLATFORM_MANUFACTURER_STR, RIM_PFX);
|
||||
public static final QName _PLATFORM_MANUFACTURER_ID = new QName(
|
||||
public static final QName QNAME_PLATFORM_MANUFACTURER_ID = new QName(
|
||||
TCG_NS, PLATFORM_MANUFACTURER_ID, RIM_PFX);
|
||||
public static final QName _PLATFORM_MODEL = new QName(
|
||||
public static final QName QNAME_PLATFORM_MODEL = new QName(
|
||||
TCG_NS, PLATFORM_MODEL, RIM_PFX);
|
||||
public static final QName _PLATFORM_VERSION = new QName(
|
||||
public static final QName QNAME_PLATFORM_VERSION = new QName(
|
||||
TCG_NS, PLATFORM_VERSION, RIM_PFX);
|
||||
public static final QName _FIRMWARE_MANUFACTURER_STR = new QName(
|
||||
public static final QName QNAME_FIRMWARE_MANUFACTURER_STR = new QName(
|
||||
TCG_NS, FIRMWARE_MANUFACTURER_STR, RIM_PFX);
|
||||
public static final QName _FIRMWARE_MANUFACTURER_ID = new QName(
|
||||
public static final QName QNAME_FIRMWARE_MANUFACTURER_ID = new QName(
|
||||
TCG_NS, FIRMWARE_MANUFACTURER_ID, RIM_PFX);
|
||||
public static final QName _FIRMWARE_MODEL = new QName(
|
||||
public static final QName QNAME_FIRMWARE_MODEL = new QName(
|
||||
TCG_NS, FIRMWARE_MODEL, RIM_PFX);
|
||||
public static final QName _FIRMWARE_VERSION = new QName(
|
||||
public static final QName QNAME_FIRMWARE_VERSION = new QName(
|
||||
TCG_NS, FIRMWARE_VERSION, RIM_PFX);
|
||||
public static final QName _BINDING_SPEC = new QName(
|
||||
public static final QName QNAME_BINDING_SPEC = new QName(
|
||||
TCG_NS, BINDING_SPEC, RIM_PFX);
|
||||
public static final QName _BINDING_SPEC_VERSION = new QName(
|
||||
public static final QName QNAME_BINDING_SPEC_VERSION = new QName(
|
||||
TCG_NS, BINDING_SPEC_VERSION, RIM_PFX);
|
||||
public static final QName _PC_URI_LOCAL = new QName(
|
||||
public static final QName QNAME_PC_URI_LOCAL = new QName(
|
||||
TCG_NS, PC_URI_LOCAL, RIM_PFX);
|
||||
public static final QName _PC_URI_GLOBAL = new QName(
|
||||
public static final QName QNAME_PC_URI_GLOBAL = new QName(
|
||||
TCG_NS, PC_URI_GLOBAL, RIM_PFX);
|
||||
public static final QName _RIM_LINK_HASH = new QName(
|
||||
public static final QName QNAME_RIM_LINK_HASH = new QName(
|
||||
TCG_NS, RIM_LINK_HASH, RIM_PFX);
|
||||
public static final QName _SUPPORT_RIM_TYPE = new QName(
|
||||
public static final QName QNAME_SUPPORT_RIM_TYPE = new QName(
|
||||
TCG_NS, SUPPORT_RIM_TYPE, RIM_PFX);
|
||||
public static final QName _SUPPORT_RIM_FORMAT = new QName(
|
||||
public static final QName QNAME_SUPPORT_RIM_FORMAT = new QName(
|
||||
TCG_NS, SUPPORT_RIM_FORMAT, RIM_PFX);
|
||||
public static final QName _SUPPORT_RIM_URI_GLOBAL = new QName(
|
||||
public static final QName QNAME_SUPPORT_RIM_URI_GLOBAL = new QName(
|
||||
TCG_NS, SUPPORT_RIM_URI_GLOBAL, RIM_PFX);
|
||||
public static final QName _N8060_ENVVARPREFIX = new QName(
|
||||
public static final QName N8060_ENVVARPREFIX = new QName(
|
||||
NIST_NS, "envVarPrefix", N8060_PFX);
|
||||
public static final QName _N8060_ENVVARSUFFIX = new QName(
|
||||
public static final QName N8060_ENVVARSUFFIX = new QName(
|
||||
NIST_NS, "envVarSuffix", N8060_PFX);
|
||||
public static final QName _N8060_PATHSEPARATOR = new QName(
|
||||
public static final QName N8060_PATHSEPARATOR = new QName(
|
||||
NIST_NS, "pathSeparator", N8060_PFX);
|
||||
public static final String CA_ISSUERS = "1.3.6.1.5.5.7.48.2";
|
||||
|
||||
|
@ -12,8 +12,7 @@ public class TPMBaselineGeneratorException extends Exception {
|
||||
* Creates a new <code>CreateTPMBaselineException</code> that has the
|
||||
* message <code>msg</code>.
|
||||
*
|
||||
* @param msg
|
||||
* exception message
|
||||
* @param msg exception message
|
||||
*/
|
||||
TPMBaselineGeneratorException(final String msg) {
|
||||
super(msg);
|
||||
@ -23,8 +22,7 @@ public class TPMBaselineGeneratorException extends Exception {
|
||||
* Creates a new <code>CreateTPMBaselineException</code> that wraps the
|
||||
* given <code>Throwable</code>.
|
||||
*
|
||||
* @param t
|
||||
* root cause
|
||||
* @param t root cause
|
||||
*/
|
||||
TPMBaselineGeneratorException(final Throwable t) {
|
||||
super(t);
|
||||
@ -34,10 +32,8 @@ public class TPMBaselineGeneratorException extends Exception {
|
||||
* Creates a new <code>CreateTPMBaselineException</code> that has the
|
||||
* message <code>msg</code> and wraps the root cause.
|
||||
*
|
||||
* @param msg
|
||||
* exception message
|
||||
* @param t
|
||||
* root cause
|
||||
* @param msg exception message
|
||||
* @param t root cause
|
||||
*/
|
||||
TPMBaselineGeneratorException(final String msg, final Throwable t) {
|
||||
super(msg, t);
|
||||
|
@ -25,56 +25,104 @@ import java.util.LinkedHashMap;
|
||||
*/
|
||||
public final class TCGEventLog {
|
||||
|
||||
/** Logger. */
|
||||
private static final Logger LOGGER = LogManager.getLogger(TCGEventLog.class);
|
||||
/** Name of the hash algorithm used to process the Event Log, default is SHA256. */
|
||||
@Getter
|
||||
private String eventLogHashAlgorithm = "TPM_ALG_SHA256";
|
||||
/** Parsed event log array. */
|
||||
private static final int SIG_OFFSET = 32;
|
||||
/** TEV_NO_ACTION signature size. */
|
||||
private static final int SIG_SIZE = 16;
|
||||
/** Initial value for SHA 256 values.*/
|
||||
/**
|
||||
* Initial value for SHA 256 values.
|
||||
*/
|
||||
public static final String INIT_SHA256_LIST = "00000000000000000000000000"
|
||||
+ "00000000000000000000000000000000000000";
|
||||
/** Initial value for SHA 256 values.*/
|
||||
/**
|
||||
* Initial value for SHA 256 values.
|
||||
*/
|
||||
public static final String LOCALITY4_SHA256_LIST = "ffffffffffffffffffffffffff"
|
||||
+ "ffffffffffffffffffffffffffffffffffffff";
|
||||
/** Initial value for SHA 1 values. */
|
||||
/**
|
||||
* Initial value for SHA 1 values.
|
||||
*/
|
||||
public static final String INIT_SHA1_LIST = "0000000000000000000000000000000000000000";
|
||||
/** Initial value for SHA 1 values. */
|
||||
/**
|
||||
* Initial value for SHA 1 values.
|
||||
*/
|
||||
public static final String LOCALITY4_SHA1_LIST = "ffffffffffffffffffffffffffffffffffffffff";
|
||||
/** PFP defined EV_NO_ACTION identifier. */
|
||||
/**
|
||||
* PFP defined EV_NO_ACTION identifier.
|
||||
*/
|
||||
public static final int NO_ACTION_EVENT = 0x00000003;
|
||||
/** String value of SHA1 hash.*/
|
||||
/**
|
||||
* String value of SHA1 hash.
|
||||
*/
|
||||
public static final String HASH_STRING = "SHA1";
|
||||
/** String value of SHA256 hash. */
|
||||
/**
|
||||
* String value of SHA256 hash.
|
||||
*/
|
||||
public static final String HASH256_STRING = "SHA-256";
|
||||
/** Each PCR bank holds 24 registers. */
|
||||
/**
|
||||
* Each PCR bank holds 24 registers.
|
||||
*/
|
||||
public static final int PCR_COUNT = 24;
|
||||
/** Locality 4 starts at PCR 17. */
|
||||
/**
|
||||
* Locality 4 starts at PCR 17.
|
||||
*/
|
||||
public static final int PCR_LOCALITY4_MIN = 17;
|
||||
/** Locality 4 Ends at PCR 23. */
|
||||
/**
|
||||
* Locality 4 Ends at PCR 23.
|
||||
*/
|
||||
public static final int PCR_LOCALITY4_MAX = 23;
|
||||
/** 2 dimensional array holding the PCR values. */
|
||||
private byte[][] pcrList;
|
||||
/** List of parsed events within the log. */
|
||||
private LinkedHashMap<Integer, TpmPcrEvent> eventList = new LinkedHashMap<>();
|
||||
/** Length of PCR. Indicates which hash algorithm is used. */
|
||||
private int pcrLength;
|
||||
/** Name of hash algorithm. */
|
||||
private String hashType;
|
||||
/** Initial PCR Value to use. */
|
||||
private String initValue;
|
||||
/** Initial PcR Value to use for locality 4. */
|
||||
private String initLocalityFourValue;
|
||||
/** Content Output Flag use. */
|
||||
/**
|
||||
* Logger.
|
||||
*/
|
||||
private static final Logger LOGGER = LogManager.getLogger(TCGEventLog.class);
|
||||
/**
|
||||
* Parsed event log array.
|
||||
*/
|
||||
private static final int SIG_OFFSET = 32;
|
||||
/**
|
||||
* TEV_NO_ACTION signature size.
|
||||
*/
|
||||
private static final int SIG_SIZE = 16;
|
||||
/**
|
||||
* Name of the hash algorithm used to process the Event Log, default is SHA256.
|
||||
*/
|
||||
@Getter
|
||||
private String eventLogHashAlgorithm = "TPM_ALG_SHA256";
|
||||
/**
|
||||
* 2 dimensional array holding the PCR values.
|
||||
*/
|
||||
private final byte[][] pcrList;
|
||||
/**
|
||||
* List of parsed events within the log.
|
||||
*/
|
||||
private final LinkedHashMap<Integer, TpmPcrEvent> eventList = new LinkedHashMap<>();
|
||||
/**
|
||||
* Length of PCR. Indicates which hash algorithm is used.
|
||||
*/
|
||||
private final int pcrLength;
|
||||
/**
|
||||
* Name of hash algorithm.
|
||||
*/
|
||||
private final String hashType;
|
||||
/**
|
||||
* Initial PCR Value to use.
|
||||
*/
|
||||
private final String initValue;
|
||||
/**
|
||||
* Initial PcR Value to use for locality 4.
|
||||
*/
|
||||
private final String initLocalityFourValue;
|
||||
/**
|
||||
* Content Output Flag use.
|
||||
*/
|
||||
private boolean bContent = false;
|
||||
/** Event Output Flag use. */
|
||||
/**
|
||||
* Event Output Flag use.
|
||||
*/
|
||||
private boolean bHexEvent = false;
|
||||
/** Event Output Flag use. */
|
||||
/**
|
||||
* Event Output Flag use.
|
||||
*/
|
||||
private boolean bEvent = false;
|
||||
/** Event Output Flag use. */
|
||||
/**
|
||||
* Event Output Flag use.
|
||||
*/
|
||||
@Getter
|
||||
private boolean bCryptoAgile = false;
|
||||
/**
|
||||
@ -111,29 +159,31 @@ public final class TCGEventLog {
|
||||
|
||||
/**
|
||||
* Simple constructor for Event Log.
|
||||
*
|
||||
* @param rawlog data for the event log file.
|
||||
* @throws java.security.NoSuchAlgorithmException if an unknown algorithm is encountered.
|
||||
* @throws java.security.NoSuchAlgorithmException if an unknown algorithm is encountered.
|
||||
* @throws java.security.cert.CertificateException if a certificate in the log cannot be parsed.
|
||||
* @throws java.io.IOException IO Stream if event cannot be parsed.
|
||||
* @throws java.io.IOException IO Stream if event cannot be parsed.
|
||||
*/
|
||||
public TCGEventLog(final byte[] rawlog)
|
||||
throws CertificateException, NoSuchAlgorithmException, IOException {
|
||||
throws CertificateException, NoSuchAlgorithmException, IOException {
|
||||
this(rawlog, false, false, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Default constructor for just the rawlog that'll set up SHA1 Log.
|
||||
* @param rawlog data for the event log file.
|
||||
* @param bEventFlag if true provides human readable event descriptions.
|
||||
* @param bContentFlag if true provides hex output for Content in the description.
|
||||
*
|
||||
* @param rawlog data for the event log file.
|
||||
* @param bEventFlag if true provides human readable event descriptions.
|
||||
* @param bContentFlag if true provides hex output for Content in the description.
|
||||
* @param bHexEventFlag if true provides hex event structure in the description.
|
||||
* @throws java.security.NoSuchAlgorithmException if an unknown algorithm is encountered.
|
||||
* @throws java.security.NoSuchAlgorithmException if an unknown algorithm is encountered.
|
||||
* @throws java.security.cert.CertificateException if a certificate in the log cannot be parsed.
|
||||
* @throws java.io.IOException IO Stream if event cannot be parsed.
|
||||
* @throws java.io.IOException IO Stream if event cannot be parsed.
|
||||
*/
|
||||
public TCGEventLog(final byte[] rawlog, final boolean bEventFlag,
|
||||
final boolean bContentFlag, final boolean bHexEventFlag)
|
||||
throws CertificateException, NoSuchAlgorithmException, IOException {
|
||||
throws CertificateException, NoSuchAlgorithmException, IOException {
|
||||
|
||||
bCryptoAgile = isLogCrytoAgile(rawlog);
|
||||
if (bCryptoAgile) {
|
||||
@ -194,18 +244,18 @@ public final class TCGEventLog {
|
||||
* This method puts blank values in the pcrList.
|
||||
*/
|
||||
private void initPcrList() {
|
||||
try {
|
||||
for (int i = 0; i < PCR_COUNT; i++) {
|
||||
System.arraycopy(Hex.decodeHex(initValue.toCharArray()),
|
||||
try {
|
||||
for (int i = 0; i < PCR_COUNT; i++) {
|
||||
System.arraycopy(Hex.decodeHex(initValue.toCharArray()),
|
||||
0, pcrList[i], 0, pcrLength);
|
||||
}
|
||||
for (int i = PCR_LOCALITY4_MIN; i < PCR_LOCALITY4_MAX; i++) {
|
||||
System.arraycopy(Hex.decodeHex(initLocalityFourValue.toCharArray()),
|
||||
0, pcrList[i], 0, pcrLength);
|
||||
}
|
||||
} catch (DecoderException deEx) {
|
||||
LOGGER.error(deEx);
|
||||
}
|
||||
for (int i = PCR_LOCALITY4_MIN; i < PCR_LOCALITY4_MAX; i++) {
|
||||
System.arraycopy(Hex.decodeHex(initLocalityFourValue.toCharArray()),
|
||||
0, pcrList[i], 0, pcrLength);
|
||||
}
|
||||
} catch (DecoderException deEx) {
|
||||
LOGGER.error(deEx);
|
||||
}
|
||||
}
|
||||
|
||||
// /**
|
||||
@ -298,6 +348,7 @@ public final class TCGEventLog {
|
||||
|
||||
/**
|
||||
* Returns a list of event found in the Event Log.
|
||||
*
|
||||
* @return an arraylist of event.
|
||||
*/
|
||||
public Collection<TpmPcrEvent> getEventList() {
|
||||
@ -307,6 +358,7 @@ public final class TCGEventLog {
|
||||
/**
|
||||
* Returns a specific element of the Event Log that corresponds to the requested
|
||||
* event number.
|
||||
*
|
||||
* @param eventNumber specific event to find in the list.
|
||||
* @return TPM Event in the position of the list
|
||||
*/
|
||||
@ -326,6 +378,7 @@ public final class TCGEventLog {
|
||||
|
||||
/**
|
||||
* Human readable string representing the contents of the Event Log.
|
||||
*
|
||||
* @return Description of the log.
|
||||
*/
|
||||
public String toString() {
|
||||
@ -334,14 +387,15 @@ public final class TCGEventLog {
|
||||
sb.append(event.toString(bEvent, bHexEvent, bContent));
|
||||
}
|
||||
sb.append("Event Log processing completed.\n");
|
||||
return sb.toString();
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Human readable string representing the contents of the Event Log.
|
||||
* @param event flag to set
|
||||
*
|
||||
* @param event flag to set
|
||||
* @param hexEvent flag to set
|
||||
* @param content flag to set
|
||||
* @param content flag to set
|
||||
* @return Description of the log.
|
||||
*/
|
||||
public String toString(final boolean event,
|
||||
@ -357,10 +411,11 @@ public final class TCGEventLog {
|
||||
/**
|
||||
* Returns the TCG Algorithm Registry defined ID for the Digest Algorithm
|
||||
* used in the event log.
|
||||
*
|
||||
* @return TCG Defined Algorithm name
|
||||
*/
|
||||
public int getEventLogHashAlgorithmID() {
|
||||
return TcgTpmtHa.tcgAlgStringToId(eventLogHashAlgorithm);
|
||||
return TcgTpmtHa.tcgAlgStringToId(eventLogHashAlgorithm);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -17,66 +17,80 @@ import java.math.BigInteger;
|
||||
* } TPMT_HA;
|
||||
*/
|
||||
public class TcgTpmtHa {
|
||||
/**
|
||||
* TCG ID for SHA1.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA1 = 0x04;
|
||||
|
||||
/**
|
||||
* TCG ID for SHA1.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA256 = 0x0B;
|
||||
|
||||
/**
|
||||
* TCG ID for SHA 384.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA384 = 0x0C;
|
||||
|
||||
/**
|
||||
* TCG ID for SHA512.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA_512 = 0x0D;
|
||||
|
||||
/**
|
||||
* TCG ID for Null algorithm.
|
||||
*/
|
||||
public static final int TPM_ALG_NULL = 0x10;
|
||||
|
||||
/**
|
||||
* TCG ID for SHA1.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA1_LENGTH = 20;
|
||||
|
||||
/**
|
||||
* TCG ID for SHA1.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA256_LENGTH = 32;
|
||||
|
||||
/**
|
||||
* TCG ID for SHA 384.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA384_LENGTH = 48;
|
||||
|
||||
/**
|
||||
* TCG ID for SHA512.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA512_LENGTH = 64;
|
||||
|
||||
/**
|
||||
* TCG ID for Null algorithm.
|
||||
*/
|
||||
public static final int TPM_ALG_NULL_LENGTH = 0;
|
||||
|
||||
/**
|
||||
* TCG Defined Algorithm Identifiers.
|
||||
*/
|
||||
@Getter
|
||||
private int hashAlgId = 0;
|
||||
|
||||
/**
|
||||
* Length of the hash.
|
||||
*/
|
||||
@Getter
|
||||
private int hashLength = 0;
|
||||
|
||||
/**
|
||||
* Human readable name of the hash algorithm.
|
||||
* Human-readable name of the hash algorithm.
|
||||
*/
|
||||
@Getter
|
||||
private String hashName = "";
|
||||
|
||||
/**
|
||||
* Hash data.
|
||||
*/
|
||||
@Getter(value = AccessLevel.PROTECTED)
|
||||
private byte[] digest = null;
|
||||
/**
|
||||
* TCG ID for SHA1.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA1 = 0x04;
|
||||
/**
|
||||
* TCG ID for SHA1.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA256 = 0x0B;
|
||||
/**
|
||||
* TCG ID for SHA 384.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA384 = 0x0C;
|
||||
/**
|
||||
* TCG ID for SHA512.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA_512 = 0x0D;
|
||||
/**
|
||||
* TCG ID for Null algorithm.
|
||||
*/
|
||||
public static final int TPM_ALG_NULL = 0x10;
|
||||
/**
|
||||
* TCG ID for SHA1.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA1_LENGTH = 20;
|
||||
/**
|
||||
* TCG ID for SHA1.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA256_LENGTH = 32;
|
||||
/**
|
||||
* TCG ID for SHA 384.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA384_LENGTH = 48;
|
||||
/**
|
||||
* TCG ID for SHA512.
|
||||
*/
|
||||
public static final int TPM_ALG_SHA512_LENGTH = 64;
|
||||
/**
|
||||
* TCG ID for Null algorithm.
|
||||
*/
|
||||
public static final int TPM_ALG_NULL_LENGTH = 0;
|
||||
|
||||
/**
|
||||
* buffer to hold the structure.
|
||||
*/
|
||||
@ -102,6 +116,61 @@ public class TcgTpmtHa {
|
||||
System.arraycopy(digest, 0, buffer, algID.length, digest.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the hash name via a lookup.
|
||||
* Lookup based upon section 6.3 for the TPM-Rev-2.0-Part-2-Structures.pdf document.
|
||||
* Only hash algorithms found in Table 7 are used.
|
||||
*
|
||||
* @param algId int to convert to string
|
||||
* @return name of the algorithm
|
||||
*/
|
||||
public static String tcgAlgIdToString(final int algId) {
|
||||
return switch (algId) {
|
||||
case TPM_ALG_SHA1 -> "TPM_ALG_SHA1";
|
||||
case TPM_ALG_SHA256 -> "TPM_ALG_SHA256";
|
||||
case TPM_ALG_SHA384 -> "TPM_ALG_SHA384";
|
||||
case TPM_ALG_SHA_512 -> "TPM_ALG_SHA512";
|
||||
case TPM_ALG_NULL -> "TPM_ALG_NULL";
|
||||
default -> "Unknown or invalid Hash";
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the TCG defined ID via a lookup o the TCG Defined Algorithm String.
|
||||
* Lookup based upon section 6.3 for the TPM-Rev-2.0-Part-2-Structures.pdf document.
|
||||
* Only hash algorithms found in Table 7 are used.
|
||||
*
|
||||
* @param algorithm String to convert to an id
|
||||
* @return id of hash algorithm
|
||||
*/
|
||||
public static int tcgAlgStringToId(final String algorithm) {
|
||||
return switch (algorithm) {
|
||||
case "TPM_ALG_SHA1" -> TPM_ALG_SHA1;
|
||||
case "TPM_ALG_SHA256" -> TPM_ALG_SHA256;
|
||||
case "TPM_ALG_SHA384" -> TPM_ALG_SHA384;
|
||||
case "TPM_ALG_SHA512" -> TPM_ALG_SHA_512;
|
||||
default -> TPM_ALG_NULL;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the length of a given TPM ALG Identifier.
|
||||
* (lookup based upon section 6.3 for the TPM-Rev-2.0-Part-2-Structures.pdf document)
|
||||
* Only hash algorithms found in Table 7 are used.
|
||||
*
|
||||
* @param algId TCG defined Algorithm identifier
|
||||
* @return length of hash data in bytes
|
||||
*/
|
||||
public static int tcgAlgLength(final int algId) {
|
||||
return switch (algId) {
|
||||
case TPM_ALG_SHA1 -> TPM_ALG_SHA1_LENGTH;
|
||||
case TPM_ALG_SHA256 -> TPM_ALG_SHA256_LENGTH;
|
||||
case TPM_ALG_SHA384 -> TPM_ALG_SHA384_LENGTH;
|
||||
case TPM_ALG_SHA_512 -> TPM_ALG_SHA512_LENGTH;
|
||||
default -> TPM_ALG_NULL_LENGTH;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the contents of the TPMT_HA structure buffer.
|
||||
*
|
||||
@ -120,96 +189,4 @@ public class TcgTpmtHa {
|
||||
public String toString() {
|
||||
return String.format("%s hash = %s", hashName, HexUtils.byteArrayToHexString(digest));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the hash name via a lookup.
|
||||
* Lookup based upon section 6.3 for the TPM-Rev-2.0-Part-2-Structures.pdf document.
|
||||
* Only hash algorithms found in Table 7 are used.
|
||||
*
|
||||
* @param algId int to convert to string
|
||||
* @return name of the algorithm
|
||||
*/
|
||||
public static String tcgAlgIdToString(final int algId) {
|
||||
String alg;
|
||||
switch (algId) {
|
||||
case TPM_ALG_SHA1:
|
||||
alg = "TPM_ALG_SHA1";
|
||||
break;
|
||||
case TPM_ALG_SHA256:
|
||||
alg = "TPM_ALG_SHA256";
|
||||
break;
|
||||
case TPM_ALG_SHA384:
|
||||
alg = "TPM_ALG_SHA384";
|
||||
break;
|
||||
case TPM_ALG_SHA_512:
|
||||
alg = "TPM_ALG_SHA512";
|
||||
break;
|
||||
case TPM_ALG_NULL:
|
||||
alg = "TPM_ALG_NULL";
|
||||
break;
|
||||
default:
|
||||
alg = "Unknown or invalid Hash";
|
||||
}
|
||||
return alg;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the TCG defined ID via a lookup o the TCG Defined Algorithm String.
|
||||
* Lookup based upon section 6.3 for the TPM-Rev-2.0-Part-2-Structures.pdf document.
|
||||
* Only hash algorithms found in Table 7 are used.
|
||||
*
|
||||
* @param algorithm String to convert to an id
|
||||
* @return id of hash algorithm
|
||||
*/
|
||||
public static int tcgAlgStringToId(final String algorithm) {
|
||||
int alg;
|
||||
switch (algorithm) {
|
||||
case "TPM_ALG_SHA1":
|
||||
alg = TPM_ALG_SHA1;
|
||||
break;
|
||||
case "TPM_ALG_SHA256":
|
||||
alg = TPM_ALG_SHA256;
|
||||
break;
|
||||
case "TPM_ALG_SHA384":
|
||||
alg = TPM_ALG_SHA384;
|
||||
break;
|
||||
case "TPM_ALG_SHA512":
|
||||
alg = TPM_ALG_SHA_512;
|
||||
break;
|
||||
case "TPM_ALG_NULL":
|
||||
default:
|
||||
alg = TPM_ALG_NULL;
|
||||
}
|
||||
return alg;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the length of a given TPM ALG Identifier.
|
||||
* (lookup based upon section 6.3 for the TPM-Rev-2.0-Part-2-Structures.pdf document)
|
||||
* Only hash algorithms found in Table 7 are used.
|
||||
*
|
||||
* @param algId TCG defined Algorithm identifier
|
||||
* @return length of hash data in bytes
|
||||
*/
|
||||
public static int tcgAlgLength(final int algId) {
|
||||
int length;
|
||||
switch (algId) {
|
||||
case TPM_ALG_SHA1:
|
||||
length = TPM_ALG_SHA1_LENGTH;
|
||||
break;
|
||||
case TPM_ALG_SHA256:
|
||||
length = TPM_ALG_SHA256_LENGTH;
|
||||
break;
|
||||
case TPM_ALG_SHA384:
|
||||
length = TPM_ALG_SHA384_LENGTH;
|
||||
break;
|
||||
case TPM_ALG_SHA_512:
|
||||
length = TPM_ALG_SHA512_LENGTH;
|
||||
break;
|
||||
case TPM_ALG_NULL:
|
||||
default:
|
||||
length = TPM_ALG_NULL_LENGTH;
|
||||
}
|
||||
return length;
|
||||
}
|
||||
}
|
||||
|
@ -3,17 +3,17 @@ package hirs.utils.tpm.eventlog;
|
||||
import hirs.utils.HexUtils;
|
||||
import hirs.utils.tpm.eventlog.events.EvCompactHash;
|
||||
import hirs.utils.tpm.eventlog.events.EvConstants;
|
||||
import hirs.utils.tpm.eventlog.events.EvEfiBootServicesApp;
|
||||
import hirs.utils.tpm.eventlog.events.EvEfiGptPartition;
|
||||
import hirs.utils.tpm.eventlog.events.EvEfiHandoffTable;
|
||||
import hirs.utils.tpm.eventlog.events.EvEfiSpdmDeviceSecurityEvent;
|
||||
import hirs.utils.tpm.eventlog.events.EvEventTag;
|
||||
import hirs.utils.tpm.eventlog.events.EvIPL;
|
||||
import hirs.utils.tpm.eventlog.events.EvNoAction;
|
||||
import hirs.utils.tpm.eventlog.events.EvPostCode;
|
||||
import hirs.utils.tpm.eventlog.events.EvSCrtmContents;
|
||||
import hirs.utils.tpm.eventlog.events.EvSCrtmVersion;
|
||||
import hirs.utils.tpm.eventlog.uefi.UefiConstants;
|
||||
import hirs.utils.tpm.eventlog.events.EvEfiBootServicesApp;
|
||||
import hirs.utils.tpm.eventlog.events.EvPostCode;
|
||||
import hirs.utils.tpm.eventlog.uefi.UefiFirmware;
|
||||
import hirs.utils.tpm.eventlog.uefi.UefiVariable;
|
||||
import lombok.AccessLevel;
|
||||
@ -61,60 +61,77 @@ public class TpmPcrEvent {
|
||||
* Log format. SHA1=1, Crytpo agile=2.
|
||||
* this can be refactored out
|
||||
*/
|
||||
@Getter @Setter(value = AccessLevel.PROTECTED)
|
||||
@Getter
|
||||
@Setter(value = AccessLevel.PROTECTED)
|
||||
private int logFormat = -1;
|
||||
|
||||
/**
|
||||
* PCR index.
|
||||
*/
|
||||
@Getter
|
||||
private int pcrIndex = -1;
|
||||
|
||||
/**
|
||||
* Event Type (long).
|
||||
*/
|
||||
@Getter
|
||||
private long eventType = 0;
|
||||
|
||||
/**
|
||||
* Event digest.
|
||||
*/
|
||||
private byte[] digest = null;
|
||||
|
||||
/**
|
||||
* Event data (no content).
|
||||
*/
|
||||
private byte[] event;
|
||||
|
||||
/**
|
||||
* Event content data.
|
||||
*/
|
||||
private byte[] eventContent;
|
||||
|
||||
/**
|
||||
* TCG Event Log spec version.
|
||||
*/
|
||||
@Getter
|
||||
private String specVersion = "Unknown";
|
||||
|
||||
/**
|
||||
* TCG Event Log errata version.
|
||||
*/
|
||||
@Getter
|
||||
private String specErrataVersion = "Unknown";
|
||||
|
||||
/**
|
||||
* Description for toString support.
|
||||
*/
|
||||
private String description = "";
|
||||
|
||||
/**
|
||||
* Length (in bytes) of a pcr.
|
||||
*/
|
||||
@Setter @Getter
|
||||
@Getter
|
||||
@Setter
|
||||
private int digestLength = 0;
|
||||
|
||||
/**
|
||||
* Event hash for SHA1 event logs.
|
||||
*/
|
||||
private byte[] eventDataSha1hash;
|
||||
|
||||
/**
|
||||
* Event hash for Crypto Agile events.
|
||||
*/
|
||||
private byte[] eventDataSha256hash;
|
||||
@Setter @Getter
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private int eventNumber;
|
||||
@Setter @Getter
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean error = false;
|
||||
|
||||
/**
|
||||
@ -147,403 +164,6 @@ public class TpmPcrEvent {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the digest from a TCG_PCR_EVENT digest field.
|
||||
* This can be SHA1 for older event structures or any algorithm for newer structure.
|
||||
*
|
||||
* @param data cryptographic hash
|
||||
* @param length length of the cryptographic hash
|
||||
*/
|
||||
protected void setEventDigest(final byte[] data, final int length) {
|
||||
digest = new byte[length];
|
||||
System.arraycopy(data, 0, digest, 0, length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the digest from a TCG Event.
|
||||
* This can be SHA1 for older event structures or any algorithm for newer structure.
|
||||
*
|
||||
* @return the digest data for the event
|
||||
*/
|
||||
public byte[] getEventDigest() {
|
||||
byte[] digestCopy = new byte[digestLength];
|
||||
System.arraycopy(digest, 0, digestCopy, 0, this.digestLength);
|
||||
return digestCopy;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a hex representation of the event digest.
|
||||
* @return hex string
|
||||
*/
|
||||
public String getEventDigestStr() {
|
||||
return Hex.encodeHexString(this.digest);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the event PCR index value from a TCG Event.
|
||||
*
|
||||
* @param eventIndex TCG Event PCR Index as defined in the PFP
|
||||
*/
|
||||
protected void setPcrIndex(final byte[] eventIndex) {
|
||||
pcrIndex = HexUtils.leReverseInt(eventIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the EventType.
|
||||
*
|
||||
* @param type byte array holding the PFP defined log event type
|
||||
*/
|
||||
protected void setEventType(final byte[] type) {
|
||||
eventType = new BigInteger(1, HexUtils.leReverseByte(type)).longValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a formatted string of the type for the event.
|
||||
* @return a string formatted to be human readable
|
||||
*/
|
||||
public String getEventTypeStr() {
|
||||
return String.format("0x%s %s", Long.toHexString(eventType), eventString((int) eventType));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a formatted string of the type for the event minus the byte code.
|
||||
* @return a string formatted to be human readable
|
||||
*/
|
||||
public String getEventTypeString() {
|
||||
return eventString((int) eventType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the event data after processing.
|
||||
*
|
||||
* @param eventData The PFP defined event content
|
||||
*/
|
||||
protected void setEventData(final byte[] eventData) {
|
||||
event = new byte[eventData.length];
|
||||
System.arraycopy(eventData, 0, event, 0, eventData.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the Event Data (no event content) for the event.
|
||||
* event log format.
|
||||
*
|
||||
* @return byte array holding the event structure.
|
||||
*/
|
||||
public byte[] getEvent() {
|
||||
return Arrays.copyOf(event, event.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the event content after processing.
|
||||
*
|
||||
* @param eventData The PFP defined event content
|
||||
*/
|
||||
protected void setEventContent(final byte[] eventData) {
|
||||
eventContent = new byte[eventData.length];
|
||||
//EvPostCode evPostCode = new EvPostCode(eventContent);
|
||||
System.arraycopy(eventData, 0, eventContent, 0, eventData.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the event Content Data (not the entire event structure).
|
||||
*
|
||||
* @return byte array holding the events content field
|
||||
*/
|
||||
public byte[] getEventContent() {
|
||||
return Arrays.copyOf(eventContent, eventContent.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* A getter that parses the content based on the type and returns the proper string
|
||||
* value for the content.
|
||||
* @return an appended string of human readable data
|
||||
*/
|
||||
public String getEventContentStr() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
switch ((int) this.eventType) {
|
||||
case EvConstants.EV_PREBOOT_CERT:
|
||||
sb.append(" EV_PREBOOT_CERT");
|
||||
break;
|
||||
case EvConstants.EV_POST_CODE:
|
||||
sb.append(new EvPostCode(eventContent).toString());
|
||||
break;
|
||||
case EvConstants.EV_UNUSED:
|
||||
break;
|
||||
case EvConstants.EV_NO_ACTION:
|
||||
EvNoAction noAction = null;
|
||||
try {
|
||||
noAction = new EvNoAction(eventContent);
|
||||
sb.append(noAction.toString());
|
||||
if (noAction.isSpecIDEvent()) {
|
||||
specVersion = noAction.getSpecVersion();
|
||||
specErrataVersion = noAction.getSpecErrataVersion();
|
||||
}
|
||||
} catch (UnsupportedEncodingException ueEx) {
|
||||
log.error(ueEx);
|
||||
sb.append(ueEx.toString());
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_SEPARATOR:
|
||||
if (EvPostCode.isAscii(eventContent)
|
||||
&& !this.isBlank(eventContent)) {
|
||||
sb.append(String.format("Separator event content = %s",
|
||||
new String(eventContent, StandardCharsets.UTF_8)));
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_EVENT_TAG:
|
||||
sb.append(new EvEventTag(eventContent).toString());
|
||||
break;
|
||||
case EvConstants.EV_S_CRTM_CONTENTS:
|
||||
sb.append(new EvSCrtmContents(eventContent).toString());
|
||||
break;
|
||||
case EvConstants.EV_S_CRTM_VERSION:
|
||||
try {
|
||||
sb.append(new EvSCrtmVersion(eventContent).toString());
|
||||
} catch (UnsupportedEncodingException ueEx) {
|
||||
log.error(ueEx);
|
||||
sb.append(ueEx.toString());
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_CPU_MICROCODE:
|
||||
case EvConstants.EV_PLATFORM_CONFIG_FLAGS:
|
||||
case EvConstants.EV_TABLE_OF_DEVICES:
|
||||
break;
|
||||
case EvConstants.EV_COMPACT_HASH:
|
||||
try {
|
||||
sb.append(new EvCompactHash(eventContent).toString());
|
||||
} catch (UnsupportedEncodingException ueEx) {
|
||||
log.error(ueEx);
|
||||
sb.append(ueEx.toString());
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_IPL:
|
||||
sb.append(new EvIPL(eventContent).toString());
|
||||
break;
|
||||
case EvConstants.EV_IPL_PARTITION_DATA:
|
||||
case EvConstants.EV_NONHOST_CODE:
|
||||
case EvConstants.EV_NONHOST_CONFIG:
|
||||
case EvConstants.EV_NONHOST_INFO:
|
||||
case EvConstants.EV_EV_OMIT_BOOT_DEVICES_EVENTS:
|
||||
case EvConstants.EV_EFI_EVENT_BASE:
|
||||
break;
|
||||
case EvConstants.EV_EFI_VARIABLE_DRIVER_CONFIG:
|
||||
case EvConstants.EV_EFI_VARIABLE_BOOT:
|
||||
case EvConstants.EV_EFI_VARIABLE_AUTHORITY:
|
||||
case EvConstants.EV_EFI_SPDM_DEVICE_POLICY:
|
||||
case EvConstants.EV_EFI_SPDM_DEVICE_AUTHORITY:
|
||||
try {
|
||||
sb.append(new UefiVariable(eventContent).toString());
|
||||
} catch (CertificateException cEx) {
|
||||
log.error(cEx);
|
||||
sb.append(cEx.toString());
|
||||
} catch (NoSuchAlgorithmException noSaEx) {
|
||||
log.error(noSaEx);
|
||||
sb.append(noSaEx.toString());
|
||||
} catch (IOException ioEx) {
|
||||
log.error(ioEx);
|
||||
sb.append(ioEx.toString());
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_EFI_BOOT_SERVICES_APPLICATION:
|
||||
case EvConstants.EV_EFI_BOOT_SERVICES_DRIVER: // same as EV_EFI_BOOT_SERVICES_APP
|
||||
try {
|
||||
sb.append(new EvEfiBootServicesApp(eventContent).toString());
|
||||
} catch (UnsupportedEncodingException ueEx) {
|
||||
log.error(ueEx);
|
||||
sb.append(ueEx.toString());
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_EFI_RUNTIME_SERVICES_DRIVER:
|
||||
break;
|
||||
case EvConstants.EV_EFI_GPT_EVENT:
|
||||
try {
|
||||
sb.append(new EvEfiGptPartition(eventContent).toString());
|
||||
} catch (UnsupportedEncodingException ueEx) {
|
||||
log.error(ueEx);
|
||||
sb.append(ueEx.toString());
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_EFI_ACTION:
|
||||
case EvConstants.EV_ACTION:
|
||||
sb.append(new String(eventContent, StandardCharsets.UTF_8));
|
||||
break;
|
||||
case EvConstants.EV_EFI_PLATFORM_FIRMWARE_BLOB:
|
||||
sb.append(new UefiFirmware(eventContent).toString());
|
||||
break;
|
||||
case EvConstants.EV_EFI_HANDOFF_TABLES:
|
||||
sb.append(new EvEfiHandoffTable(eventContent).toString());
|
||||
break;
|
||||
case EvConstants.EV_EFI_HCRTM_EVENT:
|
||||
break;
|
||||
case EvConstants.EV_EFI_SPDM_FIRMWARE_BLOB:
|
||||
case EvConstants.EV_EFI_SPDM_FIRMWARE_CONFIG:
|
||||
sb.append(new EvEfiSpdmDeviceSecurityEvent(eventContent).toString());
|
||||
break;
|
||||
default:
|
||||
sb.append("Unknown Event found\n");
|
||||
}
|
||||
|
||||
return cleanTextContent(sb.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the event content and creates a human readable description of each event.
|
||||
*
|
||||
* @param eventData the byte array holding the event data.
|
||||
* @param content the byte array holding the event content.
|
||||
* @param eventPosition event position within the event log.
|
||||
* @param hashName name of the hash algorithm used by the event log
|
||||
* @return String description of the event.
|
||||
* @throws CertificateException if the event contains an event that cannot be processed.
|
||||
* @throws NoSuchAlgorithmException if an event contains an unsupported algorithm.
|
||||
* @throws java.io.IOException if the event cannot be parsed.
|
||||
*/
|
||||
public String processEvent(final byte[] eventData, final byte[] content,
|
||||
final int eventPosition, final String hashName)
|
||||
throws CertificateException, NoSuchAlgorithmException, IOException {
|
||||
int eventID = (int) eventType;
|
||||
this.eventNumber = eventPosition;
|
||||
description += "Event# " + eventPosition + ": ";
|
||||
description += "Index PCR[" + getPcrIndex() + "]\n";
|
||||
description += "Event Type: 0x" + Long.toHexString(eventType) + " " + eventString(eventID);
|
||||
description += "\n";
|
||||
if (hashName.compareToIgnoreCase("TPM_ALG_SHA1") == 0) { // Digest
|
||||
description += "digest (SHA-1): " + Hex.encodeHexString(this.digest);
|
||||
} else if (hashName.compareToIgnoreCase("TPM_ALG_SHA256") == 0) { // Digest
|
||||
description += "digest (SHA256): " + Hex.encodeHexString(this.digest);
|
||||
} else if (hashName.compareToIgnoreCase("TPM_ALG_SHA384") == 0) { // Digest
|
||||
description += "digest (SHA384): " + Hex.encodeHexString(this.digest);
|
||||
} else if (hashName.compareToIgnoreCase("TPM_ALG_SHA512") == 0) { // Digest
|
||||
description += "digest (SHA512): " + Hex.encodeHexString(this.digest);
|
||||
} else {
|
||||
description += "Unsupported Hash Algorithm encountered";
|
||||
}
|
||||
if (eventID != UefiConstants.SIZE_4) {
|
||||
description += "\n";
|
||||
}
|
||||
// Calculate both the SHA1 and SHA256 on the event since this will equal the digest
|
||||
// field of about half the log messages.
|
||||
MessageDigest md1 = MessageDigest.getInstance("SHA-1");
|
||||
md1.update(eventData);
|
||||
eventDataSha1hash = md1.digest();
|
||||
MessageDigest md2 = MessageDigest.getInstance("SHA-256");
|
||||
md2.update(eventData);
|
||||
eventDataSha256hash = md2.digest();
|
||||
|
||||
switch (eventID) {
|
||||
case EvConstants.EV_PREBOOT_CERT:
|
||||
description += " EV_PREBOOT_CERT" + "\n";
|
||||
break;
|
||||
case EvConstants.EV_POST_CODE:
|
||||
EvPostCode postCode = new EvPostCode(content);
|
||||
description += "Event Content:\n" + postCode.toString();
|
||||
break;
|
||||
case EvConstants.EV_UNUSED:
|
||||
break;
|
||||
case EvConstants.EV_NO_ACTION:
|
||||
EvNoAction noAction = new EvNoAction(content);
|
||||
description += "Event Content:\n" + noAction.toString();
|
||||
if (noAction.isSpecIDEvent()) {
|
||||
specVersion = noAction.getSpecVersion();
|
||||
specErrataVersion = noAction.getSpecErrataVersion();
|
||||
}
|
||||
pciidsFileStatus = noAction.getPciidsFileStatus();
|
||||
break;
|
||||
case EvConstants.EV_SEPARATOR:
|
||||
if (EvPostCode.isAscii(content)) {
|
||||
String separatorEventData = new String(content, StandardCharsets.UTF_8);
|
||||
if (!this.isBlank(content)) {
|
||||
description += "Separator event content = " + separatorEventData;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_ACTION:
|
||||
description += "Event Content:\n"
|
||||
+ new String(content, StandardCharsets.UTF_8);
|
||||
break;
|
||||
case EvConstants.EV_EVENT_TAG:
|
||||
EvEventTag eventTag = new EvEventTag(content);
|
||||
description += eventTag.toString();
|
||||
break;
|
||||
case EvConstants.EV_S_CRTM_CONTENTS:
|
||||
EvSCrtmContents sCrtmContents = new EvSCrtmContents(content);
|
||||
description += "Event Content:\n " + sCrtmContents.toString();
|
||||
break;
|
||||
case EvConstants.EV_S_CRTM_VERSION:
|
||||
EvSCrtmVersion sCrtmVersion = new EvSCrtmVersion(content);
|
||||
description += "Event Content:\n" + sCrtmVersion.toString();
|
||||
break;
|
||||
case EvConstants.EV_CPU_MICROCODE:
|
||||
break;
|
||||
case EvConstants.EV_PLATFORM_CONFIG_FLAGS:
|
||||
break;
|
||||
case EvConstants.EV_TABLE_OF_DEVICES:
|
||||
break;
|
||||
case EvConstants.EV_COMPACT_HASH:
|
||||
EvCompactHash compactHash = new EvCompactHash(content);
|
||||
description += "Event Content:\n" + compactHash.toString();
|
||||
break;
|
||||
case EvConstants.EV_IPL:
|
||||
EvIPL ipl = new EvIPL(content);
|
||||
description += "Event Content:\n" + ipl.toString();
|
||||
break;
|
||||
case EvConstants.EV_IPL_PARTITION_DATA:
|
||||
break;
|
||||
case EvConstants.EV_NONHOST_CODE:
|
||||
break;
|
||||
case EvConstants.EV_NONHOST_CONFIG:
|
||||
break;
|
||||
case EvConstants.EV_NONHOST_INFO:
|
||||
break;
|
||||
case EvConstants.EV_EV_OMIT_BOOT_DEVICES_EVENTS:
|
||||
break;
|
||||
case EvConstants.EV_EFI_EVENT_BASE:
|
||||
break;
|
||||
case EvConstants.EV_EFI_VARIABLE_DRIVER_CONFIG:
|
||||
case EvConstants.EV_EFI_VARIABLE_BOOT:
|
||||
case EvConstants.EV_EFI_VARIABLE_AUTHORITY:
|
||||
case EvConstants.EV_EFI_SPDM_DEVICE_POLICY:
|
||||
case EvConstants.EV_EFI_SPDM_DEVICE_AUTHORITY:
|
||||
UefiVariable efiVar = new UefiVariable(content);
|
||||
description += "Event Content:\n" + efiVar.toString();
|
||||
vendorTableFileStatus = efiVar.getVendorTableFileStatus();
|
||||
break;
|
||||
case EvConstants.EV_EFI_BOOT_SERVICES_APPLICATION:
|
||||
case EvConstants.EV_EFI_BOOT_SERVICES_DRIVER:
|
||||
EvEfiBootServicesApp bootServices = new EvEfiBootServicesApp(content);
|
||||
description += "Event Content:\n" + bootServices.toString();
|
||||
break;
|
||||
case EvConstants.EV_EFI_RUNTIME_SERVICES_DRIVER:
|
||||
break;
|
||||
case EvConstants.EV_EFI_GPT_EVENT:
|
||||
description += "Event Content:\n" + new EvEfiGptPartition(content).toString();
|
||||
break;
|
||||
case EvConstants.EV_EFI_ACTION:
|
||||
description += new String(content, StandardCharsets.UTF_8);
|
||||
break;
|
||||
case EvConstants.EV_EFI_PLATFORM_FIRMWARE_BLOB:
|
||||
description += "Event Content:\n"
|
||||
+ new UefiFirmware(content).toString();
|
||||
break;
|
||||
case EvConstants.EV_EFI_HANDOFF_TABLES:
|
||||
EvEfiHandoffTable efiTable = new EvEfiHandoffTable(content);
|
||||
description += "Event Content:\n" + efiTable.toString();
|
||||
break;
|
||||
case EvConstants.EV_EFI_HCRTM_EVENT:
|
||||
break;
|
||||
case EvConstants.EV_EFI_SPDM_FIRMWARE_BLOB:
|
||||
case EvConstants.EV_EFI_SPDM_FIRMWARE_CONFIG:
|
||||
EvEfiSpdmDeviceSecurityEvent efiSpdmDse = new EvEfiSpdmDeviceSecurityEvent(content);
|
||||
description += "Event Content:\n" + efiSpdmDse.toString();
|
||||
pciidsFileStatus = efiSpdmDse.getPciidsFileStatus();
|
||||
break;
|
||||
default:
|
||||
description += " Unknown Event found" + "\n";
|
||||
}
|
||||
return description;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts the Event ID into a String As defined in the TCG PC Client FW Profile.
|
||||
* Event IDs have values larger than an integer,so a Long is used hold the value.
|
||||
@ -628,6 +248,374 @@ public class TpmPcrEvent {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the digest from a TCG_PCR_EVENT digest field.
|
||||
* This can be SHA1 for older event structures or any algorithm for newer structure.
|
||||
*
|
||||
* @param data cryptographic hash
|
||||
* @param length length of the cryptographic hash
|
||||
*/
|
||||
protected void setEventDigest(final byte[] data, final int length) {
|
||||
digest = new byte[length];
|
||||
System.arraycopy(data, 0, digest, 0, length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the digest from a TCG Event.
|
||||
* This can be SHA1 for older event structures or any algorithm for newer structure.
|
||||
*
|
||||
* @return the digest data for the event
|
||||
*/
|
||||
public byte[] getEventDigest() {
|
||||
byte[] digestCopy = new byte[digestLength];
|
||||
System.arraycopy(digest, 0, digestCopy, 0, this.digestLength);
|
||||
return digestCopy;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a hex representation of the event digest.
|
||||
*
|
||||
* @return hex string
|
||||
*/
|
||||
public String getEventDigestStr() {
|
||||
return Hex.encodeHexString(this.digest);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the event PCR index value from a TCG Event.
|
||||
*
|
||||
* @param eventIndex TCG Event PCR Index as defined in the PFP
|
||||
*/
|
||||
protected void setPcrIndex(final byte[] eventIndex) {
|
||||
pcrIndex = HexUtils.leReverseInt(eventIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the EventType.
|
||||
*
|
||||
* @param type byte array holding the PFP defined log event type
|
||||
*/
|
||||
protected void setEventType(final byte[] type) {
|
||||
eventType = new BigInteger(1, HexUtils.leReverseByte(type)).longValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a formatted string of the type for the event.
|
||||
*
|
||||
* @return a string formatted to be human readable
|
||||
*/
|
||||
public String getEventTypeStr() {
|
||||
return String.format("0x%s %s", Long.toHexString(eventType), eventString((int) eventType));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a formatted string of the type for the event minus the byte code.
|
||||
*
|
||||
* @return a string formatted to be human readable
|
||||
*/
|
||||
public String getEventTypeString() {
|
||||
return eventString((int) eventType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the event data after processing.
|
||||
*
|
||||
* @param eventData The PFP defined event content
|
||||
*/
|
||||
protected void setEventData(final byte[] eventData) {
|
||||
event = new byte[eventData.length];
|
||||
System.arraycopy(eventData, 0, event, 0, eventData.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the Event Data (no event content) for the event.
|
||||
* event log format.
|
||||
*
|
||||
* @return byte array holding the event structure.
|
||||
*/
|
||||
public byte[] getEvent() {
|
||||
return Arrays.copyOf(event, event.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the event Content Data (not the entire event structure).
|
||||
*
|
||||
* @return byte array holding the events content field
|
||||
*/
|
||||
public byte[] getEventContent() {
|
||||
return Arrays.copyOf(eventContent, eventContent.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the event content after processing.
|
||||
*
|
||||
* @param eventData The PFP defined event content
|
||||
*/
|
||||
protected void setEventContent(final byte[] eventData) {
|
||||
eventContent = new byte[eventData.length];
|
||||
//EvPostCode evPostCode = new EvPostCode(eventContent);
|
||||
System.arraycopy(eventData, 0, eventContent, 0, eventData.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* A getter that parses the content based on the type and returns the proper string
|
||||
* value for the content.
|
||||
*
|
||||
* @return an appended string of human readable data
|
||||
*/
|
||||
public String getEventContentStr() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
switch ((int) this.eventType) {
|
||||
case EvConstants.EV_PREBOOT_CERT:
|
||||
sb.append(" EV_PREBOOT_CERT");
|
||||
break;
|
||||
case EvConstants.EV_POST_CODE:
|
||||
sb.append(new EvPostCode(eventContent));
|
||||
break;
|
||||
case EvConstants.EV_UNUSED, EvConstants.EV_IPL_PARTITION_DATA, EvConstants.EV_NONHOST_CODE,
|
||||
EvConstants.EV_NONHOST_CONFIG, EvConstants.EV_NONHOST_INFO,
|
||||
EvConstants.EV_EV_OMIT_BOOT_DEVICES_EVENTS, EvConstants.EV_EFI_EVENT_BASE,
|
||||
EvConstants.EV_EFI_RUNTIME_SERVICES_DRIVER, EvConstants.EV_CPU_MICROCODE,
|
||||
EvConstants.EV_PLATFORM_CONFIG_FLAGS, EvConstants.EV_TABLE_OF_DEVICES,
|
||||
EvConstants.EV_EFI_HCRTM_EVENT:
|
||||
break;
|
||||
case EvConstants.EV_NO_ACTION:
|
||||
EvNoAction noAction = null;
|
||||
try {
|
||||
noAction = new EvNoAction(eventContent);
|
||||
sb.append(noAction);
|
||||
if (noAction.isSpecIDEvent()) {
|
||||
specVersion = noAction.getSpecVersion();
|
||||
specErrataVersion = noAction.getSpecErrataVersion();
|
||||
}
|
||||
} catch (UnsupportedEncodingException ueEx) {
|
||||
log.error(ueEx);
|
||||
sb.append(ueEx);
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_SEPARATOR:
|
||||
if (EvPostCode.isAscii(eventContent)
|
||||
&& !this.isBlank(eventContent)) {
|
||||
sb.append(String.format("Separator event content = %s",
|
||||
new String(eventContent, StandardCharsets.UTF_8)));
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_EVENT_TAG:
|
||||
sb.append(new EvEventTag(eventContent));
|
||||
break;
|
||||
case EvConstants.EV_S_CRTM_CONTENTS:
|
||||
sb.append(new EvSCrtmContents(eventContent));
|
||||
break;
|
||||
case EvConstants.EV_S_CRTM_VERSION:
|
||||
try {
|
||||
sb.append(new EvSCrtmVersion(eventContent));
|
||||
} catch (UnsupportedEncodingException ueEx) {
|
||||
log.error(ueEx);
|
||||
sb.append(ueEx);
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_COMPACT_HASH:
|
||||
try {
|
||||
sb.append(new EvCompactHash(eventContent));
|
||||
} catch (UnsupportedEncodingException ueEx) {
|
||||
log.error(ueEx);
|
||||
sb.append(ueEx);
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_IPL:
|
||||
sb.append(new EvIPL(eventContent));
|
||||
break;
|
||||
case EvConstants.EV_EFI_VARIABLE_DRIVER_CONFIG:
|
||||
case EvConstants.EV_EFI_VARIABLE_BOOT:
|
||||
case EvConstants.EV_EFI_VARIABLE_AUTHORITY:
|
||||
case EvConstants.EV_EFI_SPDM_DEVICE_POLICY:
|
||||
case EvConstants.EV_EFI_SPDM_DEVICE_AUTHORITY:
|
||||
try {
|
||||
sb.append(new UefiVariable(eventContent));
|
||||
} catch (CertificateException | NoSuchAlgorithmException | IOException exception) {
|
||||
log.error(exception);
|
||||
sb.append(exception);
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_EFI_BOOT_SERVICES_APPLICATION:
|
||||
case EvConstants.EV_EFI_BOOT_SERVICES_DRIVER: // same as EV_EFI_BOOT_SERVICES_APP
|
||||
try {
|
||||
sb.append(new EvEfiBootServicesApp(eventContent));
|
||||
} catch (UnsupportedEncodingException ueEx) {
|
||||
log.error(ueEx);
|
||||
sb.append(ueEx);
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_EFI_GPT_EVENT:
|
||||
try {
|
||||
sb.append(new EvEfiGptPartition(eventContent));
|
||||
} catch (UnsupportedEncodingException ueEx) {
|
||||
log.error(ueEx);
|
||||
sb.append(ueEx);
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_EFI_ACTION:
|
||||
case EvConstants.EV_ACTION:
|
||||
sb.append(new String(eventContent, StandardCharsets.UTF_8));
|
||||
break;
|
||||
case EvConstants.EV_EFI_PLATFORM_FIRMWARE_BLOB:
|
||||
sb.append(new UefiFirmware(eventContent));
|
||||
break;
|
||||
case EvConstants.EV_EFI_HANDOFF_TABLES:
|
||||
sb.append(new EvEfiHandoffTable(eventContent));
|
||||
break;
|
||||
case EvConstants.EV_EFI_SPDM_FIRMWARE_BLOB:
|
||||
case EvConstants.EV_EFI_SPDM_FIRMWARE_CONFIG:
|
||||
sb.append(new EvEfiSpdmDeviceSecurityEvent(eventContent));
|
||||
break;
|
||||
default:
|
||||
sb.append("Unknown Event found\n");
|
||||
}
|
||||
|
||||
return cleanTextContent(sb.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the event content and creates a human readable description of each event.
|
||||
*
|
||||
* @param eventData the byte array holding the event data.
|
||||
* @param content the byte array holding the event content.
|
||||
* @param eventPosition event position within the event log.
|
||||
* @param hashName name of the hash algorithm used by the event log
|
||||
* @return String description of the event.
|
||||
* @throws CertificateException if the event contains an event that cannot be processed.
|
||||
* @throws NoSuchAlgorithmException if an event contains an unsupported algorithm.
|
||||
* @throws java.io.IOException if the event cannot be parsed.
|
||||
*/
|
||||
public String processEvent(final byte[] eventData, final byte[] content,
|
||||
final int eventPosition, final String hashName)
|
||||
throws CertificateException, NoSuchAlgorithmException, IOException {
|
||||
int eventID = (int) eventType;
|
||||
this.eventNumber = eventPosition;
|
||||
description += "Event# " + eventPosition + ": ";
|
||||
description += "Index PCR[" + getPcrIndex() + "]\n";
|
||||
description += "Event Type: 0x" + Long.toHexString(eventType) + " " + eventString(eventID);
|
||||
description += "\n";
|
||||
if (hashName.compareToIgnoreCase("TPM_ALG_SHA1") == 0) { // Digest
|
||||
description += "digest (SHA-1): " + Hex.encodeHexString(this.digest);
|
||||
} else if (hashName.compareToIgnoreCase("TPM_ALG_SHA256") == 0) { // Digest
|
||||
description += "digest (SHA256): " + Hex.encodeHexString(this.digest);
|
||||
} else if (hashName.compareToIgnoreCase("TPM_ALG_SHA384") == 0) { // Digest
|
||||
description += "digest (SHA384): " + Hex.encodeHexString(this.digest);
|
||||
} else if (hashName.compareToIgnoreCase("TPM_ALG_SHA512") == 0) { // Digest
|
||||
description += "digest (SHA512): " + Hex.encodeHexString(this.digest);
|
||||
} else {
|
||||
description += "Unsupported Hash Algorithm encountered";
|
||||
}
|
||||
if (eventID != UefiConstants.SIZE_4) {
|
||||
description += "\n";
|
||||
}
|
||||
// Calculate both the SHA1 and SHA256 on the event since this will equal the digest
|
||||
// field of about half the log messages.
|
||||
MessageDigest md1 = MessageDigest.getInstance("SHA-1");
|
||||
md1.update(eventData);
|
||||
eventDataSha1hash = md1.digest();
|
||||
MessageDigest md2 = MessageDigest.getInstance("SHA-256");
|
||||
md2.update(eventData);
|
||||
eventDataSha256hash = md2.digest();
|
||||
|
||||
switch (eventID) {
|
||||
case EvConstants.EV_PREBOOT_CERT:
|
||||
description += " EV_PREBOOT_CERT" + "\n";
|
||||
break;
|
||||
case EvConstants.EV_POST_CODE:
|
||||
EvPostCode postCode = new EvPostCode(content);
|
||||
description += "Event Content:\n" + postCode;
|
||||
break;
|
||||
case EvConstants.EV_UNUSED, EvConstants.EV_EFI_RUNTIME_SERVICES_DRIVER,
|
||||
EvConstants.EV_EFI_HCRTM_EVENT, EvConstants.EV_EFI_EVENT_BASE,
|
||||
EvConstants.EV_EV_OMIT_BOOT_DEVICES_EVENTS, EvConstants.EV_NONHOST_INFO,
|
||||
EvConstants.EV_NONHOST_CONFIG, EvConstants.EV_NONHOST_CODE,
|
||||
EvConstants.EV_IPL_PARTITION_DATA, EvConstants.EV_PLATFORM_CONFIG_FLAGS,
|
||||
EvConstants.EV_CPU_MICROCODE, EvConstants.EV_TABLE_OF_DEVICES:
|
||||
break;
|
||||
case EvConstants.EV_NO_ACTION:
|
||||
EvNoAction noAction = new EvNoAction(content);
|
||||
description += "Event Content:\n" + noAction;
|
||||
if (noAction.isSpecIDEvent()) {
|
||||
specVersion = noAction.getSpecVersion();
|
||||
specErrataVersion = noAction.getSpecErrataVersion();
|
||||
}
|
||||
pciidsFileStatus = noAction.getPciidsFileStatus();
|
||||
break;
|
||||
case EvConstants.EV_SEPARATOR:
|
||||
if (EvPostCode.isAscii(content)) {
|
||||
String separatorEventData = new String(content, StandardCharsets.UTF_8);
|
||||
if (!this.isBlank(content)) {
|
||||
description += "Separator event content = " + separatorEventData;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EvConstants.EV_ACTION:
|
||||
description += "Event Content:\n"
|
||||
+ new String(content, StandardCharsets.UTF_8);
|
||||
break;
|
||||
case EvConstants.EV_EVENT_TAG:
|
||||
EvEventTag eventTag = new EvEventTag(content);
|
||||
description += eventTag.toString();
|
||||
break;
|
||||
case EvConstants.EV_S_CRTM_CONTENTS:
|
||||
EvSCrtmContents sCrtmContents = new EvSCrtmContents(content);
|
||||
description += "Event Content:\n " + sCrtmContents;
|
||||
break;
|
||||
case EvConstants.EV_S_CRTM_VERSION:
|
||||
EvSCrtmVersion sCrtmVersion = new EvSCrtmVersion(content);
|
||||
description += "Event Content:\n" + sCrtmVersion;
|
||||
break;
|
||||
case EvConstants.EV_COMPACT_HASH:
|
||||
EvCompactHash compactHash = new EvCompactHash(content);
|
||||
description += "Event Content:\n" + compactHash;
|
||||
break;
|
||||
case EvConstants.EV_IPL:
|
||||
EvIPL ipl = new EvIPL(content);
|
||||
description += "Event Content:\n" + ipl;
|
||||
break;
|
||||
case EvConstants.EV_EFI_VARIABLE_DRIVER_CONFIG:
|
||||
case EvConstants.EV_EFI_VARIABLE_BOOT:
|
||||
case EvConstants.EV_EFI_VARIABLE_AUTHORITY:
|
||||
case EvConstants.EV_EFI_SPDM_DEVICE_POLICY:
|
||||
case EvConstants.EV_EFI_SPDM_DEVICE_AUTHORITY:
|
||||
UefiVariable efiVar = new UefiVariable(content);
|
||||
description += "Event Content:\n" + efiVar;
|
||||
vendorTableFileStatus = efiVar.getVendorTableFileStatus();
|
||||
break;
|
||||
case EvConstants.EV_EFI_BOOT_SERVICES_APPLICATION:
|
||||
case EvConstants.EV_EFI_BOOT_SERVICES_DRIVER:
|
||||
EvEfiBootServicesApp bootServices = new EvEfiBootServicesApp(content);
|
||||
description += "Event Content:\n" + bootServices;
|
||||
break;
|
||||
case EvConstants.EV_EFI_GPT_EVENT:
|
||||
description += "Event Content:\n" + new EvEfiGptPartition(content);
|
||||
break;
|
||||
case EvConstants.EV_EFI_ACTION:
|
||||
description += new String(content, StandardCharsets.UTF_8);
|
||||
break;
|
||||
case EvConstants.EV_EFI_PLATFORM_FIRMWARE_BLOB:
|
||||
description += "Event Content:\n"
|
||||
+ new UefiFirmware(content);
|
||||
break;
|
||||
case EvConstants.EV_EFI_HANDOFF_TABLES:
|
||||
EvEfiHandoffTable efiTable = new EvEfiHandoffTable(content);
|
||||
description += "Event Content:\n" + efiTable;
|
||||
break;
|
||||
case EvConstants.EV_EFI_SPDM_FIRMWARE_BLOB:
|
||||
case EvConstants.EV_EFI_SPDM_FIRMWARE_CONFIG:
|
||||
EvEfiSpdmDeviceSecurityEvent efiSpdmDse = new EvEfiSpdmDeviceSecurityEvent(content);
|
||||
description += "Event Content:\n" + efiSpdmDse;
|
||||
pciidsFileStatus = efiSpdmDse.getPciidsFileStatus();
|
||||
break;
|
||||
default:
|
||||
description += " Unknown Event found" + "\n";
|
||||
}
|
||||
return description;
|
||||
}
|
||||
|
||||
/**
|
||||
* Human readable output of a check of input against the current event hash.
|
||||
*
|
||||
@ -656,6 +644,7 @@ public class TpmPcrEvent {
|
||||
|
||||
/**
|
||||
* This method takes in an event and compares the hashes to verify that they match.
|
||||
*
|
||||
* @param tpmPcrEvent an event to match.
|
||||
* @return true if the event # matches and the hash is correct.
|
||||
*/
|
||||
@ -720,11 +709,12 @@ public class TpmPcrEvent {
|
||||
sb.append("Event content (Hex) (" + evContent.length + " bytes): "
|
||||
+ Hex.encodeHexString(evContent));
|
||||
}
|
||||
return sb.toString() + "\n";
|
||||
return sb + "\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove bad visual value text.
|
||||
*
|
||||
* @param text content to operate over.
|
||||
* @return cleared string
|
||||
*/
|
||||
|
@ -33,8 +33,8 @@ public class TpmPcrEvent1 extends TpmPcrEvent {
|
||||
*
|
||||
* @param is ByteArrayInputStream holding the TCG Log event.
|
||||
* @param eventNumber event position within the event log.
|
||||
* @throws java.io.IOException if an error occurs in parsing the event.
|
||||
* @throws java.security.NoSuchAlgorithmException if an undefined algorithm is encountered.
|
||||
* @throws java.io.IOException if an error occurs in parsing the event.
|
||||
* @throws java.security.NoSuchAlgorithmException if an undefined algorithm is encountered.
|
||||
* @throws java.security.cert.CertificateException If a certificate within an event can't be processed.
|
||||
*/
|
||||
public TpmPcrEvent1(final ByteArrayInputStream is, final int eventNumber)
|
||||
|
@ -61,15 +61,15 @@ public class TpmPcrEvent2 extends TpmPcrEvent {
|
||||
/**
|
||||
* list of digests.
|
||||
*/
|
||||
private ArrayList<TcgTpmtHa> hashList = new ArrayList<>();
|
||||
private final ArrayList<TcgTpmtHa> hashList = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param is ByteArrayInputStream holding the TCG Log event
|
||||
* @param eventNumber event position within the event log.
|
||||
* @throws java.io.IOException if an error occurs in parsing the event
|
||||
* @throws java.security.NoSuchAlgorithmException if an undefined algorithm is encountered.
|
||||
* @throws java.io.IOException if an error occurs in parsing the event
|
||||
* @throws java.security.NoSuchAlgorithmException if an undefined algorithm is encountered.
|
||||
* @throws java.security.cert.CertificateException If a certificate within an event can't be processed.
|
||||
*/
|
||||
public TpmPcrEvent2(final ByteArrayInputStream is, final int eventNumber)
|
||||
|
@ -17,7 +17,7 @@ import lombok.Setter;
|
||||
* . which implies the data is a DEVICE_SECURITY_EVENT_DATA or ..DATA2, respectively.
|
||||
* Field 2:
|
||||
* . The Version field also indicates whether the Device Security Event is ..DATA or ..DATA2.
|
||||
*
|
||||
* <p>
|
||||
* DEVICE SECURITY EVENT structures defined by PFP v1.06 Rev 52:
|
||||
* <p>
|
||||
* typedef struct tdDEVICE_SECURITY_EVENT_DATA {
|
||||
@ -39,18 +39,17 @@ import lombok.Setter;
|
||||
* }
|
||||
* <p>
|
||||
*/
|
||||
@Getter
|
||||
public abstract class DeviceSecurityEvent {
|
||||
|
||||
/**
|
||||
* DeviceSecurityEventDataContext Object.
|
||||
*/
|
||||
@Getter
|
||||
private DeviceSecurityEventDataPciContext dsedPciContext = null;
|
||||
|
||||
/**
|
||||
* Device type.
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
private int deviceType = -1;
|
||||
|
||||
@ -58,7 +57,6 @@ public abstract class DeviceSecurityEvent {
|
||||
* Human-readable description of the data within the
|
||||
* DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT. DEVICE can be either PCI or USB.
|
||||
*/
|
||||
@Getter
|
||||
private String deviceContextInfo = "";
|
||||
|
||||
/**
|
||||
@ -70,12 +68,10 @@ public abstract class DeviceSecurityEvent {
|
||||
* Status will only change IF this is an event that uses this file,
|
||||
* and if that event causes a different status.
|
||||
*/
|
||||
@Getter
|
||||
private String pciidsFileStatus = UefiConstants.FILESTATUS_FROM_FILESYSTEM;
|
||||
|
||||
/**
|
||||
* DeviceSecurityEventData Default Constructor.
|
||||
*
|
||||
*/
|
||||
public DeviceSecurityEvent() {
|
||||
|
||||
@ -85,7 +81,6 @@ public abstract class DeviceSecurityEvent {
|
||||
* Parse the Device Context structure, can be PCI or USB based on device type field.
|
||||
*
|
||||
* @param dsedDeviceContextBytes byte array holding the DeviceSecurityEventData.
|
||||
*
|
||||
*/
|
||||
public void instantiateDeviceContext(final byte[] dsedDeviceContextBytes) {
|
||||
|
||||
|
@ -15,19 +15,9 @@ import lombok.Getter;
|
||||
* } DEVICE_SECURITY_EVENT_DATA_DEVICE_CONTEXT;
|
||||
* <p>
|
||||
*/
|
||||
@Getter
|
||||
public abstract class DeviceSecurityEventDataDeviceContext {
|
||||
|
||||
/**
|
||||
* PCI Version.
|
||||
*/
|
||||
@Getter
|
||||
private int version = 0;
|
||||
/**
|
||||
* PCI Length.
|
||||
*/
|
||||
@Getter
|
||||
private int length = 0;
|
||||
|
||||
/**
|
||||
* Device Security Event Data Device Type = no device type.
|
||||
*/
|
||||
@ -40,6 +30,14 @@ public abstract class DeviceSecurityEventDataDeviceContext {
|
||||
* Device Security Event Data Device Type = DEVICE_TYPE_USB.
|
||||
*/
|
||||
public static final int DEVICE_TYPE_USB = 2;
|
||||
/**
|
||||
* PCI Version.
|
||||
*/
|
||||
private int version = 0;
|
||||
/**
|
||||
* PCI Length.
|
||||
*/
|
||||
private int length = 0;
|
||||
|
||||
/**
|
||||
* DeviceSecurityEventDataDeviceContext Constructor.
|
||||
|
@ -24,7 +24,6 @@ public abstract class DeviceSecurityEventDataSubHeader {
|
||||
|
||||
/**
|
||||
* DeviceSecurityEventDataSubHeader Default Constructor.
|
||||
*
|
||||
*/
|
||||
public DeviceSecurityEventDataSubHeader() {
|
||||
}
|
||||
@ -37,13 +36,10 @@ public abstract class DeviceSecurityEventDataSubHeader {
|
||||
* @return name of the device type
|
||||
*/
|
||||
public static String subheaderTypeToString(final int subheaderTypeInt) {
|
||||
switch (subheaderTypeInt) {
|
||||
case SUBHEADERTYPE_MEAS_BLOCK:
|
||||
return "SPDM Measurement Block";
|
||||
case SUBHEADERTYPE_CERT_CHAIN:
|
||||
return "SPDM Cert Chain";
|
||||
default:
|
||||
return "Unknown or invalid Subheader Type of value " + subheaderTypeInt;
|
||||
}
|
||||
return switch (subheaderTypeInt) {
|
||||
case SUBHEADERTYPE_MEAS_BLOCK -> "SPDM Measurement Block";
|
||||
case SUBHEADERTYPE_CERT_CHAIN -> "SPDM Cert Chain";
|
||||
default -> "Unknown or invalid Subheader Type of value " + subheaderTypeInt;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -175,6 +175,7 @@ public final class EvConstants {
|
||||
* EFI SPDM Device Authority Event ID.
|
||||
*/
|
||||
public static final int EV_EFI_SPDM_DEVICE_AUTHORITY = 0x800000E4;
|
||||
|
||||
/**
|
||||
* Default private constructor so checkstyles doesn't complain.
|
||||
*/
|
||||
|
@ -50,25 +50,25 @@ import java.util.List;
|
||||
*/
|
||||
public class EvEfiGptPartition {
|
||||
/**
|
||||
* Header Size.
|
||||
* Partition Length.
|
||||
*/
|
||||
private int headerSize = 0;
|
||||
private static final int PARTITION_ENTRY_LENGTH = UefiConstants.SIZE_128;
|
||||
/**
|
||||
* Header bytes.
|
||||
*/
|
||||
private byte[] header = new byte[UefiConstants.SIZE_8];
|
||||
private final byte[] header = new byte[UefiConstants.SIZE_8];
|
||||
/**
|
||||
* Number of partitions in this event.
|
||||
*/
|
||||
private int numberOfPartitions;
|
||||
/**
|
||||
* Partition Length.
|
||||
*/
|
||||
private int partitonEntryLength = UefiConstants.SIZE_128;
|
||||
private final int numberOfPartitions;
|
||||
/**
|
||||
* List of Partitions.
|
||||
*/
|
||||
private List<UefiPartition> partitionList;
|
||||
private final List<UefiPartition> partitionList;
|
||||
/**
|
||||
* Header Size.
|
||||
*/
|
||||
private int headerSize = 0;
|
||||
|
||||
/**
|
||||
* GPT Partition Event Type constructor.
|
||||
@ -89,7 +89,7 @@ public class EvEfiGptPartition {
|
||||
byte[] partitions = new byte[UefiConstants.SIZE_8];
|
||||
System.arraycopy(eventDataBytes, headerSize, partitions, 0, UefiConstants.SIZE_8);
|
||||
numberOfPartitions = getIntFromBytes(partitions);
|
||||
int partitionLength = numberOfPartitions * partitonEntryLength;
|
||||
int partitionLength = numberOfPartitions * PARTITION_ENTRY_LENGTH;
|
||||
byte[] partitionEntries = new byte[partitionLength];
|
||||
System.arraycopy(eventDataBytes, headerSize + UefiConstants.SIZE_8, partitionEntries,
|
||||
0, partitionLength);
|
||||
@ -100,7 +100,7 @@ public class EvEfiGptPartition {
|
||||
/**
|
||||
* Processes an individual GPT partition entry.
|
||||
*
|
||||
* @param partitions byte array holding partition data.
|
||||
* @param partitions byte array holding partition data.
|
||||
* @param numOfPartitions number of partitions included in the data.
|
||||
* @throws java.io.UnsupportedEncodingException if partition data fails to parse.
|
||||
*/
|
||||
@ -108,16 +108,16 @@ public class EvEfiGptPartition {
|
||||
throws UnsupportedEncodingException {
|
||||
byte[] partitionData = new byte[UefiConstants.SIZE_128];
|
||||
for (int i = 0; i < numOfPartitions; i++) {
|
||||
System.arraycopy(partitions, i * partitonEntryLength, partitionData, 0,
|
||||
partitonEntryLength);
|
||||
System.arraycopy(partitions, i * PARTITION_ENTRY_LENGTH, partitionData, 0,
|
||||
PARTITION_ENTRY_LENGTH);
|
||||
partitionList.add(new UefiPartition(partitionData));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides a human readable string describing the GPT Partition information.
|
||||
* Provides a human-readable string describing the GPT Partition information.
|
||||
*
|
||||
* @return a human readable string holding the partition information.
|
||||
* @return a human-readable string holding the partition information.
|
||||
*/
|
||||
public String toString() {
|
||||
String headerStr = HexUtils.byteArrayToHexString(header);
|
||||
|
@ -31,20 +31,19 @@ import java.util.ArrayList;
|
||||
* standard that define the particular table.
|
||||
*/
|
||||
public class EvEfiHandoffTable {
|
||||
/**
|
||||
* List of Vendor GUIDs.
|
||||
*/
|
||||
private final ArrayList<UefiGuid> vendorGuids = new ArrayList<>();
|
||||
/**
|
||||
* List of Vendors.
|
||||
*/
|
||||
private final ArrayList<byte[]> vendorTables = new ArrayList<>();
|
||||
/**
|
||||
* Number of Tables.
|
||||
*/
|
||||
@Getter
|
||||
private int numberOfTables = 0;
|
||||
/**
|
||||
* List of Vendor GUIDs.
|
||||
*/
|
||||
private ArrayList<UefiGuid> vendorGuids = new ArrayList<>();
|
||||
/**
|
||||
* List of Vendors.
|
||||
*/
|
||||
private ArrayList<byte[]> vendorTables = new ArrayList<>();
|
||||
|
||||
private Path vendorPathString;
|
||||
|
||||
/**
|
||||
@ -71,7 +70,7 @@ public class EvEfiHandoffTable {
|
||||
/**
|
||||
* EvEFIHandoffTable constructor.
|
||||
*
|
||||
* @param tpmEventData byte array holding the Handoff table data.
|
||||
* @param tpmEventData byte array holding the Handoff table data.
|
||||
* @param vendorPathString the string for the vendor file
|
||||
*/
|
||||
public EvEfiHandoffTable(final byte[] tpmEventData, final Path vendorPathString) {
|
||||
@ -122,7 +121,7 @@ public class EvEfiHandoffTable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a human readable description of the hand off tables.
|
||||
* Returns a human-readable description of the hand off tables.
|
||||
*
|
||||
* @return a human readable description.
|
||||
*/
|
||||
|
@ -4,7 +4,7 @@ import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* Processes event type EV_IPL which is deprecated in the current spec,
|
||||
* but defined in older version of the specification(1.0.0) as contain
|
||||
* but defined in older version of the specification(1.0.0) as contain
|
||||
* "informative information about the IPL code" (ascii strings).
|
||||
*/
|
||||
public class EvIPL {
|
||||
@ -12,32 +12,35 @@ public class EvIPL {
|
||||
private String description = "";
|
||||
|
||||
/**
|
||||
*IPL Event Constructor.
|
||||
* IPL Event Constructor.
|
||||
*
|
||||
* @param event byte array holding the IPL Event data.
|
||||
*/
|
||||
public EvIPL(final byte[] event) {
|
||||
event(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes IPL event.
|
||||
* @param event byte array holding the IPL Event data.
|
||||
* @return a description of the IPl event.
|
||||
*/
|
||||
/**
|
||||
* Processes IPL event.
|
||||
*
|
||||
* @param event byte array holding the IPL Event data.
|
||||
* @return a description of the IPl event.
|
||||
*/
|
||||
public String event(final byte[] event) {
|
||||
if (event == null) {
|
||||
description = "Invalid IPL event data";
|
||||
} else {
|
||||
description = " \"" + new String(event, StandardCharsets.UTF_8) + "\"";
|
||||
} else {
|
||||
description = " \"" + new String(event, StandardCharsets.UTF_8) + "\"";
|
||||
}
|
||||
return description;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a human readable description of the IPL Event.
|
||||
* Returns a human-readable description of the IPL Event.
|
||||
*
|
||||
* @return human readable description.
|
||||
*/
|
||||
public String toString() {
|
||||
return description;
|
||||
return description;
|
||||
}
|
||||
}
|
||||
|
@ -7,30 +7,39 @@ import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* Class for processing EV_POST_CODE event types
|
||||
*
|
||||
* <p>
|
||||
* typedef struct tdUEFI_PLATFORM_FIRMWARE_BLOB {
|
||||
* UEFI_PHYSICAL_ADDRESS BlobBase; // Same as UINT64 for most systems
|
||||
* UINT64 BlobLength;
|
||||
* } UEFI_PLATFORM_FIRMWARE_BLOB;
|
||||
*
|
||||
* UEFI_PHYSICAL_ADDRESS BlobBase; // Same as UINT64 for most systems
|
||||
* UINT64 BlobLength;
|
||||
* } UEFI_PLATFORM_FIRMWARE_BLOB;
|
||||
* <p>
|
||||
* However Table 9 of the PC Client Platform firmware profile states that even content is a string
|
||||
* For POST code, the event data SHOULD be POST CODE.
|
||||
* For embedded SMM code, the event data SHOULD be SMM CODE.
|
||||
* For ACPI flash data, the event data SHOULD be ACPI DATA.
|
||||
* For BIS code, the event data SHOULD be BIS CODE.
|
||||
* For embedded option ROMs, the event data SHOULD be Embedded UEFI Driver.
|
||||
* For POST code, the event data SHOULD be POST CODE.
|
||||
* For embedded SMM code, the event data SHOULD be SMM CODE.
|
||||
* For ACPI flash data, the event data SHOULD be ACPI DATA.
|
||||
* For BIS code, the event data SHOULD be BIS CODE.
|
||||
* For embedded option ROMs, the event data SHOULD be Embedded UEFI Driver.
|
||||
*/
|
||||
public class EvPostCode {
|
||||
/** Event Description. */
|
||||
/**
|
||||
* Event Description.
|
||||
*/
|
||||
private String codeInfo = "";
|
||||
/** String type flag. */
|
||||
|
||||
/**
|
||||
* String type flag.
|
||||
*/
|
||||
private boolean bisString = false;
|
||||
/** Firmware object. */
|
||||
|
||||
/**
|
||||
* Firmware object.
|
||||
*/
|
||||
@Getter
|
||||
private UefiFirmware firmwareBlob = null;
|
||||
|
||||
/**
|
||||
* EcPostCode constructor.
|
||||
*
|
||||
* @param postCode byte array holding the post code content.
|
||||
*/
|
||||
public EvPostCode(final byte[] postCode) {
|
||||
@ -43,27 +52,9 @@ public class EvPostCode {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Flag set to true if Post Code is a string.
|
||||
* @return true if Post Code is a string.
|
||||
*/
|
||||
public boolean isString() {
|
||||
return bisString;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a human readable string of the Post Code information.
|
||||
* @return human readable string.
|
||||
*/
|
||||
public String toString() {
|
||||
if (bisString) {
|
||||
return codeInfo;
|
||||
}
|
||||
return firmwareBlob.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if the byte array is a string.
|
||||
*
|
||||
* @param postCode byte array input.
|
||||
* @return true if byte array is a string.
|
||||
*/
|
||||
@ -73,6 +64,27 @@ public class EvPostCode {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Flag set to true if Post Code is a string.
|
||||
*
|
||||
* @return true if Post Code is a string.
|
||||
*/
|
||||
public boolean isString() {
|
||||
return bisString;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a human-readable string of the Post Code information.
|
||||
*
|
||||
* @return human readable string.
|
||||
*/
|
||||
public String toString() {
|
||||
if (bisString) {
|
||||
return codeInfo;
|
||||
}
|
||||
return firmwareBlob.toString();
|
||||
}
|
||||
}
|
||||
|
@ -9,32 +9,33 @@ public class EvSCrtmContents {
|
||||
|
||||
private String description = "";
|
||||
|
||||
/**
|
||||
/**
|
||||
* Constructor that takes in the event data and waits to be called.
|
||||
*
|
||||
* @param event byte array holding the event content data.
|
||||
*/
|
||||
public EvSCrtmContents(final byte[] event) {
|
||||
scrtmContents(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if event data is null and if not it converts to a String.
|
||||
* @param event byte array holding the event data.
|
||||
* @return String contents contained within the event.
|
||||
*/
|
||||
public String scrtmContents(final byte[] event) {
|
||||
/**
|
||||
* Checks if event data is null and if not it converts to a String.
|
||||
*
|
||||
* @param event byte array holding the event data.
|
||||
*/
|
||||
public void scrtmContents(final byte[] event) {
|
||||
if (event == null) {
|
||||
description = "invalid content event data";
|
||||
} else {
|
||||
description = new String(event, StandardCharsets.UTF_8);
|
||||
}
|
||||
return description;
|
||||
}
|
||||
this.description = "invalid content event data";
|
||||
} else {
|
||||
this.description = new String(event, StandardCharsets.UTF_8);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Human readable string contained within the CRTM Contents event.
|
||||
* @return Human readable string.
|
||||
*/
|
||||
/**
|
||||
* Human-readable string contained within the CRTM Contents event.
|
||||
*
|
||||
* @return Human readable string.
|
||||
*/
|
||||
public String toString() {
|
||||
return description;
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ import java.nio.charset.StandardCharsets;
|
||||
* Class to process the NV_INDEX_DYNAMIC_EVENT_LOG_DATA per PFP.
|
||||
* Per PFP, the first 16 bytes of the structure are a String based identifier (Signature),
|
||||
* which are a NULL-terminated ASCII string "NvIndexDynamic".
|
||||
*
|
||||
* <p>
|
||||
* HEADERS defined by PFP v1.06 Rev 52.
|
||||
* Certain fields are common to both ..HEADER and ..HEADER2, and are noted below the structures.
|
||||
* <p>
|
||||
|
@ -11,17 +11,17 @@ import java.io.IOException;
|
||||
* <p>
|
||||
* Measurement block format, defined by SPDM v1.03, Sect 10.11.1, Table 53:
|
||||
* Measurement block format {
|
||||
* Index 1 byte;
|
||||
* MeasurementSpec 1 byte;
|
||||
* MeasurementSize 2 bytes;
|
||||
* Measurement <MeasurementSize> bytes;
|
||||
* Index 1 byte;
|
||||
* MeasurementSpec 1 byte;
|
||||
* MeasurementSize 2 bytes;
|
||||
* Measurement <MeasurementSize> bytes;
|
||||
* }
|
||||
* <p>
|
||||
* Index: index of the measurement block, as there can be more than one
|
||||
* MeasurementSpec: bit mask; the measurement specification that the requested Measurement follows
|
||||
* See "MeasurementSpecificationSel" in Table 21. See Tables 29, 53, 54
|
||||
* Bit 0: DMTFmeasSpec, per Table 54
|
||||
* Bit 1-7: Reserved
|
||||
* See "MeasurementSpecificationSel" in Table 21. See Tables 29, 53, 54
|
||||
* Bit 0: DMTFmeasSpec, per Table 54
|
||||
* Bit 1-7: Reserved
|
||||
* Measurement: the digest
|
||||
*/
|
||||
public class SpdmMeasurementBlock {
|
||||
@ -39,7 +39,7 @@ public class SpdmMeasurementBlock {
|
||||
/**
|
||||
* SPDM Measurement.
|
||||
*/
|
||||
private SpdmMeasurement spdmMeasurement;
|
||||
private final SpdmMeasurement spdmMeasurement;
|
||||
|
||||
/**
|
||||
* SpdmMeasurementBlock Constructor.
|
||||
@ -76,7 +76,7 @@ public class SpdmMeasurementBlock {
|
||||
String spdmMeasBlockInfo = "";
|
||||
|
||||
spdmMeasBlockInfo += " Index = " + index + "\n";
|
||||
spdmMeasBlockInfo += " MeasurementSpec = " + measurementSpec + "\n";
|
||||
spdmMeasBlockInfo += " MeasurementSpec = " + measurementSpec + "\n";
|
||||
spdmMeasBlockInfo += spdmMeasurement.toString();
|
||||
|
||||
return spdmMeasBlockInfo;
|
||||
|
@ -282,6 +282,7 @@ public final class UefiConstants {
|
||||
* file status, where file is not accessible (either not found, or no access permission).
|
||||
*/
|
||||
public static final String FILESTATUS_NOT_ACCESSIBLE = "fileNotAccessible";
|
||||
|
||||
/**
|
||||
* Default private constructor so checkstyles doesn't complain.
|
||||
*/
|
||||
|
@ -72,6 +72,22 @@ public class UefiDevicePath {
|
||||
length = HexUtils.leReverseInt(lengthBytes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts from a char array to byte array.
|
||||
* Removes the upper byte (typically set to 0) of each char.
|
||||
*
|
||||
* @param data Character array.
|
||||
* @return byte array.
|
||||
*/
|
||||
public static byte[] convertChar16tobyteArray(final byte[] data) {
|
||||
byte[] hexdata = new byte[data.length];
|
||||
int j = 0;
|
||||
for (int i = 0; i < data.length; i = i + UefiConstants.SIZE_2) {
|
||||
hexdata[j++] = data[i];
|
||||
}
|
||||
return hexdata;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the UEFI device subtype.
|
||||
*
|
||||
@ -118,8 +134,8 @@ public class UefiDevicePath {
|
||||
* Current types processed include Hardware Device Path, ACPI Device Path,
|
||||
* Messaging Device Path, and Media Device Path.
|
||||
*
|
||||
* @param path
|
||||
* @param offset
|
||||
* @param path path
|
||||
* @param offset offset
|
||||
* @return human-readable string representing the UEFI device path
|
||||
* @throws java.io.UnsupportedEncodingException
|
||||
*/
|
||||
@ -127,7 +143,7 @@ public class UefiDevicePath {
|
||||
String devInfo = " ";
|
||||
int devPath = path[offset];
|
||||
byte unknownSubType = path[offset + UefiConstants.OFFSET_1];
|
||||
switch (path[0 + offset]) {
|
||||
switch (path[offset]) {
|
||||
case UefiConstants.DEV_HW:
|
||||
type = "Hardware Device Path";
|
||||
if (devPath == UefiConstants.DEVPATH_HARWARE) {
|
||||
@ -182,8 +198,8 @@ public class UefiDevicePath {
|
||||
/**
|
||||
* processes the ACPI UEFI device subtype.
|
||||
*
|
||||
* @param path
|
||||
* @param offset
|
||||
* @param path path
|
||||
* @param offset offset
|
||||
* @return acpi device info
|
||||
*/
|
||||
private String acpiSubType(final byte[] path, final int offset) {
|
||||
@ -205,8 +221,8 @@ public class UefiDevicePath {
|
||||
/**
|
||||
* Processes the ACPI short subtype.
|
||||
*
|
||||
* @param path
|
||||
* @param offset
|
||||
* @param path path
|
||||
* @param offset offset
|
||||
* @return short acpi info.
|
||||
*/
|
||||
private String acpiShortSubType(final byte[] path, final int offset) {
|
||||
@ -226,8 +242,8 @@ public class UefiDevicePath {
|
||||
/**
|
||||
* Processes the PCI subType.
|
||||
*
|
||||
* @param path
|
||||
* @param offset
|
||||
* @param path path
|
||||
* @param offset offset
|
||||
* @return pci device info.
|
||||
*/
|
||||
private String pciSubType(final byte[] path, final int offset) {
|
||||
@ -243,8 +259,8 @@ public class UefiDevicePath {
|
||||
/**
|
||||
* processes the SATA subtype.
|
||||
*
|
||||
* @param path
|
||||
* @param offset
|
||||
* @param path path
|
||||
* @param offset offset
|
||||
* @return SATA drive info.
|
||||
*/
|
||||
private String sataSubType(final byte[] path, final int offset) {
|
||||
@ -264,8 +280,8 @@ public class UefiDevicePath {
|
||||
/**
|
||||
* Processes the hard drive subtype.
|
||||
*
|
||||
* @param path
|
||||
* @param offset
|
||||
* @param path path
|
||||
* @param offset offset
|
||||
* @return hard drive info.
|
||||
*/
|
||||
private String hardDriveSubType(final byte[] path, final int offset) {
|
||||
@ -311,8 +327,8 @@ public class UefiDevicePath {
|
||||
/**
|
||||
* Process the File path subtype.
|
||||
*
|
||||
* @param path
|
||||
* @param offset
|
||||
* @param path path
|
||||
* @param offset offset
|
||||
* @return file path info.
|
||||
*/
|
||||
private String filePathSubType(final byte[] path, final int offset) {
|
||||
@ -336,8 +352,8 @@ public class UefiDevicePath {
|
||||
* Vendor-assigned GUID that defines the data that follows.
|
||||
* Vendor-defined variable size data.
|
||||
*
|
||||
* @param path
|
||||
* @param offset
|
||||
* @param path path
|
||||
* @param offset offset
|
||||
* @return vendor device info.
|
||||
*/
|
||||
private String vendorSubType(final byte[] path, final int offset) {
|
||||
@ -351,7 +367,7 @@ public class UefiDevicePath {
|
||||
System.arraycopy(path, UefiConstants.OFFSET_4 + offset, guidData,
|
||||
0, UefiConstants.SIZE_16);
|
||||
UefiGuid guid = new UefiGuid(guidData);
|
||||
subType += guid.toString() + " ";
|
||||
subType += guid + " ";
|
||||
if (subTypeLength - UefiConstants.SIZE_16 > 0) {
|
||||
byte[] vendorData = new byte[subTypeLength - UefiConstants.SIZE_16];
|
||||
System.arraycopy(path, UefiConstants.OFFSET_20
|
||||
@ -368,8 +384,8 @@ public class UefiDevicePath {
|
||||
* Returns USB device info.
|
||||
* UEFI Specification, Version 2.8.
|
||||
*
|
||||
* @param path
|
||||
* @param offset
|
||||
* @param path path
|
||||
* @param offset offset
|
||||
* @return USB device info.
|
||||
*/
|
||||
private String usbSubType(final byte[] path, final int offset) {
|
||||
@ -395,8 +411,8 @@ public class UefiDevicePath {
|
||||
* See Links to UEFI Related Documents
|
||||
* (http://uefi.org/uefi under the headings NVM Express Specification.
|
||||
*
|
||||
* @param path
|
||||
* @param offset
|
||||
* @param path path
|
||||
* @param offset offset
|
||||
* @return NVM device info.
|
||||
*/
|
||||
private String nvmSubType(final byte[] path, final int offset) {
|
||||
@ -420,8 +436,8 @@ public class UefiDevicePath {
|
||||
* Only processes the Device type.
|
||||
* Status bootHandler pointer, and description String pointer are ignored.
|
||||
*
|
||||
* @param path byte array holding the device path.
|
||||
* @param offset
|
||||
* @param path byte array holding the device path.
|
||||
* @param offset offset
|
||||
* @return String that represents the UEFI defined BIOS Device Type.
|
||||
*/
|
||||
private String biosDevicePath(final byte[] path, final int offset) {
|
||||
@ -468,8 +484,8 @@ public class UefiDevicePath {
|
||||
* PIWG Firmware File Section 10.3.5.6:
|
||||
* Contents are defined in the UEFI PI Specification.
|
||||
*
|
||||
* @param path
|
||||
* @param offset
|
||||
* @param path path
|
||||
* @param offset offset
|
||||
* @return String that represents the PIWG Firmware Volume Path
|
||||
*/
|
||||
private String piwgFirmVolFile(final byte[] path, final int offset) {
|
||||
@ -489,8 +505,8 @@ public class UefiDevicePath {
|
||||
* PIWG Firmware Volume Section 10.3.5.7:
|
||||
* Contents are defined in the UEFI PI Specification.
|
||||
*
|
||||
* @param path
|
||||
* @param offset
|
||||
* @param path path
|
||||
* @param offset offset
|
||||
* @return String that represents the PIWG Firmware Volume Path
|
||||
*/
|
||||
private String piwgFirmVolPath(final byte[] path, final int offset) {
|
||||
@ -512,20 +528,4 @@ public class UefiDevicePath {
|
||||
public String toString() {
|
||||
return devPathInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts from a char array to byte array.
|
||||
* Removes the upper byte (typically set to 0) of each char.
|
||||
*
|
||||
* @param data Character array.
|
||||
* @return byte array.
|
||||
*/
|
||||
public static byte[] convertChar16tobyteArray(final byte[] data) {
|
||||
byte[] hexdata = new byte[data.length];
|
||||
int j = 0;
|
||||
for (int i = 0; i < data.length; i = i + UefiConstants.SIZE_2) {
|
||||
hexdata[j++] = data[i];
|
||||
}
|
||||
return hexdata;
|
||||
}
|
||||
}
|
||||
|
@ -45,11 +45,11 @@ public class UefiGuid {
|
||||
/**
|
||||
* guid byte array.
|
||||
*/
|
||||
private byte[] guid;
|
||||
private final byte[] guid;
|
||||
/**
|
||||
* UUID object.
|
||||
*/
|
||||
private UUID uuid;
|
||||
private final UUID uuid;
|
||||
|
||||
/**
|
||||
* UefiGUID constructor.
|
||||
@ -63,7 +63,7 @@ public class UefiGuid {
|
||||
/**
|
||||
* UefiGUID constructor.
|
||||
*
|
||||
* @param guidBytes byte array holding a valid guid.
|
||||
* @param guidBytes byte array holding a valid guid.
|
||||
* @param vendorPathString string path for vendor
|
||||
*/
|
||||
public UefiGuid(final byte[] guidBytes, final Path vendorPathString) {
|
||||
@ -88,6 +88,7 @@ public class UefiGuid {
|
||||
* 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.
|
||||
*
|
||||
* @param guid byte array holding the guid data.
|
||||
* @return UUID processed from the passed in guid
|
||||
*/
|
||||
@ -120,6 +121,22 @@ public class UefiGuid {
|
||||
return UefiConstants.SIZE_16;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 whether the handle to the file needed to look up the UUID is valid. If empty,
|
||||
* this likely means the file was not accessible to due to existence or permissions.
|
||||
@ -179,22 +196,6 @@ public class UefiGuid {
|
||||
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").
|
||||
*
|
||||
|
@ -11,14 +11,14 @@ import java.security.cert.CertificateException;
|
||||
|
||||
/**
|
||||
* Class for processing either
|
||||
* 1) the contents of a Secure Boot PK, KEK, DB or DBX contents,
|
||||
* used for EFIVariables associated with Secure Boot,
|
||||
* as defined by Section 32.4.1 Signature Database from the UEFI 2.8 specification
|
||||
* 2) the contents of an SPDM devdb,
|
||||
* used for SPDM Device Policy or Device Authority, whose data is an EFIVariable
|
||||
* EFIVariable data for SPDM Device Policy: UefiSignatureList
|
||||
* EFIVariable data for SPDM Device: UefiSignatureData only
|
||||
* as defined by PFP v1.06 Rev52, Section 10.4
|
||||
* 1) the contents of a Secure Boot PK, KEK, DB or DBX contents,
|
||||
* used for EFIVariables associated with Secure Boot,
|
||||
* as defined by Section 32.4.1 Signature Database from the UEFI 2.8 specification
|
||||
* 2) the contents of an SPDM devdb,
|
||||
* used for SPDM Device Policy or Device Authority, whose data is an EFIVariable
|
||||
* EFIVariable data for SPDM Device Policy: UefiSignatureList
|
||||
* EFIVariable data for SPDM Device: UefiSignatureData only
|
||||
* as defined by PFP v1.06 Rev52, Section 10.4
|
||||
* <p>
|
||||
* typedef struct _EFI_SIGNATURE_DATA {
|
||||
* EFI_GUID SignatureOwner;
|
||||
@ -33,7 +33,7 @@ public class UefiSignatureData {
|
||||
/**
|
||||
* UEFI Certificate GUID.
|
||||
*/
|
||||
private byte[] guid = new byte[UefiConstants.SIZE_16];
|
||||
private final byte[] guid = new byte[UefiConstants.SIZE_16];
|
||||
/**
|
||||
* UEFI Signature data.
|
||||
*/
|
||||
@ -61,7 +61,7 @@ public class UefiSignatureData {
|
||||
/**
|
||||
* UEFI Certificate SHA256 hash.
|
||||
*/
|
||||
private byte[] binaryHash = new byte[UefiConstants.SIZE_32];
|
||||
private final byte[] binaryHash = new byte[UefiConstants.SIZE_32];
|
||||
/**
|
||||
* UEFI Signature data status.
|
||||
*/
|
||||
|
@ -13,17 +13,17 @@ import static hirs.utils.tpm.eventlog.uefi.UefiConstants.FILESTATUS_NOT_ACCESSIB
|
||||
|
||||
/**
|
||||
* Class for processing either
|
||||
* 1) the contents of a Secure Boot PK, KEK, DB or DBX contents,
|
||||
* used for EFIVariables associated with Secure Boot,
|
||||
* as defined by Section 32.4.1 Signature Database from the UEFI 2.8 specification
|
||||
* 2) the contents of an SPDM devdb,
|
||||
* used for SPDM Device Policy, whose data is an EFIVariable
|
||||
* as defined by PFP v1.06 Rev52, Section 10.4
|
||||
* 1) the contents of a Secure Boot PK, KEK, DB or DBX contents,
|
||||
* used for EFIVariables associated with Secure Boot,
|
||||
* as defined by Section 32.4.1 Signature Database from the UEFI 2.8 specification
|
||||
* 2) the contents of an SPDM devdb,
|
||||
* used for SPDM Device Policy, whose data is an EFIVariable
|
||||
* as defined by PFP v1.06 Rev52, Section 10.4
|
||||
* <p>
|
||||
* An EFI Signature List is actually a list of Certificates used to verify a Signature.
|
||||
* This is mainly found in PCR[7] UEFI variables for either the
|
||||
* Secure Boot PK, KEK, Db and DBx variables
|
||||
* or the SPDM devdb variable (under EV_EFI_SPDM_DEVICE_POLICY).
|
||||
* Secure Boot PK, KEK, Db and DBx variables
|
||||
* or the SPDM devdb variable (under EV_EFI_SPDM_DEVICE_POLICY).
|
||||
* <p>
|
||||
* typedef struct _EFI_SIGNATURE_LIST {
|
||||
* EFI_GUID SignatureType;
|
||||
@ -33,20 +33,20 @@ import static hirs.utils.tpm.eventlog.uefi.UefiConstants.FILESTATUS_NOT_ACCESSIB
|
||||
* // UINT8 SignatureHeader[SignatureHeaderSize];
|
||||
* // EFI_SIGNATURE_DATA Signatures[...][SignatureSize];
|
||||
* } EFI_SIGNATURE_LIST;
|
||||
*
|
||||
* <p>
|
||||
* SignatureListHeader (contents common to any Signature Type)
|
||||
* - SignatureType
|
||||
* - SignatureListSize
|
||||
* - SignatureHeaderSize
|
||||
* - SignatureSize
|
||||
* - SignatureType
|
||||
* - SignatureListSize
|
||||
* - SignatureHeaderSize
|
||||
* - SignatureSize
|
||||
* SignatureHeader (contents depend on the SignatureType)
|
||||
* - The format of this header is specified by the SignatureType (SHA256, X509).
|
||||
* - The format of this header is specified by the SignatureType (SHA256, X509).
|
||||
* Signatures[][] is an array of signatures.
|
||||
* - Each signature is SignatureSize bytes in length.
|
||||
* - The format of the signature is defined by SignatureType (SHA256, X509).
|
||||
*
|
||||
* / |-------------------------| ------- SignatureType
|
||||
* / | Signature List Header | SignatureListSize
|
||||
* - Each signature is SignatureSize bytes in length.
|
||||
* - The format of the signature is defined by SignatureType (SHA256, X509).
|
||||
* <p>
|
||||
* / |-------------------------| ------- SignatureType
|
||||
* / | Signature List Header | SignatureListSize
|
||||
* |---------------------| / |-------------------------|\ SignatureHeaderSize
|
||||
* | Signature List #0 | / | Signature Header | \ _____ SignatureSize
|
||||
* | | / |-------------------------|
|
||||
@ -57,13 +57,16 @@ import static hirs.utils.tpm.eventlog.uefi.UefiConstants.FILESTATUS_NOT_ACCESSIB
|
||||
* | | | Signature #2 | (1 cert or hash)
|
||||
* | | |-------------------------|
|
||||
* |---------------------| | ... |
|
||||
* \ | |
|
||||
* \ |-------------------------|
|
||||
* \ | Signature #n |
|
||||
* \ |-------------------------|
|
||||
*
|
||||
* \ | |
|
||||
* \ |-------------------------|
|
||||
* \ | Signature #n |
|
||||
* \ |-------------------------|
|
||||
*/
|
||||
public class UefiSignatureList {
|
||||
/**
|
||||
* Array List of Signature found in the list.
|
||||
*/
|
||||
private final ArrayList<UefiSignatureData> sigList = new ArrayList<>();
|
||||
/**
|
||||
* Size of the signature list.
|
||||
*/
|
||||
@ -94,18 +97,16 @@ public class UefiSignatureList {
|
||||
* Current status of Signature List data.
|
||||
*/
|
||||
private String dataInvalidStatus = "Signature List data validity is undetermined yet";
|
||||
/**
|
||||
* Array List of Signature found in the list.
|
||||
*/
|
||||
private ArrayList<UefiSignatureData> sigList = new ArrayList<UefiSignatureData>();
|
||||
/**
|
||||
* Input Stream for processing.
|
||||
*/
|
||||
private ByteArrayInputStream efiSigDataIS = null;
|
||||
|
||||
/**
|
||||
* Type of signature.
|
||||
*/
|
||||
private UefiGuid signatureType = null;
|
||||
|
||||
/**
|
||||
* Track status of vendor-table.json.
|
||||
*/
|
||||
@ -213,16 +214,11 @@ public class UefiSignatureList {
|
||||
* @return true if the GUID is a valid GUID for Signature List Type, false if not.
|
||||
*/
|
||||
public boolean isValidSigListGUID(final UefiGuid guid) {
|
||||
switch (guid.getVendorTableReference()) {
|
||||
case "EFI_CERT_SHA256_GUID":
|
||||
case "EFI_CERT_X509_SHA256":
|
||||
case "EFI_CERT_X509_SHA384":
|
||||
case "EFI_CERT_X509_SHA512":
|
||||
case "EFI_CERT_X509_GUID":
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return switch (guid.getVendorTableReference()) {
|
||||
case "EFI_CERT_SHA256_GUID", "EFI_CERT_X509_SHA256", "EFI_CERT_X509_SHA384",
|
||||
"EFI_CERT_X509_SHA512", "EFI_CERT_X509_GUID" -> true;
|
||||
default -> false;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -35,7 +35,7 @@ public class UefiVariable {
|
||||
/**
|
||||
* List of Signature lists.
|
||||
*/
|
||||
private List<UefiSignatureList> certSuperList;
|
||||
private final List<UefiSignatureList> certSuperList;
|
||||
/**
|
||||
* Name of the UEFI variable.
|
||||
*/
|
||||
@ -87,11 +87,11 @@ public class UefiVariable {
|
||||
*
|
||||
* @param variableData byte array holding the UEFI Variable.
|
||||
* @throws java.security.cert.CertificateException If there a problem
|
||||
* parsing the X509 certificate.
|
||||
* parsing the X509 certificate.
|
||||
* @throws java.security.NoSuchAlgorithmException if there's a problem
|
||||
* hashing the certificate.
|
||||
* hashing the certificate.
|
||||
* @throws java.io.IOException If there's a problem
|
||||
* parsing the signature data.
|
||||
* parsing the signature data.
|
||||
*/
|
||||
public UefiVariable(final byte[] variableData)
|
||||
throws CertificateException, NoSuchAlgorithmException, IOException {
|
||||
@ -136,10 +136,10 @@ public class UefiVariable {
|
||||
case "devdb":
|
||||
processSigList(uefiVariableData);
|
||||
break; // Update when test patterns exist
|
||||
// PFP v1.06 Rev 52, Sec 3.3.4.8
|
||||
// EV_EFI_SPDM_DEVICE_POLICY: EFI_SIGNATURE_LIST
|
||||
// EV_EFI_SPDM_DEVICE_AUTHORITY: EFI_SIGNATURE_DATA
|
||||
// for now, differentiate them by using devdc for ..DEVICE_AUTHORITY
|
||||
// PFP v1.06 Rev 52, Sec 3.3.4.8
|
||||
// EV_EFI_SPDM_DEVICE_POLICY: EFI_SIGNATURE_LIST
|
||||
// EV_EFI_SPDM_DEVICE_AUTHORITY: EFI_SIGNATURE_DATA
|
||||
// for now, differentiate them by using devdc for ..DEVICE_AUTHORITY
|
||||
case "devdc":
|
||||
processSigDataX509(uefiVariableData);
|
||||
break;
|
||||
@ -161,11 +161,11 @@ public class UefiVariable {
|
||||
*
|
||||
* @param data the bye array holding one or more Signature Lists.
|
||||
* @throws java.security.cert.CertificateException If there's a problem
|
||||
* parsing the X509 certificate.
|
||||
* parsing the X509 certificate.
|
||||
* @throws java.security.NoSuchAlgorithmException if there's a problem
|
||||
* hashing the certificate.
|
||||
* hashing the certificate.
|
||||
* @throws java.io.IOException If there's a problem
|
||||
* parsing the signature data.
|
||||
* parsing the signature data.
|
||||
*/
|
||||
private void processSigList(final byte[] data)
|
||||
throws CertificateException, NoSuchAlgorithmException, IOException {
|
||||
@ -186,7 +186,7 @@ public class UefiVariable {
|
||||
// (ie. if the new file status is not-accessible or from-code, then want to update)
|
||||
if ((vendorTableFileStatus != FILESTATUS_NOT_ACCESSIBLE)
|
||||
&& (list.getVendorTableFileStatus() != FILESTATUS_FROM_FILESYSTEM)) {
|
||||
vendorTableFileStatus = list.getVendorTableFileStatus();
|
||||
vendorTableFileStatus = list.getVendorTableFileStatus();
|
||||
}
|
||||
|
||||
// efiVariableSigListContents += list.toString();
|
||||
@ -275,7 +275,7 @@ public class UefiVariable {
|
||||
case "dbx":
|
||||
case "devdb": // SPDM_DEVICE_POLICY and SPDM_DEVICE_AUTHORITY
|
||||
case "devdc": // for now use devdb and devdc respectively
|
||||
// (update when more test patterns exist)
|
||||
// (update when more test patterns exist)
|
||||
break;
|
||||
case "Boot00":
|
||||
efiVariable.append(bootv.toString());
|
||||
@ -289,7 +289,7 @@ public class UefiVariable {
|
||||
default:
|
||||
if (!tmpName.isEmpty()) {
|
||||
efiVariable.append(String.format(" Data not provided for "
|
||||
+ "UEFI variable named %s ", tmpName));
|
||||
+ "UEFI variable named %s ", tmpName));
|
||||
} else {
|
||||
efiVariable.append(" Data not provided ");
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package hirs.utils.tpm.eventlog.uefi;
|
||||
|
||||
import jakarta.xml.bind.DatatypeConverter;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.security.MessageDigest;
|
||||
|
@ -14,6 +14,8 @@ import jakarta.xml.bind.annotation.XmlAnyAttribute;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
import jakarta.xml.bind.annotation.XmlSeeAlso;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import java.util.HashMap;
|
||||
@ -21,14 +23,13 @@ import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Attributes common to all Elements in this schema
|
||||
*
|
||||
*
|
||||
* Attributes common to all Elements in this schema
|
||||
*
|
||||
*
|
||||
* <p>Java class for BaseElement complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="BaseElement">
|
||||
* <complexContent>
|
||||
@ -39,67 +40,38 @@ import java.util.Map;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "BaseElement", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd")
|
||||
@XmlSeeAlso({
|
||||
SoftwareIdentity.class,
|
||||
Entity.class,
|
||||
Link.class,
|
||||
Meta.class,
|
||||
ResourceCollection.class
|
||||
SoftwareIdentity.class,
|
||||
Entity.class,
|
||||
Link.class,
|
||||
Meta.class,
|
||||
ResourceCollection.class
|
||||
})
|
||||
public class BaseElement {
|
||||
|
||||
@XmlAttribute(name = "lang", namespace = "http://www.w3.org/XML/1998/namespace")
|
||||
protected String lang;
|
||||
@XmlAnyAttribute
|
||||
private Map<QName, String> otherAttributes = new HashMap<QName, String>();
|
||||
|
||||
/**
|
||||
*
|
||||
* Allow xml:lang attribute on any element.
|
||||
*
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLang() {
|
||||
return lang;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the lang property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLang(String value) {
|
||||
this.lang = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* -- GETTER --
|
||||
* Gets a map that contains attributes that aren't bound to any typed property on this class.
|
||||
*
|
||||
* <p>
|
||||
* the map is keyed by the name of the attribute and
|
||||
* the map is keyed by the name of the attribute and
|
||||
* the value is the string value of the attribute.
|
||||
*
|
||||
* <p>
|
||||
* the map returned by this method is live, and you can add new attribute
|
||||
* by updating the map directly. Because of this design, there's no setter.
|
||||
*
|
||||
*
|
||||
* @return
|
||||
* always non-null
|
||||
*/
|
||||
public Map<QName, String> getOtherAttributes() {
|
||||
return otherAttributes;
|
||||
}
|
||||
@XmlAnyAttribute
|
||||
private final Map<QName, String> otherAttributes = new HashMap<>();
|
||||
|
||||
/**
|
||||
* -- GETTER --
|
||||
* Allow xml:lang attribute on any element.
|
||||
*/
|
||||
@Setter
|
||||
@XmlAttribute(name = "lang", namespace = "http://www.w3.org/XML/1998/namespace")
|
||||
protected String lang;
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAnyElement;
|
||||
@ -17,13 +15,18 @@ import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
import jakarta.xml.bind.annotation.XmlMixed;
|
||||
import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for CanonicalizationMethodType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="CanonicalizationMethodType">
|
||||
* <complexContent>
|
||||
@ -36,44 +39,43 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "CanonicalizationMethodType", propOrder = {
|
||||
"content"
|
||||
"content"
|
||||
})
|
||||
public class CanonicalizationMethodType {
|
||||
|
||||
@XmlMixed
|
||||
@XmlAnyElement(lax = true)
|
||||
protected List<Object> content;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAttribute(name = "Algorithm", required = true)
|
||||
@XmlSchemaType(name = "anyURI")
|
||||
protected String algorithm;
|
||||
|
||||
/**
|
||||
* Gets the value of the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getContent().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link Object }
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getContent() {
|
||||
if (content == null) {
|
||||
@ -81,29 +83,4 @@ public class CanonicalizationMethodType {
|
||||
}
|
||||
return this.content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the algorithm property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getAlgorithm() {
|
||||
return algorithm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the algorithm property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setAlgorithm(String value) {
|
||||
this.algorithm = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -12,13 +12,15 @@ import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlElement;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for DSAKeyValueType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="DSAKeyValueType">
|
||||
* <complexContent>
|
||||
@ -40,188 +42,38 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "DSAKeyValueType", propOrder = {
|
||||
"p",
|
||||
"q",
|
||||
"g",
|
||||
"y",
|
||||
"j",
|
||||
"seed",
|
||||
"pgenCounter"
|
||||
"p",
|
||||
"q",
|
||||
"g",
|
||||
"y",
|
||||
"j",
|
||||
"seed",
|
||||
"pgenCounter"
|
||||
})
|
||||
public class DSAKeyValueType {
|
||||
|
||||
@XmlElement(name = "P")
|
||||
protected byte[] p;
|
||||
|
||||
@XmlElement(name = "Q")
|
||||
protected byte[] q;
|
||||
|
||||
@XmlElement(name = "G")
|
||||
protected byte[] g;
|
||||
|
||||
@XmlElement(name = "Y", required = true)
|
||||
protected byte[] y;
|
||||
|
||||
@XmlElement(name = "J")
|
||||
protected byte[] j;
|
||||
|
||||
@XmlElement(name = "Seed")
|
||||
protected byte[] seed;
|
||||
|
||||
@XmlElement(name = "PgenCounter")
|
||||
protected byte[] pgenCounter;
|
||||
|
||||
/**
|
||||
* Gets the value of the p property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* byte[]
|
||||
*/
|
||||
public byte[] getP() {
|
||||
return p;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the p property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* byte[]
|
||||
*/
|
||||
public void setP(byte[] value) {
|
||||
this.p = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the q property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* byte[]
|
||||
*/
|
||||
public byte[] getQ() {
|
||||
return q;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the q property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* byte[]
|
||||
*/
|
||||
public void setQ(byte[] value) {
|
||||
this.q = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the g property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* byte[]
|
||||
*/
|
||||
public byte[] getG() {
|
||||
return g;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the g property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* byte[]
|
||||
*/
|
||||
public void setG(byte[] value) {
|
||||
this.g = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the y property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* byte[]
|
||||
*/
|
||||
public byte[] getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the y property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* byte[]
|
||||
*/
|
||||
public void setY(byte[] value) {
|
||||
this.y = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the j property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* byte[]
|
||||
*/
|
||||
public byte[] getJ() {
|
||||
return j;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the j property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* byte[]
|
||||
*/
|
||||
public void setJ(byte[] value) {
|
||||
this.j = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the seed property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* byte[]
|
||||
*/
|
||||
public byte[] getSeed() {
|
||||
return seed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the seed property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* byte[]
|
||||
*/
|
||||
public void setSeed(byte[] value) {
|
||||
this.seed = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the pgenCounter property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* byte[]
|
||||
*/
|
||||
public byte[] getPgenCounter() {
|
||||
return pgenCounter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the pgenCounter property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* byte[]
|
||||
*/
|
||||
public void setPgenCounter(byte[] value) {
|
||||
this.pgenCounter = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAnyElement;
|
||||
@ -17,14 +15,19 @@ import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
import jakarta.xml.bind.annotation.XmlMixed;
|
||||
import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for DigestMethodType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="DigestMethodType">
|
||||
* <complexContent>
|
||||
@ -37,75 +40,49 @@ import org.w3c.dom.Element;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "DigestMethodType", propOrder = {
|
||||
"content"
|
||||
"content"
|
||||
})
|
||||
public class DigestMethodType {
|
||||
|
||||
@XmlMixed
|
||||
@XmlAnyElement(lax = true)
|
||||
protected List<Object> content;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAttribute(name = "Algorithm", required = true)
|
||||
@XmlSchemaType(name = "anyURI")
|
||||
protected String algorithm;
|
||||
|
||||
/**
|
||||
* Gets the value of the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getContent().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link Object }
|
||||
* {@link Element }
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getContent() {
|
||||
if (content == null) {
|
||||
content = new ArrayList<Object>();
|
||||
content = new ArrayList<>();
|
||||
}
|
||||
return this.content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the algorithm property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getAlgorithm() {
|
||||
return algorithm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the algorithm property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setAlgorithm(String value) {
|
||||
this.algorithm = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,20 +8,21 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlElement;
|
||||
import jakarta.xml.bind.annotation.XmlElements;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for Directory complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="Directory">
|
||||
* <complexContent>
|
||||
@ -35,49 +36,44 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "Directory", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", propOrder = {
|
||||
"directoryOrFile"
|
||||
"directoryOrFile"
|
||||
})
|
||||
public class Directory
|
||||
extends FilesystemItem
|
||||
{
|
||||
extends FilesystemItem {
|
||||
|
||||
@XmlElements({
|
||||
@XmlElement(name = "Directory", type = Directory.class),
|
||||
@XmlElement(name = "File", type = File.class)
|
||||
@XmlElement(name = "Directory", type = Directory.class),
|
||||
@XmlElement(name = "File", type = File.class)
|
||||
})
|
||||
protected List<FilesystemItem> directoryOrFile;
|
||||
|
||||
/**
|
||||
* Gets the value of the directoryOrFile property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the directoryOrFile property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getDirectoryOrFile().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link Directory }
|
||||
* {@link File }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<FilesystemItem> getDirectoryOrFile() {
|
||||
if (directoryOrFile == null) {
|
||||
directoryOrFile = new ArrayList<FilesystemItem>();
|
||||
directoryOrFile = new ArrayList<>();
|
||||
}
|
||||
return this.directoryOrFile;
|
||||
}
|
||||
|
@ -8,21 +8,24 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
import jakarta.xml.bind.annotation.XmlElement;
|
||||
import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for Entity complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="Entity">
|
||||
* <complexContent>
|
||||
@ -39,51 +42,55 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "Entity", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", propOrder = {
|
||||
"meta"
|
||||
"meta"
|
||||
})
|
||||
public class Entity
|
||||
extends BaseElement
|
||||
{
|
||||
extends BaseElement {
|
||||
|
||||
@XmlElement(name = "Meta")
|
||||
protected List<Meta> meta;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAttribute(name = "name", required = true)
|
||||
protected String name;
|
||||
|
||||
@Setter
|
||||
@XmlAttribute(name = "regid")
|
||||
@XmlSchemaType(name = "anyURI")
|
||||
protected String regid;
|
||||
|
||||
@XmlAttribute(name = "role", required = true)
|
||||
@XmlSchemaType(name = "NMTOKENS")
|
||||
protected List<String> role;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAttribute(name = "thumbprint")
|
||||
protected String thumbprint;
|
||||
|
||||
/**
|
||||
* Gets the value of the meta property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the meta property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getMeta().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link Meta }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Meta> getMeta() {
|
||||
if (meta == null) {
|
||||
@ -92,37 +99,11 @@ public class Entity
|
||||
return this.meta;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the name property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the name property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setName(String value) {
|
||||
this.name = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the regid property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
* @return possible object is
|
||||
* {@link String }
|
||||
*/
|
||||
public String getRegid() {
|
||||
if (regid == null) {
|
||||
@ -132,69 +113,30 @@ public class Entity
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the regid property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setRegid(String value) {
|
||||
this.regid = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the role property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the role property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getRole().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<String> getRole() {
|
||||
if (role == null) {
|
||||
role = new ArrayList<String>();
|
||||
role = new ArrayList<>();
|
||||
}
|
||||
return this.role;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the thumbprint property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getThumbprint() {
|
||||
return thumbprint;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the thumbprint property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setThumbprint(String value) {
|
||||
this.thumbprint = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -13,14 +13,17 @@ import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.xml.datatype.XMLGregorianCalendar;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for Evidence complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="Evidence">
|
||||
* <complexContent>
|
||||
@ -32,67 +35,18 @@ import javax.xml.datatype.XMLGregorianCalendar;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "Evidence", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd")
|
||||
public class Evidence
|
||||
extends ResourceCollection
|
||||
{
|
||||
extends ResourceCollection {
|
||||
|
||||
@XmlAttribute(name = "date")
|
||||
@XmlSchemaType(name = "dateTime")
|
||||
protected XMLGregorianCalendar date;
|
||||
|
||||
@XmlAttribute(name = "deviceId")
|
||||
protected String deviceId;
|
||||
|
||||
/**
|
||||
* Gets the value of the date property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link XMLGregorianCalendar }
|
||||
*
|
||||
*/
|
||||
public XMLGregorianCalendar getDate() {
|
||||
return date;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the date property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link XMLGregorianCalendar }
|
||||
*
|
||||
*/
|
||||
public void setDate(XMLGregorianCalendar value) {
|
||||
this.date = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the deviceId property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getDeviceId() {
|
||||
return deviceId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the deviceId property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setDeviceId(String value) {
|
||||
this.deviceId = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,18 +8,21 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.math.BigInteger;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for File complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="File">
|
||||
* <complexContent>
|
||||
@ -31,66 +34,17 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "File", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd")
|
||||
public class File
|
||||
extends FilesystemItem
|
||||
{
|
||||
extends FilesystemItem {
|
||||
|
||||
@XmlAttribute(name = "size")
|
||||
protected BigInteger size;
|
||||
|
||||
@XmlAttribute(name = "version")
|
||||
protected String version;
|
||||
|
||||
/**
|
||||
* Gets the value of the size property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link BigInteger }
|
||||
*
|
||||
*/
|
||||
public BigInteger getSize() {
|
||||
return size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the size property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link BigInteger }
|
||||
*
|
||||
*/
|
||||
public void setSize(BigInteger value) {
|
||||
this.size = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the version property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the version property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setVersion(String value) {
|
||||
this.version = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -13,13 +13,15 @@ import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
import jakarta.xml.bind.annotation.XmlSeeAlso;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for FilesystemItem complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="FilesystemItem">
|
||||
* <complexContent>
|
||||
@ -33,122 +35,27 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "FilesystemItem", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd")
|
||||
@XmlSeeAlso({
|
||||
File.class,
|
||||
Directory.class
|
||||
File.class,
|
||||
Directory.class
|
||||
})
|
||||
public class FilesystemItem
|
||||
extends Meta
|
||||
{
|
||||
extends Meta {
|
||||
|
||||
@XmlAttribute(name = "key")
|
||||
protected Boolean key;
|
||||
|
||||
@XmlAttribute(name = "location")
|
||||
protected String location;
|
||||
|
||||
@XmlAttribute(name = "name", required = true)
|
||||
protected String name;
|
||||
|
||||
@XmlAttribute(name = "root")
|
||||
protected String root;
|
||||
|
||||
/**
|
||||
* Gets the value of the key property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public Boolean isKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the key property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setKey(Boolean value) {
|
||||
this.key = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the location property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the location property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setLocation(String value) {
|
||||
this.location = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the name property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the name property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setName(String value) {
|
||||
this.name = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the root property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getRoot() {
|
||||
return root;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the root property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setRoot(String value) {
|
||||
this.root = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.JAXBElement;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
@ -23,14 +21,19 @@ import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for KeyInfoType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="KeyInfoType">
|
||||
* <complexContent>
|
||||
@ -50,27 +53,28 @@ import org.w3c.dom.Element;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "KeyInfoType", propOrder = {
|
||||
"content"
|
||||
"content"
|
||||
})
|
||||
public class KeyInfoType {
|
||||
|
||||
@XmlElementRefs({
|
||||
@XmlElementRef(name = "KeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "X509Data", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "KeyName", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "PGPData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "MgmtData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "SPKIData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "RetrievalMethod", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false)
|
||||
@XmlElementRef(name = "KeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "X509Data", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "KeyName", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "PGPData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "MgmtData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "SPKIData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "RetrievalMethod", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false)
|
||||
})
|
||||
@XmlMixed
|
||||
@XmlAnyElement(lax = true)
|
||||
protected List<Object> content;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAttribute(name = "Id")
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
@XmlID
|
||||
@ -79,20 +83,20 @@ public class KeyInfoType {
|
||||
|
||||
/**
|
||||
* Gets the value of the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getContent().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link JAXBElement }{@code <}{@link KeyValueType }{@code >}
|
||||
@ -105,38 +109,11 @@ public class KeyInfoType {
|
||||
* {@link Element }
|
||||
* {@link JAXBElement }{@code <}{@link SPKIDataType }{@code >}
|
||||
* {@link JAXBElement }{@code <}{@link RetrievalMethodType }{@code >}
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getContent() {
|
||||
if (content == null) {
|
||||
content = new ArrayList<Object>();
|
||||
content = new ArrayList<>();
|
||||
}
|
||||
return this.content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the id property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the id property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setId(String value) {
|
||||
this.id = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.JAXBElement;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
@ -20,12 +18,15 @@ import jakarta.xml.bind.annotation.XmlMixed;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for KeyValueType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="KeyValueType">
|
||||
* <complexContent>
|
||||
@ -39,18 +40,16 @@ import org.w3c.dom.Element;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "KeyValueType", propOrder = {
|
||||
"content"
|
||||
"content"
|
||||
})
|
||||
public class KeyValueType {
|
||||
|
||||
@XmlElementRefs({
|
||||
@XmlElementRef(name = "RSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "DSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false)
|
||||
@XmlElementRef(name = "RSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "DSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false)
|
||||
})
|
||||
@XmlMixed
|
||||
@XmlAnyElement(lax = true)
|
||||
@ -58,20 +57,20 @@ public class KeyValueType {
|
||||
|
||||
/**
|
||||
* Gets the value of the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getContent().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link JAXBElement }{@code <}{@link RSAKeyValueType }{@code >}
|
||||
@ -79,12 +78,10 @@ public class KeyValueType {
|
||||
* {@link String }
|
||||
* {@link JAXBElement }{@code <}{@link DSAKeyValueType }{@code >}
|
||||
* {@link Object }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getContent() {
|
||||
if (content == null) {
|
||||
content = new ArrayList<Object>();
|
||||
content = new ArrayList<>();
|
||||
}
|
||||
return this.content;
|
||||
}
|
||||
|
@ -15,13 +15,15 @@ import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for Link complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="Link">
|
||||
* <complexContent>
|
||||
@ -38,199 +40,35 @@ import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "Link", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd")
|
||||
public class Link
|
||||
extends BaseElement
|
||||
{
|
||||
extends BaseElement {
|
||||
|
||||
@XmlAttribute(name = "artifact")
|
||||
protected String artifact;
|
||||
|
||||
@XmlAttribute(name = "href", required = true)
|
||||
@XmlSchemaType(name = "anyURI")
|
||||
protected String href;
|
||||
|
||||
@XmlAttribute(name = "media")
|
||||
protected String media;
|
||||
|
||||
@XmlAttribute(name = "ownership")
|
||||
protected Ownership ownership;
|
||||
|
||||
@XmlAttribute(name = "rel", required = true)
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
@XmlSchemaType(name = "NMTOKEN")
|
||||
protected String rel;
|
||||
|
||||
@XmlAttribute(name = "type")
|
||||
protected String type;
|
||||
|
||||
@XmlAttribute(name = "use")
|
||||
protected Use use;
|
||||
|
||||
/**
|
||||
* Gets the value of the artifact property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getArtifact() {
|
||||
return artifact;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the artifact property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setArtifact(String value) {
|
||||
this.artifact = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the href property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getHref() {
|
||||
return href;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the href property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setHref(String value) {
|
||||
this.href = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the media property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getMedia() {
|
||||
return media;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the media property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setMedia(String value) {
|
||||
this.media = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the ownership property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Ownership }
|
||||
*
|
||||
*/
|
||||
public Ownership getOwnership() {
|
||||
return ownership;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the ownership property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Ownership }
|
||||
*
|
||||
*/
|
||||
public void setOwnership(Ownership value) {
|
||||
this.ownership = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the rel property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getRel() {
|
||||
return rel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the rel property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setRel(String value) {
|
||||
this.rel = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the type property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the type property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setType(String value) {
|
||||
this.type = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the use property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Use }
|
||||
*
|
||||
*/
|
||||
public Use getUse() {
|
||||
return use;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the use property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Use }
|
||||
*
|
||||
*/
|
||||
public void setUse(Use value) {
|
||||
this.use = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
@ -19,13 +17,18 @@ import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for ManifestType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="ManifestType">
|
||||
* <complexContent>
|
||||
@ -38,17 +41,18 @@ import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "ManifestType", propOrder = {
|
||||
"reference"
|
||||
"reference"
|
||||
})
|
||||
public class ManifestType {
|
||||
|
||||
@XmlElement(name = "Reference", required = true)
|
||||
protected List<ReferenceType> reference;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAttribute(name = "Id")
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
@XmlID
|
||||
@ -57,55 +61,28 @@ public class ManifestType {
|
||||
|
||||
/**
|
||||
* Gets the value of the reference property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the reference property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getReference().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link ReferenceType }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<ReferenceType> getReference() {
|
||||
if (reference == null) {
|
||||
reference = new ArrayList<ReferenceType>();
|
||||
reference = new ArrayList<>();
|
||||
}
|
||||
return this.reference;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the id property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the id property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setId(String value) {
|
||||
this.id = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -16,9 +16,9 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
|
||||
/**
|
||||
* <p>Java class for Meta complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="Meta">
|
||||
* <complexContent>
|
||||
@ -28,20 +28,17 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "Meta", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd")
|
||||
@XmlSeeAlso({
|
||||
SoftwareMeta.class,
|
||||
Resource.class,
|
||||
Process.class,
|
||||
FilesystemItem.class
|
||||
SoftwareMeta.class,
|
||||
Resource.class,
|
||||
Process.class,
|
||||
FilesystemItem.class
|
||||
})
|
||||
public class Meta
|
||||
extends BaseElement
|
||||
{
|
||||
extends BaseElement {
|
||||
|
||||
|
||||
}
|
||||
|
@ -8,83 +8,114 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import jakarta.xml.bind.JAXBElement;
|
||||
import jakarta.xml.bind.annotation.XmlElementDecl;
|
||||
import jakarta.xml.bind.annotation.XmlRegistry;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import java.math.BigInteger;
|
||||
|
||||
|
||||
/**
|
||||
* This object contains factory methods for each
|
||||
* Java content interface and Java element interface
|
||||
* This object contains factory methods for each
|
||||
* Java content interface and Java element interface
|
||||
* generated in the main.java.hirs.utils.xjc package.
|
||||
* <p>An ObjectFactory allows you to programatically
|
||||
* construct new instances of the Java representation
|
||||
* for XML content. The Java representation of XML
|
||||
* content can consist of schema derived interfaces
|
||||
* and classes representing the binding of schema
|
||||
* type definitions, element declarations and model
|
||||
* groups. Factory methods for each of these are
|
||||
* <p>An ObjectFactory allows you to programatically
|
||||
* construct new instances of the Java representation
|
||||
* for XML content. The Java representation of XML
|
||||
* content can consist of schema derived interfaces
|
||||
* and classes representing the binding of schema
|
||||
* type definitions, element declarations and model
|
||||
* groups. Factory methods for each of these are
|
||||
* provided in this class.
|
||||
*
|
||||
*/
|
||||
@XmlRegistry
|
||||
public class ObjectFactory {
|
||||
|
||||
private final static QName _SPKIData_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SPKIData");
|
||||
private final static QName _KeyInfo_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "KeyInfo");
|
||||
private final static QName _SignatureValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureValue");
|
||||
private final static QName _SignatureValue_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureValue");
|
||||
private final static QName _KeyValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "KeyValue");
|
||||
private final static QName _Transforms_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Transforms");
|
||||
private final static QName _DigestMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "DigestMethod");
|
||||
private final static QName _Transforms_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "Transforms");
|
||||
private final static QName _DigestMethod_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "DigestMethod");
|
||||
private final static QName _X509Data_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509Data");
|
||||
private final static QName _SignatureProperty_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureProperty");
|
||||
private final static QName _SignatureProperty_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureProperty");
|
||||
private final static QName _KeyName_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "KeyName");
|
||||
private final static QName _RSAKeyValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "RSAKeyValue");
|
||||
private final static QName _SoftwareIdentity_QNAME = new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "SoftwareIdentity");
|
||||
private final static QName _Signature_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Signature");
|
||||
private final static QName _RSAKeyValue_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "RSAKeyValue");
|
||||
private final static QName _SoftwareIdentity_QNAME =
|
||||
new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "SoftwareIdentity");
|
||||
private final static QName _Signature_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "Signature");
|
||||
private final static QName _MgmtData_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "MgmtData");
|
||||
private final static QName _SignatureMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureMethod");
|
||||
private final static QName _SignatureMethod_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureMethod");
|
||||
private final static QName _Object_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Object");
|
||||
private final static QName _SignatureProperties_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureProperties");
|
||||
private final static QName _Transform_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Transform");
|
||||
private final static QName _SignatureProperties_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureProperties");
|
||||
private final static QName _Transform_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "Transform");
|
||||
private final static QName _PGPData_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "PGPData");
|
||||
private final static QName _Reference_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Reference");
|
||||
private final static QName _RetrievalMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "RetrievalMethod");
|
||||
private final static QName _DSAKeyValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "DSAKeyValue");
|
||||
private final static QName _DigestValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "DigestValue");
|
||||
private final static QName _CanonicalizationMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "CanonicalizationMethod");
|
||||
private final static QName _SignedInfo_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignedInfo");
|
||||
private final static QName _Reference_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "Reference");
|
||||
private final static QName _RetrievalMethod_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "RetrievalMethod");
|
||||
private final static QName _DSAKeyValue_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "DSAKeyValue");
|
||||
private final static QName _DigestValue_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "DigestValue");
|
||||
private final static QName _CanonicalizationMethod_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "CanonicalizationMethod");
|
||||
private final static QName _SignedInfo_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "SignedInfo");
|
||||
private final static QName _Manifest_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Manifest");
|
||||
private final static QName _TransformTypeXPath_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "XPath");
|
||||
private final static QName _X509DataTypeX509IssuerSerial_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509IssuerSerial");
|
||||
private final static QName _X509DataTypeX509CRL_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509CRL");
|
||||
private final static QName _X509DataTypeX509SubjectName_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509SubjectName");
|
||||
private final static QName _X509DataTypeX509SKI_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509SKI");
|
||||
private final static QName _X509DataTypeX509Certificate_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509Certificate");
|
||||
private final static QName _SoftwareIdentityLink_QNAME = new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "Link");
|
||||
private final static QName _SoftwareIdentityEvidence_QNAME = new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "Evidence");
|
||||
private final static QName _SoftwareIdentityPayload_QNAME = new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "Payload");
|
||||
private final static QName _PayloadDirectory_QNAME = new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "Directory");
|
||||
private final static QName _DirectoryFile_QNAME = new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "File");
|
||||
private final static QName _SoftwareIdentityEntity_QNAME = new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "Entity");
|
||||
private final static QName _SoftwareIdentityMeta_QNAME = new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "Meta");
|
||||
private final static QName _SignatureMethodTypeHMACOutputLength_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "HMACOutputLength");
|
||||
private final static QName _SPKIDataTypeSPKISexp_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SPKISexp");
|
||||
private final static QName _PGPDataTypePGPKeyID_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "PGPKeyID");
|
||||
private final static QName _PGPDataTypePGPKeyPacket_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "PGPKeyPacket");
|
||||
private final static QName _TransformTypeXPath_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "XPath");
|
||||
private final static QName _X509DataTypeX509IssuerSerial_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "X509IssuerSerial");
|
||||
private final static QName _X509DataTypeX509CRL_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "X509CRL");
|
||||
private final static QName _X509DataTypeX509SubjectName_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "X509SubjectName");
|
||||
private final static QName _X509DataTypeX509SKI_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "X509SKI");
|
||||
private final static QName _X509DataTypeX509Certificate_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "X509Certificate");
|
||||
private final static QName _SoftwareIdentityLink_QNAME =
|
||||
new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "Link");
|
||||
private final static QName _SoftwareIdentityEvidence_QNAME =
|
||||
new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "Evidence");
|
||||
private final static QName _SoftwareIdentityPayload_QNAME =
|
||||
new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "Payload");
|
||||
private final static QName _PayloadDirectory_QNAME =
|
||||
new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "Directory");
|
||||
private final static QName _DirectoryFile_QNAME =
|
||||
new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "File");
|
||||
private final static QName _SoftwareIdentityEntity_QNAME =
|
||||
new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "Entity");
|
||||
private final static QName _SoftwareIdentityMeta_QNAME =
|
||||
new QName("http://standards.iso.org/iso/19770/-2/2015/schema.xsd", "Meta");
|
||||
private final static QName _SignatureMethodTypeHMACOutputLength_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "HMACOutputLength");
|
||||
private final static QName _SPKIDataTypeSPKISexp_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "SPKISexp");
|
||||
private final static QName _PGPDataTypePGPKeyID_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "PGPKeyID");
|
||||
private final static QName _PGPDataTypePGPKeyPacket_QNAME =
|
||||
new QName("http://www.w3.org/2000/09/xmldsig#", "PGPKeyPacket");
|
||||
|
||||
/**
|
||||
* Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: main.java.hirs.utils.xjc
|
||||
*
|
||||
*/
|
||||
public ObjectFactory() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link SoftwareIdentity }
|
||||
*
|
||||
*/
|
||||
public SoftwareIdentity createSoftwareIdentity() {
|
||||
return new SoftwareIdentity();
|
||||
@ -92,7 +123,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link SoftwareMeta }
|
||||
*
|
||||
*/
|
||||
public SoftwareMeta createSoftwareMeta() {
|
||||
return new SoftwareMeta();
|
||||
@ -100,7 +130,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link Entity }
|
||||
*
|
||||
*/
|
||||
public Entity createEntity() {
|
||||
return new Entity();
|
||||
@ -108,7 +137,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link Meta }
|
||||
*
|
||||
*/
|
||||
public Meta createMeta() {
|
||||
return new Meta();
|
||||
@ -116,7 +144,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link FilesystemItem }
|
||||
*
|
||||
*/
|
||||
public FilesystemItem createFilesystemItem() {
|
||||
return new FilesystemItem();
|
||||
@ -124,7 +151,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link Resource }
|
||||
*
|
||||
*/
|
||||
public Resource createResource() {
|
||||
return new Resource();
|
||||
@ -132,7 +158,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link Process }
|
||||
*
|
||||
*/
|
||||
public Process createProcess() {
|
||||
return new Process();
|
||||
@ -140,7 +165,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link BaseElement }
|
||||
*
|
||||
*/
|
||||
public BaseElement createBaseElement() {
|
||||
return new BaseElement();
|
||||
@ -148,7 +172,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link Evidence }
|
||||
*
|
||||
*/
|
||||
public Evidence createEvidence() {
|
||||
return new Evidence();
|
||||
@ -156,7 +179,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link File }
|
||||
*
|
||||
*/
|
||||
public File createFile() {
|
||||
return new File();
|
||||
@ -164,7 +186,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link Link }
|
||||
*
|
||||
*/
|
||||
public Link createLink() {
|
||||
return new Link();
|
||||
@ -172,7 +193,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link Directory }
|
||||
*
|
||||
*/
|
||||
public Directory createDirectory() {
|
||||
return new Directory();
|
||||
@ -180,7 +200,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link ResourceCollection }
|
||||
*
|
||||
*/
|
||||
public ResourceCollection createResourceCollection() {
|
||||
return new ResourceCollection();
|
||||
@ -188,7 +207,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link PGPDataType }
|
||||
*
|
||||
*/
|
||||
public PGPDataType createPGPDataType() {
|
||||
return new PGPDataType();
|
||||
@ -196,7 +214,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link KeyValueType }
|
||||
*
|
||||
*/
|
||||
public KeyValueType createKeyValueType() {
|
||||
return new KeyValueType();
|
||||
@ -204,7 +221,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link DSAKeyValueType }
|
||||
*
|
||||
*/
|
||||
public DSAKeyValueType createDSAKeyValueType() {
|
||||
return new DSAKeyValueType();
|
||||
@ -212,7 +228,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link ReferenceType }
|
||||
*
|
||||
*/
|
||||
public ReferenceType createReferenceType() {
|
||||
return new ReferenceType();
|
||||
@ -220,7 +235,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link RetrievalMethodType }
|
||||
*
|
||||
*/
|
||||
public RetrievalMethodType createRetrievalMethodType() {
|
||||
return new RetrievalMethodType();
|
||||
@ -228,7 +242,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link TransformsType }
|
||||
*
|
||||
*/
|
||||
public TransformsType createTransformsType() {
|
||||
return new TransformsType();
|
||||
@ -236,7 +249,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link CanonicalizationMethodType }
|
||||
*
|
||||
*/
|
||||
public CanonicalizationMethodType createCanonicalizationMethodType() {
|
||||
return new CanonicalizationMethodType();
|
||||
@ -244,7 +256,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link DigestMethodType }
|
||||
*
|
||||
*/
|
||||
public DigestMethodType createDigestMethodType() {
|
||||
return new DigestMethodType();
|
||||
@ -252,7 +263,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link ManifestType }
|
||||
*
|
||||
*/
|
||||
public ManifestType createManifestType() {
|
||||
return new ManifestType();
|
||||
@ -260,7 +270,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link SignaturePropertyType }
|
||||
*
|
||||
*/
|
||||
public SignaturePropertyType createSignaturePropertyType() {
|
||||
return new SignaturePropertyType();
|
||||
@ -268,7 +277,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link X509DataType }
|
||||
*
|
||||
*/
|
||||
public X509DataType createX509DataType() {
|
||||
return new X509DataType();
|
||||
@ -276,7 +284,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link SignedInfoType }
|
||||
*
|
||||
*/
|
||||
public SignedInfoType createSignedInfoType() {
|
||||
return new SignedInfoType();
|
||||
@ -284,7 +291,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link RSAKeyValueType }
|
||||
*
|
||||
*/
|
||||
public RSAKeyValueType createRSAKeyValueType() {
|
||||
return new RSAKeyValueType();
|
||||
@ -292,7 +298,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link SPKIDataType }
|
||||
*
|
||||
*/
|
||||
public SPKIDataType createSPKIDataType() {
|
||||
return new SPKIDataType();
|
||||
@ -300,7 +305,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link SignatureValueType }
|
||||
*
|
||||
*/
|
||||
public SignatureValueType createSignatureValueType() {
|
||||
return new SignatureValueType();
|
||||
@ -308,7 +312,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link KeyInfoType }
|
||||
*
|
||||
*/
|
||||
public KeyInfoType createKeyInfoType() {
|
||||
return new KeyInfoType();
|
||||
@ -316,7 +319,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link SignatureType }
|
||||
*
|
||||
*/
|
||||
public SignatureType createSignatureType() {
|
||||
return new SignatureType();
|
||||
@ -324,7 +326,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link SignaturePropertiesType }
|
||||
*
|
||||
*/
|
||||
public SignaturePropertiesType createSignaturePropertiesType() {
|
||||
return new SignaturePropertiesType();
|
||||
@ -332,7 +333,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link SignatureMethodType }
|
||||
*
|
||||
*/
|
||||
public SignatureMethodType createSignatureMethodType() {
|
||||
return new SignatureMethodType();
|
||||
@ -340,7 +340,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link ObjectType }
|
||||
*
|
||||
*/
|
||||
public ObjectType createObjectType() {
|
||||
return new ObjectType();
|
||||
@ -348,7 +347,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link TransformType }
|
||||
*
|
||||
*/
|
||||
public TransformType createTransformType() {
|
||||
return new TransformType();
|
||||
@ -356,7 +354,6 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link X509IssuerSerialType }
|
||||
*
|
||||
*/
|
||||
public X509IssuerSerialType createX509IssuerSerialType() {
|
||||
return new X509IssuerSerialType();
|
||||
@ -364,380 +361,360 @@ public class ObjectFactory {
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link SPKIDataType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SPKIData")
|
||||
public JAXBElement<SPKIDataType> createSPKIData(SPKIDataType value) {
|
||||
return new JAXBElement<SPKIDataType>(_SPKIData_QNAME, SPKIDataType.class, null, value);
|
||||
return new JAXBElement<>(_SPKIData_QNAME, SPKIDataType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link KeyInfoType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "KeyInfo")
|
||||
public JAXBElement<KeyInfoType> createKeyInfo(KeyInfoType value) {
|
||||
return new JAXBElement<KeyInfoType>(_KeyInfo_QNAME, KeyInfoType.class, null, value);
|
||||
return new JAXBElement<>(_KeyInfo_QNAME, KeyInfoType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link SignatureValueType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureValue")
|
||||
public JAXBElement<SignatureValueType> createSignatureValue(SignatureValueType value) {
|
||||
return new JAXBElement<SignatureValueType>(_SignatureValue_QNAME, SignatureValueType.class, null, value);
|
||||
return new JAXBElement<>(_SignatureValue_QNAME, SignatureValueType.class, null,
|
||||
value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link KeyValueType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "KeyValue")
|
||||
public JAXBElement<KeyValueType> createKeyValue(KeyValueType value) {
|
||||
return new JAXBElement<KeyValueType>(_KeyValue_QNAME, KeyValueType.class, null, value);
|
||||
return new JAXBElement<>(_KeyValue_QNAME, KeyValueType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link TransformsType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Transforms")
|
||||
public JAXBElement<TransformsType> createTransforms(TransformsType value) {
|
||||
return new JAXBElement<TransformsType>(_Transforms_QNAME, TransformsType.class, null, value);
|
||||
return new JAXBElement<>(_Transforms_QNAME, TransformsType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link DigestMethodType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "DigestMethod")
|
||||
public JAXBElement<DigestMethodType> createDigestMethod(DigestMethodType value) {
|
||||
return new JAXBElement<DigestMethodType>(_DigestMethod_QNAME, DigestMethodType.class, null, value);
|
||||
return new JAXBElement<>(_DigestMethod_QNAME, DigestMethodType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link X509DataType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509Data")
|
||||
public JAXBElement<X509DataType> createX509Data(X509DataType value) {
|
||||
return new JAXBElement<X509DataType>(_X509Data_QNAME, X509DataType.class, null, value);
|
||||
return new JAXBElement<>(_X509Data_QNAME, X509DataType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link SignaturePropertyType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureProperty")
|
||||
public JAXBElement<SignaturePropertyType> createSignatureProperty(SignaturePropertyType value) {
|
||||
return new JAXBElement<SignaturePropertyType>(_SignatureProperty_QNAME, SignaturePropertyType.class, null, value);
|
||||
return new JAXBElement<>(_SignatureProperty_QNAME, SignaturePropertyType.class,
|
||||
null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "KeyName")
|
||||
public JAXBElement<String> createKeyName(String value) {
|
||||
return new JAXBElement<String>(_KeyName_QNAME, String.class, null, value);
|
||||
return new JAXBElement<>(_KeyName_QNAME, String.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link RSAKeyValueType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "RSAKeyValue")
|
||||
public JAXBElement<RSAKeyValueType> createRSAKeyValue(RSAKeyValueType value) {
|
||||
return new JAXBElement<RSAKeyValueType>(_RSAKeyValue_QNAME, RSAKeyValueType.class, null, value);
|
||||
return new JAXBElement<>(_RSAKeyValue_QNAME, RSAKeyValueType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link SoftwareIdentity }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", name = "SoftwareIdentity")
|
||||
public JAXBElement<SoftwareIdentity> createSoftwareIdentity(SoftwareIdentity value) {
|
||||
return new JAXBElement<SoftwareIdentity>(_SoftwareIdentity_QNAME, SoftwareIdentity.class, null, value);
|
||||
return new JAXBElement<>(_SoftwareIdentity_QNAME, SoftwareIdentity.class, null,
|
||||
value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link SignatureType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Signature")
|
||||
public JAXBElement<SignatureType> createSignature(SignatureType value) {
|
||||
return new JAXBElement<SignatureType>(_Signature_QNAME, SignatureType.class, null, value);
|
||||
return new JAXBElement<>(_Signature_QNAME, SignatureType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "MgmtData")
|
||||
public JAXBElement<String> createMgmtData(String value) {
|
||||
return new JAXBElement<String>(_MgmtData_QNAME, String.class, null, value);
|
||||
return new JAXBElement<>(_MgmtData_QNAME, String.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link SignatureMethodType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureMethod")
|
||||
public JAXBElement<SignatureMethodType> createSignatureMethod(SignatureMethodType value) {
|
||||
return new JAXBElement<SignatureMethodType>(_SignatureMethod_QNAME, SignatureMethodType.class, null, value);
|
||||
return new JAXBElement<>(_SignatureMethod_QNAME, SignatureMethodType.class, null,
|
||||
value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link ObjectType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Object")
|
||||
public JAXBElement<ObjectType> createObject(ObjectType value) {
|
||||
return new JAXBElement<ObjectType>(_Object_QNAME, ObjectType.class, null, value);
|
||||
return new JAXBElement<>(_Object_QNAME, ObjectType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link SignaturePropertiesType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureProperties")
|
||||
public JAXBElement<SignaturePropertiesType> createSignatureProperties(SignaturePropertiesType value) {
|
||||
return new JAXBElement<SignaturePropertiesType>(_SignatureProperties_QNAME, SignaturePropertiesType.class, null, value);
|
||||
return new JAXBElement<>(_SignatureProperties_QNAME,
|
||||
SignaturePropertiesType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link TransformType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Transform")
|
||||
public JAXBElement<TransformType> createTransform(TransformType value) {
|
||||
return new JAXBElement<TransformType>(_Transform_QNAME, TransformType.class, null, value);
|
||||
return new JAXBElement<>(_Transform_QNAME, TransformType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link PGPDataType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "PGPData")
|
||||
public JAXBElement<PGPDataType> createPGPData(PGPDataType value) {
|
||||
return new JAXBElement<PGPDataType>(_PGPData_QNAME, PGPDataType.class, null, value);
|
||||
return new JAXBElement<>(_PGPData_QNAME, PGPDataType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link ReferenceType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Reference")
|
||||
public JAXBElement<ReferenceType> createReference(ReferenceType value) {
|
||||
return new JAXBElement<ReferenceType>(_Reference_QNAME, ReferenceType.class, null, value);
|
||||
return new JAXBElement<>(_Reference_QNAME, ReferenceType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link RetrievalMethodType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "RetrievalMethod")
|
||||
public JAXBElement<RetrievalMethodType> createRetrievalMethod(RetrievalMethodType value) {
|
||||
return new JAXBElement<RetrievalMethodType>(_RetrievalMethod_QNAME, RetrievalMethodType.class, null, value);
|
||||
return new JAXBElement<>(_RetrievalMethod_QNAME, RetrievalMethodType.class, null,
|
||||
value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link DSAKeyValueType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "DSAKeyValue")
|
||||
public JAXBElement<DSAKeyValueType> createDSAKeyValue(DSAKeyValueType value) {
|
||||
return new JAXBElement<DSAKeyValueType>(_DSAKeyValue_QNAME, DSAKeyValueType.class, null, value);
|
||||
return new JAXBElement<>(_DSAKeyValue_QNAME, DSAKeyValueType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "DigestValue")
|
||||
public JAXBElement<byte[]> createDigestValue(byte[] value) {
|
||||
return new JAXBElement<byte[]>(_DigestValue_QNAME, byte[].class, null, ((byte[]) value));
|
||||
return new JAXBElement<>(_DigestValue_QNAME, byte[].class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link CanonicalizationMethodType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "CanonicalizationMethod")
|
||||
public JAXBElement<CanonicalizationMethodType> createCanonicalizationMethod(CanonicalizationMethodType value) {
|
||||
return new JAXBElement<CanonicalizationMethodType>(_CanonicalizationMethod_QNAME, CanonicalizationMethodType.class, null, value);
|
||||
public JAXBElement<CanonicalizationMethodType> createCanonicalizationMethod(
|
||||
CanonicalizationMethodType value) {
|
||||
return new JAXBElement<>(_CanonicalizationMethod_QNAME,
|
||||
CanonicalizationMethodType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link SignedInfoType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignedInfo")
|
||||
public JAXBElement<SignedInfoType> createSignedInfo(SignedInfoType value) {
|
||||
return new JAXBElement<SignedInfoType>(_SignedInfo_QNAME, SignedInfoType.class, null, value);
|
||||
return new JAXBElement<>(_SignedInfo_QNAME, SignedInfoType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link ManifestType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Manifest")
|
||||
public JAXBElement<ManifestType> createManifest(ManifestType value) {
|
||||
return new JAXBElement<ManifestType>(_Manifest_QNAME, ManifestType.class, null, value);
|
||||
return new JAXBElement<>(_Manifest_QNAME, ManifestType.class, null, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "XPath", scope = TransformType.class)
|
||||
public JAXBElement<String> createTransformTypeXPath(String value) {
|
||||
return new JAXBElement<String>(_TransformTypeXPath_QNAME, String.class, TransformType.class, value);
|
||||
return new JAXBElement<>(_TransformTypeXPath_QNAME, String.class, TransformType.class, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link X509IssuerSerialType }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509IssuerSerial", scope = X509DataType.class)
|
||||
public JAXBElement<X509IssuerSerialType> createX509DataTypeX509IssuerSerial(X509IssuerSerialType value) {
|
||||
return new JAXBElement<X509IssuerSerialType>(_X509DataTypeX509IssuerSerial_QNAME, X509IssuerSerialType.class, X509DataType.class, value);
|
||||
return new JAXBElement<>(_X509DataTypeX509IssuerSerial_QNAME,
|
||||
X509IssuerSerialType.class, X509DataType.class, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509CRL", scope = X509DataType.class)
|
||||
public JAXBElement<byte[]> createX509DataTypeX509CRL(byte[] value) {
|
||||
return new JAXBElement<byte[]>(_X509DataTypeX509CRL_QNAME, byte[].class, X509DataType.class, ((byte[]) value));
|
||||
return new JAXBElement<>(_X509DataTypeX509CRL_QNAME, byte[].class, X509DataType.class,
|
||||
value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509SubjectName", scope = X509DataType.class)
|
||||
public JAXBElement<String> createX509DataTypeX509SubjectName(String value) {
|
||||
return new JAXBElement<String>(_X509DataTypeX509SubjectName_QNAME, String.class, X509DataType.class, value);
|
||||
return new JAXBElement<>(_X509DataTypeX509SubjectName_QNAME, String.class, X509DataType.class,
|
||||
value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509SKI", scope = X509DataType.class)
|
||||
public JAXBElement<byte[]> createX509DataTypeX509SKI(byte[] value) {
|
||||
return new JAXBElement<byte[]>(_X509DataTypeX509SKI_QNAME, byte[].class, X509DataType.class, ((byte[]) value));
|
||||
return new JAXBElement<>(_X509DataTypeX509SKI_QNAME, byte[].class, X509DataType.class,
|
||||
value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509Certificate", scope = X509DataType.class)
|
||||
public JAXBElement<byte[]> createX509DataTypeX509Certificate(byte[] value) {
|
||||
return new JAXBElement<byte[]>(_X509DataTypeX509Certificate_QNAME, byte[].class, X509DataType.class, ((byte[]) value));
|
||||
return new JAXBElement<>(_X509DataTypeX509Certificate_QNAME, byte[].class, X509DataType.class,
|
||||
value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link Link }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", name = "Link", scope = SoftwareIdentity.class)
|
||||
public JAXBElement<Link> createSoftwareIdentityLink(Link value) {
|
||||
return new JAXBElement<Link>(_SoftwareIdentityLink_QNAME, Link.class, SoftwareIdentity.class, value);
|
||||
return new JAXBElement<>(_SoftwareIdentityLink_QNAME, Link.class, SoftwareIdentity.class, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link Evidence }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", name = "Evidence", scope = SoftwareIdentity.class)
|
||||
public JAXBElement<Evidence> createSoftwareIdentityEvidence(Evidence value) {
|
||||
return new JAXBElement<Evidence>(_SoftwareIdentityEvidence_QNAME, Evidence.class, SoftwareIdentity.class, value);
|
||||
return new JAXBElement<>(_SoftwareIdentityEvidence_QNAME, Evidence.class,
|
||||
SoftwareIdentity.class, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link ResourceCollection }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", name = "Payload", scope = SoftwareIdentity.class)
|
||||
public JAXBElement<ResourceCollection> createSoftwareIdentityPayload(ResourceCollection value) {
|
||||
return new JAXBElement<ResourceCollection>(_SoftwareIdentityPayload_QNAME, ResourceCollection.class, SoftwareIdentity.class, value);
|
||||
return new JAXBElement<>(_SoftwareIdentityPayload_QNAME, ResourceCollection.class,
|
||||
SoftwareIdentity.class, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link FilesystemItem }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", name = "Directory", scope = ResourceCollection.class)
|
||||
public JAXBElement<FilesystemItem> createPayloadDirectory(FilesystemItem value) {
|
||||
return new JAXBElement<FilesystemItem>(_PayloadDirectory_QNAME, FilesystemItem.class, ResourceCollection.class, value);
|
||||
return new JAXBElement<>(_PayloadDirectory_QNAME, FilesystemItem.class,
|
||||
ResourceCollection.class, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link FilesystemItem }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", name = "File", scope = ResourceCollection.class)
|
||||
public JAXBElement<FilesystemItem> createDirectoryFile(FilesystemItem value) {
|
||||
return new JAXBElement<FilesystemItem>(_DirectoryFile_QNAME, FilesystemItem.class, ResourceCollection.class, value);
|
||||
return new JAXBElement<>(_DirectoryFile_QNAME, FilesystemItem.class,
|
||||
ResourceCollection.class, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link Entity }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", name = "Entity", scope = SoftwareIdentity.class)
|
||||
public JAXBElement<Entity> createSoftwareIdentityEntity(Entity value) {
|
||||
return new JAXBElement<Entity>(_SoftwareIdentityEntity_QNAME, Entity.class, SoftwareIdentity.class, value);
|
||||
return new JAXBElement<>(_SoftwareIdentityEntity_QNAME, Entity.class, SoftwareIdentity.class,
|
||||
value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link SoftwareMeta }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", name = "Meta", scope = SoftwareIdentity.class)
|
||||
public JAXBElement<SoftwareMeta> createSoftwareIdentityMeta(SoftwareMeta value) {
|
||||
return new JAXBElement<SoftwareMeta>(_SoftwareIdentityMeta_QNAME, SoftwareMeta.class, SoftwareIdentity.class, value);
|
||||
return new JAXBElement<>(_SoftwareIdentityMeta_QNAME, SoftwareMeta.class,
|
||||
SoftwareIdentity.class, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link BigInteger }{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "HMACOutputLength", scope = SignatureMethodType.class)
|
||||
public JAXBElement<BigInteger> createSignatureMethodTypeHMACOutputLength(BigInteger value) {
|
||||
return new JAXBElement<BigInteger>(_SignatureMethodTypeHMACOutputLength_QNAME, BigInteger.class, SignatureMethodType.class, value);
|
||||
return new JAXBElement<>(_SignatureMethodTypeHMACOutputLength_QNAME, BigInteger.class,
|
||||
SignatureMethodType.class, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SPKISexp", scope = SPKIDataType.class)
|
||||
public JAXBElement<byte[]> createSPKIDataTypeSPKISexp(byte[] value) {
|
||||
return new JAXBElement<byte[]>(_SPKIDataTypeSPKISexp_QNAME, byte[].class, SPKIDataType.class, ((byte[]) value));
|
||||
return new JAXBElement<>(_SPKIDataTypeSPKISexp_QNAME, byte[].class, SPKIDataType.class,
|
||||
value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "PGPKeyID", scope = PGPDataType.class)
|
||||
public JAXBElement<byte[]> createPGPDataTypePGPKeyID(byte[] value) {
|
||||
return new JAXBElement<byte[]>(_PGPDataTypePGPKeyID_QNAME, byte[].class, PGPDataType.class, ((byte[]) value));
|
||||
return new JAXBElement<>(_PGPDataTypePGPKeyID_QNAME, byte[].class, PGPDataType.class,
|
||||
value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
|
||||
*
|
||||
*/
|
||||
@XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "PGPKeyPacket", scope = PGPDataType.class)
|
||||
public JAXBElement<byte[]> createPGPDataTypePGPKeyPacket(byte[] value) {
|
||||
return new JAXBElement<byte[]>(_PGPDataTypePGPKeyPacket_QNAME, byte[].class, PGPDataType.class, ((byte[]) value));
|
||||
return new JAXBElement<>(_PGPDataTypePGPKeyPacket_QNAME, byte[].class, PGPDataType.class,
|
||||
value);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAnyElement;
|
||||
@ -20,14 +18,20 @@ import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for ObjectType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="ObjectType">
|
||||
* <complexContent>
|
||||
@ -42,130 +46,60 @@ import org.w3c.dom.Element;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "ObjectType", propOrder = {
|
||||
"content"
|
||||
"content"
|
||||
})
|
||||
public class ObjectType {
|
||||
|
||||
@Getter(AccessLevel.NONE)
|
||||
@Setter(AccessLevel.NONE)
|
||||
@XmlMixed
|
||||
@XmlAnyElement(lax = true)
|
||||
protected List<Object> content;
|
||||
|
||||
@XmlAttribute(name = "Id")
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
@XmlID
|
||||
@XmlSchemaType(name = "ID")
|
||||
protected String id;
|
||||
|
||||
@XmlAttribute(name = "MimeType")
|
||||
protected String mimeType;
|
||||
|
||||
@XmlAttribute(name = "Encoding")
|
||||
@XmlSchemaType(name = "anyURI")
|
||||
protected String encoding;
|
||||
|
||||
/**
|
||||
* Gets the value of the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getContent().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link Object }
|
||||
* {@link Element }
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getContent() {
|
||||
if (content == null) {
|
||||
content = new ArrayList<Object>();
|
||||
content = new ArrayList<>();
|
||||
}
|
||||
return this.content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the id property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the id property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setId(String value) {
|
||||
this.id = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the mimeType property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getMimeType() {
|
||||
return mimeType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the mimeType property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setMimeType(String value) {
|
||||
this.mimeType = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the encoding property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getEncoding() {
|
||||
return encoding;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the encoding property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setEncoding(String value) {
|
||||
this.encoding = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
|
||||
/**
|
||||
* <p>Java class for Ownership.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
* <p>
|
||||
* <pre>
|
||||
@ -27,7 +27,6 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
@XmlType(name = "Ownership", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd")
|
||||
@XmlEnum
|
||||
@ -35,31 +34,22 @@ public enum Ownership {
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Determines the relative strength of ownership of the target
|
||||
* piece of software.
|
||||
*
|
||||
*
|
||||
* Determines the relative strength of ownership of the target
|
||||
* piece of software.
|
||||
*/
|
||||
@XmlEnumValue("abandon")
|
||||
ABANDON("abandon"),
|
||||
|
||||
/**
|
||||
*
|
||||
* If this is uninstalled, then the [Link]'d software should be removed
|
||||
* too.
|
||||
*
|
||||
*
|
||||
* If this is uninstalled, then the [Link]'d software should be removed
|
||||
* too.
|
||||
*/
|
||||
@XmlEnumValue("private")
|
||||
PRIVATE("private"),
|
||||
|
||||
/**
|
||||
*
|
||||
* If this is uninstalled, then the [Link]'d software should be removed
|
||||
* if nobody else is sharing it
|
||||
*
|
||||
*
|
||||
* If this is uninstalled, then the [Link]'d software should be removed
|
||||
* if nobody else is sharing it
|
||||
*/
|
||||
@XmlEnumValue("shared")
|
||||
SHARED("shared");
|
||||
@ -69,12 +59,8 @@ public enum Ownership {
|
||||
value = v;
|
||||
}
|
||||
|
||||
public String value() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static Ownership fromValue(String v) {
|
||||
for (Ownership c: Ownership.values()) {
|
||||
for (Ownership c : Ownership.values()) {
|
||||
if (c.value.equals(v)) {
|
||||
return c;
|
||||
}
|
||||
@ -82,4 +68,8 @@ public enum Ownership {
|
||||
throw new IllegalArgumentException(v);
|
||||
}
|
||||
|
||||
public String value() {
|
||||
return value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.JAXBElement;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
@ -19,12 +17,15 @@ import jakarta.xml.bind.annotation.XmlElementRefs;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for PGPDataType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="PGPDataType">
|
||||
* <complexContent>
|
||||
@ -44,56 +45,52 @@ import org.w3c.dom.Element;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "PGPDataType", propOrder = {
|
||||
"content"
|
||||
"content"
|
||||
})
|
||||
public class PGPDataType {
|
||||
|
||||
@XmlElementRefs({
|
||||
@XmlElementRef(name = "PGPKeyPacket", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "PGPKeyID", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false)
|
||||
@XmlElementRef(name = "PGPKeyPacket", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "PGPKeyID", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false)
|
||||
})
|
||||
@XmlAnyElement(lax = true)
|
||||
protected List<Object> content;
|
||||
|
||||
/**
|
||||
* Gets the rest of the content model.
|
||||
*
|
||||
* Gets the rest of the content model.
|
||||
*
|
||||
* <p>
|
||||
* You are getting this "catch-all" property because of the following reason:
|
||||
* The field name "PGPKeyPacket" is used by two different parts of a schema. See:
|
||||
* You are getting this "catch-all" property because of the following reason:
|
||||
* The field name "PGPKeyPacket" is used by two different parts of a schema. See:
|
||||
* line 218 of http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd
|
||||
* line 213 of http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd
|
||||
* <p>
|
||||
* To get rid of this property, apply a property customization to one
|
||||
* of both of the following declarations to change their names:
|
||||
* To get rid of this property, apply a property customization to one
|
||||
* of both of the following declarations to change their names:
|
||||
* Gets the value of the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getContent().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link JAXBElement }{@code <}{@link byte[]}{@code >}
|
||||
* {@link JAXBElement }{@code <}{@link byte[]}{@code >}
|
||||
* {@link Element }
|
||||
* {@link Object }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getContent() {
|
||||
if (content == null) {
|
||||
|
@ -8,18 +8,21 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.math.BigInteger;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for Process complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="Process">
|
||||
* <complexContent>
|
||||
@ -31,66 +34,16 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "Process", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd")
|
||||
public class Process
|
||||
extends Meta
|
||||
{
|
||||
|
||||
extends Meta {
|
||||
@XmlAttribute(name = "name", required = true)
|
||||
protected String name;
|
||||
|
||||
@XmlAttribute(name = "pid")
|
||||
protected BigInteger pid;
|
||||
|
||||
/**
|
||||
* Gets the value of the name property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the name property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setName(String value) {
|
||||
this.name = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the pid property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link BigInteger }
|
||||
*
|
||||
*/
|
||||
public BigInteger getPid() {
|
||||
return pid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the pid property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link BigInteger }
|
||||
*
|
||||
*/
|
||||
public void setPid(BigInteger value) {
|
||||
this.pid = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -12,13 +12,15 @@ import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlElement;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for RSAKeyValueType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="RSAKeyValueType">
|
||||
* <complexContent>
|
||||
@ -31,63 +33,19 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "RSAKeyValueType", propOrder = {
|
||||
"modulus",
|
||||
"exponent"
|
||||
"modulus",
|
||||
"exponent"
|
||||
})
|
||||
public class RSAKeyValueType {
|
||||
|
||||
@XmlElement(name = "Modulus", required = true)
|
||||
protected byte[] modulus;
|
||||
|
||||
@XmlElement(name = "Exponent", required = true)
|
||||
protected byte[] exponent;
|
||||
|
||||
/**
|
||||
* Gets the value of the modulus property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* byte[]
|
||||
*/
|
||||
public byte[] getModulus() {
|
||||
return modulus;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the modulus property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* byte[]
|
||||
*/
|
||||
public void setModulus(byte[] value) {
|
||||
this.modulus = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the exponent property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* byte[]
|
||||
*/
|
||||
public byte[] getExponent() {
|
||||
return exponent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the exponent property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* byte[]
|
||||
*/
|
||||
public void setExponent(byte[] value) {
|
||||
this.exponent = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,13 +17,15 @@ import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for ReferenceType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="ReferenceType">
|
||||
* <complexContent>
|
||||
@ -40,175 +42,37 @@ import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "ReferenceType", propOrder = {
|
||||
"transforms",
|
||||
"digestMethod",
|
||||
"digestValue"
|
||||
"transforms",
|
||||
"digestMethod",
|
||||
"digestValue"
|
||||
})
|
||||
public class ReferenceType {
|
||||
|
||||
@XmlElement(name = "Transforms")
|
||||
protected TransformsType transforms;
|
||||
|
||||
@XmlElement(name = "DigestMethod", required = true)
|
||||
protected DigestMethodType digestMethod;
|
||||
|
||||
@XmlElement(name = "DigestValue", required = true)
|
||||
protected byte[] digestValue;
|
||||
|
||||
@XmlAttribute(name = "Id")
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
@XmlID
|
||||
@XmlSchemaType(name = "ID")
|
||||
protected String id;
|
||||
|
||||
@XmlAttribute(name = "URI")
|
||||
@XmlSchemaType(name = "anyURI")
|
||||
protected String uri;
|
||||
|
||||
@XmlAttribute(name = "Type")
|
||||
@XmlSchemaType(name = "anyURI")
|
||||
protected String type;
|
||||
|
||||
/**
|
||||
* Gets the value of the transforms property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TransformsType }
|
||||
*
|
||||
*/
|
||||
public TransformsType getTransforms() {
|
||||
return transforms;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the transforms property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TransformsType }
|
||||
*
|
||||
*/
|
||||
public void setTransforms(TransformsType value) {
|
||||
this.transforms = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the digestMethod property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link DigestMethodType }
|
||||
*
|
||||
*/
|
||||
public DigestMethodType getDigestMethod() {
|
||||
return digestMethod;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the digestMethod property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link DigestMethodType }
|
||||
*
|
||||
*/
|
||||
public void setDigestMethod(DigestMethodType value) {
|
||||
this.digestMethod = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the digestValue property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* byte[]
|
||||
*/
|
||||
public byte[] getDigestValue() {
|
||||
return digestValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the digestValue property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* byte[]
|
||||
*/
|
||||
public void setDigestValue(byte[] value) {
|
||||
this.digestValue = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the id property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the id property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setId(String value) {
|
||||
this.id = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the uri property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getURI() {
|
||||
return uri;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the uri property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setURI(String value) {
|
||||
this.uri = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the type property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the type property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setType(String value) {
|
||||
this.type = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -12,13 +12,15 @@ import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for Resource complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="Resource">
|
||||
* <complexContent>
|
||||
@ -29,40 +31,13 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "Resource", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd")
|
||||
public class Resource
|
||||
extends Meta
|
||||
{
|
||||
|
||||
extends Meta {
|
||||
@XmlAttribute(name = "type", required = true)
|
||||
protected String type;
|
||||
|
||||
/**
|
||||
* Gets the value of the type property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the type property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setType(String value) {
|
||||
this.type = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlElement;
|
||||
@ -17,12 +15,15 @@ import jakarta.xml.bind.annotation.XmlElements;
|
||||
import jakarta.xml.bind.annotation.XmlSeeAlso;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for ResourceCollection complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="ResourceCollection">
|
||||
* <complexContent>
|
||||
@ -38,52 +39,47 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "ResourceCollection", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", propOrder = {
|
||||
"directoryOrFileOrProcess"
|
||||
"directoryOrFileOrProcess"
|
||||
})
|
||||
@XmlSeeAlso({
|
||||
Evidence.class
|
||||
Evidence.class
|
||||
})
|
||||
public class ResourceCollection
|
||||
extends BaseElement
|
||||
{
|
||||
extends BaseElement {
|
||||
|
||||
@XmlElements({
|
||||
@XmlElement(name = "Directory", type = Directory.class),
|
||||
@XmlElement(name = "File", type = File.class),
|
||||
@XmlElement(name = "Process", type = Process.class),
|
||||
@XmlElement(name = "Resource", type = Resource.class)
|
||||
@XmlElement(name = "Directory", type = Directory.class),
|
||||
@XmlElement(name = "File", type = File.class),
|
||||
@XmlElement(name = "Process", type = Process.class),
|
||||
@XmlElement(name = "Resource", type = Resource.class)
|
||||
})
|
||||
protected List<Meta> directoryOrFileOrProcess;
|
||||
|
||||
/**
|
||||
* Gets the value of the directoryOrFileOrProcess property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the directoryOrFileOrProcess property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getDirectoryOrFileOrProcess().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link Directory }
|
||||
* {@link File }
|
||||
* {@link Process }
|
||||
* {@link Resource }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Meta> getDirectoryOrFileOrProcess() {
|
||||
if (directoryOrFileOrProcess == null) {
|
||||
|
@ -14,13 +14,15 @@ import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
import jakarta.xml.bind.annotation.XmlElement;
|
||||
import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for RetrievalMethodType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="RetrievalMethodType">
|
||||
* <complexContent>
|
||||
@ -34,94 +36,23 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "RetrievalMethodType", propOrder = {
|
||||
"transforms"
|
||||
"transforms"
|
||||
})
|
||||
public class RetrievalMethodType {
|
||||
|
||||
@XmlElement(name = "Transforms")
|
||||
protected TransformsType transforms;
|
||||
|
||||
@XmlAttribute(name = "URI")
|
||||
@XmlSchemaType(name = "anyURI")
|
||||
protected String uri;
|
||||
|
||||
@XmlAttribute(name = "Type")
|
||||
@XmlSchemaType(name = "anyURI")
|
||||
protected String type;
|
||||
|
||||
/**
|
||||
* Gets the value of the transforms property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link TransformsType }
|
||||
*
|
||||
*/
|
||||
public TransformsType getTransforms() {
|
||||
return transforms;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the transforms property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link TransformsType }
|
||||
*
|
||||
*/
|
||||
public void setTransforms(TransformsType value) {
|
||||
this.transforms = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the uri property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getURI() {
|
||||
return uri;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the uri property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setURI(String value) {
|
||||
this.uri = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the type property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the type property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setType(String value) {
|
||||
this.type = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.JAXBElement;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
@ -18,12 +16,15 @@ import jakarta.xml.bind.annotation.XmlElementRef;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for SPKIDataType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="SPKIDataType">
|
||||
* <complexContent>
|
||||
@ -36,12 +37,10 @@ import org.w3c.dom.Element;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "SPKIDataType", propOrder = {
|
||||
"spkiSexpAndAny"
|
||||
"spkiSexpAndAny"
|
||||
})
|
||||
public class SPKIDataType {
|
||||
|
||||
@ -51,27 +50,25 @@ public class SPKIDataType {
|
||||
|
||||
/**
|
||||
* Gets the value of the spkiSexpAndAny property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the spkiSexpAndAny property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getSPKISexpAndAny().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link JAXBElement }{@code <}{@link byte[]}{@code >}
|
||||
* {@link Object }
|
||||
* {@link Element }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getSPKISexpAndAny() {
|
||||
if (spkiSexpAndAny == null) {
|
||||
|
@ -8,9 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.JAXBElement;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
@ -20,13 +17,19 @@ import jakarta.xml.bind.annotation.XmlElementRef;
|
||||
import jakarta.xml.bind.annotation.XmlMixed;
|
||||
import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for SignatureMethodType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="SignatureMethodType">
|
||||
* <complexContent>
|
||||
@ -40,12 +43,10 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "SignatureMethodType", propOrder = {
|
||||
"content"
|
||||
"content"
|
||||
})
|
||||
public class SignatureMethodType {
|
||||
|
||||
@ -53,33 +54,34 @@ public class SignatureMethodType {
|
||||
@XmlMixed
|
||||
@XmlAnyElement(lax = true)
|
||||
protected List<Object> content;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAttribute(name = "Algorithm", required = true)
|
||||
@XmlSchemaType(name = "anyURI")
|
||||
protected String algorithm;
|
||||
|
||||
/**
|
||||
* Gets the value of the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getContent().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
|
||||
* {@link Object }
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getContent() {
|
||||
if (content == null) {
|
||||
@ -87,29 +89,4 @@ public class SignatureMethodType {
|
||||
}
|
||||
return this.content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the algorithm property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getAlgorithm() {
|
||||
return algorithm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the algorithm property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setAlgorithm(String value) {
|
||||
this.algorithm = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
@ -19,13 +17,18 @@ import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for SignaturePropertiesType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="SignaturePropertiesType">
|
||||
* <complexContent>
|
||||
@ -38,17 +41,18 @@ import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "SignaturePropertiesType", propOrder = {
|
||||
"signatureProperty"
|
||||
"signatureProperty"
|
||||
})
|
||||
public class SignaturePropertiesType {
|
||||
|
||||
@XmlElement(name = "SignatureProperty", required = true)
|
||||
protected List<SignaturePropertyType> signatureProperty;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAttribute(name = "Id")
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
@XmlID
|
||||
@ -57,25 +61,23 @@ public class SignaturePropertiesType {
|
||||
|
||||
/**
|
||||
* Gets the value of the signatureProperty property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the signatureProperty property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getSignatureProperty().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link SignaturePropertyType }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<SignaturePropertyType> getSignatureProperty() {
|
||||
if (signatureProperty == null) {
|
||||
@ -83,29 +85,4 @@ public class SignaturePropertiesType {
|
||||
}
|
||||
return this.signatureProperty;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the id property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the id property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setId(String value) {
|
||||
this.id = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAnyElement;
|
||||
@ -20,14 +18,20 @@ import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for SignaturePropertyType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="SignaturePropertyType">
|
||||
* <complexContent>
|
||||
@ -41,21 +45,25 @@ import org.w3c.dom.Element;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "SignaturePropertyType", propOrder = {
|
||||
"content"
|
||||
"content"
|
||||
})
|
||||
public class SignaturePropertyType {
|
||||
|
||||
@Getter(AccessLevel.NONE)
|
||||
@Setter(AccessLevel.NONE)
|
||||
@XmlMixed
|
||||
@XmlAnyElement(lax = true)
|
||||
protected List<Object> content;
|
||||
|
||||
@XmlAttribute(name = "Target", required = true)
|
||||
@XmlSchemaType(name = "anyURI")
|
||||
protected String target;
|
||||
|
||||
@XmlAttribute(name = "Id")
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
@XmlID
|
||||
@ -64,81 +72,30 @@ public class SignaturePropertyType {
|
||||
|
||||
/**
|
||||
* Gets the value of the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getContent().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link Object }
|
||||
* {@link Element }
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getContent() {
|
||||
if (content == null) {
|
||||
content = new ArrayList<Object>();
|
||||
content = new ArrayList<>();
|
||||
}
|
||||
return this.content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the target property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getTarget() {
|
||||
return target;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the target property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setTarget(String value) {
|
||||
this.target = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the id property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the id property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setId(String value) {
|
||||
this.id = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
@ -19,13 +17,19 @@ import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for SignatureType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="SignatureType">
|
||||
* <complexContent>
|
||||
@ -41,155 +45,62 @@ import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "SignatureType", propOrder = {
|
||||
"signedInfo",
|
||||
"signatureValue",
|
||||
"keyInfo",
|
||||
"object"
|
||||
"signedInfo",
|
||||
"signatureValue",
|
||||
"keyInfo",
|
||||
"object"
|
||||
})
|
||||
public class SignatureType {
|
||||
|
||||
@XmlElement(name = "SignedInfo", required = true)
|
||||
protected SignedInfoType signedInfo;
|
||||
|
||||
@XmlElement(name = "SignatureValue", required = true)
|
||||
protected SignatureValueType signatureValue;
|
||||
|
||||
@XmlElement(name = "KeyInfo")
|
||||
protected KeyInfoType keyInfo;
|
||||
|
||||
@Setter(AccessLevel.NONE)
|
||||
@Getter(AccessLevel.NONE)
|
||||
@XmlElement(name = "Object")
|
||||
protected List<ObjectType> object;
|
||||
|
||||
@XmlAttribute(name = "Id")
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
@XmlID
|
||||
@XmlSchemaType(name = "ID")
|
||||
protected String id;
|
||||
|
||||
/**
|
||||
* Gets the value of the signedInfo property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link SignedInfoType }
|
||||
*
|
||||
*/
|
||||
public SignedInfoType getSignedInfo() {
|
||||
return signedInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the signedInfo property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link SignedInfoType }
|
||||
*
|
||||
*/
|
||||
public void setSignedInfo(SignedInfoType value) {
|
||||
this.signedInfo = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the signatureValue property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link SignatureValueType }
|
||||
*
|
||||
*/
|
||||
public SignatureValueType getSignatureValue() {
|
||||
return signatureValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the signatureValue property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link SignatureValueType }
|
||||
*
|
||||
*/
|
||||
public void setSignatureValue(SignatureValueType value) {
|
||||
this.signatureValue = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the keyInfo property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link KeyInfoType }
|
||||
*
|
||||
*/
|
||||
public KeyInfoType getKeyInfo() {
|
||||
return keyInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the keyInfo property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link KeyInfoType }
|
||||
*
|
||||
*/
|
||||
public void setKeyInfo(KeyInfoType value) {
|
||||
this.keyInfo = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the object property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the object property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getObject().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link ObjectType }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<ObjectType> getObject() {
|
||||
if (object == null) {
|
||||
object = new ArrayList<ObjectType>();
|
||||
object = new ArrayList<>();
|
||||
}
|
||||
return this.object;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the id property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the id property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setId(String value) {
|
||||
this.id = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,13 +17,15 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
import jakarta.xml.bind.annotation.XmlValue;
|
||||
import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for SignatureValueType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="SignatureValueType">
|
||||
* <simpleContent>
|
||||
@ -33,67 +35,20 @@ import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
* </simpleContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "SignatureValueType", propOrder = {
|
||||
"value"
|
||||
"value"
|
||||
})
|
||||
public class SignatureValueType {
|
||||
|
||||
@XmlValue
|
||||
protected byte[] value;
|
||||
|
||||
@XmlAttribute(name = "Id")
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
@XmlID
|
||||
@XmlSchemaType(name = "ID")
|
||||
protected String id;
|
||||
|
||||
/**
|
||||
* Gets the value of the value property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* byte[]
|
||||
*/
|
||||
public byte[] getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the value property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* byte[]
|
||||
*/
|
||||
public void setValue(byte[] value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the id property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the id property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setId(String value) {
|
||||
this.id = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
@ -19,13 +17,19 @@ import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for SignedInfoType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="SignedInfoType">
|
||||
* <complexContent>
|
||||
@ -40,128 +44,58 @@ import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "SignedInfoType", propOrder = {
|
||||
"canonicalizationMethod",
|
||||
"signatureMethod",
|
||||
"reference"
|
||||
"canonicalizationMethod",
|
||||
"signatureMethod",
|
||||
"reference"
|
||||
})
|
||||
public class SignedInfoType {
|
||||
|
||||
@XmlElement(name = "CanonicalizationMethod", required = true)
|
||||
protected CanonicalizationMethodType canonicalizationMethod;
|
||||
|
||||
@XmlElement(name = "SignatureMethod", required = true)
|
||||
protected SignatureMethodType signatureMethod;
|
||||
|
||||
@Getter(AccessLevel.NONE)
|
||||
@Setter(AccessLevel.NONE)
|
||||
@XmlElement(name = "Reference", required = true)
|
||||
protected List<ReferenceType> reference;
|
||||
|
||||
@XmlAttribute(name = "Id")
|
||||
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
|
||||
@XmlID
|
||||
@XmlSchemaType(name = "ID")
|
||||
protected String id;
|
||||
|
||||
/**
|
||||
* Gets the value of the canonicalizationMethod property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link CanonicalizationMethodType }
|
||||
*
|
||||
*/
|
||||
public CanonicalizationMethodType getCanonicalizationMethod() {
|
||||
return canonicalizationMethod;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the canonicalizationMethod property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link CanonicalizationMethodType }
|
||||
*
|
||||
*/
|
||||
public void setCanonicalizationMethod(CanonicalizationMethodType value) {
|
||||
this.canonicalizationMethod = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the signatureMethod property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link SignatureMethodType }
|
||||
*
|
||||
*/
|
||||
public SignatureMethodType getSignatureMethod() {
|
||||
return signatureMethod;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the signatureMethod property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link SignatureMethodType }
|
||||
*
|
||||
*/
|
||||
public void setSignatureMethod(SignatureMethodType value) {
|
||||
this.signatureMethod = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the reference property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the reference property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getReference().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link ReferenceType }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<ReferenceType> getReference() {
|
||||
if (reference == null) {
|
||||
reference = new ArrayList<ReferenceType>();
|
||||
reference = new ArrayList<>();
|
||||
}
|
||||
return this.reference;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the id property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the id property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setId(String value) {
|
||||
this.id = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,9 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.JAXBElement;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
@ -24,12 +21,16 @@ import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
|
||||
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for SoftwareIdentity complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="SoftwareIdentity">
|
||||
* <complexContent>
|
||||
@ -56,23 +57,20 @@ import org.w3c.dom.Element;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "SoftwareIdentity", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", propOrder = {
|
||||
"entityOrEvidenceOrLink"
|
||||
"entityOrEvidenceOrLink"
|
||||
})
|
||||
public class SoftwareIdentity
|
||||
extends BaseElement
|
||||
{
|
||||
extends BaseElement {
|
||||
|
||||
@XmlElementRefs({
|
||||
@XmlElementRef(name = "Meta", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "Link", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "Entity", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "Payload", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "Evidence", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", type = JAXBElement.class, required = false)
|
||||
@XmlElementRef(name = "Meta", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "Link", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "Entity", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "Payload", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", type = JAXBElement.class, required = false),
|
||||
@XmlElementRef(name = "Evidence", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd", type = JAXBElement.class, required = false)
|
||||
})
|
||||
@XmlAnyElement(lax = true)
|
||||
protected List<Object> entityOrEvidenceOrLink;
|
||||
@ -99,20 +97,20 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Gets the value of the entityOrEvidenceOrLink property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the entityOrEvidenceOrLink property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getEntityOrEvidenceOrLink().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link JAXBElement }{@code <}{@link SoftwareMeta }{@code >}
|
||||
@ -122,8 +120,6 @@ public class SoftwareIdentity
|
||||
* {@link JAXBElement }{@code <}{@link ResourceCollection }{@code >}
|
||||
* {@link Element }
|
||||
* {@link JAXBElement }{@code <}{@link Evidence }{@code >}
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getEntityOrEvidenceOrLink() {
|
||||
if (entityOrEvidenceOrLink == null) {
|
||||
@ -134,11 +130,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Gets the value of the corpus property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*
|
||||
* @return possible object is
|
||||
* {@link Boolean }
|
||||
*/
|
||||
public boolean isCorpus() {
|
||||
if (corpus == null) {
|
||||
@ -150,11 +144,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Sets the value of the corpus property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*
|
||||
* @param value allowed object is
|
||||
* {@link Boolean }
|
||||
*/
|
||||
public void setCorpus(Boolean value) {
|
||||
this.corpus = value;
|
||||
@ -162,11 +154,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Gets the value of the patch property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*
|
||||
* @return possible object is
|
||||
* {@link Boolean }
|
||||
*/
|
||||
public boolean isPatch() {
|
||||
if (patch == null) {
|
||||
@ -178,11 +168,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Sets the value of the patch property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*
|
||||
* @param value allowed object is
|
||||
* {@link Boolean }
|
||||
*/
|
||||
public void setPatch(Boolean value) {
|
||||
this.patch = value;
|
||||
@ -190,11 +178,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Gets the value of the media property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
* @return possible object is
|
||||
* {@link String }
|
||||
*/
|
||||
public String getMedia() {
|
||||
return media;
|
||||
@ -202,11 +188,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Sets the value of the media property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
* @param value allowed object is
|
||||
* {@link String }
|
||||
*/
|
||||
public void setMedia(String value) {
|
||||
this.media = value;
|
||||
@ -214,11 +198,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Gets the value of the name property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
* @return possible object is
|
||||
* {@link String }
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
@ -226,11 +208,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Sets the value of the name property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
* @param value allowed object is
|
||||
* {@link String }
|
||||
*/
|
||||
public void setName(String value) {
|
||||
this.name = value;
|
||||
@ -238,11 +218,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Gets the value of the supplemental property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*
|
||||
* @return possible object is
|
||||
* {@link Boolean }
|
||||
*/
|
||||
public boolean isSupplemental() {
|
||||
if (supplemental == null) {
|
||||
@ -254,11 +232,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Sets the value of the supplemental property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*
|
||||
* @param value allowed object is
|
||||
* {@link Boolean }
|
||||
*/
|
||||
public void setSupplemental(Boolean value) {
|
||||
this.supplemental = value;
|
||||
@ -266,11 +242,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Gets the value of the tagId property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
* @return possible object is
|
||||
* {@link String }
|
||||
*/
|
||||
public String getTagId() {
|
||||
return tagId;
|
||||
@ -278,11 +252,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Sets the value of the tagId property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
* @param value allowed object is
|
||||
* {@link String }
|
||||
*/
|
||||
public void setTagId(String value) {
|
||||
this.tagId = value;
|
||||
@ -290,11 +262,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Gets the value of the tagVersion property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link BigInteger }
|
||||
*
|
||||
*
|
||||
* @return possible object is
|
||||
* {@link BigInteger }
|
||||
*/
|
||||
public BigInteger getTagVersion() {
|
||||
if (tagVersion == null) {
|
||||
@ -306,11 +276,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Sets the value of the tagVersion property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link BigInteger }
|
||||
*
|
||||
*
|
||||
* @param value allowed object is
|
||||
* {@link BigInteger }
|
||||
*/
|
||||
public void setTagVersion(BigInteger value) {
|
||||
this.tagVersion = value;
|
||||
@ -318,11 +286,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Gets the value of the version property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
* @return possible object is
|
||||
* {@link String }
|
||||
*/
|
||||
public String getVersion() {
|
||||
if (version == null) {
|
||||
@ -334,11 +300,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Sets the value of the version property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
* @param value allowed object is
|
||||
* {@link String }
|
||||
*/
|
||||
public void setVersion(String value) {
|
||||
this.version = value;
|
||||
@ -346,11 +310,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Gets the value of the versionScheme property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
* @return possible object is
|
||||
* {@link String }
|
||||
*/
|
||||
public String getVersionScheme() {
|
||||
if (versionScheme == null) {
|
||||
@ -362,11 +324,9 @@ public class SoftwareIdentity
|
||||
|
||||
/**
|
||||
* Sets the value of the versionScheme property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*
|
||||
* @param value allowed object is
|
||||
* {@link String }
|
||||
*/
|
||||
public void setVersionScheme(String value) {
|
||||
this.versionScheme = value;
|
||||
|
@ -12,13 +12,15 @@ import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for SoftwareMeta complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="SoftwareMeta">
|
||||
* <complexContent>
|
||||
@ -43,404 +45,55 @@ import jakarta.xml.bind.annotation.XmlType;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "SoftwareMeta", namespace = "http://standards.iso.org/iso/19770/-2/2015/schema.xsd")
|
||||
public class SoftwareMeta
|
||||
extends Meta
|
||||
{
|
||||
|
||||
extends Meta {
|
||||
@XmlAttribute(name = "activationStatus")
|
||||
protected String activationStatus;
|
||||
|
||||
@XmlAttribute(name = "channelType")
|
||||
protected String channelType;
|
||||
|
||||
@XmlAttribute(name = "colloquialVersion")
|
||||
protected String colloquialVersion;
|
||||
|
||||
@XmlAttribute(name = "description")
|
||||
protected String description;
|
||||
|
||||
@XmlAttribute(name = "edition")
|
||||
protected String edition;
|
||||
|
||||
@XmlAttribute(name = "entitlementDataRequired")
|
||||
protected Boolean entitlementDataRequired;
|
||||
|
||||
@XmlAttribute(name = "entitlementKey")
|
||||
protected String entitlementKey;
|
||||
|
||||
@XmlAttribute(name = "generator")
|
||||
protected String generator;
|
||||
|
||||
@XmlAttribute(name = "persistentId")
|
||||
protected String persistentId;
|
||||
|
||||
@XmlAttribute(name = "product")
|
||||
protected String product;
|
||||
|
||||
@XmlAttribute(name = "productFamily")
|
||||
protected String productFamily;
|
||||
|
||||
@XmlAttribute(name = "revision")
|
||||
protected String revision;
|
||||
|
||||
@XmlAttribute(name = "summary")
|
||||
protected String summary;
|
||||
|
||||
@XmlAttribute(name = "unspscCode")
|
||||
protected String unspscCode;
|
||||
|
||||
@XmlAttribute(name = "unspscVersion")
|
||||
protected String unspscVersion;
|
||||
|
||||
/**
|
||||
* Gets the value of the activationStatus property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getActivationStatus() {
|
||||
return activationStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the activationStatus property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setActivationStatus(String value) {
|
||||
this.activationStatus = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the channelType property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getChannelType() {
|
||||
return channelType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the channelType property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setChannelType(String value) {
|
||||
this.channelType = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the colloquialVersion property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getColloquialVersion() {
|
||||
return colloquialVersion;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the colloquialVersion property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setColloquialVersion(String value) {
|
||||
this.colloquialVersion = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the description property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the description property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setDescription(String value) {
|
||||
this.description = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the edition property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getEdition() {
|
||||
return edition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the edition property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setEdition(String value) {
|
||||
this.edition = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the entitlementDataRequired property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public Boolean isEntitlementDataRequired() {
|
||||
return entitlementDataRequired;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the entitlementDataRequired property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setEntitlementDataRequired(Boolean value) {
|
||||
this.entitlementDataRequired = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the entitlementKey property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getEntitlementKey() {
|
||||
return entitlementKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the entitlementKey property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setEntitlementKey(String value) {
|
||||
this.entitlementKey = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the generator property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getGenerator() {
|
||||
return generator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the generator property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setGenerator(String value) {
|
||||
this.generator = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the persistentId property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getPersistentId() {
|
||||
return persistentId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the persistentId property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setPersistentId(String value) {
|
||||
this.persistentId = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the product property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getProduct() {
|
||||
return product;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the product property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setProduct(String value) {
|
||||
this.product = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the productFamily property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getProductFamily() {
|
||||
return productFamily;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the productFamily property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setProductFamily(String value) {
|
||||
this.productFamily = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the revision property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getRevision() {
|
||||
return revision;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the revision property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setRevision(String value) {
|
||||
this.revision = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the summary property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getSummary() {
|
||||
return summary;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the summary property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setSummary(String value) {
|
||||
this.summary = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the unspscCode property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getUnspscCode() {
|
||||
return unspscCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the unspscCode property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setUnspscCode(String value) {
|
||||
this.unspscCode = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the unspscVersion property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getUnspscVersion() {
|
||||
return unspscVersion;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the unspscVersion property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setUnspscVersion(String value) {
|
||||
this.unspscVersion = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
package hirs.utils.xjc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jakarta.xml.bind.JAXBElement;
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
@ -19,14 +17,19 @@ import jakarta.xml.bind.annotation.XmlElementRef;
|
||||
import jakarta.xml.bind.annotation.XmlMixed;
|
||||
import jakarta.xml.bind.annotation.XmlSchemaType;
|
||||
import jakarta.xml.bind.annotation.XmlType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for TransformType complex type.
|
||||
*
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="TransformType">
|
||||
* <complexContent>
|
||||
@ -40,12 +43,10 @@ import org.w3c.dom.Element;
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "TransformType", propOrder = {
|
||||
"content"
|
||||
"content"
|
||||
})
|
||||
public class TransformType {
|
||||
|
||||
@ -53,34 +54,35 @@ public class TransformType {
|
||||
@XmlMixed
|
||||
@XmlAnyElement(lax = true)
|
||||
protected List<Object> content;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAttribute(name = "Algorithm", required = true)
|
||||
@XmlSchemaType(name = "anyURI")
|
||||
protected String algorithm;
|
||||
|
||||
/**
|
||||
* Gets the value of the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This accessor method returns a reference to the live list,
|
||||
* not a snapshot. Therefore any modification you make to the
|
||||
* returned list will be present inside the JAXB object.
|
||||
* This is why there is not a <CODE>set</CODE> method for the content property.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For example, to add a new item, do as follows:
|
||||
* <pre>
|
||||
* getContent().add(newItem);
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Objects of the following type(s) are allowed in the list
|
||||
* {@link Element }
|
||||
* {@link String }
|
||||
* {@link JAXBElement }{@code <}{@link String }{@code >}
|
||||
* {@link Object }
|
||||
*
|
||||
*
|
||||
*/
|
||||
public List<Object> getContent() {
|
||||
if (content == null) {
|
||||
@ -88,29 +90,4 @@ public class TransformType {
|
||||
}
|
||||
return this.content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the algorithm property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public String getAlgorithm() {
|
||||
return algorithm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the algorithm property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link String }
|
||||
*
|
||||
*/
|
||||
public void setAlgorithm(String value) {
|
||||
this.algorithm = value;
|
||||
}
|
||||
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user