import android.content.Context;
import android.os.Build;
import android.security.KeyPairGeneratorSpec;
import android.security.keystore.KeyGenParameterSpec;
import android.security.keystore.KeyProperties;
import android.support.annotation.RequiresApi;
import android.util.Base64;
import android.util.Log;
import java.io.IOException;
import java.math.BigInteger;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.Signature;
import java.security.SignatureException;
import java.security.UnrecoverableEntryException;
import java.security.cert.CertificateException;
import java.security.spec.AlgorithmParameterSpec;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.security.auth.x500.X500Principal;
/**
- Created by Administrator on 2017/10/10 0010.
*/
public class KeyStoneUtils {
/**
- 自己给你的别名,方便在keystore中查找秘钥
*/
public static final String SAMPLE_ALIAS = “xiaoGuoKey”;
/**
- 自己给你的别名 就是SAMPLE_ALIAS
*/
private static String mAlias = null;
public static void setAlias(String alias) {
mAlias = alias;
}
/**
-
创建一个公共和私人密钥,并将其存储使用Android密钥存储库中,因此,只有
-
这个应用程序将能够访问键。
-
@param context
-
@throws InvalidAlgorithmParameterException
-
@throws NoSuchProviderException
-
@throws NoSuchAlgorithmException
*/
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
public static void createKeys(Context context) throws InvalidAlgorithmParameterException,
NoSuchProviderException, NoSuchAlgorithmException {
setAlias(SAMPLE_ALIAS);
//创建一个开始和结束时间,有效范围内的密钥对才会生成。
Calendar start = new GregorianCalendar();
Calendar end = new GregorianCalendar();
end.add(Calendar.YEAR, 1);//往后加一年
AlgorithmParameterSpec spec;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
//使用别名来检索的key 。这是一个