Class Decryptor

java.lang.Object
org.docx4j.org.apache.poi.poifs.crypt.Decryptor
Direct Known Subclasses:
AgileDecryptor, BinaryRC4Decryptor, CryptoAPIDecryptor, StandardDecryptor

public abstract class Decryptor
extends java.lang.Object
  • Field Details

  • Constructor Details

  • Method Details

    • getDataStream

      public abstract java.io.InputStream getDataStream​(DirectoryNode dir) throws java.io.IOException, java.security.GeneralSecurityException
      Return a stream with decrypted data.

      Use getLength() to get the size of that data that can be safely read from the stream. Just reading to the end of the input stream is not sufficient because there are normally padding bytes that must be discarded

      Parameters:
      dir - the node to read from
      Returns:
      decrypted stream
      Throws:
      java.io.IOException
      java.security.GeneralSecurityException
    • verifyPassword

      public abstract boolean verifyPassword​(java.lang.String password) throws java.security.GeneralSecurityException
      Throws:
      java.security.GeneralSecurityException
    • getLength

      public abstract long getLength()
      Returns the length of the encrypted data that can be safely read with getDataStream(org.docx4j.org.apache.poi.poifs.filesystem.DirectoryNode). Just reading to the end of the input stream is not sufficient because there are normally padding bytes that must be discarded

      The length variable is initialized in getDataStream(org.docx4j.org.apache.poi.poifs.filesystem.DirectoryNode), an attempt to call getLength() prior to getDataStream() will result in IllegalStateException.

      Returns:
      length of the encrypted data
      Throws:
      java.lang.IllegalStateException - if getDataStream(org.docx4j.org.apache.poi.poifs.filesystem.DirectoryNode) was not called
    • getInstance

      public static Decryptor getInstance​(EncryptionInfo info)
    • getDataStream

      public java.io.InputStream getDataStream​(NPOIFSFileSystem fs) throws java.io.IOException, java.security.GeneralSecurityException
      Throws:
      java.io.IOException
      java.security.GeneralSecurityException
    • getDataStream

      public java.io.InputStream getDataStream​(OPOIFSFileSystem fs) throws java.io.IOException, java.security.GeneralSecurityException
      Throws:
      java.io.IOException
      java.security.GeneralSecurityException
    • getDataStream

      public java.io.InputStream getDataStream​(POIFSFileSystem fs) throws java.io.IOException, java.security.GeneralSecurityException
      Throws:
      java.io.IOException
      java.security.GeneralSecurityException
    • getVerifier

      public byte[] getVerifier()
    • getSecretKey

      public javax.crypto.SecretKey getSecretKey()
    • getIntegrityHmacKey

      public byte[] getIntegrityHmacKey()
    • getIntegrityHmacValue

      public byte[] getIntegrityHmacValue()
    • setSecretKey

      protected void setSecretKey​(javax.crypto.SecretKey secretKey)
    • setVerifier

      protected void setVerifier​(byte[] verifier)
    • setIntegrityHmacKey

      protected void setIntegrityHmacKey​(byte[] integrityHmacKey)
    • setIntegrityHmacValue

      protected void setIntegrityHmacValue​(byte[] integrityHmacValue)
    • getBlockSizeInBytes

      protected int getBlockSizeInBytes()
    • getKeySizeInBytes

      protected int getKeySizeInBytes()