/* Tibisay Movil Copyright (C) 2013 Antonio Araujo (aaraujo@cenditel.gob.ve), Jose Ruiz (jruiz@cenditel.gob.ve), Fundacion Centro Nacional de Desarrollo e Investigacion en Tecnologias Libres - CENDITEL. La Fundación CENDITEL concede permiso para usar, copiar, distribuir y/o modificar este programa, reconociendo el derecho que la humanidad posee al libre acceso al conocimiento, bajo los términos de la licencia de software GPL versión 2.0 de la Free Software Foundation. Este programa se distribuye con la esperanza de que sea util, pero SIN NINGUNA GARANTIA; tampoco las implicitas garantias de MERCANTILIDAD o ADECUACION A UN PROPOSITO PARTICULAR. Para mayor información sobre los términos de la licencia ver el archivo llamado "gpl-2.0.txt" en ingles. */ 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); } }