|
|
@@ -544,10 +544,10 @@ func NewEntity(name, comment, email string, config *packet.Config) (*Entity, err
|
|
|
return e, nil
|
|
|
}
|
|
|
|
|
|
-// SerializePrivate serializes an Entity, including private key material, to
|
|
|
-// the given Writer. For now, it must only be used on an Entity returned from
|
|
|
-// NewEntity.
|
|
|
-// config is ignored
|
|
|
+// SerializePrivate serializes an Entity, including private key material, but
|
|
|
+// excluding signatures from other entities, to the given Writer.
|
|
|
+// Identities and subkeys are re-signed in case they changed since NewEntry.
|
|
|
+// If config is nil, sensible defaults will be used.
|
|
|
func (e *Entity) SerializePrivate(w io.Writer, config *packet.Config) (err error) {
|
|
|
err = e.PrivateKey.Serialize(w)
|
|
|
if err != nil {
|
|
|
@@ -558,6 +558,10 @@ func (e *Entity) SerializePrivate(w io.Writer, config *packet.Config) (err error
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
+ err = ident.SelfSignature.SignUserId(ident.UserId.Id, e.PrimaryKey, e.PrivateKey, config)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
err = ident.SelfSignature.Serialize(w)
|
|
|
if err != nil {
|
|
|
return
|
|
|
@@ -568,6 +572,10 @@ func (e *Entity) SerializePrivate(w io.Writer, config *packet.Config) (err error
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
+ err = subkey.Sig.SignKey(subkey.PublicKey, e.PrivateKey, config)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
err = subkey.Sig.Serialize(w)
|
|
|
if err != nil {
|
|
|
return
|
|
|
@@ -576,8 +584,8 @@ func (e *Entity) SerializePrivate(w io.Writer, config *packet.Config) (err error
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
-// Serialize writes the public part of the given Entity to w. (No private
|
|
|
-// key material will be output).
|
|
|
+// Serialize writes the public part of the given Entity to w, including
|
|
|
+// signatures from other entities. No private key material will be output.
|
|
|
func (e *Entity) Serialize(w io.Writer) error {
|
|
|
err := e.PrimaryKey.Serialize(w)
|
|
|
if err != nil {
|