use cardanowall::poe_standard::{EncryptionEnvelope, ItemEntry};
use cardanowall::sealed_poe::{
sealed_envelope_from_parsed, ParsedEnvelope, ParsedSlot, SealedEnvelope,
};
#[must_use]
pub fn envelope_from_item(item: &ItemEntry) -> Option<SealedEnvelope> {
let enc = item.enc.as_ref()?;
sealed_envelope_from_parsed(&parsed_from_encryption_envelope(enc))
}
fn parsed_from_encryption_envelope(enc: &EncryptionEnvelope) -> ParsedEnvelope {
ParsedEnvelope {
scheme: Some(enc.scheme as i64),
aead: Some(enc.aead.clone()),
kem: enc.kem.clone(),
nonce: Some(enc.nonce.clone()),
slots: enc.slots.as_ref().map(|slots| {
slots
.iter()
.map(|s| ParsedSlot {
epk: s.epk.clone(),
kem_ct: s.kem_ct.clone(),
wrap: s.wrap.clone(),
})
.collect()
}),
slots_mac: enc.slots_mac.clone(),
}
}