package ve.gob.cenditel.tibisaymovil; import java.security.PrivateKey; import java.security.cert.X509Certificate; import android.annotation.SuppressLint; import android.content.Context; import android.security.KeyChain; import android.security.KeyChainAliasCallback; import android.security.KeyChainException; @SuppressLint("NewApi") public class AndroidKeyChain extends KeyChainStrategy implements KeyChainAliasCallback { private static final long serialVersionUID = -5618428393037452012L; private static Context context; private AndroidKeyChain() {} public static AndroidKeyChain getInstance() { if (KeyChainStrategy.theInstance == null) { KeyChainStrategy.theInstance = new AndroidKeyChain(); } return (AndroidKeyChain) KeyChainStrategy.theInstance; } @Override public void setClientActivity(KeyChainClientActivity activity) { super.setClientActivity(activity); AndroidKeyChain.context = activity.getApplicationContext(); } @Override public void choosePrivateKeyAlias() { KeyChain.choosePrivateKeyAlias(KeyChainStrategy.activity, this, null, null, null, -1, null); } @Override public void choosePrivateKeyList() { KeyChain.choosePrivateKeyAlias(KeyChainStrategy.activity, this, null, null, null, -1, null); } @Override public X509Certificate[] getCertificateChain(String alias) throws InterruptedException, KeystoreException { try { return KeyChain.getCertificateChain(AndroidKeyChain.context, alias); } catch (KeyChainException e) { throw new KeystoreException(e); } } @Override public PrivateKey getPrivateKey(String alias) throws InterruptedException, KeystoreException { try { return KeyChain.getPrivateKey(AndroidKeyChain.context, alias); } catch (KeyChainException e) { throw new KeystoreException(e); } } //TODO: @Override public int deleteCertificate(String alias) throws KeystoreException{ /* try { KeyStore trusted = getKeystore(); trusted.deleteEntry(alias); } catch (Exception e) { throw new KeystoreException(e); } */ return 0; } @Override public void alias(String alias) { KeyChainStrategy.activity.setAlias(alias); } }