我编写了一个使用Java提供的数字签名API签署XMl文件的程序 (即,来自javax.xml.crypto.dsig包的类)。但是要签署一个xml文档,必须提供私钥,以便在指定摘要之前创建签名上下文,如下面的语句所示。
DOMSignContext dsc = new DOMSignContext(priv_key, doc.getDocumentElement());
当我将私钥存储在HSM等安全存储中时,我想签署xml。 我有包装类来访问JAVA中的HSM,所以我可以获得私钥的句柄,但不知道如何使用它进行签名。
任何人都可以指导我如何以这种方式签署XML ......
答案 0 :(得分:0)
Oracle提供的PKCS#11提供程序支持签名。您当前可能在包装器类中有一个C样式句柄,但这没用多少。句柄必须位于JCA提供程序中,才能与XML签名类一起使用。并且提供者必须由Oracle提供的代码签名证书签名。
要将私钥与PKCS#11提供程序一起使用,请确保PKCS#11令牌中存在具有相同ID的证书。这样,组合的私钥/证书条目将显示在"PKCS11"
KeyStore
中。您可以使用它来签署XML数据。