From 3983f30bd2f671d4f7c5bbe39a1d6a7b191f2af5 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 17 May 1999 20:03:24 +0000 Subject: See ChangeLog: Mon May 17 21:54:43 CEST 1999 Werner Koch --- g10/build-packet.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'g10/build-packet.c') diff --git a/g10/build-packet.c b/g10/build-packet.c index 577c10984..f90790343 100644 --- a/g10/build-packet.c +++ b/g10/build-packet.c @@ -43,6 +43,7 @@ static int do_pubkey_enc( IOBUF out, int ctb, PKT_pubkey_enc *enc ); static u32 calc_plaintext( PKT_plaintext *pt ); static int do_plaintext( IOBUF out, int ctb, PKT_plaintext *pt ); static int do_encrypted( IOBUF out, int ctb, PKT_encrypted *ed ); +static int do_encrypted_mdc( IOBUF out, int ctb, PKT_encrypted *ed ); static int do_compressed( IOBUF out, int ctb, PKT_compressed *cd ); static int do_signature( IOBUF out, int ctb, PKT_signature *sig ); static int do_onepass_sig( IOBUF out, int ctb, PKT_onepass_sig *ops ); @@ -74,7 +75,8 @@ build_packet( IOBUF out, PACKET *pkt ) switch( pkt->pkttype ) { case PKT_OLD_COMMENT: pkt->pkttype = PKT_COMMENT; break; case PKT_PLAINTEXT: new_ctb = pkt->pkt.plaintext->new_ctb; break; - case PKT_ENCRYPTED: new_ctb = pkt->pkt.encrypted->new_ctb; break; + case PKT_ENCRYPTED: + case PKT_ENCRYPTED_MDC: new_ctb = pkt->pkt.encrypted->new_ctb; break; case PKT_COMPRESSED:new_ctb = pkt->pkt.compressed->new_ctb; break; default: break; } @@ -110,6 +112,9 @@ build_packet( IOBUF out, PACKET *pkt ) case PKT_ENCRYPTED: rc = do_encrypted( out, ctb, pkt->pkt.encrypted ); break; + case PKT_ENCRYPTED_MDC: + rc = do_encrypted_mdc( out, ctb, pkt->pkt.encrypted ); + break; case PKT_COMPRESSED: rc = do_compressed( out, ctb, pkt->pkt.compressed ); break; @@ -171,7 +176,7 @@ write_fake_data( IOBUF out, MPI a ) void *p; p = mpi_get_opaque( a, &i ); - iobuf_write( a, p, i ); + iobuf_write( out, p, i ); } } @@ -508,6 +513,24 @@ do_encrypted( IOBUF out, int ctb, PKT_encrypted *ed ) return rc; } +static int +do_encrypted_mdc( IOBUF out, int ctb, PKT_encrypted *ed ) +{ + int rc = 0; + u32 n; + + assert( ed->mdc_method ); + + n = ed->len ? (ed->len + 10) : 0; + write_header(out, ctb, n ); + iobuf_put(out, 1 ); /* version */ + iobuf_put(out, ed->mdc_method ); + + /* This is all. The caller has to write the real data */ + + return rc; +} + static int do_compressed( IOBUF out, int ctb, PKT_compressed *cd ) { @@ -560,6 +583,7 @@ find_subpkt( byte *buffer, sigsubpkttype_t reqtype, if( buflen < 2 ) break; n = (( n - 192 ) << 8) + *buffer + 192; + buffer++; buflen--; } if( buflen < n ) -- cgit v1.2.3