diff options
| author | 2018-02-27 19:44:20 +0000 | |
|---|---|---|
| committer | 2018-02-27 19:44:20 +0000 | |
| commit | 63775898f6b6b0ec960c815b92ed74a13f6e61bb (patch) | |
| tree | 213e624d3722120d694a3d75892875be91cb0c56 | |
| parent | 8fa73a4b8787ef5bc842a3ca3b47c3bac251a899 (diff) | |
| parent | 5dd87d8827fcfa22ee7a1973c8e73d7354752cf7 (diff) | |
Merge "Add columns for snapshot table"
| -rw-r--r-- | services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbContract.java | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbContract.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbContract.java index 1cb5d91be3ba..8983ec369f55 100644 --- a/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbContract.java +++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbContract.java @@ -70,6 +70,122 @@ class RecoverableKeyStoreDbContract { } /** + * Table holding encrypted snapshots of the recoverable key store. + */ + static class SnapshotsEntry implements BaseColumns { + static final String TABLE_NAME = "snapshots"; + + /** + * The version number of the snapshot. + */ + static final String COLUMN_NAME_VERSION = "version"; + + /** + * The ID of the user whose keystore was snapshotted. + */ + static final String COLUMN_NAME_USER_ID = "user_id"; + + /** + * The UID of the app that owns the snapshot (i.e., the recovery agent). + */ + static final String COLUMN_NAME_UID = "uid"; + + /** + * The maximum number of attempts allowed to attempt to decrypt the recovery key. + */ + static final String COLUMN_NAME_MAX_ATTEMPTS = "max_attempts"; + + /** + * The ID of the counter in the trusted hardware module. + */ + static final String COLUMN_NAME_COUNTER_ID = "counter_id"; + + /** + * Server parameters used to help identify the device (during recovery). + */ + static final String SERVER_PARAMS = "server_params"; + + /** + * The public key of the trusted hardware module. This key has been used to encrypt the + * snapshot, to ensure that it can only be read by the trusted module. + */ + static final String TRUSTED_HARDWARE_PUBLIC_KEY = "thm_public_key"; + + /** + * {@link java.security.cert.CertPath} signing the trusted hardware module to whose public + * key this snapshot is encrypted. + */ + static final String CERT_PATH = "cert_path"; + + /** + * The recovery key, encrypted with the user's lock screen and the trusted hardware module's + * public key. + */ + static final String ENCRYPTED_RECOVERY_KEY = "encrypted_recovery_key"; + } + + /** + * Table holding encrypted keys belonging to a particular snapshot. + */ + static class SnapshotKeysEntry implements BaseColumns { + static final String TABLE_NAME = "snapshot_keys"; + + /** + * ID of the associated snapshot entry in {@link SnapshotsEntry}. + */ + static final String COLUMN_NAME_SNAPSHOT_ID = "snapshot_id"; + + /** + * Alias of the key. + */ + static final String COLUMN_NAME_ALIAS = "alias"; + + /** + * Key material, encrypted with the recovery key from the snapshot. + */ + static final String COLUMN_NAME_ENCRYPTED_BYTES = "encrypted_key_bytes"; + } + + /** + * A layer of protection associated with a snapshot. + */ + static class SnapshotProtectionParams implements BaseColumns { + static final String TABLE_NAME = "snapshot_protection_params"; + + /** + * ID of the associated snapshot entry in {@link SnapshotsEntry}. + */ + static final String COLUMN_NAME_SNAPSHOT_ID = "snapshot_id"; + + /** + * Type of secret used to generate recovery key. One of + * {@link android.security.keystore.recovery.KeyChainProtectionParams#TYPE_LOCKSCREEN} or + * {@link android.security.keystore.recovery.KeyChainProtectionParams#TYPE_CUSTOM_PASSWORD}. + */ + static final String COLUMN_NAME_SECRET_TYPE = "secret_type"; + + /** + * If a lock screen, the type of UI used. One of + * {@link android.security.keystore.recovery.KeyChainProtectionParams#UI_FORMAT_PATTERN}, + * {@link android.security.keystore.recovery.KeyChainProtectionParams#UI_FORMAT_PIN}, or + * {@link android.security.keystore.recovery.KeyChainProtectionParams#UI_FORMAT_PASSWORD}. + */ + static final String COLUMN_NAME_LOCKSCREEN_UI_TYPE = "lock_screen_ui_type"; + + /** + * The algorithm used to derive cryptographic material from the key and salt. One of + * {@link android.security.keystore.recovery.KeyDerivationParams#ALGORITHM_SHA256} or + * {@link android.security.keystore.recovery.KeyDerivationParams#ALGORITHM_ARGON2ID}. + */ + static final String COLUMN_NAME_KEY_DERIVATION_ALGORITHM = "key_derivation_algorithm"; + + /** + * The salt used along with the secret to generate cryptographic material. + */ + static final String COLUMN_NAME_KEY_DERIVATION_SALT = "key_derivation_salt"; + } + + /** * Recoverable KeyStore metadata for a specific user profile. */ static class UserMetadataEntry implements BaseColumns { |