Java MakeSignature.SignGalargumentException
使用MakeSignature.SignDistached时,使用LUNA HSM 1700将数字签名应用于PDF 请指导我解决这个问题 提前谢谢 方法如下:Java MakeSignature.SignGalargumentException,java,pdf-generation,itext,digital-signature,hsm,Java,Pdf Generation,Itext,Digital Signature,Hsm,使用MakeSignature.SignDistached时,使用LUNA HSM 1700将数字签名应用于PDF 请指导我解决这个问题 提前谢谢 方法如下: public static void Digital_signed(String SRC,String DEST) throws IOException, GeneralSecurityException, DocumentException , Exception{ try { char[] pkcs11PIN
public static void Digital_signed(String SRC,String DEST)
throws IOException, GeneralSecurityException, DocumentException , Exception{
try {
char[] pkcs11PIN = "devicepassword".toCharArray();
Provider p = null;
FileInputStream fis = new FileInputStream(configFileName);
p = new SunPKCS11(fis);
String provide_name =p.getName();
Security.addProvider(p);
KeyStore ks = KeyStore.getInstance("PKCS11","SunPKCS11-Luna");
ks.load(null, pkcs11PIN);
String alias = (String)ks.aliases().nextElement();
PrivateKey pk = (PrivateKey) ks.getKey(alias, pkcs11PIN);
Certificate[] chain = ks.getCertificateChain(alias);
TSAClient tsaClient = null;
for (int i = 0; i < chain.length; i++) {
X509Certificate cert = (X509Certificate)chain[i];
String tsaUrl = CertificateUtil.getTSAURL(cert);
if (tsaUrl != null) {
tsaClient = new TSAClientBouncyCastle(tsaUrl);
break;
}
}
List <CrlClient> crlList = new ArrayList<CrlClient>();
PdfReader reader = new PdfReader(SRC);
FileOutputStream os = new FileOutputStream(DEST);
PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0');
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
appearance.setVisibleSignature(new Rectangle(700, 820, 760, 780), 1, "sig");
ExternalSignature pks = new PrivateKeySignature(pk, DigestAlgorithms.SHA256, provide_name);
ExternalDigest digest = new BouncyCastleDigest();
MakeSignature.signDetached(appearance, digest, pks, chain, crlList, null, tsaClient, 0, CryptoStandard.CMS);
}
catch(Exception e)
{}
finally{ }
}
错误如下:
java.lang.IllegalArgumentException:名称“iText”?5.5.0?2000-2013 iText Group NV AGPL版本AGPL版本AGPL版本AGPL版本AGPL版本AGPL版本AGPL版本AGPL版本AGPL版本“太长143个字符
您使用的iText版本中的Version类有问题。我们现在已经同步了操作,从iText 5.5.3开始,问题应该已经消失了。如果没有:请让我知道,我们将再看一看问题。这是使用iText的AGPL版本所固有的。许可版本不显示此行为。感谢Bruno,没有许可版本是否可以解决此问题?您不使用许可版本的具体原因是什么?这种许可证的成本没有HSM的成本高。再次感谢您的即时回复,您完全正确,我已经向iText销售团队发送了查询。我提出问题的原因是,我希望在购买许可证之前无误地运行代码。我们已经发布了iText 5.5.3,它在AGPL版本中修复了此问题。