Loading telephony/java/android/telephony/ImsiEncryptionInfo.java +21 −5 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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) { Loading @@ -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() { Loading @@ -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); Loading @@ -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 */ Loading Loading @@ -122,6 +136,7 @@ public final class ImsiEncryptionInfo implements Parcelable { dest.writeString(mnc); dest.writeString(keyIdentifier); dest.writeInt(keyType); dest.writeLong(expirationTime.getTime()); } @Override Loading @@ -132,6 +147,7 @@ public final class ImsiEncryptionInfo implements Parcelable { + "publicKey=" + publicKey + ", keyIdentifier=" + keyIdentifier + ", keyType=" + keyType + ", expirationTime=" + expirationTime + "]"; } } Loading
telephony/java/android/telephony/ImsiEncryptionInfo.java +21 −5 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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) { Loading @@ -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() { Loading @@ -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); Loading @@ -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 */ Loading Loading @@ -122,6 +136,7 @@ public final class ImsiEncryptionInfo implements Parcelable { dest.writeString(mnc); dest.writeString(keyIdentifier); dest.writeInt(keyType); dest.writeLong(expirationTime.getTime()); } @Override Loading @@ -132,6 +147,7 @@ public final class ImsiEncryptionInfo implements Parcelable { + "publicKey=" + publicKey + ", keyIdentifier=" + keyIdentifier + ", keyType=" + keyType + ", expirationTime=" + expirationTime + "]"; } }