以下为部分样例代码:
//初始化时间戳服务器管理器,添加并设置一个默认的时间戳服务器,它将默认使用签名回调用于时间戳签名。
TimeStampServerMgr.initialize();
TimeStampServer timestamp_server = TimeStampServerMgr.addServer(server_name, server_url,
server_username, server_password);
TimeStampServerMgr.setDefaultServer(timestamp_server);
// 假设“signed_pdf_path”表示包含签名的已签名PDF文档。
PDFDoc pdf_doc = new PDFDoc(signed_pdf_path);
pdf_doc.startLoad(null, false, null);
{
// 使用LTVVerifier验证并添加DSS。
LTVVerifier ltv_verifier = new LTVVerifier(pdf_doc, true, true, false, LTVVerifier.e_SignatureCreationTime);
// 设置必要的验证模式。
ltv_verifier.setVerifyMode(LTVVerifier.e_VerifyModeAcrobat);
SignatureVerifyResultArray sig_verify_result_array = ltv_verifier.verify();
for (long i = 0; i < sig_verify_result_array.getSize(); i++) {
//ltv状态在这里是e_LTVStateNotEnable。
int ltv_state = sig_verify_result_array.getAt(i).getLTVState();
if ((sig_verify_result_array.getAt(i).getSignatureState() & Signature.e_StateVerifyValid) ==
Signature.e_StateVerifyValid)
ltv_verifier.addDSS(sig_verify_result_array.getAt(i));
}
}
//将时间戳签名添加为DTS并对其进行签名。“saved_ltv_pdf_path”表示新保存的签名PDF 文件。
PDFPage pdf_page = pdf_doc.getPage(0);
//新的时间戳签名将具有默认的过滤器名称“Adobe”。默认子过滤器名称 “ETSI.RFC3161”。
Signature timestamp_signature = pdf_page.addSignature(new RectF(), "",
Signature.e_SignatureTypeTimeStamp, true);
Progressive sign_progressive = timestamp_signature.startSign("", empty_str.getBytes(),
Signature.e_DigestSHA256, saved_ltv_pdf_path, null, null);
if (sign_progressive.getRateOfProgress() != 100)
sign_progressive.resume();
// 然后使用ltvverify来验证新签名的PDF文件。
PDFDoc check_pdf_doc = new PDFDoc(saved_ltv_pdf_path);
check_pdf_doc.startLoad(null, false, null);
{
// 使用ltvverify进行验证。
LTVVerifier ltv_verifier = new LTVVerifier(pdf_doc, true, true, false, LTVVerifier.e_SignatureCreationTime);
// 设置必要的验证模式。
ltv_verifier.setVerifyMode(LTVVerifier.e_VerifyModeAcrobat);
SignatureVerifyResultArray sig_verify_result_array = ltv_verifier.verify();
for (long i = 0; i < sig_verify_result_array.getSize(); i++) {
//ltv状态在这里是e_LTVStateEnable。
int ltv_state = sig_verify_result_array.getAt(i).getLTVState();
… // 用户可以从SignatureVerifyResult中获取其他信息。
}
}
// 完成所有操作后,释放时间戳服务器管理器。
TimeStampServerMgr::Release();
**完整样例请查看GSDK包中的ltv.java。