Credentials.java revision 9b7a3f1a6437605022568cad0b92d5006a2ab391
19b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh/* 29b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * Copyright (C) 2009 The Android Open Source Project 39b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * 49b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * Licensed under the Apache License, Version 2.0 (the "License"); 59b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * you may not use this file except in compliance with the License. 69b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * You may obtain a copy of the License at 79b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * 89b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * http://www.apache.org/licenses/LICENSE-2.0 99b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * 109b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * Unless required by applicable law or agreed to in writing, software 119b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * distributed under the License is distributed on an "AS IS" BASIS, 129b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * See the License for the specific language governing permissions and 149b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * limitations under the License. 159b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh */ 169b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 179b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yehpackage android.security; 189b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 199b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yehimport android.content.ActivityNotFoundException; 209b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yehimport android.content.Context; 219b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yehimport android.content.Intent; 229b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yehimport android.util.Log; 239b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 249b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yehimport java.security.KeyPair; 259b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 269b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh/** 279b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh * {@hide} 289b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh */ 299b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yehpublic class Credentials { 309b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh private static final String LOGTAG = "Credentials"; 319b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh private static final String UNLOCK_ACTION = "android.credentials.UNLOCK"; 329b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh private static final String INSTALL_ACTION = "android.credentials.INSTALL"; 339b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh private static Credentials singleton; 349b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 359b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh /** Key prefix for CA certificates. */ 369b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public static final String CA_CERTIFICATE = "CACERT_"; 379b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 389b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh /** Key prefix for user certificates. */ 399b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public static final String USER_CERTIFICATE = "USRCERT_"; 409b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 419b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh /** Key prefix for user private keys. */ 429b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public static final String USER_PRIVATE_KEY = "USRPKEY_"; 439b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 449b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh /** Key prefix for VPN. */ 459b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public static final String VPN = "VPN_"; 469b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 479b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh /** Key prefix for WIFI. */ 489b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public static final String WIFI = "WIFI_"; 499b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 509b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh /** Data type for public keys. */ 519b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public static final String PUBLIC_KEY = "KEY"; 529b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 539b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh /** Data type for private keys. */ 549b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public static final String PRIVATE_KEY = "PKEY"; 559b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 569b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh /** Data type for certificates. */ 579b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public static final String CERTIFICATE = "CERT"; 589b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 599b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh /** Data type for PKCS12. */ 609b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public static final String PKCS12 = "PKCS12"; 619b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 629b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public static Credentials getInstance() { 639b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh if (singleton == null) { 649b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh singleton = new Credentials(); 659b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh } 669b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh return singleton; 679b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh } 689b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 699b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public void unlock(Context context) { 709b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh try { 719b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh Intent intent = new Intent(UNLOCK_ACTION); 729b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh context.startActivity(intent); 739b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh } catch (ActivityNotFoundException e) { 749b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh Log.w(LOGTAG, e.toString()); 759b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh } 769b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh } 779b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 789b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public void install(Context context, KeyPair pair) { 799b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh try { 809b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh Intent intent = new Intent(INSTALL_ACTION); 819b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh intent.putExtra(PRIVATE_KEY, pair.getPrivate().getEncoded()); 829b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh intent.putExtra(PUBLIC_KEY, pair.getPublic().getEncoded()); 839b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh context.startActivity(intent); 849b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh } catch (ActivityNotFoundException e) { 859b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh Log.w(LOGTAG, e.toString()); 869b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh } 879b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh } 889b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh 899b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh public void install(Context context, String type, byte[] value) { 909b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh try { 919b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh Intent intent = new Intent(INSTALL_ACTION); 929b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh intent.putExtra(type, value); 939b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh context.startActivity(intent); 949b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh } catch (ActivityNotFoundException e) { 959b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh Log.w(LOGTAG, e.toString()); 969b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh } 979b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh } 989b7a3f1a6437605022568cad0b92d5006a2ab391Chia-chi Yeh} 99