[fpc-pascal] HMAC_SHA1 and FPC
silvioprog
silvioprog at gmail.com
Sun Mar 24 21:06:39 CET 2013
2013/3/24 Sven Barth <pascaldragon at googlemail.com>
> On 24.03.2013 19:35, silvioprog wrote:
>
>> 2013/3/24 Sven Barth <pascaldragon at googlemail.com
>> <mailto:pascaldragon@**googlemail.com <pascaldragon at googlemail.com>>>
>>
>>
>> On 24.03.2013 16:59, silvioprog wrote:
>>
>> My function is more fast that cHash
>> (http://fundementals.__sourcef**orge.net/dl.html<http://sourceforge.net/dl.html>
>> <http://fundementals.**sourceforge.net/dl.html<http://fundementals.sourceforge.net/dl.html>>).
>> The comparison
>>
>> result is:
>>
>> HMAC: 00:00:01:689 cHash: 00:00:02:038
>>
>> My final unit is:
>>
>> http://pastebin.com/4484g9i8
>>
>>
>> Could you maybe run your unit through some test vectors if you
>> haven't done already? E.g. these:
>> http://tools.ietf.org/html/__**rfc4231<http://tools.ietf.org/html/__rfc4231>
>>
>> <http://tools.ietf.org/html/**rfc4231<http://tools.ietf.org/html/rfc4231>
>> >
>>
>> If that works satisfactory you could create a bug report and we
>> could include it in the hash package.
>>
>> Regards,
>> Sven
>>
>>
>> Yes. I'll try to implement it now! :)
>>
>> For SHA1 this is the final implementation: http://pastebin.com/t4e3tvXa
>>
>> Now I'll implement it for MD5 conforming
>> http://tools.ietf.org/html/**rfc2202 <http://tools.ietf.org/html/rfc2202>,
>> create some samples showing HMACMD5
>> and HMACSHA1 and finally create a bug report.
>>
>> Thank you very much Sven! :)
>>
>
> Some comments:
> - Maybe you should have HMACSHA1 return a TSHA1Digest; if the user wants a
> String she can use SHA1Print herself (and HMACMD5 should consequently
> return a TMD5Digest) [Note: this will work, because the digest always has a
> fixed length for MD5 and SHA1 and this is also true for HMAC as you can see
> in the test vectors in RFC2202)
>
Hm... You are right. Those looking for more speed might prefer TSHA1Digest.
I'll use TSHA1Digest instead string.
So, I'm tested the test cases and all worked fine, ex (test 2):
=====
test_case = 2
key = "Jefe"
key_len = 4
data = "what do ya want for nothing?"
data_len = 28
digest = 0xeffcdf6ae5eb2fa2d27416d5f184df9c259a7c79
=====
with TFileStream.Create('test.txt', fmCreate) do
try
X := HMACSHA1('Jefe', 'what do ya want for nothing?');
Write(Pointer(X)^, Length(X));
finally
Free;
end;
Content in test.txt: effcdf6ae5eb2fa2d27416d5f184df9c259a7c79. Perfect! :-*
- I'm not that happy with SHA1Raw and the constants being exported in the
> interface...
:/ I also think not. I'll remove it from the interface.
--
Silvio Clécio
My public projects - github.com/silvioprog
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20130324/677ba5fe/attachment.html>
More information about the fpc-pascal
mailing list