您好我正在使用SUN PKCS11实现来执行USB cryptotokens中的PKI证书操作
我为特定的USB令牌创建了一个提供者对象,然后调用
Keystore ks = KeyStore.getInstance(PKCS11_KEYSTORE_TYPE,prov);
然后我加载它
keyStore.load(null,PIN.tocharArray())
PIN是用户输入的特定证书的PIN
现在,当负载由于错误的PIN而失败时,不同的cryptotokens表现不同.当PIN错误时,Keystore :: load会抛出IOException,但是,
例如.
> Watchdata USB令牌首先会弹出一个对话框,其中显示“PIN为
错误. X尝试离开“&然后抛出IOException.
>金雅拓& Fietian不会抛出一个对话框但只抛出一个
IOException异常
我想为所有USB类型显示PIN错误消息,但如果我添加自己的对话框,那么在WatchData上我最终得到2个对话框(1个来自我自己的Watchdata和1).
解决方法
该行为是特定于令牌的,因为标准没有指定驱动程序必须如何表现.因此,显示窗口是您无法控制的.您可以做的最好的事情是联系特定设备的供应商并向他们寻求帮助.