自动将签名从USB令牌导入PDF?

时间:2013-01-22 11:45:42

标签: java pdf digital-signature

我想买third party digital signature library和 我想使用客户端证书签署PDF。它只有在我将文件存储在我的电脑中时才有效。

由于我想使用存储在USB令牌中的证书来签署我的PDF,我该怎么做才能实现这一目标?

这里我有第三方代码,他们正在使用DLL文件 C:\Windows\System32\cmP11.dll,但我的系统中没有它。以下代码中该文件的任务是什么?

private static void signatureWithToken() {

  // specify document to sign
  PdfDocument pdfDocument = new PdfDocument("sample.pdf");

  // specify info to find a key on the token
  String tokenLibraryFilename = "C:\\Windows\\System32\\cmP11.dll";  // path to token PKCS#11 library
  String tokenPin = "7777";  // token PIN
  // key alias on the token,
  // if null the first found key will be used
  String tokenKeyAlias = "Key Alias";
  SigningData signingData = SigningData.fromPkcs11Token(tokenLibraryFilename, 
      tokenKeyAlias, tokenPin);

  // list available aliases
  listAvailableAliases(signingData);

  // specify rectangle for the signature
  signingData.setFieldRectangle(new Rectangle2D.Float(300, 50, 275, 100));

  // specify reason and location
  signingData.setReason("I approve this invoice.");
  signingData.setLocation("Camden");    

  // sign document
  pdfDocument.signDocument(signingData, "sample_(signed_with_token).pdf");      
}

2 个答案:

答案 0 :(得分:3)

您引用的DLL文件是基于代码注释的PKCS#11库。 PKCS#11是用于与令牌和HSMs进行交互的加密API。

如果您的系统上没有该文件,那么您可能缺少特定USB加密令牌的PKCS#11库。我建议您查看制造商的网站,看看他们是否可以与您分享。

答案 1 :(得分:0)

您需要下载并安装加密令牌的驱动程序。这些通常在制造商网站上提供。这些DLL文件是加密令牌的驱动程序。