Skip to main content

crypto_dispatch/
hash.rs

1// SPDX-FileCopyrightText: Copyright © 2026 ReallyMe LLC. All rights reserved
2//
3// SPDX-License-Identifier: Apache-2.0
4
5use crate::algorithms::sha2::{Sha2_384Algo, Sha2_512Algo};
6use crate::algorithms::sha2_256::Sha2_256Algo;
7use crate::algorithms::sha3::{Sha3_224Algo, Sha3_384Algo, Sha3_512Algo};
8use crate::algorithms::sha3_256::Sha3_256Algo;
9use crate::traits::HashDigestAlgorithm;
10use crate::AlgorithmError;
11use crypto_core::HashAlgorithm;
12
13/// Compute a digest using the selected hash algorithm.
14pub fn hash_digest(alg: HashAlgorithm, message: &[u8]) -> Result<Vec<u8>, AlgorithmError> {
15    match alg {
16        HashAlgorithm::Sha2_256 => Sha2_256Algo::digest(message),
17        HashAlgorithm::Sha2_384 => Sha2_384Algo::digest(message),
18        HashAlgorithm::Sha2_512 => Sha2_512Algo::digest(message),
19        HashAlgorithm::Sha3_224 => Sha3_224Algo::digest(message),
20        HashAlgorithm::Sha3_256 => Sha3_256Algo::digest(message),
21        HashAlgorithm::Sha3_384 => Sha3_384Algo::digest(message),
22        HashAlgorithm::Sha3_512 => Sha3_512Algo::digest(message),
23    }
24}