IPWorks Encrypt 2020 C++ Edition

Questions / Feedback?

DecryptBlock Method

Decrypts a block and returns the decrypted data.

Syntax

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

Unicode (Windows)
LPSTR DecryptBlock(LPCSTR lpInputBuffer, INT lenInputBuffer, LPINT lpSize = NULL);
- (NSData*)decryptBlock:(NSData*)inputBuffer;
#define MID_SALSA20_DECRYPTBLOCK 4

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

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:

  • IV (required)
  • Key (required)

InputBuffer specifies the input data to decrypt.

DecryptBlock Example


Salsa20 salsa = new Salsa20();

//32 Bytes
salsa.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 };

//24 Bytes
salsa.IVB = new byte[] { 0x0D, 0xE4, 0x43, 0x40, 0x29, 0xAD, 0x70, 0x7D, 0x7B, 0x32, 0xB5, 0xC7, 0x0D, 0xE4, 0x43, 0x40, 0x29, 0xAD, 0x70, 0x7D, 0x7B, 0x32, 0xB5, 0xC7 };

byte[] tempDecryptedBlock;
 
//Decrypt any number of blocks of any size
tempDecryptedBlock = salsa.DecryptBlock(part1);
tempDecryptedBlock = salsa.DecryptBlock(part2);

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]