使用KeyStore.saw获取用户证书(字符串前缀)

时间:2012-04-16 14:31:55

标签: android certificate keystore

在此页面上描述了android如何能够选择所有用户证书并在微调器中显示它们... http://source-android.frandroid.com/packages/apps/Settings/src/com/android/settings/vpn2/VpnDialog.java

他们使用方法:

private void loadCertificates(Spinner spinner, String prefix, int firstId, String selected) {
    Context context = getContext();
    String first = (firstId == 0) ? "" : context.getString(firstId);
    String[] certificates = mKeyStore.saw(prefix);

    if (certificates == null || certificates.length == 0) {
        certificates = new String[] {first};
    } else {
        String[] array = new String[certificates.length + 1];
        array[0] = first;
        System.arraycopy(certificates, 0, array, 1, certificates.length);
        certificates = array;
    }

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            context, android.R.layout.simple_spinner_item, certificates);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

    for (int i = 1; i < certificates.length; ++i) {
        if (certificates[i].equals(selected)) {
            spinner.setSelection(i);
            break;
        }
    }
}

通过此电话:

loadCertificates(mIpsecUserCert, Credentials.USER_CERTIFICATE,
            0, mProfile.ipsecUserCert);

现在他们对方法mKeyStore.saw(字符串前缀)使用Credetials.USER_CERTIFICATE

这正是我正在寻找的,但我不能调用方法锯,它也没有在android api中提到...

那么有什么方法可以让我获得相同的结果吗?

密钥库无法区分用户或系统证书,如果我想将所有证书放在下拉列表中,则会花费大量的加载时间。另一种输入证书主题名称并循环通过所有证书直到其正确版本的方式对于非IT人员来说实际上并不切实可行,因此对于普通用户来说它很难处理......

在网上几乎没有关于这个主题的引用,这就是为什么我只在这篇文章中询问google android pro。

三江源

1 个答案:

答案 0 :(得分:0)

这是一个私有API,它不能被第三方应用程序使用。为什么要选择用户证书?您通常需要用户的私钥,KeyChain API支持让用户选择其中一个。