diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2020-01-18 18:22:45 +0100 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2020-01-20 10:34:37 +0100 |
commit | 6b23cd5fe9c3e654f986660956fd34ef294ac2f5 (patch) | |
tree | 78a2a31ef5a3378e2b01a642370ecd3c2bf9ab43 /openpgp/src/serialize/cert.rs | |
parent | 2bf687546649f2683c773272edec14d6a79c51f9 (diff) |
openpgp: New lookup interface for user attributes.
- Makes Cert::user_attributes behave like Cert::keys. By default,
naked &UserAttributes are returned. ComponentIter::policy(t)
changes the iterator to return the new ComponentAmalgamation
type. Finally, ComponentIter::components() returns all component
bindings like Cert::user_attributes() used to do.
- The same abstractions can be used for Cert::userids later.
- See #414.
Diffstat (limited to 'openpgp/src/serialize/cert.rs')
-rw-r--r-- | openpgp/src/serialize/cert.rs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/openpgp/src/serialize/cert.rs b/openpgp/src/serialize/cert.rs index aac5e6f5..9c41e057 100644 --- a/openpgp/src/serialize/cert.rs +++ b/openpgp/src/serialize/cert.rs @@ -77,7 +77,7 @@ impl Cert { } } - for u in self.user_attributes() { + for u in self.user_attributes().components() { if export && ! u.self_signatures().iter().chain(u.self_revocations()).any( |s| s.exportable_certification().unwrap_or(true)) { @@ -190,7 +190,7 @@ impl SerializeInto for Cert { } } - for u in self.user_attributes() { + for u in self.user_attributes().components() { l += PacketRef::UserAttribute(u.user_attribute()).serialized_len(); for s in u.self_revocations() { @@ -423,7 +423,7 @@ impl<'a> TSK<'a> { } } - for u in self.cert.user_attributes() { + for u in self.cert.user_attributes().components() { if export && ! u.self_signatures().iter().chain(u.self_revocations()).any( |s| s.exportable_certification().unwrap_or(true)) { @@ -570,7 +570,7 @@ impl<'a> SerializeInto for TSK<'a> { } } - for u in self.cert.user_attributes() { + for u in self.cert.user_attributes().components() { l += PacketRef::UserAttribute(u.user_attribute()).serialized_len(); for s in u.self_revocations() { @@ -770,8 +770,7 @@ mod test { assert_eq!(cert.userids().count(), 1); assert!(cert.userids().nth(0).unwrap().binding_signature(None).is_some()); assert_eq!(cert.user_attributes().count(), 1); - assert!(cert.user_attributes().nth(0).unwrap().binding_signature(None) - .is_some()); + assert!(cert.user_attributes().policy(None).nth(0).is_some()); // The binding signature is not exportable, so when we export // and re-parse, we expect the userid to be gone. |