IKeystoreService.aidl revision 45ff13ea28005b5af0caa80dbdeb09d49bd73faf
17a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker/**
27a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker * Copyright (c) 2015, The Android Open Source Project
37a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker *
47a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker * Licensed under the Apache License, Version 2.0 (the "License");
57a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker * you may not use this file except in compliance with the License.
67a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker * You may obtain a copy of the License at
77a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker *
87a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker *     http://www.apache.org/licenses/LICENSE-2.0
97a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker *
107a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker * Unless required by applicable law or agreed to in writing, software
117a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker * distributed under the License is distributed on an "AS IS" BASIS,
127a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker * See the License for the specific language governing permissions and
147a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker * limitations under the License.
157a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker */
167a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker
177a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubakerpackage android.security;
187a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker
1945ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubakerimport android.security.keymaster.ExportResult;
2045ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubakerimport android.security.keymaster.KeyCharacteristics;
2145ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubakerimport android.security.keymaster.KeymasterArguments;
2245ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubakerimport android.security.keymaster.OperationResult;
237a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubakerimport android.security.KeystoreArguments;
247a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker
257a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker/**
267a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker * This must be kept manually in sync with system/security/keystore until AIDL
277a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker * can generate both Java and C++ bindings.
287a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker *
297a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker * @hide
307a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker */
317a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubakerinterface IKeystoreService {
327a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int test();
337a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    byte[] get(String name);
347a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int insert(String name, in byte[] item, int uid, int flags);
357a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int del(String name, int uid);
367a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int exist(String name, int uid);
377a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    String[] saw(String namePrefix, int uid);
387a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int reset();
397a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int password(String password);
407a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int lock();
417a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int unlock(String password);
427a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int zero();
437a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int generate(String name, int uid, int keyType, int keySize, int flags,
447a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker        in KeystoreArguments args);
457a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int import_key(String name, in byte[] data, int uid, int flags);
467a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    byte[] sign(String name, in byte[] data);
477a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int verify(String name, in byte[] data, in byte[] signature);
487a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    byte[] get_pubkey(String name);
497a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int del_key(String name, int uid);
507a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int grant(String name, int granteeUid);
517a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int ungrant(String name, int granteeUid);
527a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    long getmtime(String name);
537a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int duplicate(String srcKey, int srcUid, String destKey, int destUid);
547a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int is_hardware_backed(String string);
557a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int clear_uid(long uid);
567a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int reset_uid(int uid);
577a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int sync_uid(int sourceUid, int targetUid);
587a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker    int password_uid(String password, int uid);
5945ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker
6045ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker    // Keymaster 0.4 methods
6145ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker    int addRngEntropy(in byte[] data);
6245ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker    int generateKey(String alias, in KeymasterArguments arguments, int uid, int flags,
6345ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker        out KeyCharacteristics characteristics);
6445ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker    int getKeyCharacteristics(String alias, in byte[] clientId,
6545ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker        in byte[] appId, out KeyCharacteristics characteristics);
6645ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker    int importKey(String alias, in KeymasterArguments arguments, int format,
6745ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker        in byte[] keyData, int uid, int flags, out KeyCharacteristics characteristics);
6845ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker    ExportResult exportKey(String alias, int format, in byte[] clientId, in byte[] appId);
6945ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker    OperationResult begin(IBinder appToken, String alias, int purpose, boolean pruneable,
7045ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker        in KeymasterArguments params, out KeymasterArguments operationParams);
7145ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker    OperationResult update(IBinder token, in KeymasterArguments params, in byte[] input);
7245ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker    OperationResult finish(IBinder token, in KeymasterArguments params, in byte[] signature);
7345ff13ea28005b5af0caa80dbdeb09d49bd73fafChad Brubaker    int abort(IBinder handle);
747a2c973db7756a60f1cdd6cf67411115c1576081Chad Brubaker}
75