[Stackoverflow] [Progress OpenEdge ABL] Progress 4GL DECRYPT fails

Status
Not open for further replies.
R

rgolinski

Guest
I need help. I ENCRYPT json packages with our clients' data with AES_CBC_256 and a different key for each package. Out of about a million data packets generated, the first several dozen cannot be DECRYPT, which returns "?" Subsequent data packets are properly encrypted and can be decrypted properly. MEMPTR is extended by data size + 1024 bytes. The package is first encrypted and then encoded Base64. I do not use IV. The code below is devoid of all error handling for better readability. Any suggestions?

Code:
FUNCTION {&Modul}-encrypt RETURN CHAR(INPUT pInput AS LONGCHAR, INPUT pKey AS RAW, OUTPUT pOut AS LONGCHAR).
  DEF VAR mMemPtr AS MEMPTR NO-UNDO.
  FIX-CODEPAGE(pOut) = "UTF-8".
  
  SECURITY-POLICY:SYMMETRIC-ENCRYPTION-ALGORITHM = "AES_CBC_256".
  SECURITY-POLICY:SYMMETRIC-ENCRYPTION-KEY = pkey.
  
  SET-SIZE(mMemPtr) = LENGTH(pInput) + 1024.
  
  mMemPtr = ENCRYPT(pInput) NO-ERROR.
      
  pOut = BASE64-ENCODE(mMemPtr) NO-ERROR.
          
  RETURN "OK".
END.

FUNCTION {&Modul}-decrypt RETURN LONGCHAR(INPUT pInput AS LONGCHAR, INPUT pkey AS RAW).
  DEF VAR pOut AS LONGCHAR NO-UNDO.
  FIX-CODEPAGE(pOut) = "UTF-8".
  DEF VAR mMemPtrIn AS MEMPTR NO-UNDO.
  DEF VAR mMemPtrOut AS MEMPTR NO-UNDO.
  SECURITY-POLICY:SYMMETRIC-ENCRYPTION-ALGORITHM = "AES_CBC_256".
  SECURITY-POLICY:SYMMETRIC-ENCRYPTION-KEY = pkey.
  
  mMemPtrIn  = BASE64-DECODE(pInput) NO-ERROR.
  
  mMemPtrOut = DECRYPT(mMemPtrIn) NO-ERROR.
  
  COPY-LOB FROM mMemPtrOut TO pOut CONVERT SOURCE CODEPAGE "utf-8" NO-ERROR.
  
  SET-SIZE(mMemPtrIn) = 0.
  SET-SIZE(mMemPtrOut) = 0.
  RETURN pOut.
END.

Continue reading...
 
Status
Not open for further replies.
Top