aboutsummaryrefslogtreecommitdiffstats
path: root/g10/free-packet.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2005-07-28 18:59:36 +0000
committerWerner Koch <[email protected]>2005-07-28 18:59:36 +0000
commit986a137c58cae8dc7210ccf51cdea38ec6e8828f (patch)
tree4f847f04509fc74a1fa6db4839abd5d41c80eb9c /g10/free-packet.c
parentConverted all m_free to xfree etc. (diff)
downloadgnupg-986a137c58cae8dc7210ccf51cdea38ec6e8828f.tar.gz
gnupg-986a137c58cae8dc7210ccf51cdea38ec6e8828f.zip
Implemented PKA trust model
Diffstat (limited to '')
-rw-r--r--g10/free-packet.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/g10/free-packet.c b/g10/free-packet.c
index 3ede4db9f..01ab543dd 100644
--- a/g10/free-packet.c
+++ b/g10/free-packet.c
@@ -1,6 +1,6 @@
/* free-packet.c - cleanup stuff for packets
- * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
- * Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003,
+ * 2005 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -62,10 +62,17 @@ free_seckey_enc( PKT_signature *sig )
mpi_free(sig->data[0]);
for(i=0; i < n; i++ )
mpi_free( sig->data[i] );
-
+
xfree(sig->revkey);
xfree(sig->hashed);
xfree(sig->unhashed);
+
+ if (sig->pka_info)
+ {
+ xfree (sig->pka_info->uri);
+ xfree (sig->pka_info);
+ }
+
xfree(sig);
}
@@ -195,6 +202,21 @@ copy_public_parts_to_secret_key( PKT_public_key *pk, PKT_secret_key *sk )
sk->keyid[1] = pk->keyid[1];
}
+
+static pka_info_t *
+cp_pka_info (const pka_info_t *s)
+{
+ pka_info_t *d = xmalloc (sizeof *s + strlen (s->email));
+
+ d->valid = s->valid;
+ d->checked = s->checked;
+ d->uri = s->uri? xstrdup (s->uri):NULL;
+ memcpy (d->fpr, s->fpr, sizeof s->fpr);
+ strcpy (d->email, s->email);
+ return d;
+}
+
+
PKT_signature *
copy_signature( PKT_signature *d, PKT_signature *s )
{
@@ -210,6 +232,7 @@ copy_signature( PKT_signature *d, PKT_signature *s )
for(i=0; i < n; i++ )
d->data[i] = mpi_copy( s->data[i] );
}
+ d->pka_info = s->pka_info? cp_pka_info (s->pka_info) : NULL;
d->hashed = cp_subpktarea (s->hashed);
d->unhashed = cp_subpktarea (s->unhashed);
if(s->numrevkeys)