summaryrefslogtreecommitdiffstats
path: root/openpgp/src/serialize/cert.rs
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2020-01-18 18:22:45 +0100
committerJustus Winter <justus@sequoia-pgp.org>2020-01-20 10:34:37 +0100
commit6b23cd5fe9c3e654f986660956fd34ef294ac2f5 (patch)
tree78a2a31ef5a3378e2b01a642370ecd3c2bf9ab43 /openpgp/src/serialize/cert.rs
parent2bf687546649f2683c773272edec14d6a79c51f9 (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.rs11
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.