@Override public void timestamp(final DSSDocument document, final OutputStream signedStream, final SignatureParameters parameters, final TSPSource tspSource, final Map.Entry<String, PdfDict>... dictToAdd) throws DSSException { final DigestAlgorithm timestampDigestAlgorithm = parameters.getSignatureTimestampParameters().getDigestAlgorithm(); InputStream inputStream = document.openStream(); final byte[] digest = digest(inputStream, parameters, timestampDigestAlgorithm, dictToAdd); DSSUtils.closeQuietly(inputStream); final TimeStampToken timeStampToken = tspSource.getTimeStampResponse(timestampDigestAlgorithm, digest); final byte[] encoded = DSSASN1Utils.getEncoded(timeStampToken); inputStream = document.openStream(); sign(inputStream, encoded, signedStream, parameters, timestampDigestAlgorithm, dictToAdd); DSSUtils.closeQuietly(inputStream); } }
policyDigestHexValueFromPolicy = DSSUtils.toHex(policyDigestValueFromPolicy); final byte[] hashAlgorithmDEREncoded = DSSASN1Utils.getEncoded(signPolicyHashAlgIdentifier); final byte[] signPolicyInfoDEREncoded = DSSASN1Utils.getEncoded(signPolicyInfo); final byte[] recalculatedDigestValue = DSSUtils.digest(signPolicyHashAlgFromPolicy, hashAlgorithmDEREncoded, signPolicyInfoDEREncoded); recalculatedDigestHexValue = DSSUtils.toHex(recalculatedDigestValue);
final byte[] encodedData = DSSASN1Utils.getEncoded(data); inputStream = toSignDocument.openStream(); pdfSignatureService.sign(inputStream, encodedData, byteArrayOutputStream, parameters, parameters.getDigestAlgorithm());