Skip to content

Commit 2410382

Browse files
committed
WIP: do not unarchive existing RIM bundle during provision
1 parent 5ed6c2d commit 2410382

File tree

1 file changed

+23
-13
lines changed

1 file changed

+23
-13
lines changed

HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/provision/IdentityClaimProcessor.java

+23-13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package hirs.attestationca.persist.provision;
22

3+
import com.fasterxml.jackson.databind.ser.Serializers;
34
import com.google.protobuf.ByteString;
45
import hirs.attestationca.configuration.provisionerTpm2.ProvisionerTpm2;
56
import hirs.attestationca.persist.entity.manager.CertificateRepository;
@@ -375,11 +376,18 @@ private DeviceInfoReport parseDeviceInfo(final ProvisionerTpm2.IdentityClaim cla
375376
support.getHexDecHash().length() - NUM_OF_VARIABLES)));
376377
support.setDeviceName(dv.getNw().getHostname());
377378
this.referenceManifestRepository.save(support);
378-
} else {
379-
log.info("Client provided Support RIM already loaded in database.");
379+
} else if (support.isArchived()) {
380+
List<ReferenceManifest> rims = referenceManifestRepository.findByArchiveFlag(false);
381+
for (ReferenceManifest rim : rims) {
382+
if (rim.isSupport() &&
383+
rim.getTagId().equals(support.getTagId()) &&
384+
rim.getCreateTime().after(support.getCreateTime())) {
385+
support = (SupportReferenceManifest) rim;
386+
}
387+
}
380388
if (support.isArchived()) {
381-
support.restore();
382-
support.resetCreateTime();
389+
throw new Exception("Unable to locate an unarchived support RIM.");
390+
} else {
383391
this.referenceManifestRepository.save(support);
384392
}
385393
}
@@ -408,21 +416,23 @@ private DeviceInfoReport parseDeviceInfo(final ProvisionerTpm2.IdentityClaim cla
408416
swidFile.toByteArray());
409417
dbBaseRim.setDeviceName(dv.getNw().getHostname());
410418
this.referenceManifestRepository.save(dbBaseRim);
411-
} else {
412-
log.info("Client provided Base RIM already loaded in database.");
413-
/**
414-
* Leaving this as is for now, however can there be a condition
415-
* in which the provisioner sends swidtags without support rims?
416-
*/
419+
} else if (dbBaseRim.isArchived()) {
420+
List<ReferenceManifest> rims = referenceManifestRepository.findByArchiveFlag(false);
421+
for (ReferenceManifest rim : rims) {
422+
if (rim.isBase() && rim.getTagId().equals(dbBaseRim.getTagId()) &&
423+
rim.getCreateTime().after(dbBaseRim.getCreateTime())) {
424+
dbBaseRim = (BaseReferenceManifest) rim;
425+
}
426+
}
417427
if (dbBaseRim.isArchived()) {
418-
dbBaseRim.restore();
419-
dbBaseRim.resetCreateTime();
420-
this.referenceManifestRepository.save(dbBaseRim);
428+
throw new Exception("Unable to locate an unarchived base RIM.");
421429
}
422430
}
423431
tagId = dbBaseRim.getTagId();
424432
} catch (UnmarshalException e) {
425433
log.error(e);
434+
} catch (Exception ex) {
435+
log.error(String.format("Failed to load base rim: %s", ex.getMessage()));
426436
}
427437
}
428438
} else {

0 commit comments

Comments
 (0)