On 04/10/15 1:49 AM, holo wrote:
On Saturday, 3 October 2015 at 12:22:11 UTC, Rikki Cattermole wrote:
On 04/10/15 1:09 AM, holo wrote:
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:
[...]
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
[...]
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?
By the looks of things the problem is with SHA256, I'm guessing it
doesn't have its block size defined.
https://github.com/D-Programming-Language/phobos/blob/master/std/digest/digest.d#L394
You'll also need to update sha.d as well. Otherwise it looks good.
I updated sha.d and now im getting following error:
$ ./app.d
/usr/include/dlang/dmd/std/digest/sha.d(225): Error: pure function
'std.digest.sha.SHA!(512u, 160u).SHA.transform' cannot call impure
function 'core.cpuid.ssse3'
/usr/include/dlang/dmd/std/digest/digest.d(285): Error: template
instance std.range.primitives.isOutputRange!(SHA!(512u, 160u),
const(ubyte)[]) error instantiating
/usr/include/dlang/dmd/std/digest/digest.d(851): instantiated from here:
isDigest!(SHA!(512u, 160u))
/usr/include/dlang/dmd/std/digest/sha.d(1179): while looking for
match for WrapperDigest!(SHA!(512u, 160u))
Failed: ["dmd", "-v", "-o-", "./app.d", "-I."]
And one more file (ssse3.d) needs to be updated.
You are going to be playing whack a mole I think for a while.