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

Commit aa59953a authored by Gil Cukierman's avatar Gil Cukierman Committed by Android (Google) Code Review
Browse files

Merge "Add Null Cipher Getter/Setter Telephony API"

parents 92da4df0 caf1f3d8
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
@@ -17767,4 +17767,58 @@ public class TelephonyManager {
        }
        return TelephonyManager.SIM_STATE_UNKNOWN;
    }
    /**
     * Set the UE's ability to accept/reject null ciphered and null integrity-protected connections.
     *
     * The modem is required to ignore this in case of an emergency call.
     *
     * <p>Requires permission: android.Manifest.MODIFY_PHONE_STATE</p>
     *
     * @param enabled if null ciphered and null integrity protected connections are permitted
     * @throws IllegalStateException if the Telephony process is not currently available
     * @throws SecurityException if the caller does not have the required privileges
     * @throws UnsupportedOperationException if the modem does not support disabling null ciphers.
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    public void setNullCipherAndIntegrityEnabled(boolean enabled) {
        try {
            ITelephony telephony = getITelephony();
            if (telephony != null) {
                telephony.setNullCipherAndIntegrityEnabled(enabled);
            } else {
                throw new IllegalStateException("telephony service is null.");
            }
        } catch (RemoteException ex) {
            Rlog.e(TAG, "setNullCipherAndIntegrityEnabled RemoteException", ex);
            ex.rethrowFromSystemServer();
        }
    }
    /**
     * Get the value of the global preference for null cipher and integriy enablement.
     * Note: This does not return the state of the modem, only the persisted global preference.
     *
     * <p>Requires permission: android.Manifest.READ_PHONE_STATE</p>
     *
     * @throws IllegalStateException if the Telephony process is not currently available
     * @throws SecurityException if the caller does not have the required privileges
     * @throws UnsupportedOperationException if the modem does not support disabling null ciphers.
     * @hide
     */
    @RequiresPermission(Manifest.permission.READ_PHONE_STATE)
    public void isNullCipherAndIntegrityPreferenceEnabled() {
        try {
            ITelephony telephony = getITelephony();
            if (telephony != null) {
                telephony.isNullCipherAndIntegrityPreferenceEnabled();
            } else {
                throw new IllegalStateException("telephony service is null.");
            }
        } catch (RemoteException ex) {
            Rlog.e(TAG, "isNullCipherAndIntegrityPreferenceEnabled RemoteException", ex);
            ex.rethrowFromSystemServer();
        }
    }
}
+22 −0
Original line number Diff line number Diff line
@@ -2636,4 +2636,26 @@ interface ITelephony {
     * @param slotIndex Logical SIM slot index.
     */
    int getSimStateForSlotIndex(int slotIndex);

    /**
     * Set whether the radio is able to connect with null ciphering or integrity
     * algorithms. This is a global setting and will apply to all active subscriptions
     * and all new subscriptions after this.
     *
     * <p>Requires Permission:
     *   {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
     *
     * @param enabled when true, null  cipher and integrity algorithms are allowed.
     * @hide
     */
    void setNullCipherAndIntegrityEnabled(boolean enabled);

    /**
    * Get whether the radio is able to connect with null ciphering or integrity
    * algorithms. Note that this retrieves the phone-global preference and not
    * the state of the radio.
    *
    * @hide
    */
    boolean isNullCipherAndIntegrityPreferenceEnabled();
}