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

Commit aadb414f authored by Pankaj Kanwar's avatar Pankaj Kanwar Committed by Gerrit Code Review
Browse files

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

parents d9f3a3cf 5aa27928
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
                + "]";
    }
}