Home | History | Annotate | Download | only in security
      1 /*
      2  * Copyright (C) 2009 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 android.security;
     18 
     19 import android.content.ActivityNotFoundException;
     20 import android.content.Context;
     21 import android.content.Intent;
     22 import android.util.Log;
     23 
     24 import java.security.KeyPair;
     25 
     26 /**
     27  * {@hide}
     28  */
     29 public class Credentials {
     30     private static final String LOGTAG = "Credentials";
     31 
     32     public static final String UNLOCK_ACTION = "android.credentials.UNLOCK";
     33 
     34     public static final String INSTALL_ACTION = "android.credentials.INSTALL";
     35 
     36     public static final String SYSTEM_INSTALL_ACTION = "android.credentials.SYSTEM_INSTALL";
     37 
     38     /** Key prefix for CA certificates. */
     39     public static final String CA_CERTIFICATE = "CACERT_";
     40 
     41     /** Key prefix for user certificates. */
     42     public static final String USER_CERTIFICATE = "USRCERT_";
     43 
     44     /** Key prefix for user private keys. */
     45     public static final String USER_PRIVATE_KEY = "USRPKEY_";
     46 
     47     /** Key prefix for VPN. */
     48     public static final String VPN = "VPN_";
     49 
     50     /** Key prefix for WIFI. */
     51     public static final String WIFI = "WIFI_";
     52 
     53     /** Data type for public keys. */
     54     public static final String PUBLIC_KEY = "KEY";
     55 
     56     /** Data type for private keys. */
     57     public static final String PRIVATE_KEY = "PKEY";
     58 
     59     /** Data type for certificates. */
     60     public static final String CERTIFICATE = "CERT";
     61 
     62     /** Data type for PKCS12. */
     63     public static final String PKCS12 = "PKCS12";
     64 
     65     private static Credentials singleton;
     66 
     67     public static Credentials getInstance() {
     68         if (singleton == null) {
     69             singleton = new Credentials();
     70         }
     71         return singleton;
     72     }
     73 
     74     public void unlock(Context context) {
     75         try {
     76             Intent intent = new Intent(UNLOCK_ACTION);
     77             context.startActivity(intent);
     78         } catch (ActivityNotFoundException e) {
     79             Log.w(LOGTAG, e.toString());
     80         }
     81     }
     82 
     83     public void install(Context context, KeyPair pair) {
     84         try {
     85             Intent intent = new Intent(INSTALL_ACTION);
     86             intent.putExtra(PRIVATE_KEY, pair.getPrivate().getEncoded());
     87             intent.putExtra(PUBLIC_KEY, pair.getPublic().getEncoded());
     88             context.startActivity(intent);
     89         } catch (ActivityNotFoundException e) {
     90             Log.w(LOGTAG, e.toString());
     91         }
     92     }
     93 
     94     public void install(Context context, String type, byte[] value) {
     95         try {
     96             Intent intent = new Intent(INSTALL_ACTION);
     97             intent.putExtra(type, value);
     98             context.startActivity(intent);
     99         } catch (ActivityNotFoundException e) {
    100             Log.w(LOGTAG, e.toString());
    101         }
    102     }
    103 
    104     public void installFromSdCard(Context context) {
    105         try {
    106             context.startActivity(new Intent(INSTALL_ACTION));
    107         } catch (ActivityNotFoundException e) {
    108             Log.w(LOGTAG, e.toString());
    109         }
    110     }
    111 }
    112