Additional updates to clear issues spotbugs have found. While I am

going to put in an exclude for what is left, I am attempting to
resolving some of these that make sense.
This commit is contained in:
Cyrus 2023-12-29 06:28:34 -05:00
parent 39da434f1f
commit e75a4c2128
8 changed files with 56 additions and 36 deletions

View File

@ -2,7 +2,7 @@
<!-- Docs at http://findbugs.sourceforge.net/manual/filter.html --> <!-- Docs at http://findbugs.sourceforge.net/manual/filter.html -->
<FindBugsFilter> <FindBugsFilter>
<Match> <Match>
<Package name="~hirs\.attestationca\.configuration*" /> <Package name="~hirs\.attestationca\.configuration.*" />
</Match> </Match>
<Match> <Match>
<!-- https://github.com/spotbugs/spotbugs/pull/2748 --> <!-- https://github.com/spotbugs/spotbugs/pull/2748 -->

View File

@ -4,7 +4,6 @@ import jakarta.persistence.Column;
import jakarta.persistence.GeneratedValue; import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.MappedSuperclass; import jakarta.persistence.MappedSuperclass;
import lombok.EqualsAndHashCode;
import lombok.Getter; import lombok.Getter;
import lombok.ToString; import lombok.ToString;
import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.ColumnDefault;
@ -19,7 +18,6 @@ import java.util.UUID;
/** /**
* An abstract database entity. * An abstract database entity.
*/ */
@EqualsAndHashCode
@ToString @ToString
@MappedSuperclass @MappedSuperclass
public abstract class AbstractEntity implements Serializable { public abstract class AbstractEntity implements Serializable {

View File

@ -31,7 +31,6 @@ public class Device extends AbstractEntity {
@Column(name = "name", unique = true) @Column(name = "name", unique = true)
private String name; private String name;
@Getter
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER,
optional = true, orphanRemoval = true) optional = true, orphanRemoval = true)
private DeviceInfoReport deviceInfo; private DeviceInfoReport deviceInfo;
@ -74,6 +73,19 @@ public class Device extends AbstractEntity {
} }
} }
/**
* Returns a report with information about this device. This may return null
* if this property has not been set.
*
* @return device info report
*/
public final DeviceInfoReport getDeviceInfo() {
return new DeviceInfoReport(deviceInfo.getNetworkInfo(),
deviceInfo.getOSInfo(), deviceInfo.getFirmwareInfo(),
deviceInfo.getHardwareInfo(), deviceInfo.getTpmInfo(),
deviceInfo.getClientApplicationVersion());
}
/** /**
* Getter for the report time stamp. * Getter for the report time stamp.
* @return a cloned version * @return a cloned version

View File

@ -173,9 +173,10 @@ public class CommonCriteriaMeasures {
private ASN1Boolean plus; private ASN1Boolean plus;
private StrengthOfFunction strengthOfFunction; private StrengthOfFunction strengthOfFunction;
private ASN1ObjectIdentifier profileOid; private ASN1ObjectIdentifier profileOid;
private URIReference profileUri;
private ASN1ObjectIdentifier targetOid; private ASN1ObjectIdentifier targetOid;
private URIReference profileUri;
private URIReference targetUri; private URIReference targetUri;
private ASN1Sequence sequence;
/** /**
* Default constructor. * Default constructor.
@ -187,8 +188,8 @@ public class CommonCriteriaMeasures {
this.plus = ASN1Boolean.FALSE; this.plus = ASN1Boolean.FALSE;
this.strengthOfFunction = null; this.strengthOfFunction = null;
this.profileOid = null; this.profileOid = null;
this.profileUri = null;
this.targetOid = null; this.targetOid = null;
this.profileUri = null;
this.targetUri = null; this.targetUri = null;
} }
@ -198,7 +199,6 @@ public class CommonCriteriaMeasures {
* @throws IllegalArgumentException if there was an error on the parsing * @throws IllegalArgumentException if there was an error on the parsing
*/ */
public CommonCriteriaMeasures(final ASN1Sequence sequence) throws IllegalArgumentException { public CommonCriteriaMeasures(final ASN1Sequence sequence) throws IllegalArgumentException {
//Get all the mandatory values //Get all the mandatory values
int index = 0; int index = 0;
version = DERIA5String.getInstance(sequence.getObjectAt(index)); version = DERIA5String.getInstance(sequence.getObjectAt(index));
@ -261,8 +261,25 @@ public class CommonCriteriaMeasures {
+ "invalid tagged object."); + "invalid tagged object.");
} }
} }
this.sequence = ASN1Sequence.getInstance(sequence);
} }
public URIReference getProfileUri() {
return new URIReference(profileUri.getSequence());
}
public void setProfileUri(final URIReference profileUri) {
this.profileUri = new URIReference(profileUri.getSequence());
}
public URIReference getTargetUri() {
return new URIReference(targetUri.getSequence());
}
public void setTargetUri(final URIReference targetUri) {
this.targetUri = new URIReference(targetUri.getSequence());
}
@Override @Override
public String toString() { public String toString() {

View File

@ -27,6 +27,7 @@ public class URIReference {
private AlgorithmIdentifier hashAlgorithm; private AlgorithmIdentifier hashAlgorithm;
@JsonIgnore @JsonIgnore
private DERBitString hashValue; private DERBitString hashValue;
private ASN1Sequence sequence;
private static final int PLATFORM_PROPERTIES_URI_MAX = 3; private static final int PLATFORM_PROPERTIES_URI_MAX = 3;
private static final int PLATFORM_PROPERTIES_URI_MIN = 1; private static final int PLATFORM_PROPERTIES_URI_MIN = 1;
@ -69,6 +70,8 @@ public class URIReference {
+ sequence.getObjectAt(j).getClass().getName() + " found at index " + j + "."); + sequence.getObjectAt(j).getClass().getName() + " found at index " + j + ".");
} }
} }
this.sequence = ASN1Sequence.getInstance(sequence);
} }
@Override @Override

View File

@ -86,7 +86,7 @@ public class PcrComposite {
throw new NullPointerException("pcrValueList"); throw new NullPointerException("pcrValueList");
} }
this.pcrSelection = pcrSelection; this.pcrSelection = pcrSelection;
this.pcrValueList = pcrValueList; this.pcrValueList = pcrValueList.stream().toList();
} }

View File

@ -20,6 +20,8 @@ import java.util.Random;
*/ */
public class TPM2ProvisionerStateTest { public class TPM2ProvisionerStateTest {
private static final Random random = new Random();
/** /**
* Tests that the values passed to the constructor are equal to the values * Tests that the values passed to the constructor are equal to the values
* returned by the getters. * returned by the getters.
@ -28,11 +30,10 @@ public class TPM2ProvisionerStateTest {
*/ */
@Test @Test
public final void testTPM2ProvisionerState() throws IOException { public final void testTPM2ProvisionerState() throws IOException {
Random rand = new Random();
byte[] nonce = new byte[32]; byte[] nonce = new byte[32];
byte[] identityClaim = new byte[360]; byte[] identityClaim = new byte[360];
rand.nextBytes(nonce); random.nextBytes(nonce);
rand.nextBytes(identityClaim); random.nextBytes(identityClaim);
TPM2ProvisionerState state = new TPM2ProvisionerState(nonce, identityClaim); TPM2ProvisionerState state = new TPM2ProvisionerState(nonce, identityClaim);
@ -48,12 +49,10 @@ public class TPM2ProvisionerStateTest {
*/ */
@Test @Test
public final void testNullNonce() throws IOException { public final void testNullNonce() throws IOException {
Random rand = new Random();
byte[] nonce = null;
byte[] identityClaim = new byte[360]; byte[] identityClaim = new byte[360];
rand.nextBytes(identityClaim); random.nextBytes(identityClaim);
assertThrows(IllegalArgumentException.class, () -> assertThrows(IllegalArgumentException.class, () ->
new TPM2ProvisionerState(nonce, identityClaim)); new TPM2ProvisionerState(null, identityClaim));
} }
/** /**
@ -64,12 +63,10 @@ public class TPM2ProvisionerStateTest {
*/ */
@Test @Test
public final void testNullIdentityClaim() throws IOException { public final void testNullIdentityClaim() throws IOException {
Random rand = new Random();
byte[] nonce = new byte[32]; byte[] nonce = new byte[32];
byte[] identityClaim = null; random.nextBytes(nonce);
rand.nextBytes(nonce);
assertThrows(IllegalArgumentException.class, () -> assertThrows(IllegalArgumentException.class, () ->
new TPM2ProvisionerState(nonce, identityClaim)); new TPM2ProvisionerState(nonce, null));
} }
/** /**
@ -80,11 +77,10 @@ public class TPM2ProvisionerStateTest {
*/ */
@Test @Test
public final void testNonceToSmall() throws IOException { public final void testNonceToSmall() throws IOException {
Random rand = new Random();
byte[] nonce = new byte[7]; byte[] nonce = new byte[7];
byte[] identityClaim = new byte[360]; byte[] identityClaim = new byte[360];
rand.nextBytes(nonce); random.nextBytes(nonce);
rand.nextBytes(identityClaim); random.nextBytes(identityClaim);
assertThrows(IllegalArgumentException.class, () -> assertThrows(IllegalArgumentException.class, () ->
new TPM2ProvisionerState(nonce, identityClaim)); new TPM2ProvisionerState(nonce, identityClaim));
} }
@ -98,11 +94,10 @@ public class TPM2ProvisionerStateTest {
@Test @Test
public final void testGetTPM2ProvisionerStateNominal() throws IOException { public final void testGetTPM2ProvisionerStateNominal() throws IOException {
TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository = mock(TPM2ProvisionerStateRepository.class); TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository = mock(TPM2ProvisionerStateRepository.class);
Random rand = new Random();
byte[] nonce = new byte[32]; byte[] nonce = new byte[32];
byte[] identityClaim = new byte[360]; byte[] identityClaim = new byte[360];
rand.nextBytes(nonce); random.nextBytes(nonce);
rand.nextBytes(identityClaim); random.nextBytes(identityClaim);
DataInputStream dis = new DataInputStream(new ByteArrayInputStream(nonce)); DataInputStream dis = new DataInputStream(new ByteArrayInputStream(nonce));
Long index = dis.readLong(); Long index = dis.readLong();
@ -123,20 +118,17 @@ public class TPM2ProvisionerStateTest {
@Test @Test
public final void testGetTPM2ProvisionerStateNullNonce() throws IOException { public final void testGetTPM2ProvisionerStateNullNonce() throws IOException {
TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository = mock(TPM2ProvisionerStateRepository.class); TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository = mock(TPM2ProvisionerStateRepository.class);
Random rand = new Random();
byte[] nonce = new byte[32]; byte[] nonce = new byte[32];
byte[] identityClaim = new byte[360]; byte[] identityClaim = new byte[360];
rand.nextBytes(nonce); random.nextBytes(nonce);
rand.nextBytes(identityClaim); random.nextBytes(identityClaim);
DataInputStream dis = new DataInputStream(new ByteArrayInputStream(nonce)); DataInputStream dis = new DataInputStream(new ByteArrayInputStream(nonce));
Long index = dis.readLong(); Long index = dis.readLong();
dis.close(); dis.close();
TPM2ProvisionerState value = new TPM2ProvisionerState(nonce, identityClaim); TPM2ProvisionerState value = new TPM2ProvisionerState(nonce, identityClaim);
when(tpm2ProvisionerStateRepository.findByFirstPartOfNonce(index)).thenReturn(value); when(tpm2ProvisionerStateRepository.findByFirstPartOfNonce(index)).thenReturn(value);
TPM2ProvisionerState tpm2ProvisionerState assertThrows(NullPointerException.class, () ->
= TPM2ProvisionerState.getTPM2ProvisionerState(tpm2ProvisionerStateRepository, null); TPM2ProvisionerState.getTPM2ProvisionerState(tpm2ProvisionerStateRepository, null));
assertNull(tpm2ProvisionerState);
} }
/** /**
@ -147,11 +139,10 @@ public class TPM2ProvisionerStateTest {
@Test @Test
public final void testGetTPM2ProvisionerStateNonceTooSmall() throws IOException { public final void testGetTPM2ProvisionerStateNonceTooSmall() throws IOException {
TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository = mock(TPM2ProvisionerStateRepository.class); TPM2ProvisionerStateRepository tpm2ProvisionerStateRepository = mock(TPM2ProvisionerStateRepository.class);
Random rand = new Random();
byte[] nonce = new byte[32]; byte[] nonce = new byte[32];
byte[] identityClaim = new byte[360]; byte[] identityClaim = new byte[360];
rand.nextBytes(nonce); random.nextBytes(nonce);
rand.nextBytes(identityClaim); random.nextBytes(identityClaim);
DataInputStream dis = new DataInputStream(new ByteArrayInputStream(nonce)); DataInputStream dis = new DataInputStream(new ByteArrayInputStream(nonce));
Long index = dis.readLong(); Long index = dis.readLong();
dis.close(); dis.close();

View File

@ -40,7 +40,6 @@ public class TPMInfoTest {
new TPMInfo(TPM_MAKE, VERSION_MAJOR, VERSION_MINOR, new TPMInfo(TPM_MAKE, VERSION_MAJOR, VERSION_MINOR,
VERSION_REV_MAJOR, VERSION_REV_MINOR, VERSION_REV_MAJOR, VERSION_REV_MINOR,
getTestIdentityCertificate()); getTestIdentityCertificate());
String yea = tpmInfo.getTpmMake();
assertEquals(tpmInfo.getTpmMake(), TPM_MAKE); assertEquals(tpmInfo.getTpmMake(), TPM_MAKE);
assertEquals(tpmInfo.getTpmVersionMajor(), VERSION_MAJOR); assertEquals(tpmInfo.getTpmVersionMajor(), VERSION_MAJOR);
assertEquals(tpmInfo.getTpmVersionMinor(), VERSION_MINOR); assertEquals(tpmInfo.getTpmVersionMinor(), VERSION_MINOR);