Skip to main content

icydb/base/validator/
hash.rs

1use crate::{design::prelude::*, traits::Validator};
2
3///
4/// Sha256
5///
6
7#[validator]
8pub struct Sha256;
9
10impl Validator<str> for Sha256 {
11    fn validate(&self, s: &str, ctx: &mut dyn VisitorContext) {
12        // length check
13        if s.len() != 64 {
14            ctx.issue(format!("must be 64 characters, got {}", s.len()));
15            return;
16        }
17
18        // hex characters
19        if !s.chars().all(|c| c.is_ascii_hexdigit()) {
20            ctx.issue("must contain only hexadecimal characters (0-9, a-f)".to_string());
21        }
22    }
23}