diff options
author | Werner Koch <[email protected]> | 1998-08-05 16:51:59 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 1998-08-05 16:51:59 +0000 |
commit | 9b609091ab3249a41c3a9f2417ba0250405792c8 (patch) | |
tree | eac3b271488722262dd71f003641d88d35fb64a1 /g10/build-packet.c | |
parent | add coprocess facility (diff) | |
download | gnupg-9b609091ab3249a41c3a9f2417ba0250405792c8.tar.gz gnupg-9b609091ab3249a41c3a9f2417ba0250405792c8.zip |
intermediate check in
Diffstat (limited to 'g10/build-packet.c')
-rw-r--r-- | g10/build-packet.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/g10/build-packet.c b/g10/build-packet.c index c7ed8fa2a..1ddb420ae 100644 --- a/g10/build-packet.c +++ b/g10/build-packet.c @@ -301,18 +301,24 @@ do_secret_key( IOBUF out, int ctb, PKT_secret_key *sk ) iobuf_put(a, sk->protect.s2k.mode ); iobuf_put(a, sk->protect.s2k.hash_algo ); if( sk->protect.s2k.mode == 1 - || sk->protect.s2k.mode == 4 ) + || sk->protect.s2k.mode == 3 ) iobuf_write(a, sk->protect.s2k.salt, 8 ); - if( sk->protect.s2k.mode == 4 ) - write_32(a, sk->protect.s2k.count ); + if( sk->protect.s2k.mode == 3 ) + iobuf_put(a, sk->protect.s2k.count ); iobuf_write(a, sk->protect.iv, 8 ); } } else iobuf_put(a, 0 ); - for( ; i < nskey; i++ ) - mpi_write(a, sk->skey[i] ); - write_16(a, sk->csum ); + if( sk->is_protected && sk->version >= 4 + && !(opt.emulate_bugs & EMUBUG_ENCR_MPI) ) { + BUG(); + } + else { + for( ; i < nskey; i++ ) + mpi_write(a, sk->skey[i] ); + write_16(a, sk->csum ); + } leave: write_header2(out, ctb, iobuf_get_temp_length(a), sk->hdrbytes, 1 ); @@ -331,17 +337,17 @@ do_symkey_enc( IOBUF out, int ctb, PKT_symkey_enc *enc ) assert( enc->version == 4 ); switch( enc->s2k.mode ) { - case 0: case 1: case 4: break; + case 0: case 1: case 3: break; default: log_bug("do_symkey_enc: s2k=%d\n", enc->s2k.mode ); } iobuf_put( a, enc->version ); iobuf_put( a, enc->cipher_algo ); iobuf_put( a, enc->s2k.mode ); iobuf_put( a, enc->s2k.hash_algo ); - if( enc->s2k.mode == 1 || enc->s2k.mode == 4 ) { + if( enc->s2k.mode == 1 || enc->s2k.mode == 3 ) { iobuf_write(a, enc->s2k.salt, 8 ); - if( enc->s2k.mode == 4 ) - write_32(a, enc->s2k.count); + if( enc->s2k.mode == 3 ) + iobuf_put(a, enc->s2k.count); } if( enc->seskeylen ) iobuf_write(a, enc->seskey, enc->seskeylen ); |