Package com.southernstorm.noise.protocol
Class ChaChaPolyCipherState
java.lang.Object
com.southernstorm.noise.protocol.ChaChaPolyCipherState
- All Implemented Interfaces:
CipherState
,Destroyable
,Cloneable
Implements the ChaChaPoly cipher for Noise.
-
Constructor Summary
ModifierConstructorDescriptionConstructs a new cipher state for the "ChaChaPoly" algorithm.protected
Copy constructor for cloning -
Method Summary
Modifier and TypeMethodDescriptionclone()
I2Pint
decryptWithAd
(byte[] ad, byte[] ciphertext, int ciphertextOffset, byte[] plaintext, int plaintextOffset, int length) Decrypts a ciphertext buffer using the cipher and a block of associated data.int
decryptWithAd
(byte[] ad, int adOffset, int adLength, byte[] ciphertext, int ciphertextOffset, byte[] plaintext, int plaintextOffset, int length) I2Pvoid
destroy()
Destroys all sensitive state in the current object.int
encryptWithAd
(byte[] ad, byte[] plaintext, int plaintextOffset, byte[] ciphertext, int ciphertextOffset, int length) Encrypts a plaintext buffer using the cipher and a block of associated data.int
encryptWithAd
(byte[] ad, int adOffset, int adLength, byte[] plaintext, int plaintextOffset, byte[] ciphertext, int ciphertextOffset, int length) I2Pfork
(byte[] key, int offset) Creates a new instance of this cipher and initializes it with a key.Gets the Noise protocol name for this cipher.int
Gets the length of the key values for this cipher.int
Gets the length of the MAC values for this cipher.boolean
hasKey()
Determine if this cipher object has been configured with a key.void
initializeKey
(byte[] key, int offset) Initializes the key on this cipher object.void
setNonce
(long nonce) Sets the nonce value.toString()
I2P debug
-
Constructor Details
-
ChaChaPolyCipherState
public ChaChaPolyCipherState()Constructs a new cipher state for the "ChaChaPoly" algorithm. -
ChaChaPolyCipherState
Copy constructor for cloning- Throws:
CloneNotSupportedException
- Since:
- 0.9.44
-
-
Method Details
-
destroy
public void destroy()Description copied from interface:Destroyable
Destroys all sensitive state in the current object.- Specified by:
destroy
in interfaceDestroyable
-
getCipherName
Description copied from interface:CipherState
Gets the Noise protocol name for this cipher.- Specified by:
getCipherName
in interfaceCipherState
- Returns:
- The cipher name.
-
getKeyLength
public int getKeyLength()Description copied from interface:CipherState
Gets the length of the key values for this cipher.- Specified by:
getKeyLength
in interfaceCipherState
- Returns:
- The length of the key in bytes; usually 32.
-
getMACLength
public int getMACLength()Description copied from interface:CipherState
Gets the length of the MAC values for this cipher.- Specified by:
getMACLength
in interfaceCipherState
- Returns:
- The length of MAC values in bytes, or zero if the key has not yet been initialized.
-
initializeKey
public void initializeKey(byte[] key, int offset) Description copied from interface:CipherState
Initializes the key on this cipher object.- Specified by:
initializeKey
in interfaceCipherState
- Parameters:
key
- Points to a buffer that contains the key.offset
- The offset of the key in the key buffer. The key buffer must contain at least getKeyLength() bytes starting at offset.- See Also:
-
hasKey
public boolean hasKey()Description copied from interface:CipherState
Determine if this cipher object has been configured with a key.- Specified by:
hasKey
in interfaceCipherState
- Returns:
- true if this cipher object has a key; false if the key has not yet been set with initializeKey().
- See Also:
-
encryptWithAd
public int encryptWithAd(byte[] ad, byte[] plaintext, int plaintextOffset, byte[] ciphertext, int ciphertextOffset, int length) throws ShortBufferException Description copied from interface:CipherState
Encrypts a plaintext buffer using the cipher and a block of associated data.- Specified by:
encryptWithAd
in interfaceCipherState
- Parameters:
ad
- The associated data, or null if there is none.plaintext
- The buffer containing the plaintext to encrypt.plaintextOffset
- The offset within the plaintext buffer of the first byte or plaintext data.ciphertext
- The buffer to place the ciphertext in. This can be the same as the plaintext buffer.ciphertextOffset
- The first offset within the ciphertext buffer to place the ciphertext and the MAC tag.length
- The length of the plaintext.- Returns:
- The length of the ciphertext plus the MAC tag, or -1 if the ciphertext buffer is not large enough to hold the result.
- Throws:
ShortBufferException
- The ciphertext buffer does not have enough space to hold the ciphertext plus MAC.
-
encryptWithAd
public int encryptWithAd(byte[] ad, int adOffset, int adLength, byte[] plaintext, int plaintextOffset, byte[] ciphertext, int ciphertextOffset, int length) throws ShortBufferException I2P- Specified by:
encryptWithAd
in interfaceCipherState
- Throws:
ShortBufferException
- Since:
- 0.9.54
-
decryptWithAd
public int decryptWithAd(byte[] ad, byte[] ciphertext, int ciphertextOffset, byte[] plaintext, int plaintextOffset, int length) throws ShortBufferException, BadPaddingException Description copied from interface:CipherState
Decrypts a ciphertext buffer using the cipher and a block of associated data.- Specified by:
decryptWithAd
in interfaceCipherState
- Parameters:
ad
- The associated data, or null if there is none.ciphertext
- The buffer containing the ciphertext to decrypt.ciphertextOffset
- The offset within the ciphertext buffer of the first byte of ciphertext data.plaintext
- The buffer to place the plaintext in. This can be the same as the ciphertext buffer.plaintextOffset
- The first offset within the plaintext buffer to place the plaintext.length
- The length of the incoming ciphertext plus the MAC tag.- Returns:
- The length of the plaintext with the MAC tag stripped off.
- Throws:
ShortBufferException
- The plaintext buffer does not have enough space to store the decrypted data.BadPaddingException
- The MAC value failed to verify.
-
decryptWithAd
public int decryptWithAd(byte[] ad, int adOffset, int adLength, byte[] ciphertext, int ciphertextOffset, byte[] plaintext, int plaintextOffset, int length) throws ShortBufferException, BadPaddingException I2P- Specified by:
decryptWithAd
in interfaceCipherState
- Throws:
ShortBufferException
BadPaddingException
- Since:
- 0.9.54
-
fork
Description copied from interface:CipherState
Creates a new instance of this cipher and initializes it with a key.- Specified by:
fork
in interfaceCipherState
- Parameters:
key
- The buffer containing the key.offset
- The offset into the key buffer of the first key byte.- Returns:
- A new CipherState of the same class as this one.
-
setNonce
public void setNonce(long nonce) Description copied from interface:CipherState
Sets the nonce value.- Specified by:
setNonce
in interfaceCipherState
- Parameters:
nonce
- The new nonce value, which must be greater than or equal to the current value. This function is intended for testing purposes only. If the nonce value goes backwards then security may be compromised.
-
clone
I2P- Specified by:
clone
in interfaceCipherState
- Overrides:
clone
in classObject
- Throws:
CloneNotSupportedException
- Since:
- 0.9.44
-
toString
I2P debug
-