2016-04-01 28 views
1

私のアプリはAndroid 4.0.1以上で動作しています。私はプログラム的にシステム全体の資格ストレージにPKCS12証明書をインストールするには、次のコードを使用します。システムクレデンシャルストレージにインストールされている証明書を確認してください。

Intent intent = KeyChain.createInstallIntent(); 
byte[] p12 = readFile("myCa.p12"); 
intent.putExtra(KeyChain.EXTRA_PKCS12, p12); 
startActivity(intent); 

上記のコードは、それがユーザーの操作を必要とすることの証明書をインストールするシステムダイアログをポップアップし、それはこの時点で結構です。

次に、私は資格ストレージに特定の証明書が既にインストールされているかどうかかを確認することができ、別の機能を実装したいと思います(私は、証明書の名前&エイリアスを知っていると仮定)。私はそれを実装する方法を知りませんか?誰かが私にいくつかの提案をお願いできますか?

(この機能からユーザーの操作がないといいだろう)

答えて

1

私はドロイドの証明書を使用してプレイしたとき、私は(ユーザーがインストールを含む)証明書のリストを取得するには、このコードを使用:

public interface CertificateValidator { 
    boolean valid(X509Certificate cert); 
} 

public boolean findInstalledCertificate(final CertificateValidator validator) { 
    try { 
     final KeyStore ks = KeyStore.getInstance("AndroidCAStore"); 
     if (ks != null) { 
      ks.load(null, null); 
      final Enumeration<String> aliases = ks.aliases(); 
      while (aliases.hasMoreElements()) { 
       final String alias = aliases.nextElement(); 
       final X509Certificate cert = (java.security.cert.X509Certificate) ks.getCertificate(alias); 
       if (validator.valid(cert)) return true; 
      } 
     } 
    } catch (IOException 
      | KeyStoreException 
      | CertificateException 
      | NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
    } 
    return false; 
} 

したがって、次の証明書があなたのものかどうかをvalidメソッドで確認できます。

関連する問題