AesCipherDataSink


@UnstableApi
public final class AesCipherDataSink implements DataSink


A wrapping DataSink that encrypts the data being consumed.

Summary

Public constructors

AesCipherDataSink(byte[] secretKey, DataSink wrappedDataSink)

Create an instance whose write methods have the side effect of overwriting the input data.

AesCipherDataSink(
    byte[] secretKey,
    DataSink wrappedDataSink,
    @Nullable byte[] scratch
)

Create an instance whose write methods are free of side effects.

Public methods

void

Closes the sink.

void
open(DataSpec dataSpec)

Opens the sink to consume the specified data.

void
write(byte[] buffer, int offset, int length)

Consumes the provided data.

Public constructors

AesCipherDataSink

public AesCipherDataSink(byte[] secretKey, DataSink wrappedDataSink)

Create an instance whose write methods have the side effect of overwriting the input data. Use this constructor for maximum efficiency in the case that there is no requirement for the input data arrays to remain unchanged.

Parameters
byte[] secretKey

The key data.

DataSink wrappedDataSink

The wrapped DataSink.

AesCipherDataSink

public AesCipherDataSink(
    byte[] secretKey,
    DataSink wrappedDataSink,
    @Nullable byte[] scratch
)

Create an instance whose write methods are free of side effects. Use this constructor when the input data arrays are required to remain unchanged.

Parameters
byte[] secretKey

The key data.

DataSink wrappedDataSink

The wrapped DataSink.

@Nullable byte[] scratch

Scratch space. Data is encrypted into this array before being written to the wrapped DataSink. It should be of appropriate size for the expected writes. If a write is larger than the size of this array the write will still succeed, but multiple cipher calls will be required to complete the operation. If null then encryption will overwrite the input data.

Public methods

close

public void close()

Closes the sink.

Note: This method must be called even if the corresponding call to open threw an IOException. See open for more details.

Throws
java.io.IOException

If an error occurs closing the sink.

open

public void open(DataSpec dataSpec)

Opens the sink to consume the specified data.

Note: If an IOException is thrown, callers must still call close to ensure that any partial effects of the invocation are cleaned up.

Parameters
DataSpec dataSpec

Defines the data to be consumed.

Throws
java.io.IOException

If an error occurs opening the sink.

write

public void write(byte[] buffer, int offset, int length)

Consumes the provided data.

Parameters
byte[] buffer

The buffer from which data should be consumed.

int offset

The offset of the data to consume in buffer.

int length

The length of the data to consume, in bytes.

Throws
java.io.IOException

If an error occurs writing to the sink.