Convert C# To Ooabl?

jdpjamesp

ProgressTalk.com Moderator
Staff member
Can anyone help me port the following into OOABL please?

Code:
private static string Sign(string key, string stringToSign)

  {

  var encoding = new System.Text.ASCIIEncoding();

  var keyByte = encoding.GetBytes(key);

  var stringToSignBytes = encoding.GetBytes(stringToSign);

  using (var hmacsha256 = new HMACSHA256(keyByte))

  {

  var hmacsha256Computed = hmacsha256.ComputeHash(stringToSignBytes);

  return Convert.ToBase64String(hmacsha256Computed);

  }

  }

Code:
    METHOD PRIVATE STATIC CHARACTER Sign(INPUT ip-key AS CHARACTER, INPUT ip-stringToSign AS CHARACTER):
        DEFINE VARIABLE lv-encoding AS System.Text.ASCIIEncoding NO-UNDO.
       
       
       
       
        DEFINE VARIABLE result AS CHARACTER NO-UNDO.

        RETURN result.

    END METHOD.

Got that far... lol
 
I think this is the OOABL code but check the result to ensure it is correct:
Code:
METHOD PRIVATE STATIC CHARACTER Sign(INPUT ip-key AS CHARACTER, INPUT ip-stringToSign AS CHARACTER):
    DEFINE VARIABLE lv-encoding AS System.Text.ASCIIEncoding NO-UNDO.
    DEFINE VARIABLE lv-keyByte AS "System.Byte[]" NO-UNDO.
    DEFINE VARIABLE lv-stringToSignBytes AS "System.Byte[]" NO-UNDO.
    DEFINE VARIABLE lv-hmacsha256 AS System.Security.Cryptography.HMACSHA256 NO-UNDO.
    DEFINE VARIABLE lv-hmacsha256Computed AS "System.Byte[]" NO-UNDO.
    DEFINE VARIABLE result AS CHARACTER NO-UNDO.

    lv-encoding = NEW System.Text.ASCIIEncoding().
    lv-keyByte = System.Text.Encoding:UTF8:GetBytes(ip-key).
    lv-stringToSignBytes = System.Text.Encoding:UTF8:GetBytes(ip-stringToSign).
    lv-hmacsha256 = NEW System.Security.Cryptography.HMACSHA256(lv-keyByte).
    lv-hmacsha256Computed = lv-hmacsha256:ComputeHash(lv-stringToSignBytes).

    result = System.Convert:ToBase64String(lv-hmacsha256Computed).
END METHOD.
 
That little HMAC keeps raising its ugly head again. Make you wonder why it's not as part of the ABL standard.
 
Yes, being part of the ABL standard would make things easier.

Regarding my code posting, just noticed I was not using the encoding variable for getting the bytes as per the C# example. To be the same change these two lines:
Code:
lv-keyByte = System.Text.Encoding:UTF8:GetBytes(ip-key).
lv-stringToSignBytes = System.Text.Encoding:UTF8:GetBytes(ip-stringToSign).
to:
Code:
lv-keyByte = lv-encoding:GetBytes(ip-key).
lv-stringToSignBytes = lv-encoding:GetBytes(ip-stringToSign).
 
Thanks Osborne. Very much appreciated. Will give it a bash shortly. Also helps me to see what I need to do to translate the other bits I've been sent :)
 
Back
Top