protected List<String> getSignatureNames(Blob blob) throws IOException {
   PdfReader reader = new PdfReader(blob.getStream());
   try {
     @SuppressWarnings("unchecked")
     List<String> names = reader.getAcroFields().getSignatureNames();
     return names;
   } finally {
     reader.close();
   }
 }
Ejemplo n.º 2
0
  /** extracts XML from PDF */
  protected byte[] getXMLFromPDF(PdfReader reader) throws Exception {
    XfaForm xfaForm = reader.getAcroFields().getXfa();
    Node domDocument = xfaForm.getDomDocument();
    if (domDocument == null) return null;
    Element documentElement = ((Document) domDocument).getDocumentElement();

    Element datasetsElement =
        (Element) documentElement.getElementsByTagNameNS(XFA_NS, "datasets").item(0);
    Element dataElement = (Element) datasetsElement.getElementsByTagNameNS(XFA_NS, "data").item(0);

    Element xmlElement = (Element) dataElement.getChildNodes().item(0);

    Node budgetElement = getBudgetElement(xmlElement);

    byte[] serializedXML = XfaForm.serializeDoc(budgetElement);

    return serializedXML;
  }
Ejemplo n.º 3
0
  // TODO concluir e validar a verifica��o de PDFs
  public String verify(final IVFile pdf) {
    // Certificados adicionados localmente
    KeyStore kall = PdfPKCS7.loadCacertsKeyStore();

    StringBuffer sb = new StringBuffer();
    final String nl = System.getProperty("line.separator"); // $NON-NLS-1$
    InputStream fin = null;
    try {
      boolean second = false;
      PdfReader reader = new PdfReader(fin = pdf.getInputStream());
      AcroFields af = reader.getAcroFields();
      ArrayList<?> names = af.getSignatureNames();
      if (names.isEmpty()) return Messages.getString("PDFSignatureImpl.9"); // $NON-NLS-1$
      for (Iterator<?> iter = names.iterator(); iter.hasNext(); ) {
        if (second) {
          sb.append(nl).append("  ======  ").append(nl).append(nl); // $NON-NLS-1$
        }
        String name = (String) iter.next();
        sb.append(Messages.getString("PDFSignatureImpl.11")).append(name).append(nl); // $NON-NLS-1$
        sb.append(Messages.getString("PDFSignatureImpl.12"))
            .append(
                af.signatureCoversWholeDocument(name)
                    ? Messages.getString("PDFSignatureImpl.13")
                    : Messages.getString("PDFSignatureImpl.14"))
            .append(nl); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        sb.append(Messages.getString("PDFSignatureImpl.15"))
            .append(af.getRevision(name))
            .append(Messages.getString("PDFSignatureImpl.16"))
            .append(af.getTotalRevisions())
            .append(nl); // $NON-NLS-1$ //$NON-NLS-2$

        PdfPKCS7 pk = af.verifySignature(name);
        Calendar cal = pk.getSignDate();
        Certificate pkc[] = pk.getCertificates();
        sb.append(Messages.getString("PDFSignatureImpl.17"))
            .append(PdfPKCS7.getSubjectFields(pk.getSigningCertificate()))
            .append(nl); // $NON-NLS-1$
        sb.append(Messages.getString("PDFSignatureImpl.18"))
            .append(
                !pk.verify()
                    ? Messages.getString("PDFSignatureImpl.19")
                    : Messages.getString("PDFSignatureImpl.20"))
            .append(nl); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        Object fails[] = PdfPKCS7.verifyCertificates(pkc, kall, null, cal);
        if (fails == null)
          sb.append(Messages.getString("PDFSignatureImpl.21")).append(nl); // $NON-NLS-1$
        else
          sb.append(Messages.getString("PDFSignatureImpl.22"))
              .append(nl); // : " + fails[1]); //$NON-NLS-1$
      }
    } catch (Exception e) {
      log.error("error verifying file", e); // $NON-NLS-1$
      return Messages.getString("PDFSignatureImpl.24"); // $NON-NLS-1$
    } finally {
      try {
        if (fin != null) {
          fin.close();
        }
      } catch (IOException e) {
      }
    }
    return sb.toString();
  }