aboutsummaryrefslogtreecommitdiffstats
path: root/g10
diff options
context:
space:
mode:
Diffstat (limited to 'g10')
-rw-r--r--g10/ChangeLog15
-rw-r--r--g10/armor.c2
-rw-r--r--g10/card-util.c2
-rw-r--r--g10/cipher.c2
-rw-r--r--g10/compress.c51
-rw-r--r--g10/delkey.c2
-rw-r--r--g10/encode.c4
-rw-r--r--g10/encr-data.c411
-rw-r--r--g10/export.c18
-rw-r--r--g10/getkey.c12
-rw-r--r--g10/gpg.c10
-rw-r--r--g10/gpgv.c6
-rw-r--r--g10/import.c2
-rw-r--r--g10/keydb.h8
-rw-r--r--g10/keyedit.c6
-rw-r--r--g10/keylist.c8
-rw-r--r--g10/keyserver-internal.h10
-rw-r--r--g10/keyserver.c40
-rw-r--r--g10/main.h38
-rw-r--r--g10/mainproc.c4
-rw-r--r--g10/options.h16
-rw-r--r--g10/packet.h2
-rw-r--r--g10/parse-packet.c5
-rw-r--r--g10/pkclist.c16
-rw-r--r--g10/plaintext.c4
-rw-r--r--g10/revoke.c2
-rw-r--r--g10/sign.c12
-rw-r--r--g10/skclist.c6
-rw-r--r--g10/verify.c2
29 files changed, 382 insertions, 334 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 6c6d2181d..ec0a388df 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,18 @@
+2006-10-02 Werner Koch <[email protected]>
+
+ * encr-data.c (decrypt_data, mdc_decode_filter): Check the MDC
+ right here and don't let parse-packet handle the MDC.
+
+2006-09-29 Werner Koch <[email protected]>
+
+ * compress.c (do_uncompress): Removed use of Z_PARTIAL_FLUSH.
+ This is outdated and old zlib versions which still require it have
+ security problems.
+
+2006-09-27 Werner Koch <[email protected]>
+
+ Replaced all STRLIST by strlist_t.
+
2006-09-21 Werner Koch <[email protected]>
* signal.c (got_fatal_signal): Replaced readline stuff by a tty
diff --git a/g10/armor.c b/g10/armor.c
index 2336ff6f9..e9efa779d 100644
--- a/g10/armor.c
+++ b/g10/armor.c
@@ -992,7 +992,7 @@ armor_filter( void *opaque, int control,
else if( control == IOBUFCTRL_FLUSH && !afx->cancel ) {
if( !afx->status ) { /* write the header line */
const char *s;
- STRLIST comment=opt.comments;
+ strlist_t comment=opt.comments;
if( afx->what >= DIM(head_strings) )
log_bug("afx->what=%d", afx->what);
diff --git a/g10/card-util.c b/g10/card-util.c
index 2738cbebf..d05f61a62 100644
--- a/g10/card-util.c
+++ b/g10/card-util.c
@@ -1386,7 +1386,7 @@ card_edit_completion(const char *text, int start, int end)
/* Menu to edit all user changeable values on an OpenPGP card. Only
Key creation is not handled here. */
void
-card_edit (STRLIST commands)
+card_edit (strlist_t commands)
{
enum cmdids cmd = cmdNOP;
int have_commands = !!commands;
diff --git a/g10/cipher.c b/g10/cipher.c
index b33deb28b..08395575f 100644
--- a/g10/cipher.c
+++ b/g10/cipher.c
@@ -142,7 +142,7 @@ cipher_filter( void *opaque, int control,
byte temp[22];
assert( hashlen == 20 );
- /* we must hash the prefix of the MDC packet here */
+ /* We must hash the prefix of the MDC packet here. */
temp[0] = 0xd3;
temp[1] = 0x14;
gcry_md_putc (cfx->mdc_hash, temp[0]);
diff --git a/g10/compress.c b/g10/compress.c
index 030a4c1d1..6c7463d46 100644
--- a/g10/compress.c
+++ b/g10/compress.c
@@ -45,6 +45,15 @@
#include "main.h"
#include "options.h"
+
+#ifdef __riscos__
+#define BYTEF_CAST(a) ((Bytef *)(a))
+#else
+#define BYTEF_CAST(a) (a)
+#endif
+
+
+
int compress_filter_bz2( void *opaque, int control,
IOBUF a, byte *buf, size_t *ret_len);
@@ -92,11 +101,7 @@ do_compress( compress_filter_context_t *zfx, z_stream *zs, int flush, IOBUF a )
unsigned n;
do {
-#ifndef __riscos__
- zs->next_out = zfx->outbuf;
-#else /* __riscos__ */
- zs->next_out = (Bytef *) zfx->outbuf;
-#endif /* __riscos__ */
+ zs->next_out = BYTEF_CAST (zfx->outbuf);
zs->avail_out = zfx->outbufsize;
if( DBG_FILTER )
log_debug("enter deflate: avail_in=%u, avail_out=%u, flush=%d\n",
@@ -171,11 +176,7 @@ do_uncompress( compress_filter_context_t *zfx, z_stream *zs,
if( zs->avail_in < zfx->inbufsize && refill ) {
n = zs->avail_in;
if( !n )
-#ifndef __riscos__
- zs->next_in = zfx->inbuf;
-#else /* __riscos__ */
- zs->next_in = (Bytef *) zfx->inbuf;
-#endif /* __riscos__ */
+ zs->next_in = BYTEF_CAST (zfx->inbuf);
count = zfx->inbufsize - n;
nread = iobuf_read( a, zfx->inbuf + n, count );
if( nread == -1 ) nread = 0;
@@ -194,11 +195,7 @@ do_uncompress( compress_filter_context_t *zfx, z_stream *zs,
if( DBG_FILTER )
log_debug("enter inflate: avail_in=%u, avail_out=%u\n",
(unsigned)zs->avail_in, (unsigned)zs->avail_out);
-#ifdef Z_SYNC_FLUSH
- zrc = inflate( zs, Z_SYNC_FLUSH );
-#else
- zrc = inflate( zs, Z_PARTIAL_FLUSH );
-#endif
+ zrc = inflate ( zs, Z_SYNC_FLUSH );
if( DBG_FILTER )
log_debug("leave inflate: avail_in=%u, avail_out=%u, zrc=%d\n",
(unsigned)zs->avail_in, (unsigned)zs->avail_out, zrc);
@@ -210,10 +207,12 @@ do_uncompress( compress_filter_context_t *zfx, z_stream *zs,
else
log_fatal("zlib inflate problem: rc=%d\n", zrc );
}
- } while( zs->avail_out && zrc != Z_STREAM_END && zrc != Z_BUF_ERROR );
+ } while( zs->avail_out && zrc != Z_STREAM_END && zrc != Z_BUF_ERROR );
+
*ret_len = zfx->outbufsize - zs->avail_out;
if( DBG_FILTER )
- log_debug("do_uncompress: returning %u bytes\n", (unsigned)*ret_len );
+ log_debug("do_uncompress: returning %u bytes (%u ignored)\n",
+ (unsigned int)*ret_len, (unsigned int)zs->avail_in );
return rc;
}
@@ -233,11 +232,7 @@ compress_filter( void *opaque, int control,
zfx->status = 1;
}
-#ifndef __riscos__
- zs->next_out = buf;
-#else /* __riscos__ */
- zs->next_out = (Bytef *) buf;
-#endif /* __riscos__ */
+ zs->next_out = BYTEF_CAST (buf);
zs->avail_out = size;
zfx->outbufsize = size; /* needed only for calculation */
rc = do_uncompress( zfx, zs, a, ret_len );
@@ -262,11 +257,7 @@ compress_filter( void *opaque, int control,
zfx->status = 2;
}
-#ifndef __riscos__
- zs->next_in = buf;
-#else /* __riscos__ */
- zs->next_in = (Bytef *) buf;
-#endif /* __riscos__ */
+ zs->next_in = BYTEF_CAST (buf);
zs->avail_in = size;
rc = do_compress( zfx, zs, Z_NO_FLUSH, a );
}
@@ -278,11 +269,7 @@ compress_filter( void *opaque, int control,
xfree(zfx->outbuf); zfx->outbuf = NULL;
}
else if( zfx->status == 2 ) {
-#ifndef __riscos__
- zs->next_in = buf;
-#else /* __riscos__ */
- zs->next_in = (Bytef *) buf;
-#endif /* __riscos__ */
+ zs->next_in = BYTEF_CAST (buf);
zs->avail_in = 0;
do_compress( zfx, zs, Z_FINISH, a );
deflateEnd(zs);
diff --git a/g10/delkey.c b/g10/delkey.c
index bb8108754..eca8068e0 100644
--- a/g10/delkey.c
+++ b/g10/delkey.c
@@ -186,7 +186,7 @@ do_delete_key( const char *username, int secret, int force, int *r_sec_avail )
* Delete a public or secret key from a keyring.
*/
int
-delete_keys( STRLIST names, int secret, int allow_both )
+delete_keys( strlist_t names, int secret, int allow_both )
{
int rc, avail, force=(!allow_both && !secret && opt.expert);
diff --git a/g10/encode.c b/g10/encode.c
index 1ce5e01de..b5045ac15 100644
--- a/g10/encode.c
+++ b/g10/encode.c
@@ -428,7 +428,7 @@ write_symkey_enc(STRING2KEY *symkey_s2k,DEK *symkey_dek,DEK *dek,IOBUF out)
* is supplied).
*/
int
-encode_crypt( const char *filename, STRLIST remusr, int use_symkey )
+encode_crypt( const char *filename, strlist_t remusr, int use_symkey )
{
IOBUF inp = NULL, out = NULL;
PACKET pkt;
@@ -841,7 +841,7 @@ write_pubkey_enc_from_list( PK_LIST pk_list, DEK *dek, IOBUF out )
}
void
-encode_crypt_files(int nfiles, char **files, STRLIST remusr)
+encode_crypt_files(int nfiles, char **files, strlist_t remusr)
{
int rc = 0;
diff --git a/g10/encr-data.c b/g10/encr-data.c
index cf2e43da7..c56e01706 100644
--- a/g10/encr-data.c
+++ b/g10/encr-data.c
@@ -34,16 +34,16 @@
#include "i18n.h"
-static int mdc_decode_filter( void *opaque, int control, IOBUF a,
- byte *buf, size_t *ret_len);
-static int decode_filter( void *opaque, int control, IOBUF a,
+static int mdc_decode_filter ( void *opaque, int control, IOBUF a,
+ byte *buf, size_t *ret_len);
+static int decode_filter ( void *opaque, int control, IOBUF a,
byte *buf, size_t *ret_len);
typedef struct
{
gcry_cipher_hd_t cipher_hd;
gcry_md_hd_t mdc_hash;
- char defer[20];
+ char defer[22];
int defer_filled;
int eof_seen;
} decode_filter_ctx_t;
@@ -55,228 +55,271 @@ typedef struct
int
decrypt_data( void *procctx, PKT_encrypted *ed, DEK *dek )
{
- decode_filter_ctx_t dfx;
- byte *p;
- int rc=0, c, i;
- byte temp[32];
- unsigned blocksize;
- unsigned nprefix;
+ decode_filter_ctx_t dfx;
+ byte *p;
+ int rc=0, c, i;
+ byte temp[32];
+ unsigned blocksize;
+ unsigned nprefix;
+
+ memset( &dfx, 0, sizeof dfx );
+ if ( opt.verbose && !dek->algo_info_printed )
+ {
+ const char *s = gcry_cipher_algo_name (dek->algo);
+ if (s && *s)
+ log_info(_("%s encrypted data\n"), s );
+ else
+ log_info(_("encrypted with unknown algorithm %d\n"), dek->algo );
+ dek->algo_info_printed = 1;
+ }
+ rc = openpgp_cipher_test_algo (dek->algo);
+ if (rc)
+ goto leave;
+ blocksize = gcry_cipher_get_algo_blklen (dek->algo);
+ if ( !blocksize || blocksize > 16 )
+ log_fatal("unsupported blocksize %u\n", blocksize );
+ nprefix = blocksize;
+ if ( ed->len && ed->len < (nprefix+2) )
+ BUG();
- memset( &dfx, 0, sizeof dfx );
- if( opt.verbose && !dek->algo_info_printed ) {
- const char *s = gcry_cipher_algo_name (dek->algo);
- if (s && *s)
- log_info(_("%s encrypted data\n"), s );
- else
- log_info(_("encrypted with unknown algorithm %d\n"), dek->algo );
- dek->algo_info_printed = 1;
+ if ( ed->mdc_method )
+ {
+ if (gcry_md_open (&dfx.mdc_hash, ed->mdc_method, 0 ))
+ BUG ();
+ if ( DBG_HASHING )
+ gcry_md_start_debug (dfx.mdc_hash, "checkmdc");
}
- rc = openpgp_cipher_test_algo (dek->algo);
- if (rc)
- goto leave;
- blocksize = gcry_cipher_get_algo_blklen (dek->algo);
- if( !blocksize || blocksize > 16 )
- log_fatal("unsupported blocksize %u\n", blocksize );
- nprefix = blocksize;
- if( ed->len && ed->len < (nprefix+2) )
- BUG();
- if( ed->mdc_method ) {
- if (gcry_md_open (&dfx.mdc_hash, ed->mdc_method, 0 ))
- BUG ();
- if ( DBG_HASHING )
- gcry_md_start_debug (dfx.mdc_hash, "checkmdc");
+ rc = gcry_cipher_open (&dfx.cipher_hd, dek->algo,
+ GCRY_CIPHER_MODE_CFB,
+ (GCRY_CIPHER_SECURE
+ | ((ed->mdc_method || dek->algo >= 100)?
+ 0 : GCRY_CIPHER_ENABLE_SYNC)));
+ if (rc)
+ {
+ /* We should never get an error here cause we already checked
+ * that the algorithm is available. */
+ BUG();
}
- rc = gcry_cipher_open (&dfx.cipher_hd, dek->algo,
- GCRY_CIPHER_MODE_CFB,
- (GCRY_CIPHER_SECURE
- | ((ed->mdc_method || dek->algo >= 100)?
- 0 : GCRY_CIPHER_ENABLE_SYNC)));
- if (rc)
- {
- /* We should never get an error here cause we already checked
- * that the algorithm is available. */
- BUG();
- }
+ /* log_hexdump( "thekey", dek->key, dek->keylen );*/
+ rc = gcry_cipher_setkey (dfx.cipher_hd, dek->key, dek->keylen);
+ if ( gpg_err_code (rc) == GPG_ERR_WEAK_KEY )
+ {
+ log_info(_("WARNING: message was encrypted with"
+ " a weak key in the symmetric cipher.\n"));
+ rc=0;
+ }
+ else if( rc )
+ {
+ log_error("key setup failed: %s\n", g10_errstr(rc) );
+ goto leave;
+ }
- /* log_hexdump( "thekey", dek->key, dek->keylen );*/
- rc = gcry_cipher_setkey (dfx.cipher_hd, dek->key, dek->keylen);
- if ( gpg_err_code (rc) == GPG_ERR_WEAK_KEY )
- {
- log_info(_("WARNING: message was encrypted with"
- " a weak key in the symmetric cipher.\n"));
- rc=0;
- }
- else if( rc )
- {
- log_error("key setup failed: %s\n", g10_errstr(rc) );
- goto leave;
-
- }
- if (!ed->buf) {
- log_error(_("problem handling encrypted packet\n"));
- goto leave;
+ if (!ed->buf)
+ {
+ log_error(_("problem handling encrypted packet\n"));
+ goto leave;
}
- gcry_cipher_setiv (dfx.cipher_hd, NULL, 0);
+ gcry_cipher_setiv (dfx.cipher_hd, NULL, 0);
- if( ed->len ) {
- for(i=0; i < (nprefix+2) && ed->len; i++, ed->len-- ) {
- if( (c=iobuf_get(ed->buf)) == -1 )
- break;
- else
- temp[i] = c;
- }
+ if ( ed->len )
+ {
+ for (i=0; i < (nprefix+2) && ed->len; i++, ed->len-- )
+ {
+ if ( (c=iobuf_get(ed->buf)) == -1 )
+ break;
+ else
+ temp[i] = c;
+ }
}
- else {
- for(i=0; i < (nprefix+2); i++ )
- if( (c=iobuf_get(ed->buf)) == -1 )
- break;
- else
- temp[i] = c;
+ else
+ {
+ for (i=0; i < (nprefix+2); i++ )
+ if ( (c=iobuf_get(ed->buf)) == -1 )
+ break;
+ else
+ temp[i] = c;
}
+
+ gcry_cipher_decrypt (dfx.cipher_hd, temp, nprefix+2, NULL, 0);
+ gcry_cipher_sync (dfx.cipher_hd);
+ p = temp;
+ /* log_hexdump( "prefix", temp, nprefix+2 ); */
+ if (dek->symmetric
+ && (p[nprefix-2] != p[nprefix] || p[nprefix-1] != p[nprefix+1]) )
+ {
+ rc = gpg_error (GPG_ERR_BAD_KEY);
+ goto leave;
+ }
+
+ if ( dfx.mdc_hash )
+ gcry_md_write (dfx.mdc_hash, temp, nprefix+2);
+
+ if ( ed->mdc_method )
+ iobuf_push_filter( ed->buf, mdc_decode_filter, &dfx );
+ else
+ iobuf_push_filter( ed->buf, decode_filter, &dfx );
- gcry_cipher_decrypt (dfx.cipher_hd, temp, nprefix+2, NULL, 0);
- gcry_cipher_sync (dfx.cipher_hd);
- p = temp;
-/* log_hexdump( "prefix", temp, nprefix+2 ); */
- if(dek->symmetric
- && (p[nprefix-2] != p[nprefix] || p[nprefix-1] != p[nprefix+1]) )
- {
- rc = GPG_ERR_BAD_KEY;
- goto leave;
- }
-
- if( dfx.mdc_hash )
- gcry_md_write (dfx.mdc_hash, temp, nprefix+2);
-
- if( ed->mdc_method )
- iobuf_push_filter( ed->buf, mdc_decode_filter, &dfx );
- else
- iobuf_push_filter( ed->buf, decode_filter, &dfx );
+ proc_packets ( procctx, ed->buf );
+ ed->buf = NULL;
+ if ( ed->mdc_method && dfx.eof_seen == 2 )
+ rc = gpg_error (GPG_ERR_INV_PACKET);
+ else if ( ed->mdc_method )
+ {
+ /* We used to let parse-packet.c handle the MDC packet but this
+ turned out to be a problem with compressed packets: With old
+ style packets there is no length information available and
+ the decompressor uses an implicit end. However we can't know
+ this implicit end beforehand (:-) and thus may feed the
+ decompressor with more bytes than actually needed. It would
+ be possible to unread the extra bytes but due to our weird
+ iobuf system any unread is non reliable due to filters
+ already popped off. The easy and sane solution is to care
+ about the MDC packet only here and never pass it to the
+ packet parser. Fortunatley the OpenPGP spec requires a
+ strict format for the MDC packet so that we know that 22
+ bytes are appended. */
+ int datalen = gcry_md_get_algo_dlen (ed->mdc_method);
- proc_packets( procctx, ed->buf );
- ed->buf = NULL;
- if( ed->mdc_method && dfx.eof_seen == 2 )
- rc = gpg_error (GPG_ERR_INV_PACKET);
- else if( ed->mdc_method ) { /* check the mdc */
- int datalen = gcry_md_get_algo_dlen (ed->mdc_method);
+ gcry_cipher_decrypt (dfx.cipher_hd, dfx.defer, 22, NULL, 0);
+ gcry_md_write (dfx.mdc_hash, dfx.defer, 2);
+ gcry_md_final (dfx.mdc_hash);
- gcry_cipher_decrypt (dfx.cipher_hd, dfx.defer, 20, NULL, 0);
- gcry_md_final (dfx.mdc_hash);
- if (datalen != 20
- || memcmp (gcry_md_read( dfx.mdc_hash, 0 ), dfx.defer, datalen) )
- rc = gpg_error (GPG_ERR_BAD_SIGNATURE);
- /*log_hexdump("MDC calculated:", md_read( dfx.mdc_hash, 0), datalen);*/
- /*log_hexdump("MDC message :", dfx.defer, 20);*/
+ if (dfx.defer[0] != '\xd3' || dfx.defer[1] != '\x14' )
+ {
+ log_error("mdc_packet with invalid encoding\n");
+ rc = gpg_error (GPG_ERR_INV_PACKET);
+ }
+ else if (datalen != 20
+ || memcmp (gcry_md_read (dfx.mdc_hash, 0),dfx.defer+2,datalen))
+ rc = gpg_error (GPG_ERR_BAD_SIGNATURE);
+ /* log_printhex("MDC message:", dfx.defer, 22); */
+ /* log_printhex("MDC calc:", gcry_md_read (dfx.mdc_hash,0), datalen); */
}
-
-
- leave:
- gcry_cipher_close (dfx.cipher_hd);
- gcry_md_close (dfx.mdc_hash);
- return rc;
+
+
+ leave:
+ gcry_cipher_close (dfx.cipher_hd);
+ gcry_md_close (dfx.mdc_hash);
+ return rc;
}
/* I think we should merge this with cipher_filter */
static int
-mdc_decode_filter( void *opaque, int control, IOBUF a,
- byte *buf, size_t *ret_len)
+mdc_decode_filter (void *opaque, int control, IOBUF a,
+ byte *buf, size_t *ret_len)
{
- decode_filter_ctx_t *dfx = opaque;
- size_t n, size = *ret_len;
- int rc = 0;
- int c;
-
- if( control == IOBUFCTRL_UNDERFLOW && dfx->eof_seen ) {
- *ret_len = 0;
- rc = -1;
+ decode_filter_ctx_t *dfx = opaque;
+ size_t n, size = *ret_len;
+ int rc = 0;
+ int c;
+
+ if ( control == IOBUFCTRL_UNDERFLOW && dfx->eof_seen )
+ {
+ *ret_len = 0;
+ rc = -1;
}
- else if( control == IOBUFCTRL_UNDERFLOW ) {
- assert(a);
- assert( size > 40 );
-
- /* get at least 20 bytes and put it somewhere ahead in the buffer */
- for(n=20; n < 40 ; n++ ) {
- if( (c = iobuf_get(a)) == -1 )
- break;
- buf[n] = c;
+ else if( control == IOBUFCTRL_UNDERFLOW )
+ {
+ assert(a);
+ assert( size > 44 );
+
+ /* Get at least 22 bytes and put it somewhere ahead in the buffer. */
+ for(n=22; n < 44 ; n++ )
+ {
+ if( (c = iobuf_get(a)) == -1 )
+ break;
+ buf[n] = c;
}
- if( n == 40 ) {
- /* we have enough stuff - flush the deferred stuff */
- /* (we have asserted that the buffer is large enough) */
- if( !dfx->defer_filled ) { /* the first time */
- memcpy(buf, buf+20, 20 );
- n = 20;
+ if ( n == 44 )
+ {
+ /* We have enough stuff - flush the deferred stuff. */
+ /* (we asserted that the buffer is large enough) */
+ if ( !dfx->defer_filled ) /* First time. */
+ {
+ memcpy (buf, buf+22, 22 );
+ n = 22;
}
- else {
- memcpy(buf, dfx->defer, 20 );
+ else
+ {
+ memcpy (buf, dfx->defer, 22 );
}
- /* now fill up */
- for(; n < size; n++ ) {
- if( (c = iobuf_get(a)) == -1 )
- break;
- buf[n] = c;
+ /* Now fill up. */
+ for (; n < size; n++ )
+ {
+ if ( (c = iobuf_get(a)) == -1 )
+ break;
+ buf[n] = c;
}
- /* move the last 20 bytes back to the defer buffer */
- /* (okay, we are wasting 20 bytes of supplied buffer) */
- n -= 20;
- memcpy( dfx->defer, buf+n, 20 );
- dfx->defer_filled = 1;
+ /* Move the last 22 bytes back to the defer buffer. */
+ /* (right, we are wasting 22 bytes of the supplied buffer.) */
+ n -= 22;
+ memcpy (dfx->defer, buf+n, 22 );
+ dfx->defer_filled = 1;
}
- else if( !dfx->defer_filled ) { /* eof seen buf empty defer */
- /* this is bad because there is an incomplete hash */
- n -= 20;
- memcpy(buf, buf+20, n );
- dfx->eof_seen = 2; /* eof with incomplete hash */
+ else if ( !dfx->defer_filled ) /* EOF seen but empty defer buffer. */
+ {
+ /* This is bad because it means an incomplete hash. */
+ n -= 22;
+ memcpy (buf, buf+22, n );
+ dfx->eof_seen = 2; /* EOF with incomplete hash. */
}
- else { /* eof seen */
- memcpy(buf, dfx->defer, 20 );
- n -= 20;
- memcpy( dfx->defer, buf+n, 20 );
- dfx->eof_seen = 1; /* normal eof */
+ else /* EOF seen (i.e. read less than 22 bytes). */
+ {
+ memcpy (buf, dfx->defer, 22 );
+ n -= 22;
+ memcpy (dfx->defer, buf+n, 22 );
+ dfx->eof_seen = 1; /* Normal EOF. */
}
- if( n ) {
- gcry_cipher_decrypt (dfx->cipher_hd, buf, n, NULL, 0);
- gcry_md_write (dfx->mdc_hash, buf, n);
+ if ( n )
+ {
+ gcry_cipher_decrypt (dfx->cipher_hd, buf, n, NULL, 0);
+ gcry_md_write (dfx->mdc_hash, buf, n);
}
- else {
- assert( dfx->eof_seen );
- rc = -1; /* eof */
+ else
+ {
+ assert ( dfx->eof_seen );
+ rc = -1; /* eof */
}
- *ret_len = n;
+ *ret_len = n;
}
- else if( control == IOBUFCTRL_DESC ) {
- *(char**)buf = "mdc_decode_filter";
+ else if ( control == IOBUFCTRL_DESC )
+ {
+ *(char**)buf = "mdc_decode_filter";
}
- return rc;
+ return rc;
}
+
static int
decode_filter( void *opaque, int control, IOBUF a, byte *buf, size_t *ret_len)
{
- decode_filter_ctx_t *fc = opaque;
- size_t n, size = *ret_len;
- int rc = 0;
-
- if( control == IOBUFCTRL_UNDERFLOW ) {
- assert(a);
- n = iobuf_read( a, buf, size );
- if( n == -1 ) n = 0;
- if( n )
- gcry_cipher_decrypt (fc->cipher_hd, buf, n, NULL, 0);
- else
- rc = -1; /* eof */
- *ret_len = n;
+ decode_filter_ctx_t *fc = opaque;
+ size_t n, size = *ret_len;
+ int rc = 0;
+
+ if ( control == IOBUFCTRL_UNDERFLOW )
+ {
+ assert(a);
+ n = iobuf_read ( a, buf, size );
+ if ( n == -1 )
+ n = 0;
+ if ( n )
+ gcry_cipher_decrypt (fc->cipher_hd, buf, n, NULL, 0);
+ else
+ rc = -1; /* EOF */
+ *ret_len = n;
}
- else if( control == IOBUFCTRL_DESC ) {
- *(char**)buf = "decode_filter";
+ else if ( control == IOBUFCTRL_DESC )
+ {
+ *(char**)buf = "decode_filter";
}
- return rc;
+ return rc;
}
diff --git a/g10/export.c b/g10/export.c
index 2760ea054..afc7fd7f9 100644
--- a/g10/export.c
+++ b/g10/export.c
@@ -47,8 +47,8 @@ struct subkey_list_s
typedef struct subkey_list_s *subkey_list_t;
-static int do_export( STRLIST users, int secret, unsigned int options );
-static int do_export_stream( IOBUF out, STRLIST users, int secret,
+static int do_export( strlist_t users, int secret, unsigned int options );
+static int do_export_stream( IOBUF out, strlist_t users, int secret,
KBNODE *keyblock_out, unsigned int options,
int *any );
static int build_sexp (iobuf_t out, PACKET *pkt, int *indent);
@@ -95,7 +95,7 @@ parse_export_options(char *str,unsigned int *options,int noisy)
* options are defined in main.h.
* If USERS is NULL, the complete ring will be exported. */
int
-export_pubkeys( STRLIST users, unsigned int options )
+export_pubkeys( strlist_t users, unsigned int options )
{
return do_export( users, 0, options );
}
@@ -105,7 +105,7 @@ export_pubkeys( STRLIST users, unsigned int options )
* been exported
*/
int
-export_pubkeys_stream( IOBUF out, STRLIST users,
+export_pubkeys_stream( IOBUF out, strlist_t users,
KBNODE *keyblock_out, unsigned int options )
{
int any, rc;
@@ -117,7 +117,7 @@ export_pubkeys_stream( IOBUF out, STRLIST users,
}
int
-export_seckeys( STRLIST users )
+export_seckeys( strlist_t users )
{
/* Use only relevant options for the secret key. */
unsigned int options = (opt.export_options & EXPORT_SEXP_FORMAT);
@@ -125,7 +125,7 @@ export_seckeys( STRLIST users )
}
int
-export_secsubkeys( STRLIST users )
+export_secsubkeys( strlist_t users )
{
/* Use only relevant options for the secret key. */
unsigned int options = (opt.export_options & EXPORT_SEXP_FORMAT);
@@ -133,7 +133,7 @@ export_secsubkeys( STRLIST users )
}
static int
-do_export( STRLIST users, int secret, unsigned int options )
+do_export( strlist_t users, int secret, unsigned int options )
{
IOBUF out = NULL;
int any, rc;
@@ -290,7 +290,7 @@ exact_subkey_match_p (KEYDB_SEARCH_DESC *desc, KBNODE node)
contains a pointer to the first keyblock found and exported. No
other keyblocks are exported. The caller must free it. */
static int
-do_export_stream( IOBUF out, STRLIST users, int secret,
+do_export_stream( IOBUF out, strlist_t users, int secret,
KBNODE *keyblock_out, unsigned int options, int *any )
{
int rc = 0;
@@ -301,7 +301,7 @@ do_export_stream( IOBUF out, STRLIST users, int secret,
KEYDB_SEARCH_DESC *desc = NULL;
subkey_list_t subkey_list = NULL; /* Track alreay processed subkeys. */
KEYDB_HANDLE kdbhd;
- STRLIST sl;
+ strlist_t sl;
int indent = 0;
*any = 0;
diff --git a/g10/getkey.c b/g10/getkey.c
index c0088c38c..002197071 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -808,14 +808,14 @@ skip_unusable(void *dummy,u32 *keyid,PKT_user_id *uid)
*/
static int
-key_byname( GETKEY_CTX *retctx, STRLIST namelist,
+key_byname( GETKEY_CTX *retctx, strlist_t namelist,
PKT_public_key *pk, PKT_secret_key *sk,
int secmode, int include_unusable,
KBNODE *ret_kb, KEYDB_HANDLE *ret_kdbhd )
{
int rc = 0;
int n;
- STRLIST r;
+ strlist_t r;
GETKEY_CTX ctx;
KBNODE help_kb = NULL;
@@ -919,7 +919,7 @@ get_pubkey_byname (PKT_public_key *pk,
KEYDB_HANDLE *ret_kdbhd, int include_unusable )
{
int rc;
- STRLIST namelist = NULL;
+ strlist_t namelist = NULL;
add_to_strlist( &namelist, name );
@@ -1044,7 +1044,7 @@ get_pubkey_byname (PKT_public_key *pk,
int
get_pubkey_bynames( GETKEY_CTX *retctx, PKT_public_key *pk,
- STRLIST names, KBNODE *ret_keyblock )
+ strlist_t names, KBNODE *ret_keyblock )
{
return key_byname( retctx, names, pk, NULL, 0, 1, ret_keyblock, NULL);
}
@@ -1195,7 +1195,7 @@ get_seckey_byname2( GETKEY_CTX *retctx,
PKT_secret_key *sk, const char *name, int unprotect,
KBNODE *retblock )
{
- STRLIST namelist = NULL;
+ strlist_t namelist = NULL;
int rc,include_unusable=1;
/* If we have no name, try to use the default secret key. If we
@@ -1228,7 +1228,7 @@ get_seckey_byname( PKT_secret_key *sk, const char *name, int unlock )
int
get_seckey_bynames( GETKEY_CTX *retctx, PKT_secret_key *sk,
- STRLIST names, KBNODE *ret_keyblock )
+ strlist_t names, KBNODE *ret_keyblock )
{
return key_byname( retctx, names, NULL, sk, 1, 1, ret_keyblock, NULL );
}
diff --git a/g10/gpg.c b/g10/gpg.c
index e7f05f0dd..8ad9c9965 100644
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -1371,7 +1371,7 @@ list_config(char *items)
for(iter=opt.grouplist;iter;iter=iter->next)
{
- STRLIST sl;
+ strlist_t sl;
printf("cfg:group:");
print_string(stdout,iter->name,strlen(iter->name),':');
@@ -1728,8 +1728,8 @@ main (int argc, char **argv )
const char *fname;
char *username;
int may_coredump;
- STRLIST sl, remusr= NULL, locusr=NULL;
- STRLIST nrings=NULL, sec_nrings=NULL;
+ strlist_t sl, remusr= NULL, locusr=NULL;
+ strlist_t nrings=NULL, sec_nrings=NULL;
armor_filter_context_t afx;
int detached_sig = 0;
FILE *configfp = NULL;
@@ -4129,7 +4129,7 @@ static void
add_policy_url( const char *string, int which )
{
unsigned int i,critical=0;
- STRLIST sl;
+ strlist_t sl;
if(*string=='!')
{
@@ -4162,7 +4162,7 @@ static void
add_keyserver_url( const char *string, int which )
{
unsigned int i,critical=0;
- STRLIST sl;
+ strlist_t sl;
if(*string=='!')
{
diff --git a/g10/gpgv.c b/g10/gpgv.c
index a9884a31d..0333d084b 100644
--- a/g10/gpgv.c
+++ b/g10/gpgv.c
@@ -131,8 +131,8 @@ main( int argc, char **argv )
{
ARGPARSE_ARGS pargs;
int rc=0;
- STRLIST sl;
- STRLIST nrings=NULL;
+ strlist_t sl;
+ strlist_t nrings=NULL;
unsigned configlineno;
set_strusage (my_strusage);
@@ -186,7 +186,7 @@ main( int argc, char **argv )
for(sl = nrings; sl; sl = sl->next )
keydb_add_resource (sl->d, 0, 0 );
- FREE_STRLIST(nrings);
+ FREE_STRLIST (nrings);
if( (rc = verify_signatures( argc, argv ) ))
log_error("verify signatures failed: %s\n", g10_errstr(rc) );
diff --git a/g10/import.c b/g10/import.c
index 3b41e08cf..0ea1e55d1 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -647,7 +647,7 @@ check_prefs(KBNODE keyblock)
if(!opt.batch)
{
- STRLIST sl=NULL,locusr=NULL;
+ strlist_t sl=NULL,locusr=NULL;
size_t fprlen=0;
byte fpr[MAX_FINGERPRINT_LEN],*p;
char username[(MAX_FINGERPRINT_LEN*2)+1];
diff --git a/g10/keydb.h b/g10/keydb.h
index b58512068..30f91255f 100644
--- a/g10/keydb.h
+++ b/g10/keydb.h
@@ -182,7 +182,7 @@ int keydb_search_fpr (KEYDB_HANDLE hd, const byte *fpr);
void show_revocation_reason( PKT_public_key *pk, int mode );
int check_signatures_trust( PKT_signature *sig );
void release_pk_list( PK_LIST pk_list );
-int build_pk_list( STRLIST rcpts, PK_LIST *ret_pk_list, unsigned use );
+int build_pk_list( strlist_t rcpts, PK_LIST *ret_pk_list, unsigned use );
int algo_available( preftype_t preftype, int algo,
const union pref_hint *hint );
int select_algo_from_prefs( PK_LIST pk_list, int preftype,
@@ -192,7 +192,7 @@ int select_mdc_from_pklist (PK_LIST pk_list);
/*-- skclist.c --*/
int random_is_faked (void);
void release_sk_list( SK_LIST sk_list );
-int build_sk_list( STRLIST locusr, SK_LIST *ret_sk_list,
+int build_sk_list( strlist_t locusr, SK_LIST *ret_sk_list,
int unlock, unsigned use );
/*-- passphrase.h --*/
@@ -225,7 +225,7 @@ int get_pubkey_byname( PKT_public_key *pk, const char *name,
KBNODE *ret_keyblock, KEYDB_HANDLE *ret_kdbhd,
int include_unusable );
int get_pubkey_bynames( GETKEY_CTX *rx, PKT_public_key *pk,
- STRLIST names, KBNODE *ret_keyblock );
+ strlist_t names, KBNODE *ret_keyblock );
int get_pubkey_next( GETKEY_CTX ctx, PKT_public_key *pk, KBNODE *ret_keyblock );
void get_pubkey_end( GETKEY_CTX ctx );
int get_seckey( PKT_secret_key *sk, u32 *keyid );
@@ -240,7 +240,7 @@ int get_keyblock_bylid( KBNODE *ret_keyblock, ulong lid );
int seckey_available( u32 *keyid );
int get_seckey_byname( PKT_secret_key *sk, const char *name, int unlock );
int get_seckey_bynames( GETKEY_CTX *rx, PKT_secret_key *sk,
- STRLIST names, KBNODE *ret_keyblock );
+ strlist_t names, KBNODE *ret_keyblock );
int get_seckey_next (GETKEY_CTX ctx, PKT_secret_key *sk, KBNODE *ret_keyblock);
void get_seckey_end( GETKEY_CTX ctx );
diff --git a/g10/keyedit.c b/g10/keyedit.c
index 6b3fbe818..71ad9f083 100644
--- a/g10/keyedit.c
+++ b/g10/keyedit.c
@@ -507,7 +507,7 @@ trustsig_prompt(byte *trust_value,byte *trust_depth,char **regexp)
* if some user_ids are marked those will be signed.
*/
static int
-sign_uids( KBNODE keyblock, STRLIST locusr, int *ret_modified,
+sign_uids( KBNODE keyblock, strlist_t locusr, int *ret_modified,
int local, int nonrevocable, int trust, int interactive )
{
int rc = 0;
@@ -1501,8 +1501,8 @@ keyedit_completion(const char *text, int start, int end)
void
-keyedit_menu( const char *username, STRLIST locusr,
- STRLIST commands, int quiet, int seckey_check )
+keyedit_menu( const char *username, strlist_t locusr,
+ strlist_t commands, int quiet, int seckey_check )
{
enum cmdids cmd = 0;
int rc = 0;
diff --git a/g10/keylist.c b/g10/keylist.c
index 441606299..95d452eea 100644
--- a/g10/keylist.c
+++ b/g10/keylist.c
@@ -41,7 +41,7 @@
#include "status.h"
static void list_all(int);
-static void list_one( STRLIST names, int secret);
+static void list_one( strlist_t names, int secret);
static void print_card_serialno (PKT_secret_key *sk);
struct sig_stats
@@ -58,7 +58,7 @@ static FILE *attrib_fp=NULL;
* If list is NULL, all available keys are listed
*/
void
-public_key_list( STRLIST list )
+public_key_list( strlist_t list )
{
if(opt.with_colons)
{
@@ -110,7 +110,7 @@ public_key_list( STRLIST list )
}
void
-secret_key_list( STRLIST list )
+secret_key_list( strlist_t list )
{
check_trustdb_stale ();
@@ -462,7 +462,7 @@ list_all( int secret )
static void
-list_one( STRLIST names, int secret )
+list_one( strlist_t names, int secret )
{
int rc = 0;
KBNODE keyblock = NULL;
diff --git a/g10/keyserver-internal.h b/g10/keyserver-internal.h
index fe08a6b71..136f424e5 100644
--- a/g10/keyserver-internal.h
+++ b/g10/keyserver-internal.h
@@ -35,14 +35,14 @@ struct keyserver_spec *parse_keyserver_uri(const char *string,
const char *configname,
unsigned int configlineno);
struct keyserver_spec *parse_preferred_keyserver(PKT_signature *sig);
-int keyserver_export(STRLIST users);
-int keyserver_import(STRLIST users);
+int keyserver_export(strlist_t users);
+int keyserver_import(strlist_t users);
int keyserver_import_fprint(const byte *fprint,size_t fprint_len,
struct keyserver_spec *keyserver);
int keyserver_import_keyid(u32 *keyid,struct keyserver_spec *keyserver);
-int keyserver_refresh(STRLIST users);
-int keyserver_search(STRLIST tokens);
-int keyserver_fetch(STRLIST urilist);
+int keyserver_refresh(strlist_t users);
+int keyserver_search(strlist_t tokens);
+int keyserver_fetch(strlist_t urilist);
int keyserver_import_cert(const char *name,
unsigned char **fpr,size_t *fpr_len);
int keyserver_import_pka(const char *name,unsigned char **fpr,size_t *fpr_len);
diff --git a/g10/keyserver.c b/g10/keyserver.c
index cbf55c091..aacbfc5c2 100644
--- a/g10/keyserver.c
+++ b/g10/keyserver.c
@@ -80,7 +80,7 @@ static struct parse_options keyserver_opts[]=
{NULL,0,NULL,NULL}
};
-static int keyserver_work(enum ks_action action,STRLIST list,
+static int keyserver_work(enum ks_action action,strlist_t list,
KEYDB_SEARCH_DESC *desc,int count,
unsigned char **fpr,size_t *fpr_len,
struct keyserver_spec *keyserver);
@@ -91,7 +91,7 @@ static int keyserver_work(enum ks_action action,STRLIST list,
static size_t max_cert_size=DEFAULT_MAX_CERT_SIZE;
static void
-add_canonical_option(char *option,STRLIST *list)
+add_canonical_option(char *option,strlist_t *list)
{
char *arg=argsplit(option);
@@ -952,12 +952,12 @@ direct_uri_map(const char *scheme,unsigned int is_direct)
#define KEYSERVER_ARGS_NOKEEP " -o \"%o\" \"%i\""
static int
-keyserver_spawn(enum ks_action action,STRLIST list,KEYDB_SEARCH_DESC *desc,
+keyserver_spawn(enum ks_action action,strlist_t list,KEYDB_SEARCH_DESC *desc,
int count,int *prog,unsigned char **fpr,size_t *fpr_len,
struct keyserver_spec *keyserver)
{
int ret=0,i,gotversion=0,outofband=0;
- STRLIST temp;
+ strlist_t temp;
unsigned int maxlen,buflen;
char *command,*end,*searchstr=NULL;
byte *line=NULL;
@@ -1167,7 +1167,7 @@ keyserver_spawn(enum ks_action action,STRLIST list,KEYDB_SEARCH_DESC *desc,
case KS_GETNAME:
{
- STRLIST key;
+ strlist_t key;
fprintf(spawn->tochild,"COMMAND GETNAME\n\n");
@@ -1189,7 +1189,7 @@ keyserver_spawn(enum ks_action action,STRLIST list,KEYDB_SEARCH_DESC *desc,
case KS_SEND:
{
- STRLIST key;
+ strlist_t key;
/* Note the extra \n here to send an empty keylist block */
fprintf(spawn->tochild,"COMMAND SEND\n\n\n");
@@ -1349,7 +1349,7 @@ keyserver_spawn(enum ks_action action,STRLIST list,KEYDB_SEARCH_DESC *desc,
case KS_SEARCH:
{
- STRLIST key;
+ strlist_t key;
fprintf(spawn->tochild,"COMMAND SEARCH\n\n");
@@ -1498,7 +1498,7 @@ keyserver_spawn(enum ks_action action,STRLIST list,KEYDB_SEARCH_DESC *desc,
}
static int
-keyserver_work(enum ks_action action,STRLIST list,KEYDB_SEARCH_DESC *desc,
+keyserver_work(enum ks_action action,strlist_t list,KEYDB_SEARCH_DESC *desc,
int count,unsigned char **fpr,size_t *fpr_len,
struct keyserver_spec *keyserver)
{
@@ -1568,9 +1568,9 @@ keyserver_work(enum ks_action action,STRLIST list,KEYDB_SEARCH_DESC *desc,
}
int
-keyserver_export(STRLIST users)
+keyserver_export(strlist_t users)
{
- STRLIST sl=NULL;
+ strlist_t sl=NULL;
KEYDB_SEARCH_DESC desc;
int rc=0;
@@ -1600,7 +1600,7 @@ keyserver_export(STRLIST users)
}
int
-keyserver_import(STRLIST users)
+keyserver_import(strlist_t users)
{
KEYDB_SEARCH_DESC *desc;
int num=100,count=0;
@@ -1675,13 +1675,13 @@ keyserver_import_keyid(u32 *keyid,struct keyserver_spec *keyserver)
/* code mostly stolen from do_export_stream */
static int
-keyidlist(STRLIST users,KEYDB_SEARCH_DESC **klist,int *count,int fakev3)
+keyidlist(strlist_t users,KEYDB_SEARCH_DESC **klist,int *count,int fakev3)
{
int rc=0,ndesc,num=100;
KBNODE keyblock=NULL,node;
KEYDB_HANDLE kdbhd;
KEYDB_SEARCH_DESC *desc;
- STRLIST sl;
+ strlist_t sl;
*count=0;
@@ -1831,7 +1831,7 @@ keyidlist(STRLIST users,KEYDB_SEARCH_DESC **klist,int *count,int fakev3)
usernames to refresh only part of the keyring. */
int
-keyserver_refresh(STRLIST users)
+keyserver_refresh(strlist_t users)
{
int rc,count,numdesc,fakev3=0;
KEYDB_SEARCH_DESC *desc;
@@ -1920,7 +1920,7 @@ keyserver_refresh(STRLIST users)
}
int
-keyserver_search(STRLIST tokens)
+keyserver_search(strlist_t tokens)
{
if(tokens)
return keyserver_work(KS_SEARCH,tokens,NULL,0,NULL,NULL,opt.keyserver);
@@ -1929,10 +1929,10 @@ keyserver_search(STRLIST tokens)
}
int
-keyserver_fetch(STRLIST urilist)
+keyserver_fetch(strlist_t urilist)
{
KEYDB_SEARCH_DESC desc;
- STRLIST sl;
+ strlist_t sl;
unsigned int options=opt.keyserver_options.import_options;
/* Switch on fast-import, since fetch can handle more than one
@@ -2016,7 +2016,7 @@ keyserver_import_cert(const char *name,unsigned char **fpr,size_t *fpr_len)
spec=parse_keyserver_uri(url,1,NULL,0);
if(spec)
{
- STRLIST list=NULL;
+ strlist_t list=NULL;
add_to_strlist(&list,url);
@@ -2083,7 +2083,7 @@ int
keyserver_import_name(const char *name,unsigned char **fpr,size_t *fpr_len,
struct keyserver_spec *keyserver)
{
- STRLIST list=NULL;
+ strlist_t list=NULL;
int rc;
append_to_strlist(&list,name);
@@ -2102,7 +2102,7 @@ keyserver_import_ldap(const char *name,unsigned char **fpr,size_t *fpr_len)
{
char *domain;
struct keyserver_spec *keyserver;
- STRLIST list=NULL;
+ strlist_t list=NULL;
int rc;
append_to_strlist(&list,name);
diff --git a/g10/main.h b/g10/main.h
index c6c0b29b1..4e82a525c 100644
--- a/g10/main.h
+++ b/g10/main.h
@@ -51,7 +51,7 @@ typedef struct
struct groupitem
{
char *name;
- STRLIST values;
+ strlist_t values;
struct groupitem *next;
};
@@ -151,18 +151,18 @@ void display_online_help( const char *keyword );
int setup_symkey(STRING2KEY **symkey_s2k,DEK **symkey_dek);
int encode_symmetric( const char *filename );
int encode_store( const char *filename );
-int encode_crypt( const char *filename, STRLIST remusr, int use_symkey );
-void encode_crypt_files(int nfiles, char **files, STRLIST remusr);
+int encode_crypt( const char *filename, strlist_t remusr, int use_symkey );
+void encode_crypt_files(int nfiles, char **files, strlist_t remusr);
int encrypt_filter( void *opaque, int control,
iobuf_t a, byte *buf, size_t *ret_len);
/*-- sign.c --*/
int complete_sig( PKT_signature *sig, PKT_secret_key *sk, gcry_md_hd_t md );
-int sign_file( STRLIST filenames, int detached, STRLIST locusr,
- int do_encrypt, STRLIST remusr, const char *outfile );
-int clearsign_file( const char *fname, STRLIST locusr, const char *outfile );
-int sign_symencrypt_file (const char *fname, STRLIST locusr);
+int sign_file( strlist_t filenames, int detached, strlist_t locusr,
+ int do_encrypt, strlist_t remusr, const char *outfile );
+int clearsign_file( const char *fname, strlist_t locusr, const char *outfile );
+int sign_symencrypt_file (const char *fname, strlist_t locusr);
/*-- sig-check.c --*/
int check_revocation_keys (PKT_public_key *pk, PKT_signature *sig);
@@ -174,11 +174,11 @@ int check_key_signature2( KBNODE root, KBNODE node, PKT_public_key *check_pk,
u32 *r_expiredate, int *r_expired );
/*-- delkey.c --*/
-int delete_keys( STRLIST names, int secret, int allow_both );
+int delete_keys( strlist_t names, int secret, int allow_both );
/*-- keyedit.c --*/
-void keyedit_menu( const char *username, STRLIST locusr,
- STRLIST commands, int quiet, int seckey_check );
+void keyedit_menu( const char *username, strlist_t locusr,
+ strlist_t commands, int quiet, int seckey_check );
void show_basic_key_info (KBNODE keyblock);
/*-- keygen.c --*/
@@ -237,11 +237,11 @@ int auto_create_card_key_stub ( const char *serialnostr,
/*-- export.c --*/
int parse_export_options(char *str,unsigned int *options,int noisy);
-int export_pubkeys( STRLIST users, unsigned int options );
-int export_pubkeys_stream( iobuf_t out, STRLIST users,
+int export_pubkeys( strlist_t users, unsigned int options );
+int export_pubkeys_stream( iobuf_t out, strlist_t users,
KBNODE *keyblock_out, unsigned int options );
-int export_seckeys( STRLIST users );
-int export_secsubkeys( STRLIST users );
+int export_seckeys( strlist_t users );
+int export_secsubkeys( strlist_t users );
/* dearmor.c --*/
int dearmor_file( const char *fname );
@@ -250,15 +250,15 @@ int enarmor_file( const char *fname );
/*-- revoke.c --*/
struct revocation_reason_info;
int gen_revoke( const char *uname );
-int gen_desig_revoke( const char *uname, STRLIST locusr);
+int gen_desig_revoke( const char *uname, strlist_t locusr);
int revocation_reason_build_cb( PKT_signature *sig, void *opaque );
struct revocation_reason_info *
ask_revocation_reason( int key_rev, int cert_rev, int hint );
void release_revocation_reason_info( struct revocation_reason_info *reason );
/*-- keylist.c --*/
-void public_key_list( STRLIST list );
-void secret_key_list( STRLIST list );
+void public_key_list( strlist_t list );
+void secret_key_list( strlist_t list );
void print_subpackets_colon(PKT_signature *sig);
void reorder_keyblock (KBNODE keyblock);
void list_keyblock( KBNODE keyblock, int secret, int fpr, void *opaque );
@@ -285,7 +285,7 @@ void decrypt_messages(int nfiles, char *files[]);
/*-- plaintext.c --*/
int hash_datafiles( gcry_md_hd_t md, gcry_md_hd_t md2,
- STRLIST files, const char *sigfilename, int textmode );
+ strlist_t files, const char *sigfilename, int textmode );
PKT_plaintext *setup_plaintext_name(const char *filename,IOBUF iobuf);
/*-- signal.c --*/
@@ -299,7 +299,7 @@ void unblock_all_signals(void);
/*-- card-util.c --*/
void change_pin (int no, int allow_admin);
void card_status (FILE *fp, char *serialno, size_t serialnobuflen);
-void card_edit (STRLIST commands);
+void card_edit (strlist_t commands);
int card_generate_subkey (KBNODE pub_keyblock, KBNODE sec_keyblock);
int card_store_subkey (KBNODE node, int use);
#endif
diff --git a/g10/mainproc.c b/g10/mainproc.c
index af3aac70f..c4eb3b0ca 100644
--- a/g10/mainproc.c
+++ b/g10/mainproc.c
@@ -65,7 +65,7 @@ struct mainproc_context
md_filter_context_t mfx;
int sigs_only; /* Process only signatures and reject all other stuff. */
int encrypt_only; /* Process only encryption messages. */
- STRLIST signed_data;
+ strlist_t signed_data;
const char *sigfilename;
DEK *dek;
int last_was_session_key;
@@ -1132,7 +1132,7 @@ proc_packets( void *anchor, IOBUF a )
int
proc_signature_packets( void *anchor, IOBUF a,
- STRLIST signedfiles, const char *sigfilename )
+ strlist_t signedfiles, const char *sigfilename )
{
CTX c = xmalloc_clear( sizeof *c );
int rc;
diff --git a/g10/options.h b/g10/options.h
index 75c2745fc..282130085 100644
--- a/g10/options.h
+++ b/g10/options.h
@@ -114,7 +114,7 @@ struct
int pgp2_workarounds;
int shm_coprocess;
const char *set_filename;
- STRLIST comments;
+ strlist_t comments;
int throw_keyid;
const char *photo_viewer;
int s2k_mode;
@@ -134,7 +134,7 @@ struct
char *port;
char *path;
char *opaque;
- STRLIST options;
+ strlist_t options;
struct
{
unsigned int direct_uri:1;
@@ -146,7 +146,7 @@ struct
unsigned int options;
unsigned int import_options;
unsigned int export_options;
- STRLIST other;
+ strlist_t other;
} keyserver_options;
int exec_disable;
int exec_path_set;
@@ -166,11 +166,11 @@ struct
int interactive;
struct notation *sig_notations;
struct notation *cert_notations;
- STRLIST sig_policy_url;
- STRLIST cert_policy_url;
- STRLIST sig_keyserver_url;
- STRLIST cert_subpackets;
- STRLIST sig_subpackets;
+ strlist_t sig_policy_url;
+ strlist_t cert_policy_url;
+ strlist_t sig_keyserver_url;
+ strlist_t cert_subpackets;
+ strlist_t sig_subpackets;
int allow_non_selfsigned_uid;
int allow_freeform_uid;
int no_literal;
diff --git a/g10/packet.h b/g10/packet.h
index 2aaf3b902..c61ab073a 100644
--- a/g10/packet.h
+++ b/g10/packet.h
@@ -370,7 +370,7 @@ struct notation
/*-- mainproc.c --*/
int proc_packets( void *ctx, iobuf_t a );
int proc_signature_packets( void *ctx, iobuf_t a,
- STRLIST signedfiles, const char *sigfile );
+ strlist_t signedfiles, const char *sigfile );
int proc_encryption_packets( void *ctx, iobuf_t a );
int list_packets( iobuf_t a );
diff --git a/g10/parse-packet.c b/g10/parse-packet.c
index 33472da4d..691f6696c 100644
--- a/g10/parse-packet.c
+++ b/g10/parse-packet.c
@@ -2355,6 +2355,9 @@ parse_encrypted( IOBUF inp, int pkttype, unsigned long pktlen,
}
+/* Note, that this code is not anymore used in real life because now
+ the MDC checking is done right after the encryption in
+ decrypt_data. */
static int
parse_mdc( IOBUF inp, int pkttype, unsigned long pktlen,
PACKET *pkt, int new_ctb )
@@ -2363,7 +2366,7 @@ parse_mdc( IOBUF inp, int pkttype, unsigned long pktlen,
PKT_mdc *mdc;
byte *p;
- mdc = pkt->pkt.mdc= xmalloc(sizeof *pkt->pkt.mdc );
+ mdc = pkt->pkt.mdc = xmalloc(sizeof *pkt->pkt.mdc );
if( list_mode )
fprintf (listfp, ":mdc packet: length=%lu\n", pktlen);
if( !new_ctb || pktlen != 20 ) {
diff --git a/g10/pkclist.c b/g10/pkclist.c
index f90137aff..354e27023 100644
--- a/g10/pkclist.c
+++ b/g10/pkclist.c
@@ -703,7 +703,7 @@ default_recipient(void)
}
static int
-expand_id(const char *id,STRLIST *into,unsigned int flags)
+expand_id(const char *id,strlist_t *into,unsigned int flags)
{
struct groupitem *groups;
int count=0;
@@ -713,7 +713,7 @@ expand_id(const char *id,STRLIST *into,unsigned int flags)
/* need strcasecmp() here, as this should be localized */
if(strcasecmp(groups->name,id)==0)
{
- STRLIST each,sl;
+ strlist_t each,sl;
/* this maintains the current utf8-ness */
for(each=groups->values;each;each=each->next)
@@ -732,10 +732,10 @@ expand_id(const char *id,STRLIST *into,unsigned int flags)
/* For simplicity, and to avoid potential loops, we only expand once -
you can't make an alias that points to an alias. */
-static STRLIST
-expand_group(STRLIST input)
+static strlist_t
+expand_group(strlist_t input)
{
- STRLIST sl,output=NULL,rover;
+ strlist_t sl,output=NULL,rover;
for(rover=input;rover;rover=rover->next)
if(expand_id(rover->d,&output,rover->flags)==0)
@@ -771,13 +771,13 @@ expand_group(STRLIST input)
not changed.
*/
int
-build_pk_list( STRLIST rcpts, PK_LIST *ret_pk_list, unsigned int use )
+build_pk_list( strlist_t rcpts, PK_LIST *ret_pk_list, unsigned int use )
{
PK_LIST pk_list = NULL;
PKT_public_key *pk=NULL;
int rc=0;
int any_recipients=0;
- STRLIST rov,remusr;
+ strlist_t rov,remusr;
char *def_rec = NULL;
/* Try to expand groups if any have been defined. */
@@ -875,7 +875,7 @@ build_pk_list( STRLIST rcpts, PK_LIST *ret_pk_list, unsigned int use )
{
int have_def_rec;
char *answer = NULL;
- STRLIST backlog = NULL;
+ strlist_t backlog = NULL;
if (pk_list)
any_recipients = 1;
diff --git a/g10/plaintext.c b/g10/plaintext.c
index 9ac259820..2d516a3a5 100644
--- a/g10/plaintext.c
+++ b/g10/plaintext.c
@@ -515,12 +515,12 @@ ask_for_detached_datafile (gcry_md_hd_t md, gcry_md_hd_t md2,
* If FILES is NULL, hash stdin.
*/
int
-hash_datafiles( gcry_md_hd_t md, gcry_md_hd_t md2, STRLIST files,
+hash_datafiles( gcry_md_hd_t md, gcry_md_hd_t md2, strlist_t files,
const char *sigfilename, int textmode )
{
progress_filter_context_t pfx;
IOBUF fp;
- STRLIST sl;
+ strlist_t sl;
if( !files ) {
/* check whether we can open the signed material */
diff --git a/g10/revoke.c b/g10/revoke.c
index 34f9f5c85..29f4b8d2f 100644
--- a/g10/revoke.c
+++ b/g10/revoke.c
@@ -197,7 +197,7 @@ export_minimal_pk(IOBUF out,KBNODE keyblock,
* Generate a revocation certificate for UNAME via a designated revoker
*/
int
-gen_desig_revoke( const char *uname, STRLIST locusr )
+gen_desig_revoke( const char *uname, strlist_t locusr )
{
int rc = 0;
armor_filter_context_t afx;
diff --git a/g10/sign.c b/g10/sign.c
index 07947b894..32f15c553 100644
--- a/g10/sign.c
+++ b/g10/sign.c
@@ -66,7 +66,7 @@ mk_notation_policy_etc( PKT_signature *sig,
{
const char *string;
char *s=NULL;
- STRLIST pu=NULL;
+ strlist_t pu=NULL;
struct notation *nd=NULL;
struct expando_args args;
@@ -735,8 +735,8 @@ write_signature_packets (SK_LIST sk_list, IOBUF out, gcry_md_hd_t hash,
* uncompressed, non-armored and in binary mode.
*/
int
-sign_file( STRLIST filenames, int detached, STRLIST locusr,
- int encryptflag, STRLIST remusr, const char *outfile )
+sign_file( strlist_t filenames, int detached, strlist_t locusr,
+ int encryptflag, strlist_t remusr, const char *outfile )
{
const char *fname;
armor_filter_context_t afx;
@@ -987,7 +987,7 @@ sign_file( STRLIST filenames, int detached, STRLIST locusr,
/* Setup the inner packet. */
if( detached ) {
if( multifile ) {
- STRLIST sl;
+ strlist_t sl;
if( opt.verbose )
log_info(_("signing:") );
@@ -1069,7 +1069,7 @@ sign_file( STRLIST filenames, int detached, STRLIST locusr,
* make a clear signature. note that opt.armor is not needed
*/
int
-clearsign_file( const char *fname, STRLIST locusr, const char *outfile )
+clearsign_file( const char *fname, strlist_t locusr, const char *outfile )
{
armor_filter_context_t afx;
progress_filter_context_t pfx;
@@ -1223,7 +1223,7 @@ clearsign_file( const char *fname, STRLIST locusr, const char *outfile )
* FIXME: Far too much code is duplicated - revamp the whole file.
*/
int
-sign_symencrypt_file (const char *fname, STRLIST locusr)
+sign_symencrypt_file (const char *fname, strlist_t locusr)
{
armor_filter_context_t afx;
progress_filter_context_t pfx;
diff --git a/g10/skclist.c b/g10/skclist.c
index d9a9d5e9f..5aeaa78ff 100644
--- a/g10/skclist.c
+++ b/g10/skclist.c
@@ -115,7 +115,7 @@ key_present_in_sk_list(SK_LIST sk_list, PKT_secret_key *sk)
}
static int
-is_duplicated_entry (STRLIST list, STRLIST item)
+is_duplicated_entry (strlist_t list, strlist_t item)
{
for(; list && list != item; list = list->next) {
if ( !strcmp (list->d, item->d) )
@@ -126,7 +126,7 @@ is_duplicated_entry (STRLIST list, STRLIST item)
int
-build_sk_list( STRLIST locusr, SK_LIST *ret_sk_list,
+build_sk_list( strlist_t locusr, SK_LIST *ret_sk_list,
int unlock, unsigned int use )
{
SK_LIST sk_list = NULL;
@@ -168,7 +168,7 @@ build_sk_list( STRLIST locusr, SK_LIST *ret_sk_list,
}
}
else {
- STRLIST locusr_orig = locusr;
+ strlist_t locusr_orig = locusr;
for(; locusr; locusr = locusr->next ) {
PKT_secret_key *sk;
diff --git a/g10/verify.c b/g10/verify.c
index f8a1fd90c..e34ad7a5d 100644
--- a/g10/verify.c
+++ b/g10/verify.c
@@ -59,7 +59,7 @@ verify_signatures( int nfiles, char **files )
progress_filter_context_t pfx;
const char *sigfile;
int i, rc;
- STRLIST sl;
+ strlist_t sl;
memset( &afx, 0, sizeof afx);
/* decide whether we should handle a detached or a normal signature,