Java中的MSCAPI证书选择框; SunMSCAPI?

我正在试验相对较新的SunMSCAPI安全提供程序。我想构建一个简单的applet,提示浏览器弹出证书选择框。我会从那里拿走它。 我用一种方式用谷歌搜索了另一种方式。有什么建议?     
已邀请:
我在类似的东西上工作(挣扎) - 虽然对于非网络应用程序..到目前为止唯一对我有用的解决方案 - 是做一个JNI到C#(用MCPP包装)...     
您可以使用
SunMSCAPI
提供程序来实例化本地客户端Windows密钥库。您只需使用以下代码即可:
KeyStore keyStore = KeyStore.getInstance("Windows-MY",new SunMSCAPI());
keyStore.load(null, null);
或者,如果您愿意,可以将提供程序添加到安全列表,而不是将其传递给
getInstance()
调用:
SunMSCAPI providerMSCAPI = new SunMSCAPI();
Security.addProvider(providerMSCAPI);
KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null);
请注意,它可能已经默认添加到Windows操作系统上的Java安装的安全提供程序列表中。 关于你的问题没有太多细节,所以我给你举个例子来展示所有别名和来自本地客户端windows密钥库的相关证书的主题,以说明这个提供者的用法:
package org.catcert.crypto.keyStoreImpl.windows;

import java.security.KeyStore;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Collections;

import sun.security.mscapi.SunMSCAPI;

public class Example {

    public static void main(String args[]) throws Exception {
        KeyStore keyStore = KeyStore.getInstance("Windows-MY",new SunMSCAPI());
        keyStore.load(null, null);

        // copy to avoid concurrent problems with aliases...
        ArrayList<String> aliases = Collections.list(keyStore.aliases());
        for(String alias : aliases){
            System.out.println("keyEntry alias: " + alias);
            X509Certificate cert = (X509Certificate)keyStore.getCertificate(alias);
            System.out.println("Certificate subject: " +  cert.getSubjectDN());

        }
    }
}
请注意,SunMSCAPI是在java 1.6上引入的,但是在java 1.7上添加了对64位版本的支持。     

要回复问题请先登录注册