DecryptBlock Method
Decrypts a block and returns the decrypted data.
function DecryptBlock(InputBuffer: TBytes; LastBlock: Boolean): TBytes;
Remarks
DecryptBlock will decrypt the input data and return the decrypted block. The decrypted block will always be the same length as the encrypted data. The following properties are applicable:
InputBuffer specifies the input data to decrypt.
LastBlock specifies whether the block is the last block. Required when UseAEAD is True. When LastBlock is True the component will validate the AuthTag value. If UseAEAD is False the value of LastBlock is not used.
DecryptBlock Example
Chacha chacha = new Chacha();
chacha.KeyB = new byte[] { 0xBB, 0x76, 0x17, 0xC9, 0x05, 0x73, 0x4A, 0x8D, 0x59, 0x9D, 0x7B, 0x0D, 0x86, 0x2A, 0x03, 0x82, 0x50, 0x6A, 0x70, 0xFB, 0xA8, 0x56, 0x47, 0x1B, 0x1E, 0x68, 0x0B, 0x2B, 0x34, 0x18, 0x0F, 0xE2 };
chacha.IVB = new byte[] { 0x0D, 0xE4, 0x43, 0x40, 0x29, 0xAD, 0x70, 0x7D, 0x7B, 0x32, 0xB5, 0xC7 };
chacha.UseAEAD = true;
cahcha.AuthTagB = authTag; //Value calculated during encryption.
byte[] tempDecryptedBlock;
//Decrypt any number of blocks of any size
tempDecryptedBlock = chacha.DecryptBlock(part1, false);
tempDecryptedBlock = chacha.DecryptBlock(part2, false);
//Pass true for the last block
tempDecryptedBlock = chacha.DecryptBlock(part3, true);