[svn] GnuPG - r4053 - trunk/g10
svn author dshaw
cvs at cvs.gnupg.org
Thu Mar 9 04:35:27 CET 2006
Author: dshaw
Date: 2006-03-09 04:35:26 +0100 (Thu, 09 Mar 2006)
New Revision: 4053
Modified:
trunk/g10/ChangeLog
trunk/g10/keylist.c
trunk/g10/mainproc.c
Log:
* mainproc.c (get_pka_address), keylist.c (show_notation): Remove
duplicate code by using notation functions.
Modified: trunk/g10/ChangeLog
===================================================================
--- trunk/g10/ChangeLog 2006-03-09 03:31:28 UTC (rev 4052)
+++ trunk/g10/ChangeLog 2006-03-09 03:35:26 UTC (rev 4053)
@@ -1,5 +1,8 @@
2006-03-08 David Shaw <dshaw at jabberwocky.com>
+ * mainproc.c (get_pka_address), keylist.c (show_notation): Remove
+ duplicate code by using notation functions.
+
* packet.h, build-packet.c (sig_to_notation), keygen.c
(keygen_add_notations): Provide printable text for
non-human-readable notation values.
Modified: trunk/g10/keylist.c
===================================================================
--- trunk/g10/keylist.c 2006-03-09 03:31:28 UTC (rev 4052)
+++ trunk/g10/keylist.c 2006-03-09 03:35:26 UTC (rev 4053)
@@ -332,71 +332,55 @@
void
show_notation(PKT_signature *sig,int indent,int mode,int which)
{
- const byte *p;
- size_t len;
- int seq=0,crit;
FILE *fp=mode?log_stream():stdout;
+ struct notation *nd,*notations;
if(which==0)
which=3;
+ notations=sig_to_notation(sig);
+
/* There may be multiple notations in the same sig. */
+ for(nd=notations;nd;nd=nd->next)
+ {
+ if(mode!=2)
+ {
+ int has_at=!!strchr(nd->name,'@');
- while((p=enum_sig_subpkt(sig->hashed,SIGSUBPKT_NOTATION,&len,&seq,&crit)))
- if(len>=8)
- {
- int n1,n2;
+ if((which&1 && !has_at) || (which&2 && has_at))
+ {
+ int i;
+ const char *str;
- n1=(p[4]<<8)|p[5];
- n2=(p[6]<<8)|p[7];
+ for(i=0;i<indent;i++)
+ putchar(' ');
- if(8+n1+n2!=len)
- {
- log_info(_("WARNING: invalid notation data found\n"));
- continue;
- }
+ if(nd->flags.critical)
+ str=_("Critical signature notation: ");
+ else
+ str=_("Signature notation: ");
+ if(mode)
+ log_info("%s",str);
+ else
+ printf("%s",str);
+ /* This is all UTF8 */
+ print_utf8_string(fp,nd->name,strlen(nd->name));
+ fprintf(fp,"=");
+ print_utf8_string(fp,nd->value,strlen(nd->value));
+ fprintf(fp,"\n");
+ }
+ }
- if(mode!=2)
- {
- int has_at=!!memchr(p+8,'@',n1);
+ if(mode)
+ {
+ write_status_buffer(STATUS_NOTATION_NAME,
+ nd->name,strlen(nd->name),0);
+ write_status_buffer(STATUS_NOTATION_DATA,
+ nd->value,strlen(nd->value),50);
+ }
+ }
- if((which&1 && !has_at) || (which&2 && has_at))
- {
- int i;
- const char *str;
-
- for(i=0;i<indent;i++)
- putchar(' ');
-
- /* This is UTF8 */
- if(crit)
- str=_("Critical signature notation: ");
- else
- str=_("Signature notation: ");
- if(mode)
- log_info("%s",str);
- else
- printf("%s",str);
- print_utf8_string(fp,p+8,n1);
- fprintf(fp,"=");
-
- if(*p&0x80)
- print_utf8_string(fp,p+8+n1,n2);
- else
- fprintf(fp,"[ %s ]",_("not human readable"));
-
- fprintf(fp,"\n");
- }
- }
-
- if(mode)
- {
- write_status_buffer ( STATUS_NOTATION_NAME, p+8 , n1, 0 );
- write_status_buffer ( STATUS_NOTATION_DATA, p+8+n1, n2, 50 );
- }
- }
- else
- log_info(_("WARNING: invalid notation data found\n"));
+ free_notation(notations);
}
static void
Modified: trunk/g10/mainproc.c
===================================================================
--- trunk/g10/mainproc.c 2006-03-09 03:31:28 UTC (rev 4052)
+++ trunk/g10/mainproc.c 2006-03-09 03:35:26 UTC (rev 4053)
@@ -1334,47 +1334,32 @@
static pka_info_t *
get_pka_address (PKT_signature *sig)
{
- const unsigned char *p;
- size_t len, n1, n2;
- int seq = 0;
pka_info_t *pka = NULL;
+ struct notation *nd,*notation;
- while ((p = enum_sig_subpkt (sig->hashed, SIGSUBPKT_NOTATION,
- &len, &seq, NULL)))
+ notation=sig_to_notation(sig);
+
+ for(nd=notation;nd;nd=nd->next)
{
- if (len < 8)
- continue; /* Notation packet is too short. */
- n1 = (p[4]<<8)|p[5];
- n2 = (p[6]<<8)|p[7];
- if (8 + n1 + n2 != len)
- continue; /* Length fields of notation packet are inconsistent. */
- p += 8;
- if (n1 != 21 || memcmp (p, "pka-address at gnupg.org", 21))
+ if(strcmp(nd->name,"pka-address at gnupg.org")!=0)
continue; /* Not the notation we want. */
- p += n1;
- if (n2 < 3)
- continue; /* Impossible email address. */
- if (pka)
- break; /* For now we only use the first valid PKA notation. In
- future we might want to keep additional PKA
- notations in a linked list. */
-
- pka = xmalloc (sizeof *pka + n2);
- pka->valid = 0;
- pka->checked = 0;
- pka->uri = NULL;
- memcpy (pka->email, p, n2);
- pka->email[n2] = 0;
-
- if (!is_valid_mailbox (pka->email))
- {
- /* We don't accept invalid mail addresses. */
- xfree (pka);
- pka = NULL;
- }
+ /* For now we only use the first valid PKA notation. In future
+ we might want to keep additional PKA notations in a linked
+ list. */
+ if (is_valid_mailbox (pka->email))
+ {
+ pka = xmalloc (sizeof *pka + strlen(nd->value));
+ pka->valid = 0;
+ pka->checked = 0;
+ pka->uri = NULL;
+ strcpy (pka->email, nd->value);
+ break;
+ }
}
+ free_notation(notation);
+
return pka;
}
More information about the Gnupg-commits
mailing list