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 { 33 @UnsupportedAppUsage setBoolean(in String key, in boolean value, in int userId)34 void setBoolean(in String key, in boolean value, in int userId); 35 @UnsupportedAppUsage setLong(in String key, in long value, in int userId)36 void setLong(in String key, in long value, in int userId); 37 @UnsupportedAppUsage setString(in String key, in String value, in int userId)38 void setString(in String key, in String value, in int userId); 39 @UnsupportedAppUsage getBoolean(in String key, in boolean defaultValue, in int userId)40 boolean getBoolean(in String key, in boolean defaultValue, in int userId); 41 @UnsupportedAppUsage getLong(in String key, in long defaultValue, in int userId)42 long getLong(in String key, in long defaultValue, in int userId); 43 @UnsupportedAppUsage getString(in String key, in String defaultValue, in int userId)44 String getString(in String key, in String defaultValue, in int userId); setLockCredential(in byte[] credential, int type, in byte[] savedCredential, int requestedQuality, int userId, boolean allowUntrustedChange)45 void setLockCredential(in byte[] credential, int type, in byte[] savedCredential, int requestedQuality, int userId, boolean allowUntrustedChange); resetKeyStore(int userId)46 void resetKeyStore(int userId); checkCredential(in byte[] credential, int type, int userId, in ICheckCredentialProgressCallback progressCallback)47 VerifyCredentialResponse checkCredential(in byte[] credential, int type, int userId, 48 in ICheckCredentialProgressCallback progressCallback); verifyCredential(in byte[] credential, int type, long challenge, int userId)49 VerifyCredentialResponse verifyCredential(in byte[] credential, int type, long challenge, int userId); verifyTiedProfileChallenge(in byte[] credential, int type, long challenge, int userId)50 VerifyCredentialResponse verifyTiedProfileChallenge(in byte[] credential, int type, long challenge, int userId); checkVoldPassword(int userId)51 boolean checkVoldPassword(int userId); 52 @UnsupportedAppUsage havePattern(int userId)53 boolean havePattern(int userId); 54 @UnsupportedAppUsage havePassword(int userId)55 boolean havePassword(int userId); getHashFactor(in byte[] currentCredential, int userId)56 byte[] getHashFactor(in byte[] currentCredential, int userId); setSeparateProfileChallengeEnabled(int userId, boolean enabled, in byte[] managedUserPassword)57 void setSeparateProfileChallengeEnabled(int userId, boolean enabled, in byte[] managedUserPassword); getSeparateProfileChallengeEnabled(int userId)58 boolean getSeparateProfileChallengeEnabled(int userId); registerStrongAuthTracker(in IStrongAuthTracker tracker)59 void registerStrongAuthTracker(in IStrongAuthTracker tracker); unregisterStrongAuthTracker(in IStrongAuthTracker tracker)60 void unregisterStrongAuthTracker(in IStrongAuthTracker tracker); requireStrongAuth(int strongAuthReason, int userId)61 void requireStrongAuth(int strongAuthReason, int userId); systemReady()62 void systemReady(); userPresent(int userId)63 void userPresent(int userId); getStrongAuthForUser(int userId)64 int getStrongAuthForUser(int userId); hasPendingEscrowToken(int userId)65 boolean hasPendingEscrowToken(int userId); 66 67 // Keystore RecoveryController methods. 68 // {@code ServiceSpecificException} may be thrown to signal an error, which caller can 69 // convert to {@code RecoveryManagerException}. initRecoveryServiceWithSigFile(in String rootCertificateAlias, in byte[] recoveryServiceCertFile, in byte[] recoveryServiceSigFile)70 void initRecoveryServiceWithSigFile(in String rootCertificateAlias, 71 in byte[] recoveryServiceCertFile, in byte[] recoveryServiceSigFile); getKeyChainSnapshot()72 KeyChainSnapshot getKeyChainSnapshot(); generateKey(String alias)73 String generateKey(String alias); generateKeyWithMetadata(String alias, in byte[] metadata)74 String generateKeyWithMetadata(String alias, in byte[] metadata); importKey(String alias, in byte[] keyBytes)75 String importKey(String alias, in byte[] keyBytes); importKeyWithMetadata(String alias, in byte[] keyBytes, in byte[] metadata)76 String importKeyWithMetadata(String alias, in byte[] keyBytes, in byte[] metadata); getKey(String alias)77 String getKey(String alias); removeKey(String alias)78 void removeKey(String alias); setSnapshotCreatedPendingIntent(in PendingIntent intent)79 void setSnapshotCreatedPendingIntent(in PendingIntent intent); setServerParams(in byte[] serverParams)80 void setServerParams(in byte[] serverParams); setRecoveryStatus(in String alias, int status)81 void setRecoveryStatus(in String alias, int status); getRecoveryStatus()82 Map getRecoveryStatus(); setRecoverySecretTypes(in int[] secretTypes)83 void setRecoverySecretTypes(in int[] secretTypes); getRecoverySecretTypes()84 int[] getRecoverySecretTypes(); startRecoverySessionWithCertPath(in String sessionId, in String rootCertificateAlias, in RecoveryCertPath verifierCertPath, in byte[] vaultParams, in byte[] vaultChallenge, in List<KeyChainProtectionParams> secrets)85 byte[] startRecoverySessionWithCertPath(in String sessionId, in String rootCertificateAlias, 86 in RecoveryCertPath verifierCertPath, in byte[] vaultParams, in byte[] vaultChallenge, 87 in List<KeyChainProtectionParams> secrets); recoverKeyChainSnapshot( in String sessionId, in byte[] recoveryKeyBlob, in List<WrappedApplicationKey> applicationKeys)88 Map/*<String, String>*/ recoverKeyChainSnapshot( 89 in String sessionId, 90 in byte[] recoveryKeyBlob, 91 in List<WrappedApplicationKey> applicationKeys); closeSession(in String sessionId)92 void closeSession(in String sessionId); 93 } 94