public class CiphertextHeaderV2 extends CiphertextHeader
Data format:
     +---------+---------+---+----------+-------+------+
     | Version | KeyName | 0 | NonceLen | Nonce | HMAC |
     +---------+---------+---+----------+-------+------+
     |                                                 |
     +--- 4 ---+--- x ---+ 1 +--- 1 ----+-- y --+- 32 -+
 
 Where fields are defined as follows:
The last two fields provide support for multiple keys at the encryption provider. A common case for multiple keys is key rotation; by tagging encrypted data with a key name, an old key may be retrieved by name to decrypt outstanding data which will be subsequently re-encrypted with a new key.
keyName, length, MAX_KEYNAME_LEN, MAX_NONCE_LEN, nonce| Constructor and Description | 
|---|
CiphertextHeaderV2(byte[] nonce,
                  String keyName)
Creates a new instance with a nonce and named key. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
protected int | 
computeLength()  | 
static CiphertextHeaderV2 | 
decode(byte[] data,
      Function<String,SecretKey> keyLookup)
Creates a header from encrypted data containing a cleartext header prepended to the start. 
 | 
static CiphertextHeaderV2 | 
decode(InputStream input,
      Function<String,SecretKey> keyLookup)
Creates a header from encrypted data containing a cleartext header prepended to the start. 
 | 
byte[] | 
encode()
Encodes the header into bytes. 
 | 
byte[] | 
encode(SecretKey hmacKey)
Encodes the header into bytes. 
 | 
void | 
setKeyLookup(Function<String,SecretKey> keyLookup)
Sets the function to resolve keys from  
CiphertextHeader.keyName. | 
decode, decode, getKeyName, getLength, getNoncepublic CiphertextHeaderV2(byte[] nonce,
                          String keyName)
nonce - Nonce bytes.keyName - Key name.public void setKeyLookup(Function<String,SecretKey> keyLookup)
CiphertextHeader.keyName.keyLookup - Key lookup function.public byte[] encode()
CiphertextHeaderencode in class CiphertextHeaderpublic byte[] encode(SecretKey hmacKey)
hmacKey - Key used to generate header HMAC.protected int computeLength()
computeLength in class CiphertextHeaderpublic static CiphertextHeaderV2 decode(byte[] data, Function<String,SecretKey> keyLookup) throws EncodingException
data - Encrypted data with prepended header data.keyLookup - Function used to look up the secret key from the symbolic key name in the header.EncodingException - when ciphertext header cannot be decoded.public static CiphertextHeaderV2 decode(InputStream input, Function<String,SecretKey> keyLookup) throws EncodingException, StreamException
input - Input stream that is positioned at the start of ciphertext header data.keyLookup - Function used to look up the secret key from the symbolic key name in the header.EncodingException - when ciphertext header cannot be decoded.StreamException - on stream IO errors.Copyright © 2003-2024 Virginia Tech. All Rights Reserved.