Merge "Switch Android Keystore sample code to new API." into mnc-dev
This commit is contained in:
@@ -23,7 +23,8 @@ import android.content.Context;
|
|||||||
import android.database.DataSetObserver;
|
import android.database.DataSetObserver;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.security.KeyPairGeneratorSpec;
|
import android.security.keystore.KeyGenParameterSpec;
|
||||||
|
import android.security.keystore.KeyProperties;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -55,8 +56,6 @@ import java.security.SignatureException;
|
|||||||
import java.security.UnrecoverableEntryException;
|
import java.security.UnrecoverableEntryException;
|
||||||
import java.security.cert.CertificateException;
|
import java.security.cert.CertificateException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -305,24 +304,18 @@ public class KeyStoreUsage extends Activity {
|
|||||||
try {
|
try {
|
||||||
// BEGIN_INCLUDE(generate)
|
// BEGIN_INCLUDE(generate)
|
||||||
/*
|
/*
|
||||||
* Generate a new entry in the KeyStore by using the
|
* Generate a new EC key pair entry in the Android Keystore by
|
||||||
* KeyPairGenerator API. We have to specify the attributes for a
|
* using the KeyPairGenerator API. The private key can only be
|
||||||
* self-signed X.509 certificate here so the KeyStore can attach
|
* used for signing or verification and only with SHA-256 or
|
||||||
* the public key part to it. It can be replaced later with a
|
* SHA-512 as the message digest.
|
||||||
* certificate signed by a Certificate Authority (CA) if needed.
|
|
||||||
*/
|
*/
|
||||||
Calendar cal = Calendar.getInstance();
|
KeyPairGenerator kpg = KeyPairGenerator.getInstance(
|
||||||
Date now = cal.getTime();
|
KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore");
|
||||||
cal.add(Calendar.YEAR, 1);
|
kpg.initialize(new KeyGenParameterSpec.Builder(
|
||||||
Date end = cal.getTime();
|
alias,
|
||||||
|
KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
|
||||||
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
|
.setDigests(KeyProperties.DIGEST_SHA256,
|
||||||
kpg.initialize(new KeyPairGeneratorSpec.Builder(getApplicationContext())
|
KeyProperties.DIGEST_SHA512)
|
||||||
.setAlias(alias)
|
|
||||||
.setStartDate(now)
|
|
||||||
.setEndDate(end)
|
|
||||||
.setSerialNumber(BigInteger.valueOf(1))
|
|
||||||
.setSubject(new X500Principal("CN=test1"))
|
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
KeyPair kp = kpg.generateKeyPair();
|
KeyPair kp = kpg.generateKeyPair();
|
||||||
@@ -371,7 +364,7 @@ public class KeyStoreUsage extends Activity {
|
|||||||
Log.w(TAG, "Not an instance of a PrivateKeyEntry");
|
Log.w(TAG, "Not an instance of a PrivateKeyEntry");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Signature s = Signature.getInstance("SHA256withRSA");
|
Signature s = Signature.getInstance("SHA256withECDSA");
|
||||||
s.initSign(((PrivateKeyEntry) entry).getPrivateKey());
|
s.initSign(((PrivateKeyEntry) entry).getPrivateKey());
|
||||||
s.update(data);
|
s.update(data);
|
||||||
byte[] signature = s.sign();
|
byte[] signature = s.sign();
|
||||||
@@ -442,7 +435,7 @@ public class KeyStoreUsage extends Activity {
|
|||||||
Log.w(TAG, "Not an instance of a PrivateKeyEntry");
|
Log.w(TAG, "Not an instance of a PrivateKeyEntry");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Signature s = Signature.getInstance("SHA256withRSA");
|
Signature s = Signature.getInstance("SHA256withECDSA");
|
||||||
s.initVerify(((PrivateKeyEntry) entry).getCertificate());
|
s.initVerify(((PrivateKeyEntry) entry).getCertificate());
|
||||||
s.update(data);
|
s.update(data);
|
||||||
boolean valid = s.verify(signature);
|
boolean valid = s.verify(signature);
|
||||||
|
|||||||
Reference in New Issue
Block a user