View source code
Display the source code in std/digest/hmac.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.

std.digest.hmac.hmac.hmac - multiple declarations

Function hmac.hmac

Constructs an HMAC digest with the specified secret.

auto auto hmac (
  scope const(ubyte)[] secret
);

Returns

An instance of HMAC that can be fed data as desired, and finished to compute the final hash when done.

Example

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];
writeln(digest); // expected

Function hmac.hmac

Computes an HMAC digest over the given range of data with the specified secret.

DigestType!H hmac(T...) (
  scope T data,
  scope const(ubyte)[] secret
)
if (allSatisfy!(isDigestibleRange, typeof(data)));

Returns

The final HMAC hash.

Example

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];
writeln(digest); // expected
}

Authors

License

Boost License 1.0.