本文整理汇总了Java中org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface类的典型用法代码示例。如果您正苦于以下问题:Java SignatureInterface类的具体用法?Java SignatureInterface怎么用?Java SignatureInterface使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
SignatureInterface类属于org.apache.pdfbox.pdmodel.interactive.digitalsignature包,在下文中一共展示了SignatureInterface类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: sign
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface; //导入依赖的package包/类
/**
* <a href="http://stackoverflow.com/questions/41767351/create-pkcs7-signature-from-file-digest">
* Create pkcs7 signature from file digest
* </a>
* <p>
* A minimal signing frame work merely requiring a {@link SignatureInterface}
* instance.
* </p>
*/
void sign(PDDocument document, OutputStream output, SignatureInterface signatureInterface) throws IOException
{
PDSignature signature = new PDSignature();
signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
signature.setName("Example User");
signature.setLocation("Los Angeles, CA");
signature.setReason("Testing");
signature.setSignDate(Calendar.getInstance());
document.addSignature(signature);
ExternalSigningSupport externalSigning =
document.saveIncrementalForExternalSigning(output);
// invoke external signature service
byte[] cmsSignature = signatureInterface.sign(externalSigning.getContent());
// set signature bytes received from the service
externalSigning.setSignature(cmsSignature);
}
开发者ID:mkl-public,项目名称:testarea-pdfbox2,代码行数:27,代码来源:CreateSignature.java
示例2: testDummySignInMemory
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface; //导入依赖的package包/类
/**
* <a href="http://stackoverflow.com/questions/29123436/how-to-sign-an-inputstream-from-a-pdf-file-with-pdfbox-2-0-0">
* How to sign an InputStream from a PDF file with PDFBox 2.0.0
* </a>
*
* Test the equivalent for PDFBox 1.8.8. Works alright.
*/
@Test
public void testDummySignInMemory() throws IOException, COSVisitorException, SignatureException
{
try ( InputStream sourceStream = getClass().getResourceAsStream("/mkl/testarea/pdfbox1/assembly/document1.pdf");
OutputStream output = new FileOutputStream(new File(RESULT_FOLDER, "document1-with-dummy-sig.pdf")))
{
byte[] input = IOUtils.toByteArray(sourceStream);
output.write(input);
signDetached(input, output, new SignatureInterface()
{
@Override
public byte[] sign(InputStream content) throws SignatureException, IOException
{
return "Test".getBytes();
}
});
}
}
开发者ID:mkl-public,项目名称:testarea-pdfbox1,代码行数:26,代码来源:SignInMemory.java
示例3: signDetached
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface; //导入依赖的package包/类
void signDetached(byte[] pdf, OutputStream output, SignatureInterface signatureInterface)throws IOException, SignatureException, COSVisitorException
{
PDDocument document = PDDocument.load(new ByteArrayInputStream(pdf));
// create signature dictionary
PDSignature signature = new PDSignature();
signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
signature.setName("Example User");
signature.setLocation("Los Angeles, CA");
signature.setReason("Testing");
// TODO extract the above details from the signing certificate? Reason as a parameter?
// the signing date, needed for valid signature
signature.setSignDate(Calendar.getInstance());
// register signature dictionary and sign interface
document.addSignature(signature, signatureInterface);
// write incremental (only for signing purpose)
document.saveIncremental(new ByteArrayInputStream(pdf), output);
}
开发者ID:mkl-public,项目名称:testarea-pdfbox1,代码行数:22,代码来源:SignInMemory.java
示例4: signDocumentAndReturnDigest
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface; //导入依赖的package包/类
private byte[] signDocumentAndReturnDigest(final PAdESSignatureParameters parameters, final byte[] signatureBytes, final OutputStream fileOutputStream,
final PDDocument pdDocument, final PDSignature pdSignature, final DigestAlgorithm digestAlgorithm) throws DSSException {
SignatureOptions options = new SignatureOptions();
try {
final MessageDigest digest = DSSUtils.getMessageDigest(digestAlgorithm);
// register signature dictionary and sign interface
SignatureInterface signatureInterface = new SignatureInterface() {
@Override
public byte[] sign(InputStream content) throws IOException {
byte[] b = new byte[4096];
int count;
while ((count = content.read(b)) > 0) {
digest.update(b, 0, count);
}
return signatureBytes;
}
};
options.setPreferredSignatureSize(parameters.getSignatureSize());
fillImageParameters(pdDocument, parameters, options);
pdDocument.addSignature(pdSignature, signatureInterface, options);
saveDocumentIncrementally(parameters, fileOutputStream, pdDocument);
final byte[] digestValue = digest.digest();
if (LOG.isDebugEnabled()) {
LOG.debug("Digest to be signed: " + Utils.toHex(digestValue));
}
return digestValue;
} catch (IOException e) {
throw new DSSException(e);
} finally {
Utils.closeQuietly(options.getVisualSignature());
}
}
开发者ID:esig,项目名称:dss,代码行数:39,代码来源:PdfBoxSignatureService.java
示例5: addSignature
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
public void addSignature(
final PDSignature _sigObject,
final SignatureInterface _signatureInterface)
throws IOException {
document.addSignature(_sigObject, _signatureInterface);
}
开发者ID:juliusHuelsmann,项目名称:paint,代码行数:10,代码来源:XDocument.java
示例6: addSignatureField
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface; //导入依赖的package包/类
/**
* {@inheritDoc}
* @throws IOException
*/
public void addSignatureField(
final java.util.List<PDSignatureField> _sigFields,
final SignatureInterface _signatureInterface,
final SignatureOptions _options) throws IOException{
document.addSignatureField(
_sigFields, _signatureInterface, _options);
}
开发者ID:juliusHuelsmann,项目名称:paint,代码行数:13,代码来源:XDocument.java
示例7: doSigner
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface; //导入依赖的package包/类
private void doSigner(String imgPDF, final String signedFile) throws Throwable {
ByteArrayInputStream target = new ByteArrayInputStream(Base64.decodeBase64(imgPDF));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Long documentId = Long.parseLong("300");
byte[] buf = new byte[1024];
int n = 0;
while ((n = target.read(buf)) >= 0) {
baos.write(buf, 0, n);
}
byte[] bytes = baos.toByteArray();
InputStream contentForPDF = null;
contentForPDF = new ByteArrayInputStream(bytes);
PDDocument original = PDDocument.load(contentForPDF);
FileOutputStream fos = new FileOutputStream(new File(signedFile));
PDSignature signature = new PDSignature();
signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
Calendar calendar =Calendar.getInstance();
calendar.set(2017, Calendar.NOVEMBER, 6, 11, 25,30);
signature.setSignDate(calendar);
original.setDocumentId(documentId);
original.addSignature(signature, new SignatureInterface() {
public byte[] sign(InputStream contentToSign) throws IOException {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[16384];
while ((nRead = contentToSign.read(data, 0, data.length)) != -1)
buffer.write(data, 0, nRead);
buffer.flush();
byte[] content = buffer.toByteArray();
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256");
String contentEncoded = Base64.encodeBase64String(content);
System.out.println(contentEncoded);
byte[] hash = md.digest(content);
String hashEncoded = new String(Base64.encodeBase64(hash));
System.out.println(hashEncoded);
KeyStore ks = getKeyStoreToken();
String alias = getAlias(ks);
PKCS7Signer signer = PKCS7Factory.getInstance().factoryDefault();
signer.setCertificates(ks.getCertificateChain(alias));
// para token
signer.setPrivateKey((PrivateKey) ks.getKey(alias, null));
// politica sem carimbo de tempo
signer.setSignaturePolicy(PolicyFactory.Policies.AD_RB_CADES_2_2);
// com carimbo de tempo
//signer.setSignaturePolicy(PolicyFactory.Policies.AD_RT_CADES_2_2);
//signer.setSignaturePolicy(PolicyFactory.Policies.AD_RB_PADES_1_0);
// para mudar o algoritimo
signer.setAlgorithm(SignerAlgorithmEnum.SHA256withRSA);
byte [] assinatura =signer.doHashSign(hash);
// File file = new File("/home/.p7s");
// FileOutputStream os = new FileOutputStream(file);
// os.write(assinatura);
// os.flush();
// os.close();
return assinatura;
} catch (Throwable error) {
error.printStackTrace();
return null;
}
}
});
original.saveIncremental(fos);
original.close();
}
开发者ID:demoiselle,项目名称:signer,代码行数:82,代码来源:PDFSigner.java
注:本文中的org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论