MCPcopy Create free account
hub / github.com/chatmail/core / decrypt_bytes

Function decrypt_bytes

src/pgp.rs:503–526  ·  view source on GitHub ↗
(
        bytes: Vec<u8>,
        private_keys_for_decryption: &[SignedSecretKey],
        auth_tokens_for_decryption: &[String],
    )

Source from the content-addressed store, hash-verified

501 use pgp::packet::PublicKeyEncryptedSessionKey;
502
503 async fn decrypt_bytes(
504 bytes: Vec<u8>,
505 private_keys_for_decryption: &[SignedSecretKey],
506 auth_tokens_for_decryption: &[String],
507 ) -> Result<pgp::composed::Message<'static>> {
508 let t = &TestContext::new().await;
509 t.set_config(Config::ConfiguredAddr, Some("alice@example.org"))
510 .await
511 .expect("Failed to configure address");
512
513 for secret in auth_tokens_for_decryption {
514 token::save(t, token::Namespace::Auth, None, secret, 0).await?;
515 }
516 let [secret_key] = private_keys_for_decryption else {
517 panic!("Only one private key is allowed anymore");
518 };
519 store_self_keypair(t, secret_key).await?;
520
521 let mime_message = wrap_encrypted_part(bytes.try_into().unwrap());
522 let rendered = render_outer_message(vec![], mime_message);
523 let parsed = mailparse::parse_mail(rendered.as_bytes())?;
524 let (decrypted, _fp) = decrypt::decrypt(t, &parsed).await?.unwrap();
525 Ok(decrypted)
526 }
527
528 async fn pk_decrypt_and_validate<'a>(
529 ctext: &'a [u8],

Calls 6

wrap_encrypted_partFunction · 0.85
render_outer_messageFunction · 0.85
decryptFunction · 0.85
saveFunction · 0.70
store_self_keypairFunction · 0.70
set_configMethod · 0.45

Tested by 2