From 9e7b58e610dab6e97bba8adbe661ed3fb954ed2b Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Fri, 30 Apr 2021 15:09:43 +0200 Subject: openpgp: Reuse the signer. --- openpgp/src/cert/builder.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'openpgp') diff --git a/openpgp/src/cert/builder.rs b/openpgp/src/cert/builder.rs index 0864a0fb..7f65c5ab 100644 --- a/openpgp/src/cert/builder.rs +++ b/openpgp/src/cert/builder.rs @@ -12,7 +12,7 @@ use crate::packet::Signature; use crate::packet::signature; use crate::cert::prelude::*; use crate::Error; -use crate::crypto::Password; +use crate::crypto::{Password, Signer}; use crate::types::{ Features, HashAlgorithm, @@ -965,8 +965,7 @@ impl CertBuilder<'_> { } // Generate & self-sign primary key. - let (primary, sig) = self.primary_key(creation_time)?; - let mut signer = primary.clone().into_keypair().unwrap(); + let (primary, sig, mut signer) = self.primary_key(creation_time)?; let mut cert = Cert::try_from(vec![ Packet::SecretKey({ @@ -1067,8 +1066,9 @@ impl CertBuilder<'_> { Ok((cert, revocation)) } + /// Creates the primary key and a direct key signature. fn primary_key(&self, creation_time: std::time::SystemTime) - -> Result<(key::SecretKey, Signature)> + -> Result<(key::SecretKey, Signature, Box)> { let mut key = self.primary.ciphersuite .unwrap_or(self.ciphersuite) @@ -1098,7 +1098,7 @@ impl CertBuilder<'_> { .expect("key generated above has a secret"); let sig = sig.sign_direct_key(&mut signer, key.parts_as_public())?; - Ok((key, sig)) + Ok((key, sig, Box::new(signer))) } } -- cgit v1.2.3