1b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom/*
2b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom * Copyright (C) 2011 The Android Open Source Project
3b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom *
4b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom * Licensed under the Apache License, Version 2.0 (the "License");
5b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom * you may not use this file except in compliance with the License.
6b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom * You may obtain a copy of the License at
7b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom *
8b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom *      http://www.apache.org/licenses/LICENSE-2.0
9b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom *
10b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom * Unless required by applicable law or agreed to in writing, software
11b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom * distributed under the License is distributed on an "AS IS" BASIS,
12b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom * See the License for the specific language governing permissions and
14b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom * limitations under the License.
15b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom */
16b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrompackage android.security;
17b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom
18f0ae135049048424bceccb0799b12377181b25f0Zoltan Szatmary-Banimport android.content.pm.ParceledListSlice;
19f0ae135049048424bceccb0799b12377181b25f0Zoltan Szatmary-Ban
20b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom/**
21b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom * Caller is required to ensure that {@link KeyStore#unlock
22b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom * KeyStore.unlock} was successful.
23b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom *
24b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom * @hide
25b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom */
26b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrominterface IKeyChainService {
272627d53f65be672e9a27f735975de1bf3aebfec1Brian Carlstrom    // APIs used by KeyChain
285423e68d5dbe048ec6f042cce52a33f94184e9fbKenny Root    String requestPrivateKey(String alias);
29ab8b84ad3847788d83da557606aa27d4102e6b52Fred Quintana    byte[] getCertificate(String alias);
302627d53f65be672e9a27f735975de1bf3aebfec1Brian Carlstrom
312627d53f65be672e9a27f735975de1bf3aebfec1Brian Carlstrom    // APIs used by CertInstaller
322627d53f65be672e9a27f735975de1bf3aebfec1Brian Carlstrom    void installCaCertificate(in byte[] caCertificate);
332627d53f65be672e9a27f735975de1bf3aebfec1Brian Carlstrom
3426408ccd8e852d947e58021792bfc3b315e5948dBernhard Bauer    // APIs used by DevicePolicyManager
3526408ccd8e852d947e58021792bfc3b315e5948dBernhard Bauer    boolean installKeyPair(in byte[] privateKey, in byte[] userCert, String alias);
3626408ccd8e852d947e58021792bfc3b315e5948dBernhard Bauer
372627d53f65be672e9a27f735975de1bf3aebfec1Brian Carlstrom    // APIs used by Settings
386da00334478df64921b68fcbb45c9d1eef6f35bdBrian Carlstrom    boolean deleteCaCertificate(String alias);
392627d53f65be672e9a27f735975de1bf3aebfec1Brian Carlstrom    boolean reset();
40f0ae135049048424bceccb0799b12377181b25f0Zoltan Szatmary-Ban    ParceledListSlice getUserCaAliases();
41f0ae135049048424bceccb0799b12377181b25f0Zoltan Szatmary-Ban    ParceledListSlice getSystemCaAliases();
42f0ae135049048424bceccb0799b12377181b25f0Zoltan Szatmary-Ban    boolean containsCaAlias(String alias);
43f0ae135049048424bceccb0799b12377181b25f0Zoltan Szatmary-Ban    byte[] getEncodedCaCertificate(String alias, boolean includeDeletedSystem);
44f0ae135049048424bceccb0799b12377181b25f0Zoltan Szatmary-Ban    List<String> getCaCertificateChainAliases(String rootAlias, boolean includeDeletedSystem);
45ab8b84ad3847788d83da557606aa27d4102e6b52Fred Quintana
46ab8b84ad3847788d83da557606aa27d4102e6b52Fred Quintana    // APIs used by KeyChainActivity
47ab8b84ad3847788d83da557606aa27d4102e6b52Fred Quintana    void setGrant(int uid, String alias, boolean value);
48ab8b84ad3847788d83da557606aa27d4102e6b52Fred Quintana    boolean hasGrant(int uid, String alias);
49b9a07c18e678da35b4c2a618b315fa174a21e818Brian Carlstrom}
50