Merge "[Passpoint] Fix credential unique ID calculation" into rvc-dev

This commit is contained in:
Hai Shalom
2020-03-14 14:37:50 +00:00
committed by Android (Google) Code Review
2 changed files with 66 additions and 12 deletions

View File

@@ -1037,18 +1037,7 @@ public final class Credential implements Parcelable {
* @return a Unique identifier for a Credential object
*/
public int getUniqueId() {
int usedCredential;
// Initialize usedCredential based on the credential type of the profile
if (mUserCredential != null) {
usedCredential = 0;
} else if (mCertCredential != null) {
usedCredential = 1;
} else {
usedCredential = 2;
}
return Objects.hash(usedCredential, mRealm);
return Objects.hash(mUserCredential, mCertCredential, mSimCredential, mRealm);
}
@Override

View File

@@ -18,6 +18,7 @@ package android.net.wifi.hotspot2.pps;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import android.net.wifi.EAPConstants;
@@ -551,4 +552,68 @@ public class CredentialTest {
public void validateTwoCertificateDifferent() {
assertFalse(Credential.isX509CertificateEquals(FakeKeys.CA_CERT0, FakeKeys.CA_CERT1));
}
/**
* Verify that unique identifiers are the same for objects with the same credentials
*/
@Test
public void testUniqueIdSameCredentialTypes() throws Exception {
assertEquals(createCredentialWithSimCredential().getUniqueId(),
createCredentialWithSimCredential().getUniqueId());
assertEquals(createCredentialWithCertificateCredential().getUniqueId(),
createCredentialWithCertificateCredential().getUniqueId());
assertEquals(createCredentialWithUserCredential().getUniqueId(),
createCredentialWithUserCredential().getUniqueId());
}
/**
* Verify that unique identifiers are different for each credential
*/
@Test
public void testUniqueIdDifferentForDifferentCredentialTypes() throws Exception {
Credential simCred = createCredentialWithSimCredential();
Credential certCred = createCredentialWithCertificateCredential();
Credential userCred = createCredentialWithUserCredential();
assertNotEquals(simCred.getUniqueId(), userCred.getUniqueId());
assertNotEquals(simCred.getUniqueId(), certCred.getUniqueId());
assertNotEquals(certCred.getUniqueId(), userCred.getUniqueId());
}
/**
* Verify that unique identifiers are different for a credential with different values
*/
@Test
public void testUniqueIdDifferentForSimCredentialsWithDifferentValues() throws Exception {
Credential simCred1 = createCredentialWithSimCredential();
Credential simCred2 = createCredentialWithSimCredential();
simCred2.getSimCredential().setImsi("567890*");
assertNotEquals(simCred1.getUniqueId(), simCred2.getUniqueId());
}
/**
* Verify that unique identifiers are different for a credential with different values
*/
@Test
public void testUniqueIdDifferentForUserCredentialsWithDifferentValues() throws Exception {
Credential userCred1 = createCredentialWithUserCredential();
Credential userCred2 = createCredentialWithUserCredential();
userCred2.getUserCredential().setUsername("anotheruser");
assertNotEquals(userCred1.getUniqueId(), userCred2.getUniqueId());
}
/**
* Verify that unique identifiers are different for a credential with different values
*/
@Test
public void testUniqueIdDifferentForCertCredentialsWithDifferentValues() throws Exception {
Credential certCred1 = createCredentialWithCertificateCredential();
Credential certCred2 = createCredentialWithCertificateCredential();
certCred2.getCertCredential().setCertSha256Fingerprint(
MessageDigest.getInstance("SHA-256").digest(FakeKeys.CA_CERT0.getEncoded()));
assertNotEquals(certCred1.getUniqueId(), certCred2.getUniqueId());
}
}