public interface EncryptionManager
extends java.io.Serializable
This must be serializable because an instance may be instantiated in one place and sent across the wire in some Iceberg integrations, notably Spark.
Modifier and Type | Method and Description |
---|---|
InputFile |
decrypt(EncryptedInputFile encrypted)
Given an
EncryptedInputFile.encryptedInputFile() representing the raw encrypted bytes
from the underlying file system, and given metadata about how the file was encrypted via
EncryptedInputFile.keyMetadata() , return an InputFile that returns decrypted
input streams. |
default java.lang.Iterable<InputFile> |
decrypt(java.lang.Iterable<EncryptedInputFile> encrypted)
Variant of
decrypt(EncryptedInputFile) that provides a sequence of files that all
need to be decrypted in a single context. |
default java.lang.Iterable<EncryptedOutputFile> |
encrypt(java.lang.Iterable<OutputFile> rawOutput)
Variant of
encrypt(OutputFile) that provides a sequence of files that all need to be
encrypted in a single context. |
EncryptedOutputFile |
encrypt(OutputFile rawOutput)
Given a handle on an
OutputFile that writes raw bytes to the underlying file system,
return a bundle of an EncryptedOutputFile.encryptingOutputFile() that writes encrypted
bytes to the underlying file system, and the EncryptedOutputFile.keyMetadata() that
points to the encryption key that is being used to encrypt this file. |
InputFile decrypt(EncryptedInputFile encrypted)
EncryptedInputFile.encryptedInputFile()
representing the raw encrypted bytes
from the underlying file system, and given metadata about how the file was encrypted via
EncryptedInputFile.keyMetadata()
, return an InputFile
that returns decrypted
input streams.default java.lang.Iterable<InputFile> decrypt(java.lang.Iterable<EncryptedInputFile> encrypted)
decrypt(EncryptedInputFile)
that provides a sequence of files that all
need to be decrypted in a single context.
By default this calls the single-file decryption method for each element in the iterator. Implementations can override this for a variety of optimizations. For example, an implementation can perform lookahead on the input iterator and fetch encryption keys in batch.
EncryptedOutputFile encrypt(OutputFile rawOutput)
OutputFile
that writes raw bytes to the underlying file system,
return a bundle of an EncryptedOutputFile.encryptingOutputFile()
that writes encrypted
bytes to the underlying file system, and the EncryptedOutputFile.keyMetadata()
that
points to the encryption key that is being used to encrypt this file.default java.lang.Iterable<EncryptedOutputFile> encrypt(java.lang.Iterable<OutputFile> rawOutput)
encrypt(OutputFile)
that provides a sequence of files that all need to be
encrypted in a single context.
By default this calls the single-file encryption method for each element in the iterator. Implementations can override this for a variety of optimizations. For example, an implementation can perform lookahead on the input iterator and fetch encryption keys in batch.