IPWorks Encrypt 2020 C++ Edition

Questions / Feedback?

EncryptBlock Method

Encrypts data and returns the encrypted block.

Syntax

ANSI (Cross Platform)
char* EncryptBlock(const char* lpInputBuffer, int lenInputBuffer, int bLastBlock, int *lpSize = NULL);

Unicode (Windows)
LPSTR EncryptBlock(LPCSTR lpInputBuffer, INT lenInputBuffer, BOOL bLastBlock, LPINT lpSize = NULL);
- (NSData*)encryptBlock:(NSData*)inputBuffer :(BOOL)lastBlock;
#define MID_CHACHA_ENCRYPTBLOCK 6

IPWORKSENCRYPT_EXTERNAL int IPWORKSENCRYPT_CALL IPWorksEncrypt_ChaCha_Do(void *lpObj, int methid, int cparam, void *param[], int cbparam[], int64 *lpllVal);

Remarks

EncryptBlock will encrypt the input data and return the encrypted block. The encrypted block will always be the same length as the decrypted data. The following properties are applicable:

  • IV (required)
  • Key (required)

InputBuffer specifies the input data to encrypt.

LastBlock specifies whether the block is the last block. Required when UseAEAD is True. When LastBlock is True the class will calculate the AuthTag value. If UseAEAD is False the value of LastBlock is not used.

EncryptBlock 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;

byte[] tempEncryptedBlock;

//Encrypt any number of blocks of any size
tempEncryptedBlock = chacha.EncryptBlock(part1, false);
tempEncryptedBlock = chacha.EncryptBlock(part2, false);

//Pass true for the last block
tempEncryptedBlock = chacha.EncryptBlock(part3, true);

//Save AuthTag for use when decrypting
byte[] authTab = chacha.AuthTagB;

Error Handling (C++)

This method returns a Binary String value (with length lpSize); after it returns, call the GetLastErrorCode() method to obtain its result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message.

Copyright (c) 2022 /n software inc. - All rights reserved.
IPWorks Encrypt 2020 C++ Edition - Version 20.0 [Build 8155]