diff options
author | Pankaj Kanwar <pkanwar@google.com> | 2017-06-13 20:38:46 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-06-13 20:38:46 +0000 |
commit | 8532bc3b595ad0085a1a2608c03a117bee215f1c (patch) | |
tree | fcc8811b24b149295022b7bc611429aaa6c76060 | |
parent | 6d908413bd8893c510fa28f180e896a1f6b696bb (diff) | |
parent | 717b5bf3e001bfa3e3355a16c1e066484797fae0 (diff) |
Merge "Radio Interface changes to pass the encryption object, including the key,to the modem." am: aadb414f02
am: 717b5bf3e0
Change-Id: I8133ca2e269f74dd2c7b8a17f81de24567fcdc2e
-rw-r--r-- | telephony/java/android/telephony/ImsiEncryptionInfo.java | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/telephony/java/android/telephony/ImsiEncryptionInfo.java b/telephony/java/android/telephony/ImsiEncryptionInfo.java index ecb9d25f2745..674bd455cd4a 100644 --- a/telephony/java/android/telephony/ImsiEncryptionInfo.java +++ b/telephony/java/android/telephony/ImsiEncryptionInfo.java @@ -17,6 +17,7 @@ package android.telephony; import android.os.Parcel; import android.os.Parcelable; +import java.util.Date; import android.util.Log; import java.security.KeyFactory; @@ -34,22 +35,31 @@ import java.security.spec.X509EncodedKeySpec; public final class ImsiEncryptionInfo implements Parcelable { private static final String LOG_TAG = "ImsiEncryptionInfo"; - private static final boolean DBG = false; - private final String mcc; private final String mnc; private final PublicKey publicKey; private final String keyIdentifier; private final int keyType; + //Date-Time in UTC when the key will expire. + private final Date expirationTime; + + public ImsiEncryptionInfo(String mcc, String mnc, int keyType, String keyIdentifier, + byte[] key, Date expirationTime) { + this(mcc, mnc, keyType, keyIdentifier, makeKeyObject(key), expirationTime); + } public ImsiEncryptionInfo(String mcc, String mnc, int keyType, String keyIdentifier, - PublicKey publicKey) { + PublicKey publicKey, Date expirationTime) { + // todo need to validate that ImsiEncryptionInfo is being created with the correct params. + // Including validating that the public key is in "X.509" format. This will be done in + // a subsequent CL. this.mcc = mcc; this.mnc = mnc; this.keyType = keyType; this.publicKey = publicKey; this.keyIdentifier = keyIdentifier; + this.expirationTime = expirationTime; } public ImsiEncryptionInfo(Parcel in) { @@ -61,7 +71,7 @@ public final class ImsiEncryptionInfo implements Parcelable { mnc = in.readString(); keyIdentifier = in.readString(); keyType = in.readInt(); - + expirationTime = new Date(in.readLong()); } public String getMnc() { @@ -84,6 +94,10 @@ public final class ImsiEncryptionInfo implements Parcelable { return this.publicKey; } + public Date getExpirationTime() { + return this.expirationTime; + } + private static PublicKey makeKeyObject(byte[] publicKeyBytes) { try { X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(publicKeyBytes); @@ -91,7 +105,7 @@ public final class ImsiEncryptionInfo implements Parcelable { } catch (InvalidKeySpecException | NoSuchAlgorithmException ex) { Log.e(LOG_TAG, "Error makeKeyObject: unable to convert into PublicKey", ex); } - return null; + throw new IllegalArgumentException(); } /** Implement the Parcelable interface */ @@ -122,6 +136,7 @@ public final class ImsiEncryptionInfo implements Parcelable { dest.writeString(mnc); dest.writeString(keyIdentifier); dest.writeInt(keyType); + dest.writeLong(expirationTime.getTime()); } @Override @@ -132,6 +147,7 @@ public final class ImsiEncryptionInfo implements Parcelable { + "publicKey=" + publicKey + ", keyIdentifier=" + keyIdentifier + ", keyType=" + keyType + + ", expirationTime=" + expirationTime + "]"; } } |