| @safe unittest | |
| { | |
| import std.digest.hmac; | |
| import std.ascii : LetterCase; | |
| import std.digest : toHexString; | |
| import std.digest.sha : SHA1; | |
| import std.string : representation; | |
| auto secret = "secret".representation; | |
| assert("The quick brown fox jumps over the lazy dog" | |
| .representation | |
| .hmac!SHA1(secret) | |
| .toHexString!(LetterCase.lower) == "198ea1ea04c435c1246b586a06d5cf11c3ffcda6"); | |
| } | |
| @safe pure nothrow @nogc unittest | |
| { | |
| import std.digest.hmac; | |
| import std.digest.sha : SHA1; | |
| import std.string : representation; | |
| auto hmac = HMAC!SHA1("My s3cR3T keY".representation); | |
| hmac.put("Hello, world".representation); | |
| static immutable expected = [ | |
| 130, 32, 235, 44, 208, 141, | |
| 150, 232, 211, 214, 162, 195, | |
| 188, 127, 52, 89, 100, 68, 90, 216]; | |
| assert(hmac.finish() == expected); | |
| } | |
| @safe pure nothrow @nogc unittest | |
| { | |
| import std.digest.hmac; | |
| import std.digest.sha : SHA1; | |
| import std.string : representation; | |
| string data1 = "Hello, world", data2 = "Hola mundo"; | |
| auto hmac = HMAC!SHA1("My s3cR3T keY".representation); | |
| hmac.put(data1.representation); | |
| hmac.start(); // reset digest | |
| hmac.put(data2.representation); // start over | |
| static immutable expected = [ | |
| 122, 151, 232, 240, 249, 80, | |
| 19, 178, 186, 77, 110, 23, 208, | |
| 52, 11, 88, 34, 151, 192, 255]; | |
| assert(hmac.finish() == expected); | |
| } | |
| @safe pure nothrow @nogc unittest | |
| { | |
| import std.digest.hmac; | |
| import std.digest.hmac, std.digest.sha; | |
| import std.string : representation; | |
| string data1 = "Hello, world", data2 = "Hola mundo"; | |
| auto hmac = HMAC!SHA1("My s3cR3T keY".representation); | |
| hmac.put(data1.representation) | |
| .put(data2.representation); | |
| static immutable expected = [ | |
| 197, 57, 52, 3, 13, 194, 13, | |
| 36, 117, 228, 8, 11, 111, 51, | |
| 165, 3, 123, 31, 251, 113]; | |
| assert(hmac.finish() == expected); | |
| } | |
| @safe pure nothrow @nogc unittest | |
| { | |
| import std.digest.hmac; | |
| import std.digest.sha : SHA1; | |
| import std.string : representation; | |
| string data1 = "Hello, world", data2 = "Hola mundo"; | |
| auto hmac = HMAC!SHA1("My s3cR3T keY".representation); | |
| auto testDigest = hmac.put(data1.representation) | |
| .put(data2.representation) | |
| .finish(); | |
| static immutable expected = [ | |
| 197, 57, 52, 3, 13, 194, 13, | |
| 36, 117, 228, 8, 11, 111, 51, | |
| 165, 3, 123, 31, 251, 113]; | |
| assert(testDigest == expected); | |
| } | |
| @safe pure nothrow @nogc unittest | |
| { | |
| import std.digest.hmac; | |
| import std.digest.sha : SHA1; | |
| import std.string : representation; | |
| string data1 = "Hello, world", data2 = "Hola mundo"; | |
| auto digest = hmac!SHA1("My s3cR3T keY".representation) | |
| .put(data1.representation) | |
| .put(data2.representation) | |
| .finish(); | |
| static immutable expected = [ | |
| 197, 57, 52, 3, 13, 194, 13, 36, | |
| 117, 228, 8, 11, 111, 51, 165, | |
| 3, 123, 31, 251, 113]; | |
| assert(digest == expected); | |
| } | |
| @safe pure nothrow @nogc unittest | |
| { | |
| import std.digest.hmac; | |
| import std.algorithm.iteration : map; | |
| import std.digest.sha : SHA1; | |
| import std.string : representation; | |
| string data = "Hello, world"; | |
| auto digest = data.representation | |
| .map!(a => cast(ubyte)(a+1)) | |
| .hmac!SHA1("My s3cR3T keY".representation); | |
| static assert(is(typeof(digest) == ubyte[20])); | |
| static immutable expected = [ | |
| 163, 208, 118, 179, 216, 93, | |
| 17, 10, 84, 200, 87, 104, 244, | |
| 111, 136, 214, 167, 210, 58, 10]; | |
| assert(digest == expected); | |
| } | |
| @safe pure nothrow @nogc unittest | |
| { | |
| import std.digest.hmac; | |
| import std.digest.sha : SHA1; | |
| import std.string : representation; | |
| string data1 = "Hello, world", data2 = "Hola mundo"; | |
| auto hmac = HMAC!SHA1("My s3cR3T keY".representation); | |
| auto digest = hmac.put(data1.representation) | |
| .put(data2.representation) | |
| .finish(); | |
| static immutable expected = [ | |
| 197, 57, 52, 3, 13, 194, 13, | |
| 36, 117, 228, 8, 11, 111, 51, | |
| 165, 3, 123, 31, 251, 113]; | |
| assert(digest == expected); | |
| } | |