1.5 KiB
1.5 KiB
CRYPTLIB 0.99 API mapping
The supplied cryptl99.zip removes the remaining uncertainty about the
CRYPTLIB calls. The executable's call shapes, local structure offsets and the
source in crypt.h/crypt.c all agree.
| Operation | CRYPTLIB 0.99 function | des.exe target | undes.exe target |
|---|---|---|---|
| Initialise library | initLibrary() |
00B3:0738 |
00B7:072A |
| End library | endLibrary() |
00B3:0746 |
00B7:0738 |
| Query algorithm/mode | queryAlgoModeInformation() |
00B3:0566 |
00B7:0558 |
| Query context | queryContextInformation() |
00B3:06EC |
00B7:06DE |
| Initialise context | initCryptContext() |
00B3:0756 |
00B7:0748 |
| Destroy context | destroyCryptContext() |
00B3:0940 |
00B7:0932 |
| Load key | loadCryptContext() |
00B3:09C5 |
00B7:09B7 |
| Retrieve IV | retrieveIV() |
00B3:0BA9 |
— |
| Load IV | loadIV() |
— | 00B7:0A90 |
| Encrypt | encryptBuffer() |
00B3:0C1E |
— |
| Decrypt | decryptBuffer() |
— | 00B7:0CEC |
Algorithm values
Both mains store the integer value 3 for the algorithm and 3 for the mode.
In the supplied crypt.h these are:
CRYPT_ALGO_3DES == 3
CRYPT_MODE_CBC == 3
So DES/UNDES V1.1.0 uses two-key triple DES in CBC mode.
The CRYPT_QUERY_INFO offsets used by the machine code also match the supplied
header in the 16-bit large memory model. The program reads:
keySize= 14 bytes (112 bits)ivSize= 4 bytes (32 bits)
Those are exactly the recommended values in the CRYPTLIB 0.99 3DES-CBC
capability entry.