DiceLockDigestedCheck is a C++ program to verify that DiceLockDigested class implementing one of DiceLock different architectures is working as expected.

DiceLockDigested class is the class that implements DiceLock architecture with the following characteristics:
– base encryption cipher/decipher is any symmetric cipher (stream cipher or block cipher operation mode) working with just symmetric key, no initialization vector (IV) is used,
– any hash digest algorithm is used to generate message hash digest from plaintext to be encrypted,
– ciphertext plus ciphered hash digest of plaintext is checked for random number test properties,
– any function that is able to change original symmetric key with new values,
– bit random number tests that can verify that encrypted ciphertext is at random.

Current algorithm classes that can be used with DiceLockDigested architecture are:

While performing internal software quality assurance we have verified that DiceLockDigestedCheck in debug mode does not generate any memory leaks with any executed option.
Debug mode was run with the corresponding debugger and the C Run-Time Libraries (CRT) debug heap functions as well as with dump memory leak information function that can be obtained executing “_CrtDumpMemoryLeaks” statement before program ends execution.

In order to verify that DiceLockDigested class is performing the following program has been used. Execution call must be:DiceLockDigestedCheck [stream cipher][hash algorithm][key modifier][stream type] log_output_file, where the different values can be easily infered from source code.