Keystore 2.0 SPI: Fix contract between equals and hashCode 2

This fixes the contract between equals and hashCode in
AndroidKeystorePublicKey. The previous fix made only a reference
comparisson between certificate blobs. In this patch java.util.Arrays is
used to compare and compute the hash of the array.

Bug: 196118021
Test: See following CL.
Change-Id: I2b8b7e740fb377de39fd21f763e15cb00024b2fc
This commit is contained in:
Janis Danisevskis
2021-08-10 17:47:43 -07:00
parent 6297dd2771
commit e36fe6bf46

View File

@@ -23,7 +23,7 @@ import android.system.keystore2.KeyDescriptor;
import android.system.keystore2.KeyMetadata; import android.system.keystore2.KeyMetadata;
import java.security.PublicKey; import java.security.PublicKey;
import java.util.Objects; import java.util.Arrays;
/** /**
* {@link PublicKey} backed by Android Keystore. * {@link PublicKey} backed by Android Keystore.
@@ -62,8 +62,8 @@ public abstract class AndroidKeyStorePublicKey extends AndroidKeyStoreKey implem
int result = 1; int result = 1;
result = prime * result + super.hashCode(); result = prime * result + super.hashCode();
result = prime * result + ((mCertificate == null) ? 0 : mCertificate.hashCode()); result = prime * result + Arrays.hashCode(mCertificate);
result = prime * result + ((mCertificateChain == null) ? 0 : mCertificateChain.hashCode()); result = prime * result + Arrays.hashCode(mCertificateChain);
return result; return result;
} }
@@ -83,7 +83,7 @@ public abstract class AndroidKeyStorePublicKey extends AndroidKeyStoreKey implem
*/ */
final AndroidKeyStorePublicKey other = (AndroidKeyStorePublicKey) obj; final AndroidKeyStorePublicKey other = (AndroidKeyStorePublicKey) obj;
return Objects.equals(mCertificate, other.mCertificate) && Objects.equals(mCertificateChain, return Arrays.equals(mCertificate, other.mCertificate) && Arrays.equals(mCertificateChain,
other.mCertificateChain); other.mCertificateChain);
} }
} }