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 
19 import android.app.PendingIntent;
20 import android.app.trust.IStrongAuthTracker;
21 import android.os.Bundle;
22 import android.security.keystore.recovery.WrappedApplicationKey;
23 import android.security.keystore.recovery.KeyChainSnapshot;
24 import android.security.keystore.recovery.KeyChainProtectionParams;
25 import android.security.keystore.recovery.RecoveryCertPath;
26 import com.android.internal.widget.ICheckCredentialProgressCallback;
27 import com.android.internal.widget.VerifyCredentialResponse;
28 
29 import java.util.Map;
30 
31 /** {@hide} */
32 interface ILockSettings {
setBoolean(in String key, in boolean value, in int userId)33     void setBoolean(in String key, in boolean value, in int userId);
setLong(in String key, in long value, in int userId)34     void setLong(in String key, in long value, in int userId);
setString(in String key, in String value, in int userId)35     void setString(in String key, in String value, in int userId);
getBoolean(in String key, in boolean defaultValue, in int userId)36     boolean getBoolean(in String key, in boolean defaultValue, in int userId);
getLong(in String key, in long defaultValue, in int userId)37     long getLong(in String key, in long defaultValue, in int userId);
getString(in String key, in String defaultValue, in int userId)38     String getString(in String key, in String defaultValue, in int userId);
setLockCredential(in String credential, int type, in String savedCredential, int requestedQuality, int userId)39     void setLockCredential(in String credential, int type, in String savedCredential, int requestedQuality, int userId);
resetKeyStore(int userId)40     void resetKeyStore(int userId);
checkCredential(in String credential, int type, int userId, in ICheckCredentialProgressCallback progressCallback)41     VerifyCredentialResponse checkCredential(in String credential, int type, int userId,
42             in ICheckCredentialProgressCallback progressCallback);
verifyCredential(in String credential, int type, long challenge, int userId)43     VerifyCredentialResponse verifyCredential(in String credential, int type, long challenge, int userId);
verifyTiedProfileChallenge(String credential, int type, long challenge, int userId)44     VerifyCredentialResponse verifyTiedProfileChallenge(String credential, int type, long challenge, int userId);
checkVoldPassword(int userId)45     boolean checkVoldPassword(int userId);
havePattern(int userId)46     boolean havePattern(int userId);
havePassword(int userId)47     boolean havePassword(int userId);
getHashFactor(String currentCredential, int userId)48     byte[] getHashFactor(String currentCredential, int userId);
setSeparateProfileChallengeEnabled(int userId, boolean enabled, String managedUserPassword)49     void setSeparateProfileChallengeEnabled(int userId, boolean enabled, String managedUserPassword);
getSeparateProfileChallengeEnabled(int userId)50     boolean getSeparateProfileChallengeEnabled(int userId);
registerStrongAuthTracker(in IStrongAuthTracker tracker)51     void registerStrongAuthTracker(in IStrongAuthTracker tracker);
unregisterStrongAuthTracker(in IStrongAuthTracker tracker)52     void unregisterStrongAuthTracker(in IStrongAuthTracker tracker);
requireStrongAuth(int strongAuthReason, int userId)53     void requireStrongAuth(int strongAuthReason, int userId);
systemReady()54     void systemReady();
userPresent(int userId)55     void userPresent(int userId);
getStrongAuthForUser(int userId)56     int getStrongAuthForUser(int userId);
57 
58     // Keystore RecoveryController methods.
59     // {@code ServiceSpecificException} may be thrown to signal an error, which caller can
60     // convert to  {@code RecoveryManagerException}.
initRecoveryServiceWithSigFile(in String rootCertificateAlias, in byte[] recoveryServiceCertFile, in byte[] recoveryServiceSigFile)61     void initRecoveryServiceWithSigFile(in String rootCertificateAlias,
62             in byte[] recoveryServiceCertFile, in byte[] recoveryServiceSigFile);
getKeyChainSnapshot()63     KeyChainSnapshot getKeyChainSnapshot();
generateKey(String alias)64     String generateKey(String alias);
importKey(String alias, in byte[] keyBytes)65     String importKey(String alias, in byte[] keyBytes);
getKey(String alias)66     String getKey(String alias);
removeKey(String alias)67     void removeKey(String alias);
setSnapshotCreatedPendingIntent(in PendingIntent intent)68     void setSnapshotCreatedPendingIntent(in PendingIntent intent);
setServerParams(in byte[] serverParams)69     void setServerParams(in byte[] serverParams);
setRecoveryStatus(in String alias, int status)70     void setRecoveryStatus(in String alias, int status);
getRecoveryStatus()71     Map getRecoveryStatus();
setRecoverySecretTypes(in int[] secretTypes)72     void setRecoverySecretTypes(in int[] secretTypes);
getRecoverySecretTypes()73     int[] getRecoverySecretTypes();
startRecoverySessionWithCertPath(in String sessionId, in String rootCertificateAlias, in RecoveryCertPath verifierCertPath, in byte[] vaultParams, in byte[] vaultChallenge, in List<KeyChainProtectionParams> secrets)74     byte[] startRecoverySessionWithCertPath(in String sessionId, in String rootCertificateAlias,
75             in RecoveryCertPath verifierCertPath, in byte[] vaultParams, in byte[] vaultChallenge,
76             in List<KeyChainProtectionParams> secrets);
recoverKeyChainSnapshot( in String sessionId, in byte[] recoveryKeyBlob, in List<WrappedApplicationKey> applicationKeys)77     Map/*<String, String>*/ recoverKeyChainSnapshot(
78             in String sessionId,
79             in byte[] recoveryKeyBlob,
80             in List<WrappedApplicationKey> applicationKeys);
closeSession(in String sessionId)81     void closeSession(in String sessionId);
82 }
83