pub struct TlvSet { /* private fields */ }Expand description
TLV 区的集合。保留原始顺序,以便重写文件时保持字节稳定。
Implementations§
Source§impl TlvSet
impl TlvSet
Sourcepub fn encoded_len(&self) -> usize
pub fn encoded_len(&self) -> usize
编码后的总字节数。
Sourcepub fn parse(data: &[u8]) -> Result<Self>
pub fn parse(data: &[u8]) -> Result<Self>
解析 TLV 区。
只做结构解析,不检查未知 CRITICAL 类型——那需要在 MAC 验证通过之后再做,
见 TlvSet::check_critical。
条目数受 parse_limits::MAX_TLV_ENTRIES 限制,防止大量零长度条目耗尽内存。
§Errors
Error::Truncated:长度字段越界或数据截断Error::MalformedTlv:条目数超过上限
Sourcepub fn check_critical(&self) -> Result<()>
pub fn check_critical(&self) -> Result<()>
检查是否存在未知且 CRITICAL 的条目。
规范 §9 步骤 7 要求此时拒绝打开文件。私有区间(≥ 0x8000)的未知类型即使标记 CRITICAL 也应忽略,因为那是第三方实现的自用字段。
§Errors
存在未知 CRITICAL 条目时返回 Error::UnknownCriticalTlv。
Trait Implementations§
impl Eq for TlvSet
impl StructuralPartialEq for TlvSet
Auto Trait Implementations§
impl Forget for TlvSet
impl Freeze for TlvSet
impl RefUnwindSafe for TlvSet
impl Send for TlvSet
impl Sync for TlvSet
impl Unpin for TlvSet
impl UnsafeUnpin for TlvSet
impl UnwindSafe for TlvSet
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more