Class ObjectEvaluation

java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.pdf.PDDocumentUtils
br.ufsc.labsec.signature.conformanceVerifier.pdf.ObjectEvaluation

public class ObjectEvaluation
extends PDDocumentUtils
Esta classe engloba métodos para a avaliação de objetos em uma assinatura PDF.
  • Field Details

    • objects

      protected List<org.apache.pdfbox.cos.COSObjectKey> objects
      Lista de objetos a serem avaliados
    • p

      protected int p
      Valor do parâmetro de transformação
  • Constructor Details

  • Method Details

    • parseDictionary

      protected List<Action> parseDictionary​(org.apache.pdfbox.cos.COSDictionary dictionary1, org.apache.pdfbox.cos.COSDictionary dictionary2, br.ufsc.labsec.signature.conformanceVerifier.pdf.Action.Path path, org.apache.pdfbox.cos.COSObjectKey origin, Map<org.apache.pdfbox.cos.COSObjectKey,​List<Action>> visited)
    • computeDocument

      protected byte[] computeDocument​(ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Computa o documento PDF, retornando os bytes do documento com as informações

      Appendix 1: Computation of Object Digests

      Section 1.2.1: Document

      When calculating a digest for the document, the following items are included, in order:

           * A) The values of the following entries in the document catalog (see Table 3.25), if present: AA, Legal; and Perms
           * B) The values of the following entries in the document information dictionary (see Table 10.2), if present: Title, Author, Keywords, and Subject
           * C) All page objects in the document, in page order, as described in Section I.2.2, "Page Objects"
           * D) All named pages specified in the Pages name tree, sorted by name, as described in Section I.2.3, "Named Pages"
           * E) All embedded files specified in the EmbeddedFiles name tree, sorted by name, as described in Section I.2.4, "Embedded Files"
           * Exception 1: we include the AcroForm signature fields in the computation.
       
      Parameters:
      selectiveComputation - computação seletiva que define quais objetos devem ser considerados exceções
      Returns:
      os bytes do documento com as informações computadas
      Throws:
      IOException - se ocorrer algum erro de I/O durante a computação do documento
    • ifPresent

      protected void ifPresent​(org.apache.pdfbox.cos.COSDictionary dictionary, org.apache.pdfbox.cos.COSName entry, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Throws:
      IOException
    • ifPresent

      protected void ifPresent​(org.apache.pdfbox.cos.COSDictionary dictionary, org.apache.pdfbox.cos.COSName entry, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation, boolean inheritable) throws IOException
      Throws:
      IOException
    • ifPresent

      protected void ifPresent​(org.apache.pdfbox.cos.COSDictionary dictionary, org.apache.pdfbox.cos.COSName entry, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation, boolean inheritable, Callable<?> callable) throws IOException
      Throws:
      IOException
    • computePageObject

      protected boolean computePageObject​(org.apache.pdfbox.cos.COSBase base, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, Set<org.apache.pdfbox.cos.COSObjectKey> previousExistingFields, ObjectEvaluation.SelectiveComputation selectiveComputation, org.apache.pdfbox.pdmodel.PDDocument document) throws IOException
      Computa os objetos de página.

      Appendix 1: Computation of Object Digests

      Section 1.2.2: Page Objects

      For page objects (see Table 3.27), the digest includes the values of the following entries, in order, if present. For entries listed as inheritable, their values may be inherited from ancestor nodes in the page tree if not specified explicitly.

         * A) MediaBox (inheritable), CropBox (inheritable), Resources (inheritable), Contents, Rotate (inheritable), AA, ANNOTS
       
      Parameters:
      base - o objeto base a ser computado
      outputStream - o fluxo de saída onde os bytes computados serão escritos
      visited - um conjunto de chaves de objetos visitados para evitar computação duplicada
      previousExistingFields - um conjunto de chaves de objetos de campos existentes anteriormente
      selectiveComputation - a computação seletiva que define quais objetos devem ser considerados exceções
      document - o documento PDF atual, usado para verificar se o objeto é uma página válida
      Returns:
      verdadeiro se o objeto foi computado com sucesso, falso caso contrário
      Throws:
      IOException - se ocorrer algum erro de I/O durante a computação do objeto de página
    • computeNamedPage

      protected boolean computeNamedPage​(org.apache.pdfbox.cos.COSBase base, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, Set<org.apache.pdfbox.cos.COSObjectKey> previousExistingFields, ObjectEvaluation.SelectiveComputation selectiveComputation, org.apache.pdfbox.pdmodel.PDDocument document) throws IOException
      Computa uma página nomeada.

      Appendix 1: Computation of Object Digests

      Section 1.2.3: Named Pages

      For named pages (see Section 8.6.5, “Named Pages”), only the Contents and Annots entries are digested, as shown in Section I.2.2, “Page Objects,” above.

      Parameters:
      base - o objeto base a ser computado
      outputStream - o fluxo de saída onde os bytes computados serão escritos
      visited - um conjunto de chaves de objetos visitados para evitar computação duplicada
      previousExistingFields - um conjunto de chaves de objetos de campos existentes anteriormente
      selectiveComputation - a computação seletiva que define quais objetos devem ser considerados exceções
      document - o documento PDF atual, usado para verificar se o objeto é uma página válida
      Returns:
      verdadeiro se o objeto foi computado com sucesso, falso caso contrário
      Throws:
      IOException - se ocorrer algum erro de I/O durante a computação do objeto de página nomeada
    • computeEmbeddedFiles

      protected boolean computeEmbeddedFiles​(org.apache.pdfbox.cos.COSString filename, org.apache.pdfbox.cos.COSBase base, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Computa os arquivos incorporados.

      Appendix 1: Computation of Object Digests

      Section 1.2.4: Embedded Files

      The document’s embedded files (as specified in the EmbeddedFiles name tree) are sorted by name. For each embedded file, the following values are digested, in order:

           * A) The name of the embedded file
           * B) The stream corresponding to the file
       
      Parameters:
      filename - o nome do arquivo incorporado
      base - o objeto base que representa o arquivo incorporado
      outputStream - o fluxo de saída onde os bytes computados serão escritos
      visited - um conjunto de chaves de objetos visitados para evitar computação duplicada
      selectiveComputation - a computação seletiva que define quais objetos devem ser considerados exceções
      Returns:
      verdadeiro se o arquivo incorporado foi computado com sucesso, falso caso contrário
      Throws:
      IOException - se ocorrer algum erro de I/O durante a computação do arquivo incorporado
    • computeAnnotations

      protected boolean computeAnnotations​(org.apache.pdfbox.cos.COSBase base, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, Set<org.apache.pdfbox.cos.COSObjectKey> existingSignatureFields, ObjectEvaluation.SelectiveComputation selectiveComputation, org.apache.pdfbox.pdmodel.PDDocument document) throws IOException
      Computa as anotações de um array de objetos.
      Parameters:
      base - o objeto base que contém o array de anotações
      outputStream - o fluxo de saída onde os bytes computados serão escritos
      visited - um conjunto de chaves de objetos visitados para evitar computação duplicada
      existingSignatureFields - um conjunto de chaves de objetos de campos de assinatura existentes anteriormente
      selectiveComputation - a computação seletiva que define quais objetos devem ser considerados exceções
      document - o documento PDF atual, usado para verificar se o objeto é uma anotação válida
      Returns:
      verdadeiro se as anotações foram computadas com sucesso, falso caso contrário
      Throws:
      IOException - se ocorrer algum erro de I/O durante a computação das anotações
    • computeAnnotation

      protected boolean computeAnnotation​(org.apache.pdfbox.cos.COSBase base, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Computa os objetos de anotação.

      Appendix 1: Computation of Object Digests

      Section 1.2.5: Annotation Dictionaries

      For annotation dictionaries (see Table 8.44), the values of the following entries are digested, in order, if present

           * A) Contents, T, F, A, AA, Dest, QuadPoints, InkList, Name, FS, Sound.
           ** FS (If FS refers to the contents of a remote file, the contents of that file are not digested)
           * B) If Movie is present, the values of its F and Poster are also digested.
           * C) For stamp annotations, the value of AP is also digested.
           * Exception 1: The Rect entry is not included in the computation.
           However, we compute it to preserve the position of the annotation.
       
      Parameters:
      base - o objeto base que representa a anotação
      outputStream - o fluxo de saída onde os bytes computados serão escritos
      visited - um conjunto de chaves de objetos visitados para evitar computação duplicada
      selectiveComputation - a computação seletiva que define quais objetos devem ser considerados exceções
      Returns:
      verdadeiro se a anotação foi computada com sucesso, falso caso contrário
      Throws:
      IOException - se ocorrer algum erro de I/O durante a computação da anotação
    • computeFormField

      public boolean computeFormField​(org.apache.pdfbox.cos.COSBase base, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Computa os campos de formulário.

      Appendix 1: Computation of Object Digests

      Section 1.2.6: Form Fields

      For form fields (see Table 8.69), the values of the following entries are digested, in order, if present:

           * T, FT (inheritable), DV (inheritable), V, A (inheritable), AA (inheritable), F, Lock, SV
           * Exception 1: The F entry is not included in the computation for signature fields. Since the insertion of a signature field may change the flags to lock the field, we compute it.
       
      Parameters:
      base - o objeto base que representa o campo de formulário
      outputStream - o fluxo de saída onde os bytes computados serão escritos
      visited - um conjunto de chaves de objetos visitados para evitar computação duplicada
      selectiveComputation - a computação seletiva que define quais objetos devem ser considerados exceções
      Returns:
      verdadeiro se o campo de formulário foi computado com sucesso, falso caso contrário
      Throws:
      IOException - se ocorrer algum erro de I/O durante a computação do campo de formulário
    • computeAction

      public boolean computeAction​(org.apache.pdfbox.cos.COSBase base, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Computa uma ação.

      Appendix 1: Computation of Object Digests

      Section 1.2.7: Action Dictionaries

      For most actions (see Section 8.5, “Actions”), the values of the following entries in the action dictionary are digested, in order, if present:

           * A) S, D, F, NewWindow, O, P, B, Base, Sound, Vol, Annot, T, H, N, JS and URI. 

      * B) Rendition actions (see “Rendition Actions” on page 668) are treated differently than the other types.
      Parameters:
      base -
      outputStream -
      visited -
      selectiveComputation -
      Returns:
      Throws:
      IOException
    • computeAdditionalActions

      public boolean computeAdditionalActions​(org.apache.pdfbox.cos.COSBase base, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Computa ações adicionais de um dicionário de ações.

      Appendix 1: Computation of Object Digests

      Section 1.2.8: Additional-Actions

      Additional-actions dictionaries (see Section 8.5.2, “Trigger Events”) can be the value of the AA entry of a catalog, page, annotation or field dictionary. If the additional action is valid, the values of the following entries in the additional-actions dictionary are digested, in order, if present:

           * E, X, D, U, Fo, Bl, O, C, K, F, V, C, WC, WS, DS, WP, and DP
       
      Parameters:
      base - o objeto base que representa o dicionário de ações adicionais
      outputStream - o fluxo de saída onde os bytes computados serão escritos
      visited - um conjunto de chaves de objetos visitados para evitar computação duplicada
      selectiveComputation - a computação seletiva que define quais objetos devem ser considerados exceções
      Returns:
      verdadeiro se as ações adicionais foram computadas com sucesso, falso caso contrário
      Throws:
      IOException - se ocorrer algum erro de I/O durante a computação das ações adicionais
    • isAACatalogValid

      public boolean isAACatalogValid​(org.apache.pdfbox.cos.COSBase base)
    • isAAPageValid

      public boolean isAAPageValid​(org.apache.pdfbox.cos.COSBase base)
    • isAAAnnotationValid

      public boolean isAAAnnotationValid​(org.apache.pdfbox.cos.COSBase base)
    • isAAFormFieldValid

      public boolean isAAFormFieldValid​(org.apache.pdfbox.cos.COSBase base)
    • allValidEntries

      public boolean allValidEntries​(org.apache.pdfbox.cos.COSBase base, Set<org.apache.pdfbox.cos.COSName> validEntries)
    • computeFields

      public byte[] computeFields​(org.apache.pdfbox.pdmodel.PDDocument document, ObjectEvaluation.FieldMDP fieldMDP) throws IOException
      Throws:
      IOException
    • compute

      protected boolean compute​(org.apache.pdfbox.cos.COSBase a, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Escreve em um outputStream os dados de uma estrutura interna do PDF.
      Parameters:
      a - Estrutura de PDF contendo conteúdo
      outputStream - Escrita do conteúdo de estrutura PDF
      visited - Mapa de objetos visitados para evitar recursão
      selectiveComputation - Parâmetros de verificação para computações seletivas.
      Throws:
      IOException
    • appendIdentifier

      protected void appendIdentifier​(org.apache.pdfbox.cos.COSBase base, OutputStream outputStream) throws IOException
      Throws:
      IOException
    • tryComputeObjectOr

      protected void tryComputeObjectOr​(org.apache.pdfbox.cos.COSBase base, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, Callable<?> runnable) throws IOException
      Throws:
      IOException
    • computeObject

      protected void computeObject​(org.apache.pdfbox.cos.COSObject object, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Throws:
      IOException
    • computeNull

      protected void computeNull​(org.apache.pdfbox.cos.COSNull cosnull, OutputStream outputStream) throws IOException
      Throws:
      IOException
    • computeInteger

      protected void computeInteger​(org.apache.pdfbox.cos.COSInteger cosinteger, OutputStream outputStream) throws IOException
      Throws:
      IOException
    • computeFloat

      protected void computeFloat​(org.apache.pdfbox.cos.COSFloat cosfloat, OutputStream outputStream) throws IOException
      Throws:
      IOException
    • computeBoolean

      protected void computeBoolean​(org.apache.pdfbox.cos.COSBoolean cosboolean, OutputStream outputStream) throws IOException
      Throws:
      IOException
    • computeName

      protected void computeName​(org.apache.pdfbox.cos.COSName cosname, OutputStream outputStream) throws IOException
      Throws:
      IOException
    • computeString

      protected void computeString​(org.apache.pdfbox.cos.COSString cosstring, OutputStream outputStream) throws IOException
      Throws:
      IOException
    • computeDictionary

      protected void computeDictionary​(org.apache.pdfbox.cos.COSDictionary cosDictionary, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Throws:
      IOException
    • computeArray

      protected void computeArray​(org.apache.pdfbox.cos.COSArray array, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Throws:
      IOException
    • computeStream

      protected boolean computeStream​(org.apache.pdfbox.cos.COSBase base, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Throws:
      IOException
    • ifPresentKeyValuePair

      protected void ifPresentKeyValuePair​(org.apache.pdfbox.cos.COSDictionary dictionary, org.apache.pdfbox.cos.COSName key, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Throws:
      IOException
    • writeKeyValuePair

      protected void writeKeyValuePair​(org.apache.pdfbox.cos.COSName key, org.apache.pdfbox.cos.COSBase value, OutputStream outputStream, Set<org.apache.pdfbox.cos.COSObjectKey> visited, ObjectEvaluation.SelectiveComputation selectiveComputation) throws IOException
      Throws:
      IOException
    • writeName

      protected void writeName​(org.apache.pdfbox.cos.COSName cosname, OutputStream outputStream) throws IOException
      Throws:
      IOException
    • write4bytesInteger

      protected void write4bytesInteger​(int integer, OutputStream outputStream) throws IOException
      Throws:
      IOException
    • compare

      protected List<Action> compare​(org.apache.pdfbox.cos.COSBase a, org.apache.pdfbox.cos.COSBase b, br.ufsc.labsec.signature.conformanceVerifier.pdf.Action.Path path, org.apache.pdfbox.cos.COSObjectKey origin, Map<org.apache.pdfbox.cos.COSObjectKey,​List<Action>> visited)
    • parseArray

      protected List<Action> parseArray​(org.apache.pdfbox.cos.COSArray array1, org.apache.pdfbox.cos.COSArray array2, br.ufsc.labsec.signature.conformanceVerifier.pdf.Action.Path path, org.apache.pdfbox.cos.COSObjectKey origin, Map<org.apache.pdfbox.cos.COSObjectKey,​List<Action>> visited)
    • findInCOSArray

      protected int findInCOSArray​(org.apache.pdfbox.cos.COSArray array, org.apache.pdfbox.cos.COSBase base, br.ufsc.labsec.signature.conformanceVerifier.pdf.Action.Path path, Map<org.apache.pdfbox.cos.COSObjectKey,​List<Action>> visited)
      Busca a posição do elemento no array
      Parameters:
      array - O array de objetos
      base - O objeto base
      Returns:
      O índice do objeto no array
    • isEqual

      protected boolean isEqual​(org.apache.pdfbox.cos.COSBase base1, org.apache.pdfbox.cos.COSBase base2, br.ufsc.labsec.signature.conformanceVerifier.pdf.Action.Path path, Map<org.apache.pdfbox.cos.COSObjectKey,​List<Action>> visited)
      Método de comparação entre dois objetos
      Parameters:
      base1 - Um objeto a ser comparado
      base2 - Outro objeto a ser comparado
      Returns:
      Indica se os objetos são iguais