MIDRANGE dot COM Mailing List Archive



Home » MIDRANGE-L » January 2013

RE: HMAC calculation



fixed

Thanks for your reply John, I looked up in the reference manual and your memory is pretty good
It is in fact %str
However, I believe I have found another way - not pretty but it seems to work
Even though my coding of
ConvSecretSharedKey = %trim(HldConvSecretSharedKey) + *allx'00';
Did not compile, I can code the following
Nullfield = *allx'00';
Where Nullfield is defined as
d Nullfield s 1000a
And now my coding is
ConvSecretSharedKey = %trim(HldConvSecretSharedKey) + Nullfield;
And
ConvdataToHash = %trim(HldConvdataToHash) + Nullfield:

Using debug, the value of these fields are the EXACT same as displayed @ https://tools.ietf.org/html/rfc4231
Go figure
Alan Shore
Programmer/Analyst, Direct Response
E:AShore@xxxxxxxx
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 John McKee
Sent: Tuesday, January 29, 2013 8:09 AM
To: Midrange Systems Technical Discussion
Subject: Re: HMAC calculation

Alan,


VERY WILD GUESS. I can't remember the name of the BIF. Seem to think it is %str. Anyway, some function that has two arguments. First is the character value, and the second is the count. In your case, the count would be an expression to fill the remainder of the variable.

I did this in C, MANY years ago. May be wrong.

John McKee

On Tue, Jan 29, 2013 at 6:58 AM, Alan Shore <ashore@xxxxxxxx> wrote:
Hi Peter
I spoke too soon.
Right now I am looking for my noose so that I can hang myself.

This is my code
d SecretSharedKey...
d s 36
d ConvSecretSharedKey...
d s like(SecretSharedKey)
d HldConvSecretSharedKey...
d s like(SecretSharedKey)
d ConvdataToHash...
d s 500a
d HldConvdataToHash...
d s like(ConvdataToHash)
SecretSharedKey = 'Jefe';
dataToHash = 'what do ya want for nothing?'; HldFromCCSID = 37;
HldToCCSID = 1208;
HldConvSecretSharedKey = convertCCSID(%trim(SecretSharedKey):
HldFromCCSID:
HldToCCSID);
ConvSecretSharedKey = %trim(HldConvSecretSharedKey) + *loval;
HldConvdataToHash = convertCCSID(%trim(dataToHash):
HldFromCCSID:
HldToCCSID);
ConvdataToHash = %trim(HldConvdataToHash) + *loval;

And it wont compile.
*RNF7421 30 2 Operands are not compatible with the type of operator.
I have changed the lines and remove the + *loval and the program
compiles I have tried *allx'00'; instead of *loval I have even tried
*null Same error

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


-----Original Message-----
From: Alan Shore
Sent: Tuesday, January 29, 2013 7:23 AM
To: midrange-l@xxxxxxxxxxxx
Subject: RE: HMAC calculation

Peter
MUCH appreciated

Alan Shore
Programmer/Analyst, Direct Response
E:AShore@xxxxxxxx
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 Peter Dow
Sent: Tuesday, January 29, 2013 3:26 AM
To: midrange-l@xxxxxxxxxxxx
Subject: 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:
Hi
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
E:AShore@xxxxxxxx
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
E:AShore@xxxxxxxx
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.


--
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.

--
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.

--
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-2014 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