当前位置: 首页>>代码示例>>Java>>正文


Java SignatureInterface类代码示例

本文整理汇总了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;未经允许,请勿转载。