MIDRANGE dot COM Mailing List Archive

Home » MIDRANGE-L » January 2013

Re: HMAC calculation


If your NewValue field is defined as VARYING you could use:

MyField = NewValue + *LOVAL;

MyField = NewValue + *ALLX'00';

If it's not VARYING, use %trim, or %trimr to make it VARYING:

MyField = %trimr(NewValue) + *LOVAL;

*Peter Dow* /
Dow Software Services, Inc.
909 793-9050
petercdow@xxxxxxxxx <mailto:petercdow@xxxxxxxxx>
pdow@xxxxxxxxxxxxxx <mailto:pdow@xxxxxxxxxxxxxx>/

On 1/28/2013 2:03 PM, Alan Shore wrote:
I am in the process of using the link
https://tools.ietf.org/html/rfc4231 (i.e use the test data and keys and check you get the correct output).
And in a later e-mail Tim Bronski wrote
And when you're running these tests, remember that the key size for
sha256 is 64 bytes and if the key is shorter (as it is in some tests)
pad to the right with nulls (x'00's).
How do you pad to the right with nulls (x'00's.) in RPG.
For example - I am starting with 4.3 Test case 2
My key in EBCDIC I s "Jefe" which I am converting to CCSID 1208 and the resultant field - in debug, hexadecimal, is
EVAL ConvSecretSharedKey :x
00000 4A656665 40404040 40404040 40404040 - ¢ÁÃÁ
00010 40404040 40404040 40404040 40404040 -
00020 40404040 ........ ........ ........ - ............
The beginning is correct (4A656665), but there are trailing blanks

Alan Shore
Programmer/Analyst, Direct Response
P:(631) 200-5019
C:(631) 880-8640
"If you're going through Hell, keep going" - Winston Churchill

-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of Tim Bronski
Sent: Saturday, January 26, 2013 9:14 AM
To: Midrange Systems Technical Discussion
Subject: Re: HMAC calculation

Firstly, have you verified your hmac code? If not go here and test against the vectors provided.
https://tools.ietf.org/html/rfc4231 (i.e use the test data and keys and check you get the correct output).

If you've got that ok....I'd be concerned when you say you're providing the xml in EBCDIC. Somewhere I'm certain it's being xlated. Your mac needs to be calculated over the EXACT same binary stream as it is on the remote end. Having it xlated in two different places is asking for trouble. The key should be the same bit string on either end too.

Can I ask who you're sending this to?

On 1/25/2013 10:44 PM, Alan Shore wrote:
Hi everyone
Hopefully someone will take pity on me and provide some answers (I'm
trying to get the sympathy vote) Before I forget, as I usually do, we
are on V5r4.

As part of a web service, I have to provide an authentication token
which "is calculated using the HMAC (keyed-Hash Message Authentication
Code) algorithm. This is a type of message authentication code (MAC) calculated using a specific algorithm involving a cryptographic hash function in combination with a secret key (the shared secret)."
The result of this is to be Hex encoded What I have done is used the
API Qc3CalculateHMAC for SHA_256 (prior e-mail submitted and people
have graciously responded) The result of this calculation is then to
be Hex encoded, so I have then used a service program that utilizes QtqIconvOpen, iconv and iconv_close.
The transmission of this data is being rejected due to the HMAC hex encoded field being incorrect.
I then discovered that the site I am transmitting to is "a Linux system so we are working in ASCII. Use UTF-8." As I was told.
So I thought that I would need to covert the string (and the secret
shared password) into the API Qc3CalculateHMAC into UTF-8 (CCSID 1208) - then use the service program that utilizes QtqIconvOpen, iconv and iconv_close.
However, the rest of the web_service transmission contains EBCDIC
values, so I assumed that the Hex encoded value had to be converted
BACK to EBCDIC so that the XML transmission would ALL be in EBCDIC to
be translated to UTF-8 as part of the transmission To cut a LOOOOOOOOONG story short, I have tried so many permutations and combinations of what is to be iconved before and after the Qc3CalculateHMAC I don't know where I am Needless to say ALL of my test transmissions have failed If anyone has a clearer had than me (who hasn't) and can point me in a good direction, I would be VERY grateful.

Alan Shore
Programmer/Analyst, Direct Response
P:(631) 200-5019
C:(631) 880-8640
"If you're going through Hell, keep going" - Winston Churchill

Disclaimer: This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system. E-mail transmission cannot be guaranteed to be secure or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. The sender therefore does not accept liability for any errors or omissions in the contents of this message, which arise as a result of e-mail transmission. If verification is required please request a hard-copy version. Any views or opinions presented are solely those of the author and do not necessarily represent those of the company.
Need secure FTP? Forget PASE...get your FREE sFTP here www.arpeggiosoftware.com
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/midrange-l.

Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2015 by MIDRANGE dot COM and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available here. If you have questions about this, please contact