Class SecureFileStore

java.lang.Object
org.h2.store.FileStore
org.h2.security.SecureFileStore

public class SecureFileStore extends FileStore
A file store that encrypts all data before writing, and decrypts all data after reading. Areas that were never written to (for example after calling setLength to enlarge the file) are not encrypted (contains 0 bytes).
  • Field Details

    • key

      private byte[] key
    • cipher

      private final BlockCipher cipher
    • cipherForInitVector

      private final BlockCipher cipherForInitVector
    • buffer

      private byte[] buffer
    • pos

      private long pos
    • bufferForInitVector

      private final byte[] bufferForInitVector
    • keyIterations

      private final int keyIterations
  • Constructor Details

  • Method Details

    • generateSalt

      protected byte[] generateSalt()
      Description copied from class: FileStore
      Generate the random salt bytes if required.
      Overrides:
      generateSalt in class FileStore
      Returns:
      the random salt or the magic
    • initKey

      protected void initKey(byte[] salt)
      Description copied from class: FileStore
      Initialize the key using the given salt.
      Overrides:
      initKey in class FileStore
      Parameters:
      salt - the salt
    • writeDirect

      protected void writeDirect(byte[] b, int off, int len)
      Description copied from class: FileStore
      Write a number of bytes without encrypting.
      Overrides:
      writeDirect in class FileStore
      Parameters:
      b - the source buffer
      off - the offset
      len - the number of bytes to write
    • write

      public void write(byte[] b, int off, int len)
      Description copied from class: FileStore
      Write a number of bytes.
      Overrides:
      write in class FileStore
      Parameters:
      b - the source buffer
      off - the offset
      len - the number of bytes to write
    • readFullyDirect

      public void readFullyDirect(byte[] b, int off, int len)
      Description copied from class: FileStore
      Read a number of bytes without decrypting.
      Overrides:
      readFullyDirect in class FileStore
      Parameters:
      b - the target buffer
      off - the offset
      len - the number of bytes to read
    • readFully

      public void readFully(byte[] b, int off, int len)
      Description copied from class: FileStore
      Read a number of bytes.
      Overrides:
      readFully in class FileStore
      Parameters:
      b - the target buffer
      off - the offset
      len - the number of bytes to read
    • seek

      public void seek(long x)
      Description copied from class: FileStore
      Go to the specified file location.
      Overrides:
      seek in class FileStore
      Parameters:
      x - the location
    • xorInitVector

      private void xorInitVector(byte[] b, int off, int len, long p)