zig-hmac-drbg

zig-hmac-drbg

zig version zig doc reference Zig build License: MIT

Deterministic random bit generator using hmac/sha256 as per NIST 800-90A.

Usage

const std = @import("std");
const hmacdrbg = @import("hmac_drbg");

pub fn main() !void {
    var seed: [48]u8 = undefined;
    std.crypto.random.bytes(&seed);

    var rng = hmacdrbg.HmacDrbg.init(256, &seed, null);

    var out: [32]u8 = undefined;
    _ = rng.generate(&out);

    // Re-seeding is required every 10,000 generate calls
    var new_seed: [48]u8 = undefined;
    std.crypto.random.bytes(&new_seed);
    try rng.reseed(&new_seed);
}