tlsn_core/attestation/
extension.rs

1use std::error::Error;
2
3use serde::{Deserialize, Serialize};
4
5use crate::hash::impl_domain_separator;
6
7/// An attestation extension.
8#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9pub struct Extension {
10    /// Extension identifier.
11    pub id: Vec<u8>,
12    /// Extension data.
13    pub value: Vec<u8>,
14}
15
16impl_domain_separator!(Extension);
17
18/// Invalid extension error.
19#[derive(Debug, thiserror::Error)]
20#[error("invalid extension: {reason}")]
21pub struct InvalidExtension {
22    reason: Box<dyn Error + Send + Sync + 'static>,
23}
24
25impl InvalidExtension {
26    /// Creates a new invalid extension error.
27    pub fn new<E>(reason: E) -> Self
28    where
29        E: Into<Box<dyn Error + Send + Sync + 'static>>,
30    {
31        Self {
32            reason: reason.into(),
33        }
34    }
35}