obadgen 0.2.4

Generates (aka "bakes") basic Open Badge annotated images (lib & CLI-tool).
// SPDX-FileCopyrightText: 2023 Robin Vobruba <hoijui.quaero@gmail.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

use std::fmt::Display;

// use hex_literal::hex;
use sha2::{Digest, Sha256};

pub fn sha256<S: AsRef<str>>(input: S) -> String {
    let mut hasher = Sha256::new();

    // write input message
    hasher.update(input.as_ref().as_bytes());

    // read hash digest and consume hasher
    let result = hasher.finalize();

    // assert_eq!(result[..], hex!("
    //     b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
    // ")[..]);

    // format!("sha256${result:x}")
    format!("sha256${}", faster_hex::hex_string(result.as_ref()))
}

pub fn sha256_with_salt<S1: AsRef<str> + Display, S2: AsRef<str> + Display>(
    input: S1,
    salt: S2,
) -> String {
    sha256(format!("{input}{salt}"))
}