Amith Yamasani | 52c489c | 2012-03-28 11:42:42 -0700 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (C) 2012 The Android Open Source Project |
| 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | |
| 17 | package com.android.internal.widget; |
| 18 | |
Dmitry Dementyev | b8b030b | 2017-12-19 11:02:54 -0800 | [diff] [blame] | 19 | import android.app.PendingIntent; |
Adrian Roos | b5e4722 | 2015-08-14 15:53:06 -0700 | [diff] [blame] | 20 | import android.app.trust.IStrongAuthTracker; |
Dmitry Dementyev | 1aa9613 | 2017-12-11 11:33:12 -0800 | [diff] [blame] | 21 | import android.os.Bundle; |
Robert Berry | 81ee34b | 2018-01-23 11:59:59 +0000 | [diff] [blame] | 22 | import android.security.keystore.recovery.WrappedApplicationKey; |
Dmitry Dementyev | 0916e7c | 2018-01-23 13:02:08 -0800 | [diff] [blame] | 23 | import android.security.keystore.recovery.KeyChainSnapshot; |
| 24 | import android.security.keystore.recovery.KeyChainProtectionParams; |
Bo Zhu | 7c1972f | 2018-02-22 21:43:52 -0800 | [diff] [blame] | 25 | import android.security.keystore.recovery.RecoveryCertPath; |
Jorim Jaggi | e8fde5d | 2016-06-30 23:41:37 -0700 | [diff] [blame] | 26 | import com.android.internal.widget.ICheckCredentialProgressCallback; |
Andres Morales | 2397427 | 2015-05-14 22:42:26 -0700 | [diff] [blame] | 27 | import com.android.internal.widget.VerifyCredentialResponse; |
| 28 | |
Dmitry Dementyev | b8b030b | 2017-12-19 11:02:54 -0800 | [diff] [blame] | 29 | import java.util.Map; |
| 30 | |
Amith Yamasani | 52c489c | 2012-03-28 11:42:42 -0700 | [diff] [blame] | 31 | /** {@hide} */ |
| 32 | interface ILockSettings { |
| 33 | void setBoolean(in String key, in boolean value, in int userId); |
| 34 | void setLong(in String key, in long value, in int userId); |
| 35 | void setString(in String key, in String value, in int userId); |
| 36 | boolean getBoolean(in String key, in boolean defaultValue, in int userId); |
| 37 | long getLong(in String key, in long defaultValue, in int userId); |
| 38 | String getString(in String key, in String defaultValue, in int userId); |
Adrian Roos | 7374d3a | 2017-03-31 14:14:53 -0700 | [diff] [blame] | 39 | void setLockCredential(in String credential, int type, in String savedCredential, int requestedQuality, int userId); |
Ricky Wai | 4613fe4 | 2016-05-24 11:11:42 +0100 | [diff] [blame] | 40 | void resetKeyStore(int userId); |
Rubin Xu | 1de89b3 | 2016-11-30 20:03:13 +0000 | [diff] [blame] | 41 | VerifyCredentialResponse checkCredential(in String credential, int type, int userId, |
Jorim Jaggi | e8fde5d | 2016-06-30 23:41:37 -0700 | [diff] [blame] | 42 | in ICheckCredentialProgressCallback progressCallback); |
Rubin Xu | 1de89b3 | 2016-11-30 20:03:13 +0000 | [diff] [blame] | 43 | VerifyCredentialResponse verifyCredential(in String credential, int type, long challenge, int userId); |
| 44 | VerifyCredentialResponse verifyTiedProfileChallenge(String credential, int type, long challenge, int userId); |
Paul Lawrence | 945490c | 2014-03-27 16:37:28 +0000 | [diff] [blame] | 45 | boolean checkVoldPassword(int userId); |
Amith Yamasani | 52c489c | 2012-03-28 11:42:42 -0700 | [diff] [blame] | 46 | boolean havePattern(int userId); |
| 47 | boolean havePassword(int userId); |
Ricky Wai | dc283a8 | 2016-03-24 19:55:08 +0000 | [diff] [blame] | 48 | void setSeparateProfileChallengeEnabled(int userId, boolean enabled, String managedUserPassword); |
| 49 | boolean getSeparateProfileChallengeEnabled(int userId); |
Adrian Roos | b5e4722 | 2015-08-14 15:53:06 -0700 | [diff] [blame] | 50 | void registerStrongAuthTracker(in IStrongAuthTracker tracker); |
| 51 | void unregisterStrongAuthTracker(in IStrongAuthTracker tracker); |
| 52 | void requireStrongAuth(int strongAuthReason, int userId); |
Jim Miller | 4f93c58 | 2016-01-27 19:05:43 -0800 | [diff] [blame] | 53 | void systemReady(); |
Adrian Roos | 4ab7e59 | 2016-04-13 15:38:13 -0700 | [diff] [blame] | 54 | void userPresent(int userId); |
Victor Chang | a0940d3 | 2016-05-16 19:36:08 +0100 | [diff] [blame] | 55 | int getStrongAuthForUser(int userId); |
Rubin Xu | f095f83 | 2017-01-31 15:23:34 +0000 | [diff] [blame] | 56 | |
| 57 | long addEscrowToken(in byte[] token, int userId); |
| 58 | boolean removeEscrowToken(long handle, int userId); |
| 59 | boolean isEscrowTokenActive(long handle, int userId); |
Adrian Roos | 7374d3a | 2017-03-31 14:14:53 -0700 | [diff] [blame] | 60 | boolean setLockCredentialWithToken(String credential, int type, long tokenHandle, |
| 61 | in byte[] token, int requestedQuality, int userId); |
Rubin Xu | f095f83 | 2017-01-31 15:23:34 +0000 | [diff] [blame] | 62 | void unlockUserWithToken(long tokenHandle, in byte[] token, int userId); |
Dmitry Dementyev | 1aa9613 | 2017-12-11 11:33:12 -0800 | [diff] [blame] | 63 | |
Robert Berry | 74928a1 | 2018-01-18 17:49:07 +0000 | [diff] [blame] | 64 | // Keystore RecoveryController methods. |
Dmitry Dementyev | 1aa9613 | 2017-12-11 11:33:12 -0800 | [diff] [blame] | 65 | // {@code ServiceSpecificException} may be thrown to signal an error, which caller can |
Dmitry Dementyev | ed89ea0 | 2018-01-11 13:53:52 -0800 | [diff] [blame] | 66 | // convert to {@code RecoveryManagerException}. |
Dmitry Dementyev | 1429831 | 2018-01-04 15:19:19 -0800 | [diff] [blame] | 67 | void initRecoveryService(in String rootCertificateAlias, in byte[] signedPublicKeyList); |
Dmitry Dementyev | b4fb987 | 2018-01-26 11:49:34 -0800 | [diff] [blame] | 68 | KeyChainSnapshot getKeyChainSnapshot(); |
Robert Berry | cfc990a | 2017-12-22 15:54:30 +0000 | [diff] [blame] | 69 | byte[] generateAndStoreKey(String alias); |
Robert Berry | a3b9947 | 2018-02-23 15:59:02 +0000 | [diff] [blame] | 70 | String generateKey(String alias); |
Bo Zhu | 2c8e538 | 2018-02-26 15:54:25 -0800 | [diff] [blame^] | 71 | String importKey(String alias, in byte[] keyBytes); |
Dmitry Dementyev | 29b9de5 | 2018-01-31 16:09:32 -0800 | [diff] [blame] | 72 | String getKey(String alias); |
Robert Berry | 5daccec | 2018-01-06 19:16:25 +0000 | [diff] [blame] | 73 | void removeKey(String alias); |
Dmitry Dementyev | 1429831 | 2018-01-04 15:19:19 -0800 | [diff] [blame] | 74 | void setSnapshotCreatedPendingIntent(in PendingIntent intent); |
| 75 | Map getRecoverySnapshotVersions(); |
Dmitry Dementyev | 7d8c78a | 2018-01-12 19:14:07 -0800 | [diff] [blame] | 76 | void setServerParams(in byte[] serverParams); |
Robert Berry | bbe02ae | 2018-02-20 19:47:43 +0000 | [diff] [blame] | 77 | void setRecoveryStatus(in String alias, int status); |
Robert Berry | 56f06b4 | 2018-02-23 13:31:32 +0000 | [diff] [blame] | 78 | Map getRecoveryStatus(); |
Dmitry Dementyev | 1429831 | 2018-01-04 15:19:19 -0800 | [diff] [blame] | 79 | void setRecoverySecretTypes(in int[] secretTypes); |
| 80 | int[] getRecoverySecretTypes(); |
| 81 | int[] getPendingRecoverySecretTypes(); |
Dmitry Dementyev | 0916e7c | 2018-01-23 13:02:08 -0800 | [diff] [blame] | 82 | void recoverySecretAvailable(in KeyChainProtectionParams recoverySecret); |
Dmitry Dementyev | 1aa9613 | 2017-12-11 11:33:12 -0800 | [diff] [blame] | 83 | byte[] startRecoverySession(in String sessionId, |
| 84 | in byte[] verifierPublicKey, in byte[] vaultParams, in byte[] vaultChallenge, |
Dmitry Dementyev | 0916e7c | 2018-01-23 13:02:08 -0800 | [diff] [blame] | 85 | in List<KeyChainProtectionParams> secrets); |
Bo Zhu | 7c1972f | 2018-02-22 21:43:52 -0800 | [diff] [blame] | 86 | byte[] startRecoverySessionWithCertPath(in String sessionId, |
| 87 | in RecoveryCertPath verifierCertPath, in byte[] vaultParams, in byte[] vaultChallenge, |
| 88 | in List<KeyChainProtectionParams> secrets); |
Robert Berry | bd4c43c | 2017-12-22 11:35:14 +0000 | [diff] [blame] | 89 | Map/*<String, byte[]>*/ recoverKeys(in String sessionId, in byte[] recoveryKeyBlob, |
Robert Berry | 5f13870 | 2018-01-17 15:18:05 +0000 | [diff] [blame] | 90 | in List<WrappedApplicationKey> applicationKeys); |
Robert Berry | 2bcdad9 | 2018-01-18 12:53:29 +0000 | [diff] [blame] | 91 | void closeSession(in String sessionId); |
Amith Yamasani | 52c489c | 2012-03-28 11:42:42 -0700 | [diff] [blame] | 92 | } |