我正在尝试制作一个使用安全令牌对文件(任何扩展名)进行签名的简单Java应用。
我需要从令牌中读取所有信息并对其进行签名,以便以后可以加载已签名的文件,获取原始文件和所有其他信息。
这是我目前的示例代码,我看到的主要问题是不同的令牌可以具有不同的.dll,我需要类似此的抽象内容。
String pkcs11config = "C:/Documents and Settings/nsaul/Escritorio/Lib/ep2pk11.cfg";
Provider p = new sun.security.pkcs11.SunPKCS11(pkcs11config);
//Use the provider
char [] pin = {'#', '#', '#', '#', '#', '#', '#', '#'};
KeyStore ks = KeyStore.getInstance("PKCS11",p);
ks.load(null, pin);
我已经找到了C#指南,似乎可以满足我的需要,但是Java是该项目的必需项。
https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-access-hardware-encryption-devices
没有可用的抽象,您必须自己编写一个。如果您的要求是支持多个潜在的提供者(由于提供者之间存在细微差异,所以我认为这是different tokens can have different dll
的意思,您应该创建一个类它负责每个操作,并将为所有操作实现定义明确的界面。在其余的代码中,您将只使用该接口,并且可以使用例如依赖注入以根据当前安装使用适当的具体提供程序处理程序]