asn1_rs/asn1_types/strings/
printablestring.rs1use crate::{asn1_string, TestValidCharset};
2use crate::{Error, Result};
3#[cfg(not(feature = "std"))]
4use alloc::string::String;
5
6asn1_string!(PrintableString);
7
8impl<'a> TestValidCharset for PrintableString<'a> {
9 fn test_valid_charset(i: &[u8]) -> Result<()> {
10 #[allow(clippy::trivially_copy_pass_by_ref)]
12 fn is_printable(b: &u8) -> bool {
13 matches!(*b,
14 b'a'..=b'z'
15 | b'A'..=b'Z'
16 | b'0'..=b'9'
17 | b' '
18 | b'\''
19 | b'('
20 | b')'
21 | b'+'
22 | b','
23 | b'-'
24 | b'.'
25 | b'/'
26 | b':'
27 | b'='
28 | b'?')
29 }
30
31 if !i.iter().all(is_printable) {
32 return Err(Error::StringInvalidCharset);
33 }
34 Ok(())
35 }
36}