Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 717b5bf3 authored by Pankaj Kanwar's avatar Pankaj Kanwar Committed by android-build-merger
Browse files

Merge "Radio Interface changes to pass the encryption object, including the key,to the modem."

am: aadb414f

Change-Id: I2f2189aa6483dfe17fe6ed7f42e8b23166c67444
parents e3bda617 aadb414f
Loading
Loading
Loading
Loading
+21 −5
Original line number Diff line number Diff line
@@ -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
                + "]";
    }
}