summaryrefslogtreecommitdiffstats
path: root/openpgp/src
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2018-11-14 17:25:48 +0100
committerJustus Winter <justus@sequoia-pgp.org>2018-11-14 17:27:51 +0100
commitd6f87cf000f5b7198daadf721e7741484fd58f87 (patch)
treea2d45380f0763860e30cc85b1760f0c84c1ecdab /openpgp/src
parent3b6a3443d6721739516b1526d3cc64a0ce89d1f8 (diff)
openpgp: Add tracing.
Diffstat (limited to 'openpgp/src')
-rw-r--r--openpgp/src/parse/stream.rs28
1 files changed, 21 insertions, 7 deletions
diff --git a/openpgp/src/parse/stream.rs b/openpgp/src/parse/stream.rs
index 88fb473a..f7d61de5 100644
--- a/openpgp/src/parse/stream.rs
+++ b/openpgp/src/parse/stream.rs
@@ -40,6 +40,9 @@ use parse::{
PacketParserResult,
};
+/// Whether to trace execution by default (on stderr).
+const TRACE : bool = false;
+
/// How much data to buffer before giving it to the caller.
const BUFFER_SIZE: usize = 25 * 1024 * 1024;
@@ -643,6 +646,8 @@ impl<'a, H: VerificationHelper + DecryptionHelper> Decryptor<'a, H> {
pub(crate) fn from_buffered_reader(bio: Box<BufferedReader<Cookie> + 'a>,
helper: H) -> Result<Decryptor<'a, H>>
{
+ tracer!(TRACE, "Decryptor::from_buffered_reader", 0);
+
let mut ppr = PacketParserBuilder::from_buffered_reader(bio)?
.map(helper.mapping()).finalize()?;
@@ -662,6 +667,7 @@ impl<'a, H: VerificationHelper + DecryptionHelper> Decryptor<'a, H> {
while let PacketParserResult::Some(mut pp) = ppr {
v.helper.inspect(&pp)?;
if ! pp.possible_message() {
+ t!("Malformed message");
return Err(Error::MalformedMessage(
"Malformed OpenPGP message".into()).into());
}
@@ -675,6 +681,8 @@ impl<'a, H: VerificationHelper + DecryptionHelper> Decryptor<'a, H> {
'decrypt_seip: while let Some(secret) =
v.helper.get_secret(&pkesk_refs[..], &skesk_refs[..])?
{
+ t!("helper.get_secret() returned: {:?}", secret);
+
match secret {
Secret::Asymmetric {
ref identity, ref key, ref secret,
@@ -685,9 +693,11 @@ impl<'a, H: VerificationHelper + DecryptionHelper> Decryptor<'a, H> {
let r = p.recipient();
*r == keyid || r.is_wildcard()
}) {
- if let Ok((algo, key)) =
- pkesk.decrypt(&key, &secret)
- {
+ let res = pkesk.decrypt(&key, &secret);
+ t!("{:?}.decrypt({:?}, {:?}) => {:?}",
+ pkesk, key, secret, res);
+
+ if let Ok((algo, key)) = res {
if pp.decrypt(algo, &key).is_ok() {
v.identity = Some(identity.clone());
decrypted = true;
@@ -699,11 +709,15 @@ impl<'a, H: VerificationHelper + DecryptionHelper> Decryptor<'a, H> {
Secret::Symmetric { ref password } => {
for skesk in skesks.iter() {
- let (algo, key) = skesk.decrypt(password)?;
+ let res = skesk.decrypt(password);
+ t!("{:?}.decrypt({:?}) => {:?}",
+ skesk, password, res);
- if pp.decrypt(algo, &key).is_ok() {
- decrypted = true;
- break 'decrypt_seip;
+ if let Ok((algo, key)) = res {
+ if pp.decrypt(algo, &key).is_ok() {
+ decrypted = true;
+ break 'decrypt_seip;
+ }
}
}
},