Sigil documentation
ReferenceRust referencesigil-core

sigil-core · mail

Source declarations, signatures and documentation for mail.

Source: sigil/node/sigil-core/src/mail.rs. SHA-256: 22b8ff2d591b28fb405bb0bc2e1fc379b5390792fb9fcaaa5d406d7f2879ab95.

This reference follows declared source modules, retains conditional attributes, and includes public declarations and implementation methods. Private-module re-exports and trait resolution require the compiler; this is a source reference, not a claim that every listed item is a root import. Function bodies and constant values are omitted.

mail::MAILBOX_ID_DOMAIN

pub const MAILBOX_ID_DOMAIN: &str;

Source line: 12.

mail::ALIAS_ID_DOMAIN

pub const ALIAS_ID_DOMAIN: &str;

Source line: 13.

mail::KEY_ID_DOMAIN

pub const KEY_ID_DOMAIN: &str;

Source line: 14.

mail::POLICY_ID_DOMAIN

pub const POLICY_ID_DOMAIN: &str;

Source line: 15.

mail::DELIVERY_ID_DOMAIN

pub const DELIVERY_ID_DOMAIN: &str;

Source line: 16.

mail::DELIVERY_SIGNATURE_DOMAIN

pub const DELIVERY_SIGNATURE_DOMAIN: &str;

Source line: 17.

mail::DELEGATION_ID_DOMAIN

pub const DELEGATION_ID_DOMAIN: &str;

Source line: 18.

mail::ABUSE_ID_DOMAIN

pub const ABUSE_ID_DOMAIN: &str;

Source line: 19.

mail::TX_DOMAIN

pub const TX_DOMAIN: &str;

Source line: 20.

mail::EVENT_DOMAIN

pub const EVENT_DOMAIN: &str;

Source line: 21.

mail::MAIL_TREASURY_DID

pub const MAIL_TREASURY_DID: &str;

Source line: 23.

mail::validate_hex32

pub fn validate_hex32(label: &str, value: &str) -> Result<(), CoreError>;

Source line: 37.

mail::mailbox_id

pub fn mailbox_id(
    chain_id: &str,
    subject_did: &str,
    mailbox_salt_commitment: &str,
) -> Result<String, CoreError>;

Source line: 61.

mail::alias_id

pub fn alias_id(
    chain_id: &str,
    alias_kind: MailAliasKind,
    canonical_alias_or_commitment: &str,
) -> Result<String, CoreError>;

Source line: 75.

mail::key_id

pub fn key_id(
    chain_id: &str,
    mailbox_id: &str,
    purpose: MailKeyPurpose,
    algorithm: &str,
    public_key_bytes: &[u8],
    key_version: u64,
) -> Result<String, CoreError>;

Source line: 91.

mail::policy_id

pub fn policy_id(
    chain_id: &str,
    mailbox_id: &str,
    policy_version: u64,
    policy_hash: &str,
) -> Result<String, CoreError>;

Source line: 118.

mail::delivery_commitment_id

pub fn delivery_commitment_id(
    chain_id: &str,
    sender_route_id: &str,
    recipient_mailbox_id: &str,
    encrypted_weave_ref_commitment: &str,
    ciphertext_content_hash: &str,
    client_nonce: &str,
    recipient_key_version: u64,
) -> Result<String, CoreError>;

Source line: 133.

mail::delegation_id

pub fn delegation_id(
    chain_id: &str,
    mailbox_id: &str,
    grantee_did: &str,
    nonce: &str,
) -> Result<String, CoreError>;

Source line: 164.

mail::abuse_id

pub fn abuse_id(
    chain_id: &str,
    mailbox_id: &str,
    delivery_commitment_id: &str,
    reporter_did: &str,
    evidence_commitment: &str,
) -> Result<String, CoreError>;

Source line: 180.

mail::validate_no_plaintext_mail_value

pub fn validate_no_plaintext_mail_value(label: &str, value: &str) -> Result<(), CoreError>;

Source line: 203.

mail::MailboxStatus

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum MailboxStatus {
    Active,
    Locked,
    Recovering,
    Deactivated,
}

Source line: 234.

mail::MailboxCapabilityRecord

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailboxCapabilityRecord {
pub mailbox_id: String,
pub subject_did: String,
pub controller_policy: ControlPolicy,
pub recovery_policy_ref: Option<String>,
pub wallet_address: Option<String>,
pub primary_alias_id: Option<String>,
pub alias_ids: Vec<String>,
pub status: MailboxStatus,
pub current_policy_version: u64,
pub current_encryption_key_version: u64,
pub current_signing_key_version: u64,
pub mailbox_storage_commitment: Option<String>,
pub created_at_height: u64,
pub updated_at_height: u64,
pub sequence: u64
}

Source line: 242.

mail::MailboxCapabilityRecord::validate_public_shape

pub fn validate_public_shape(&self) -> Result<(), CoreError>;

Source line: 261.

mail::MailAliasKind

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum MailAliasKind {
    SigilUsername,
    Did,
    Wallet,
    FutureAddress,
    Blinded,
}

Source line: 279.

mail::MailAliasKind::as_str

pub fn as_str(self) -> &'static str;

Source line: 288.

mail::AliasStatus

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AliasStatus {
    Active,
    Revoked,
    Superseded,
}

Source line: 301.

mail::MailAliasRecord

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailAliasRecord {
pub alias_id: String,
pub mailbox_id: String,
pub alias_kind: MailAliasKind,
pub public_value: Option<String>,
pub blinded_commitment: Option<String>,
pub verified_source_ref: Option<String>,
pub status: AliasStatus,
pub created_at_height: u64,
pub revoked_at_height: Option<u64>,
pub sequence: u64
}

Source line: 308.

mail::MailAliasRecord::validate_public_shape

pub fn validate_public_shape(&self) -> Result<(), CoreError>;

Source line: 322.

mail::PolicyStatus

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum PolicyStatus {
    Active,
    Superseded,
    Revoked,
}

Source line: 343.

mail::PolicyAction

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum PolicyAction {
    Allow,
    Deny,
    ContactsOnly,
    RequireStake,
    RequireFee,
    RequireVerifiedSender,
    RequireProof,
}

Source line: 351.

mail::SenderSelector

#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case", tag = "kind", content = "value")]
pub enum SenderSelector {
    Any,
    Did(String),
    Mailbox(String),
    Alias(String),
    Wallet(String),
    VerifiedOrganization(String),
    Blinded(String),
}

Source line: 363.

mail::SenderSelector::matches

pub fn matches(&self, route: &SenderRoute) -> bool;

Source line: 374.

mail::ReceivePolicyRule

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ReceivePolicyRule {
pub selector: SenderSelector,
pub action: PolicyAction,
pub priority: u16,
pub stake_required: u128,
pub fee_required: u128,
pub max_per_epoch: Option<u32>
}

Source line: 391.

mail::MailboxPolicyRecord

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailboxPolicyRecord {
pub policy_id: String,
pub mailbox_id: String,
pub version: u64,
pub status: PolicyStatus,
pub rules: Vec<ReceivePolicyRule>,
pub emergency_lock_bypass: bool,
pub created_at_height: u64,
pub revoked_at_height: Option<u64>,
pub sequence: u64
}

Source line: 401.

mail::MailboxPolicyRecord::validate_public_shape

pub fn validate_public_shape(&self) -> Result<(), CoreError>;

Source line: 414.

mail::evaluate_policy

pub fn evaluate_policy(
    rules: &[ReceivePolicyRule],
    route: &SenderRoute,
) -> Result<PolicyAction, CoreError>;

Source line: 426.

mail::MailKeyPurpose

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum MailKeyPurpose {
    Encryption,
    Signing,
    Recovery,
    Device,
}

Source line: 446.

mail::MailKeyPurpose::as_str

pub fn as_str(self) -> &'static str;

Source line: 454.

mail::KeyStatus

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum KeyStatus {
    Active,
    Rotated,
    Revoked,
    Expired,
}

Source line: 466.

mail::MailPublicKeyRecord

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailPublicKeyRecord {
pub key_id: String,
pub mailbox_id: String,
pub purpose: MailKeyPurpose,
pub algorithm: String,
pub public_key_hex: String,
pub device_commitment: String,
pub version: u64,
pub status: KeyStatus,
pub published_at_height: u64,
pub expires_at_height: Option<u64>,
pub revoked_at_height: Option<u64>,
pub sequence: u64
}

Source line: 474.

mail::MailPublicKeyRecord::validate_public_shape

pub fn validate_public_shape(&self, height: u64) -> Result<(), CoreError>;

Source line: 490.

mail::DeliveryStatus

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum DeliveryStatus {
    Committed,
    Refunded,
    Slashed,
    Burned,
}

Source line: 518.

mail::SenderRoute

#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case", tag = "kind", content = "value")]
pub enum SenderRoute {
    Did { did: String },
    Mailbox { mailbox_id: String },
    Alias { alias_id: String },
    Wallet { wallet_address: String },
    VerifiedOrganization { org_did: String },
    Blinded { commitment: String },
    SelectiveDisclosure { commitment: String },
}

Source line: 527.

mail::SenderRoute::route_id

pub fn route_id(&self) -> String;

Source line: 538.

mail::SenderRoute::validate_public_shape

pub fn validate_public_shape(&self) -> Result<(), CoreError>;

Source line: 551.

mail::DeliveryCommitmentRecord

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct DeliveryCommitmentRecord {
pub delivery_commitment_id: String,
pub sender_route: SenderRoute,
pub sender_route_id: String,
pub recipient_mailbox_id: String,
pub encrypted_weave_ref_commitment: String,
pub ciphertext_content_hash: String,
pub recipient_key_id: String,
pub recipient_key_version: u64,
pub policy_version: u64,
pub client_nonce: String,
pub block_height: u64,
pub status: DeliveryStatus,
pub reply_to_commitment: Option<String>,
pub required_fee: u128,
pub locked_stake: u128
}

Source line: 567.

mail::DeliveryCommitmentRecord::validate_privacy_shape

pub fn validate_privacy_shape(&self) -> Result<(), CoreError>;

Source line: 586.

mail::delivery_signature_payload

pub fn delivery_signature_payload(
    chain_id: &str,
    commitment: &DeliveryCommitmentRecord,
) -> Result<Vec<u8>, CoreError>;

Source line: 607.

mail::EconomicsStatus

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum EconomicsStatus {
    Active,
    Refunded,
    Slashed,
    Burned,
}

Source line: 639.

mail::SenderEconomicsRecord

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct SenderEconomicsRecord {
pub sender_route_id: String,
pub recipient_mailbox_id: String,
pub locked_stake: u128,
pub collected_fee: u128,
pub status: EconomicsStatus,
pub updated_at_height: u64
}

Source line: 647.

mail::MailPermissionScope

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum MailPermissionScope {
    DeliverMail,
    ReadMailboxReferences,
    WriteMailboxReferences,
    ManageReceivePolicy,
    ManageAliases,
    ManageKeys,
}

Source line: 658.

mail::MailDelegationGrant

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailDelegationGrant {
pub grant_id: String,
pub mailbox_id: String,
pub grantor_did: String,
pub grantee_did: String,
pub scopes: Vec<MailPermissionScope>,
pub expires_at_height: Option<u64>,
pub revoked_at_height: Option<u64>,
pub rate_limit_per_epoch: Option<u32>,
pub nonce: String,
pub created_at_height: u64
}

Source line: 668.

mail::AbuseStatus

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AbuseStatus {
    Open,
    Resolved,
    Rejected,
}

Source line: 683.

mail::AbuseResolution

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AbuseResolution {
    Refund,
    Slash,
    Burn,
    Reject,
}

Source line: 691.

mail::AbuseReport

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct AbuseReport {
pub abuse_report_id: String,
pub mailbox_id: String,
pub delivery_commitment_id: String,
pub reporter_did: String,
pub evidence_commitment: String,
pub status: AbuseStatus,
pub resolution: Option<AbuseResolution>,
pub created_at_height: u64,
pub resolved_at_height: Option<u64>
}

Source line: 699.

mail::AbuseReport::validate_public_shape

pub fn validate_public_shape(&self) -> Result<(), CoreError>;

Source line: 712.

mail::MailCreateMailboxData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailCreateMailboxData {
pub mailbox_id: String,
pub subject_did: String,
pub controller_policy: ControlPolicy,
pub wallet_address: Option<String>,
pub mailbox_salt_commitment: String,
pub mailbox_storage_commitment: Option<String>,
pub client_nonce: String
}

Source line: 723.

mail::MailAddAliasData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailAddAliasData {
pub mailbox_id: String,
pub alias: MailAliasRecord,
pub expected_sequence: u64,
pub client_nonce: String
}

Source line: 734.

mail::MailRemoveAliasData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailRemoveAliasData {
pub mailbox_id: String,
pub alias_id: String,
pub expected_sequence: u64,
pub client_nonce: String
}

Source line: 742.

mail::MailSetPrimaryAliasData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailSetPrimaryAliasData {
pub mailbox_id: String,
pub alias_id: String,
pub expected_sequence: u64,
pub client_nonce: String
}

Source line: 750.

mail::MailMailboxStatusData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailMailboxStatusData {
pub mailbox_id: String,
pub expected_sequence: u64,
pub client_nonce: String
}

Source line: 758.

mail::MailLockMailboxData

pub type MailLockMailboxData = MailMailboxStatusData;

Source line: 764.

mail::MailUnlockMailboxData

pub type MailUnlockMailboxData = MailMailboxStatusData;

Source line: 765.

mail::MailDeactivateMailboxData

pub type MailDeactivateMailboxData = MailMailboxStatusData;

Source line: 766.

mail::MailRecoverMailboxData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailRecoverMailboxData {
pub mailbox_id: String,
pub recovery_policy_ref: String,
pub new_controller_policy: ControlPolicy,
pub expected_sequence: u64,
pub client_nonce: String
}

Source line: 769.

mail::MailUpdateReceivePolicyData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailUpdateReceivePolicyData {
pub mailbox_id: String,
pub policy: MailboxPolicyRecord,
pub expected_sequence: u64,
pub client_nonce: String
}

Source line: 778.

mail::MailRevokeReceivePolicyData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailRevokeReceivePolicyData {
pub mailbox_id: String,
pub policy_version: u64,
pub expected_sequence: u64,
pub client_nonce: String
}

Source line: 786.

mail::MailPublishKeyData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailPublishKeyData {
pub mailbox_id: String,
pub key: MailPublicKeyRecord,
pub expected_sequence: u64,
pub client_nonce: String
}

Source line: 794.

mail::MailRotateKeyData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailRotateKeyData {
pub mailbox_id: String,
pub old_key_id: String,
pub new_key: MailPublicKeyRecord,
pub expected_sequence: u64,
pub client_nonce: String
}

Source line: 802.

mail::MailRevokeKeyData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailRevokeKeyData {
pub mailbox_id: String,
pub key_id: String,
pub expected_sequence: u64,
pub client_nonce: String
}

Source line: 811.

mail::MailExpireKeysData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailExpireKeysData {
pub mailbox_id: String,
pub before_height: u64,
pub client_nonce: String
}

Source line: 819.

mail::MailPublishDeliveryCommitmentData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailPublishDeliveryCommitmentData {
pub commitment: DeliveryCommitmentRecord,
pub sender_signature_hex: Option<String>,
pub sender_signing_key_id: Option<String>,
pub sender_signing_key_version: Option<u64>,
pub client_nonce: String
}

Source line: 826.

mail::MailReportAbuseData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailReportAbuseData {
pub report: AbuseReport,
pub client_nonce: String
}

Source line: 835.

mail::MailResolveAbuseData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailResolveAbuseData {
pub abuse_report_id: String,
pub resolution: AbuseResolution,
pub resolver_did: String,
pub client_nonce: String
}

Source line: 841.

mail::MailGrantPermissionData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailGrantPermissionData {
pub grant: MailDelegationGrant,
pub client_nonce: String
}

Source line: 849.

mail::MailRevokePermissionData

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailRevokePermissionData {
pub grant_id: String,
pub mailbox_id: String,
pub expected_sequence: u64,
pub client_nonce: String
}

Source line: 855.

On this page

mail::MAILBOX_ID_DOMAINmail::ALIAS_ID_DOMAINmail::KEY_ID_DOMAINmail::POLICY_ID_DOMAINmail::DELIVERY_ID_DOMAINmail::DELIVERY_SIGNATURE_DOMAINmail::DELEGATION_ID_DOMAINmail::ABUSE_ID_DOMAINmail::TX_DOMAINmail::EVENT_DOMAINmail::MAIL_TREASURY_DIDmail::validate_hex32mail::mailbox_idmail::alias_idmail::key_idmail::policy_idmail::delivery_commitment_idmail::delegation_idmail::abuse_idmail::validate_no_plaintext_mail_valuemail::MailboxStatusmail::MailboxCapabilityRecordmail::MailboxCapabilityRecord::validate_public_shapemail::MailAliasKindmail::MailAliasKind::as_strmail::AliasStatusmail::MailAliasRecordmail::MailAliasRecord::validate_public_shapemail::PolicyStatusmail::PolicyActionmail::SenderSelectormail::SenderSelector::matchesmail::ReceivePolicyRulemail::MailboxPolicyRecordmail::MailboxPolicyRecord::validate_public_shapemail::evaluate_policymail::MailKeyPurposemail::MailKeyPurpose::as_strmail::KeyStatusmail::MailPublicKeyRecordmail::MailPublicKeyRecord::validate_public_shapemail::DeliveryStatusmail::SenderRoutemail::SenderRoute::route_idmail::SenderRoute::validate_public_shapemail::DeliveryCommitmentRecordmail::DeliveryCommitmentRecord::validate_privacy_shapemail::delivery_signature_payloadmail::EconomicsStatusmail::SenderEconomicsRecordmail::MailPermissionScopemail::MailDelegationGrantmail::AbuseStatusmail::AbuseResolutionmail::AbuseReportmail::AbuseReport::validate_public_shapemail::MailCreateMailboxDatamail::MailAddAliasDatamail::MailRemoveAliasDatamail::MailSetPrimaryAliasDatamail::MailMailboxStatusDatamail::MailLockMailboxDatamail::MailUnlockMailboxDatamail::MailDeactivateMailboxDatamail::MailRecoverMailboxDatamail::MailUpdateReceivePolicyDatamail::MailRevokeReceivePolicyDatamail::MailPublishKeyDatamail::MailRotateKeyDatamail::MailRevokeKeyDatamail::MailExpireKeysDatamail::MailPublishDeliveryCommitmentDatamail::MailReportAbuseDatamail::MailResolveAbuseDatamail::MailGrantPermissionDatamail::MailRevokePermissionData