aboutsummaryrefslogtreecommitdiffstats
path: root/g10/parse-packet.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>1999-04-26 15:53:01 +0000
committerWerner Koch <[email protected]>1999-04-26 15:53:01 +0000
commitbbf86c6e592b62cd6ae0e74ac37822b69242a4aa (patch)
treec82d4dfef3fcdb2a769d978acd304e111d5b8d83 /g10/parse-packet.c
parentSee ChangeLog: Sun Apr 18 20:48:15 CEST 1999 Werner Koch (diff)
downloadgnupg-bbf86c6e592b62cd6ae0e74ac37822b69242a4aa.tar.gz
gnupg-bbf86c6e592b62cd6ae0e74ac37822b69242a4aa.zip
See ChangeLog: Mon Apr 26 17:48:15 CEST 1999 Werner Koch
Diffstat (limited to 'g10/parse-packet.c')
-rw-r--r--g10/parse-packet.c46
1 files changed, 29 insertions, 17 deletions
diff --git a/g10/parse-packet.c b/g10/parse-packet.c
index 61a226a39..94bf0f38d 100644
--- a/g10/parse-packet.c
+++ b/g10/parse-packet.c
@@ -1024,7 +1024,7 @@ parse_signature( IOBUF inp, int pkttype, unsigned long pktlen,
sig->digest_start[0] = iobuf_get_noeof(inp); pktlen--;
sig->digest_start[1] = iobuf_get_noeof(inp); pktlen--;
- if( is_v4 ) { /*extract required information */
+ if( is_v4 && sig->pubkey_algo ) { /*extract required information */
const byte *p;
/* set sig->flags.unknown_critical if there is a
@@ -1065,24 +1065,36 @@ parse_signature( IOBUF inp, int pkttype, unsigned long pktlen,
}
}
- ndata = pubkey_get_nsig(sig->pubkey_algo);
- if( !ndata ) {
- if( list_mode )
- printf("\tunknown algorithm %d\n", sig->pubkey_algo );
- unknown_pubkey_warning( sig->pubkey_algo );
- /* we store the plain material in data[0], so that we are able
- * to write it back with build_packet() */
- sig->data[0] = read_rest(inp, &pktlen );
+ if( !sig->pubkey_algo ) {
+ n = pktlen;
+ sig->data[0] = mpi_read(inp, &n, 0 );
+ pktlen -=n;
+ if( list_mode ) {
+ printf("\tMDC data: ");
+ mpi_print(stdout, sig->data[0], mpi_print_mode );
+ putchar('\n');
+ }
}
else {
- for( i=0; i < ndata; i++ ) {
- n = pktlen;
- sig->data[i] = mpi_read(inp, &n, 0 );
- pktlen -=n;
- if( list_mode ) {
- printf("\tdata: ");
- mpi_print(stdout, sig->data[i], mpi_print_mode );
- putchar('\n');
+ ndata = pubkey_get_nsig(sig->pubkey_algo);
+ if( !ndata ) {
+ if( list_mode )
+ printf("\tunknown algorithm %d\n", sig->pubkey_algo );
+ unknown_pubkey_warning( sig->pubkey_algo );
+ /* we store the plain material in data[0], so that we are able
+ * to write it back with build_packet() */
+ sig->data[0] = read_rest(inp, &pktlen );
+ }
+ else {
+ for( i=0; i < ndata; i++ ) {
+ n = pktlen;
+ sig->data[i] = mpi_read(inp, &n, 0 );
+ pktlen -=n;
+ if( list_mode ) {
+ printf("\tdata: ");
+ mpi_print(stdout, sig->data[i], mpi_print_mode );
+ putchar('\n');
+ }
}
}
}