summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPankaj Kanwar <pkanwar@google.com>2017-06-13 20:38:46 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-06-13 20:38:46 +0000
commit8532bc3b595ad0085a1a2608c03a117bee215f1c (patch)
treefcc8811b24b149295022b7bc611429aaa6c76060
parent6d908413bd8893c510fa28f180e896a1f6b696bb (diff)
parent717b5bf3e001bfa3e3355a16c1e066484797fae0 (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.java26
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
+ "]";
}
}