Skip to main content

crypto_dispatch/algorithms/
sha2.rs

1// SPDX-FileCopyrightText: Copyright © 2026 ReallyMe LLC. All rights reserved
2//
3// SPDX-License-Identifier: Apache-2.0
4
5use crate::traits::HashDigestAlgorithm;
6use crate::AlgorithmError;
7use crypto_core::HashAlgorithm;
8
9/// SHA-384 (SHA-2) hash adapter.
10pub struct Sha2_384Algo;
11
12/// SHA-512 (SHA-2) hash adapter.
13pub struct Sha2_512Algo;
14
15impl HashDigestAlgorithm for Sha2_384Algo {
16    const ALG: HashAlgorithm = HashAlgorithm::Sha2_384;
17
18    fn digest(message: &[u8]) -> Result<Vec<u8>, AlgorithmError> {
19        let digest = crypto_sha2::digest_sha2_384(message);
20        Ok(digest.as_bytes().to_vec())
21    }
22}
23
24impl HashDigestAlgorithm for Sha2_512Algo {
25    const ALG: HashAlgorithm = HashAlgorithm::Sha2_512;
26
27    fn digest(message: &[u8]) -> Result<Vec<u8>, AlgorithmError> {
28        let digest = crypto_sha2::digest_sha2_512(message);
29        Ok(digest.as_bytes().to_vec())
30    }
31}