asn1_codecs/per/aper/decode/
decode_charstrings.rs

1//! Functionality for decoding character strings
2
3use crate::per::common::decode::decode_string_common;
4use crate::per::PerCodecData;
5use crate::PerCodecError;
6
7// 27.5.3 and 27.5.4
8/// Decode a VisibleString CharacterString Type.
9pub fn decode_visible_string(
10    data: &mut PerCodecData,
11    lb: Option<i128>,
12    ub: Option<i128>,
13    is_extensible: bool,
14) -> Result<String, PerCodecError> {
15    log::trace!(
16        "decode_visible_string: lb: {:?}, ub: {:?}, is_extensible: {}",
17        lb,
18        ub,
19        is_extensible
20    );
21    decode_string_common(data, lb, ub, is_extensible, 8, true)
22}
23
24/// Decode a PrintableString CharacterString Type.
25pub fn decode_printable_string(
26    data: &mut PerCodecData,
27    lb: Option<i128>,
28    ub: Option<i128>,
29    is_extensible: bool,
30) -> Result<String, PerCodecError> {
31    log::trace!(
32        "decode_printable_string: lb: {:?}, ub: {:?}, is_extensible: {}",
33        lb,
34        ub,
35        is_extensible
36    );
37    decode_string_common(data, lb, ub, is_extensible, 8, true)
38}
39
40// UTF-8 String is always - indefinite length case as it's not a fixed character width string. It's
41// almost like decoding an octet string.
42// 27.6
43/// Decode a UTF8String CharacterString Type.
44pub fn decode_utf8_string(
45    data: &mut PerCodecData,
46    lb: Option<i128>,
47    ub: Option<i128>,
48    is_extensible: bool,
49) -> Result<String, PerCodecError> {
50    log::trace!(
51        "decode_utf8_string: lb: {:?}, ub: {:?}, is_extensible: {}",
52        lb,
53        ub,
54        is_extensible
55    );
56    decode_string_common(data, lb, ub, is_extensible, 8, true)
57}
58
59// UTCTime is Just Like UTF8String
60/// Decode a UTCTime CharacterString Type.
61pub fn decode_utc_time(
62    data: &mut PerCodecData,
63    lb: Option<i128>,
64    ub: Option<i128>,
65    is_extensible: bool,
66) -> Result<String, PerCodecError> {
67    log::trace!(
68        "decode_utc_time: lb: {:?}, ub: {:?}, is_extensible: {}",
69        lb,
70        ub,
71        is_extensible
72    );
73    decode_string_common(data, lb, ub, is_extensible, 8, true)
74}