Merge "Add output channel index mask to USB hal" into mnc-dev
diff --git a/include/hardware/bluetooth.h b/include/hardware/bluetooth.h
index 893f85d..6f95684 100644
--- a/include/hardware/bluetooth.h
+++ b/include/hardware/bluetooth.h
@@ -536,6 +536,12 @@
       * Success indicates that the VSC command was sent to controller
       */
     int (*read_energy_info)();
+
+    /**
+     * Native support for dumpsys function
+     * Function is synchronous and |fd| is owned by caller.
+     */
+    void (*dump)(int fd);
 } bt_interface_t;
 
 /** TODO: Need to add APIs for Service Discovery, Service authorization and
diff --git a/include/hardware/fingerprint.h b/include/hardware/fingerprint.h
index 552b5d7..0598d9f 100644
--- a/include/hardware/fingerprint.h
+++ b/include/hardware/fingerprint.h
@@ -193,12 +193,15 @@
 
     /*
      * Restricts the HAL operation to a set of fingerprints belonging to a
-     * group provided. Gid of 0 signals global operation.
+     * group provided.
+     * The caller must provide a path to a storage location within the user's
+     * data directory.
      *
      * Function return: 0 on success
      *                 -1 if the group does not exist.
      */
-    int (*set_active_group)(struct fingerprint_device *dev, uint32_t gid);
+    int (*set_active_group)(struct fingerprint_device *dev, uint32_t gid,
+                            const char *store_path);
 
     /*
      * Authenticates an operation identifed by operation_id
diff --git a/include/hardware/keymaster1.h b/include/hardware/keymaster1.h
index 4227f57..1d017fd 100644
--- a/include/hardware/keymaster1.h
+++ b/include/hardware/keymaster1.h
@@ -329,43 +329,6 @@
                                                  keymaster_key_characteristics_t** characteristics);
 
     /**
-     * Change a key's authorizations.
-     *
-     * Update the authorizations associated with key_blob to the list specified in new_params, which
-     * must contain the complete set of authorizations desired (hw_enforced and sw_enforced).  Tags
-     * will be added, removed and/or updated only if the appropriate KM_TAG_RESCOPING_ADD and
-     * KM_TAG_RESCOPING_DEL tags exist in the key's authorizations, otherwise
-     * KM_ERROR_INVALID_RESCOPING will be returned and no changes will be made.
-     *
-     * \param[in] dev The keymaster device structure.
-     *
-     * \param[in] new_params The new authorization list to be associated with the key.
-     *
-     * \param[in] new_params_count The number of entries in \p new_params.
-     *
-     * \param[in] key_blob The key to update.
-     *
-     * \param[in] client_id The client ID associated with the key, or NULL if none is associated.
-     *
-     * \param[in] app_data The application data associated with the key, or NULL if none is
-     * associated.
-     *
-     * \param[out] rescoped_key_blob The key blob with the updated authorizations, if successful.
-     * The caller assumes ownership of rescoped_key_blob->key_material and must free() it.
-     *
-     * \param[out] characteristics If not null will contain the new key authorizations, divided into
-     * hw_enforced and sw_enforced lists.  The caller takes ownership and must call
-     * keymaster_free_characteristics() to free.
-     */
-    keymaster_error_t (*rescope)(const struct keymaster1_device* dev,
-                                 const keymaster_key_param_t* new_params, size_t new_params_count,
-                                 const keymaster_key_blob_t* key_blob,
-                                 const keymaster_blob_t* client_id,
-                                 const keymaster_blob_t* app_data,
-                                 keymaster_key_blob_t* rescoped_key_blob,
-                                 keymaster_key_characteristics_t** characteristics);
-
-    /**
      * Imports a key, or key pair, returning a key blob and/or a description of the key.
      *
      * Most key import parameters are defined as keymaster tag/value pairs, provided in "params".
@@ -445,9 +408,8 @@
 
     /**
      * Deletes the key, or key pair, associated with the key blob.  After calling this function it
-     * will be impossible to use the key for any other operations (though rescoped versions may
-     * exist, and if so will be usable).  May be applied to keys from foreign roots of trust (keys
-     * not usable under the current root of trust).
+     * will be impossible to use the key for any other operations.  May be applied to keys from
+     * foreign roots of trust (keys not usable under the current root of trust).
      *
      * This function is optional and should be set to NULL if it is not implemented.
      *
diff --git a/include/hardware/keymaster_defs.h b/include/hardware/keymaster_defs.h
index 9105ee9..8e25e6c 100644
--- a/include/hardware/keymaster_defs.h
+++ b/include/hardware/keymaster_defs.h
@@ -62,14 +62,13 @@
                                              been authenticated.  WARNING: Not recommended. */
     KM_TAG_CALLER_NONCE = KM_BOOL | 8,    /* Allow caller to specify nonce or IV. */
 
-    /* Other hardware-enforced. */
-    KM_TAG_RESCOPING_ADD = KM_ENUM_REP | 101, /* Tags authorized for addition via rescoping. */
-    KM_TAG_RESCOPING_DEL = KM_ENUM_REP | 102, /* Tags authorized for removal via rescoping. */
-    KM_TAG_BLOB_USAGE_REQUIREMENTS = KM_ENUM | 705, /* keymaster_key_blob_usage_requirements_t */
-
     /* Algorithm-specific. */
     KM_TAG_RSA_PUBLIC_EXPONENT = KM_LONG | 200, /* Defaults to 2^16+1 */
 
+    /* Other hardware-enforced. */
+    KM_TAG_BLOB_USAGE_REQUIREMENTS = KM_ENUM | 301, /* keymaster_key_blob_usage_requirements_t */
+    KM_TAG_BOOTLOADER_ONLY = KM_BOOL | 302,         /* Usable only by bootloader */
+
     /*
      * Tags that should be semantically enforced by hardware if possible and will otherwise be
      * enforced by software (keystore).
@@ -279,9 +278,9 @@
  * In the future this list will expand greatly to accommodate asymmetric key import/export.
  */
 typedef enum {
-    KM_KEY_FORMAT_X509 = 0,   /* for public key export */
-    KM_KEY_FORMAT_PKCS8 = 1,  /* for asymmetric key pair import */
-    KM_KEY_FORMAT_RAW = 3,    /* for symmetric key import */
+    KM_KEY_FORMAT_X509 = 0,  /* for public key export */
+    KM_KEY_FORMAT_PKCS8 = 1, /* for asymmetric key pair import */
+    KM_KEY_FORMAT_RAW = 3,   /* for symmetric key import */
 } keymaster_key_format_t;
 
 /**
@@ -335,7 +334,6 @@
     KM_ERROR_UNSUPPORTED_TAG = -39,
     KM_ERROR_INVALID_TAG = -40,
     KM_ERROR_MEMORY_ALLOCATION_FAILED = -41,
-    KM_ERROR_INVALID_RESCOPING = -42,
     KM_ERROR_IMPORT_PARAMETER_MISMATCH = -44,
     KM_ERROR_SECURE_HW_ACCESS_DENIED = -45,
     KM_ERROR_OPERATION_CANCELLED = -46,
@@ -346,7 +344,6 @@
     KM_ERROR_MISSING_NONCE = -51,
     KM_ERROR_INVALID_NONCE = -52,
     KM_ERROR_UNSUPPORTED_CHUNK_LENGTH = -53,
-    KM_ERROR_RESCOPABLE_KEY_NOT_USABLE = -54,
     KM_ERROR_CALLER_NONCE_PROHIBITED = -55,
 
     KM_ERROR_UNIMPLEMENTED = -100,