/** * Gets file ID, either {@link PdfName#ID} key of trailer or a newly generated id. * * @return byte array represents file ID. * @see PdfEncryption#generateNewDocumentId() */ public byte[] getOriginalFileId() { PdfArray id = trailer.getAsArray(PdfName.ID); if (id != null) { return ByteUtils.getIsoBytes(id.getAsString(0).getValue()); } else { return PdfEncryption.generateNewDocumentId(); } }
protected static byte[] computeGlobalKeyOnReading(PdfDictionary encryptionDictionary, PrivateKey certificateKey, Certificate certificate, String certificateKeyProvider, IExternalDecryptionProcess externalDecryptionProcess, boolean encryptMetadata, String digestAlgorithm) { PdfArray recipients = encryptionDictionary.getAsArray(PdfName.Recipients); if (recipients == null) { recipients = encryptionDictionary.getAsDictionary(PdfName.CF) .getAsDictionary(PdfName.DefaultCryptFilter) .getAsArray(PdfName.Recipients); } byte[] envelopedData = EncryptionUtils.fetchEnvelopedData(certificateKey, certificate, certificateKeyProvider, externalDecryptionProcess, recipients); byte[] encryptionKey; MessageDigest md; try { md = MessageDigest.getInstance(digestAlgorithm); md.update(envelopedData, 0, 20); for (int i = 0; i < recipients.size(); i++) { byte[] encodedRecipient = recipients.getAsString(i).getValueBytes(); md.update(encodedRecipient); } if (!encryptMetadata) { md.update(new byte[]{(byte) 255, (byte) 255, (byte) 255, (byte) 255}); } encryptionKey = md.digest(); } catch (Exception f) { throw new PdfException(PdfException.PdfDecryption, f); } return encryptionKey; }
PdfString valStr = null; if (pdfObject.isArray()) { valStr = ((PdfArray) pdfObject).getAsString(1); } else if (pdfObject.isString()) { valStr = (PdfString) pdfObject;
PdfString valStr = null; if (pdfObject.isArray()) { valStr = ((PdfArray) pdfObject).getAsString(1); } else if (pdfObject.isString()) { valStr = (PdfString) pdfObject;
private PdfString iterateItems(PdfDictionary dictionary, Map<String, PdfObject> items, PdfString leftOver) { PdfArray names = dictionary.getAsArray(PdfName.Names); if (names != null) { for (int k = 0; k < names.size(); k++) { PdfString name; if (leftOver == null) name = names.getAsString(k++); else { name = leftOver; leftOver = null; } if (k < names.size()) { items.put(name.toUnicodeString(), names.get(k)); } else { return name; } } } else if ((names = dictionary.getAsArray(PdfName.Kids)) != null) { for (int k = 0; k < names.size(); k++) { PdfDictionary kid = names.getAsDictionary(k); leftOver = iterateItems(kid, items, leftOver); } } return null; }
PdfString recipient = recipients.getAsString(i); CMSEnvelopedData data; try { PdfString recipient = recipients.getAsString(i); CMSEnvelopedData data; try {
PdfString newModifiedId = reader.trailer.getAsArray(PdfName.ID).getAsString(1);
int d = -1; for (int k = 0; k < ar.size(); k += 2) { PdfString s = ar.getAsString(k); if ("template".equals(s.toString())) { t = k + 1;
int d = -1; for (int k = 0; k < ar.size(); k += 2) { PdfString s = ar.getAsString(k); if ("template".equals(s.toString())) { t = k + 1;
PdfString cert = signature.getPdfObject().getAsString(PdfName.Cert); if (cert == null) cert = signature.getPdfObject().getAsArray(PdfName.Cert).getAsString(0); pk = new PdfPKCS7(PdfEncodings.convertToBytes(contents.getValue(), null), cert.getValueBytes(), provider); } else
PdfString cert = signature.getPdfObject().getAsString(PdfName.Cert); if (cert == null) cert = signature.getPdfObject().getAsArray(PdfName.Cert).getAsString(0); pk = new PdfPKCS7(PdfEncodings.convertToBytes(contents.getValue(), null), cert.getValueBytes(), provider); } else
originalModifiedDocumentId = id.getAsString(1);