AWS API Dlang, hmac sha256 function.

holo via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Oct 3 05:09:33 PDT 2015


On Saturday, 3 October 2015 at 05:02:58 UTC, Rikki Cattermole 
wrote:
> On 03/10/15 6:01 PM, Rikki Cattermole wrote:
>> On 03/10/15 4:54 PM, holo wrote:
>>> On Saturday, 3 October 2015 at 03:15:21 UTC, Rikki Cattermole 
>>> wrote:
>>>>
>>>> You could implement it yourself, (it looks pretty easy).
>>>> Or go the route of Botan:
>>>> https://github.com/etcimon/botan/blob/3bdc835d5b9bad7523deaa86fe98b1fbb2f09d6b/source/botan/mac/hmac.d
>>>>
>>>>
>>>
>>>
>>> Thank you for answer. I used dub to fetch botan, after that i 
>>> created
>>> project:
>>>
>>> dub init projectname botan
>>>
>>> and tried to add botan module:
>>>
>>> $ cat app.d
>>> #!/usr/bin/rdmd
>>>
>>> import std.stdio;
>>> import botan.mac.hmac;
>>>
>>> void main()
>>> {
>>>      writeln("Edit source/app.d to start your project.");
>>> }
>>>
>>> but when im trying to run my simple app i get:
>>>
>>> $ ./app.d
>>> ./app.d(4): Error: module hmac is in file 'botan/mac/hmac.d' 
>>> which
>>> cannot be read
>>> import path[0] = .
>>> import path[1] = /usr/include/dlang/dmd
>>> Failed: ["dmd", "-v", "-o-", "./app.d", "-I."]
>>>
>>> What am i doing wrong? How to add library with dub package 
>>> manager? Im
>>> really beginner in D (basically in programming) sorry if im 
>>> asking
>>> obvious questions.
>>
>> By the looks of that error message with paths, botan isn't 
>> actually
>> added as a dependency. Can you please paste the dub file?
>
> Ohhhh wait nevermind.
> Use dub to compile/run your program. You are using the shebang 
> line!
>
> $ dub run
>
>>> According to my other question are that functions equivalent 
>>> to that
>>> python one? If they are not doing exact that same i could not 
>>> create
>>> auth string which is needed to connect to AWS api.
>>
>> I can't say for certain if it is not exact. The reason I did 
>> not answer
>> it is because I am not familiar with environment or any of 
>> what you are
>> doing.
>> I can unfortunately only point you in the right direction.

Thank you for explaining how to use dub.

I find out in master branch of phobos on git hub is included 
hmac.d module which will be added in next release of phobos so i 
think that will be best solution for me to stick with standard 
library for beginning.

https://github.com/D-Programming-Language/phobos/tree/master/std

I downloaded hmac.d and new version of digest.d file and place 
them in my phobos library. I think it exactly contains what i 
need but when im trying to test it i have such error:

$ ./app.d
./app.d(9): Error: template std.digest.hmac.hmac cannot deduce 
function from argument types !(SHA!(512, 
256))(immutable(ubyte)[]), candidates are:
/usr/include/dlang/dmd/std/digest/hmac.d(202):        
std.digest.hmac.hmac(H) if (isDigest!H && hasBlockSize!H)
/usr/include/dlang/dmd/std/digest/hmac.d(208):        
std.digest.hmac.hmac(H, ulong blockSize)(scope const(ubyte)[] 
secret) if (isDigest!H)
Failed: ["dmd", "-v", "-o-", "./app.d", "-I."]



My test code (based on unint test from module) looks like that:

#!/usr/bin/rdmd

import std.stdio;
import std.digest.sha, std.digest.hmac;
import std.string : representation;

void main()
{
	auto hmac = hmac!SHA256("secretkey".representation);
	auto digest = hmac.put("texttohash".representation).finish;
	writeln(digest);
}

Am i using it correctly?


More information about the Digitalmars-d-learn mailing list