%decrypt() function

The %decrypt() function decrypts a string. The OpenSSL libraries must be loaded to use this function.

Syntax

code = %decrypt(params, inputstring, outputstring, &outputstring length)

Parameter(s)

code Return code representing the result of the function.
params A dynamic array containing the following information:
Algorithm (Supported algorithm is Crypto$Algorithm$AES128).
Length of input string.
Size of output buffer.
Clear text key (must be 16-bytes long). If the clear text key is null, the default key will be used.
inputstring Input string.
outputstring Output string.
outputstring length Length of the encrypted string.

Description

This function returns an integer to the code variable as follows:

0 Success
-1 Error
-2 Invalid keysize (must be 16 byte)
-3 Output buffer too small. The output string buffer must be pre-allocated, and its size must be a minimum of twice the size of the input buffer for the %encrypt() function to work. The return parameter outputstring length denotes the actual length of the encrypted string.

Example(s)

The example below illustrates encrypting and decrypting a user-provided string.

include dm,bp,includes nt_util.inc
include dm,bp,includes crypto.inc ;
crt "enter string: ":; input password
crt "enter 16-char key: ":; input key
char encryptedPassword[ 1 * Len( password ) ]
cryptoParams = ""
cryptoParams< Crypto$P$Algorithm > =Crypto$Algorithm$AES128
cryptoParams< Crypto$P$inputlength > = Len( password )
cryptoParams< Crypto$P$outputLength > = Len(encryptedPassword )
cryptoParams< Crypto$P$ClearKey > = key
encryptedLen = 0
gp.result = %Encrypt( cryptoParams, password,encryptedPassword, &encryptedLen)
encryptedPassword = encryptedPassword[1, encryptedLen]
*
* now do the decryption
char decryptedPswd[Len(encryptedPassword)]
cryptoParams< Crypto$P$inputLength > = encryptedLen
cryptoParams< Crypto$P$outputLength > = Len(decryptedPswd )
decryptedLen = 0
gp.result = %Decrypt( cryptoParams, encryptedPassword,decryptedPswd, &decryptedLen)
if (password = decryptedPswd) then print "pass" else print "fail"