Module Name: src Committed By: agc Date: Thu May 28 01:52:43 UTC 2009
Modified Files: src/crypto/external/bsd/netpgp/dist: TODO src/crypto/external/bsd/netpgp/dist/src/lib: compress.c crypto.c keyring.c misc.c packet-parse.c packet-print.c reader.c signature.c validate.c version.h Log Message: CHANGES 1.99.6 -> 1.99.7 + added to the regression tests + get rid of some magic constants, replace with more obvious names + zero out the memory used for a passphrase before freeing it in one place To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/crypto/external/bsd/netpgp/dist/TODO cvs rdiff -u -r1.9 -r1.10 \ src/crypto/external/bsd/netpgp/dist/src/lib/compress.c cvs rdiff -u -r1.13 -r1.14 \ src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c \ src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c \ src/crypto/external/bsd/netpgp/dist/src/lib/misc.c \ src/crypto/external/bsd/netpgp/dist/src/lib/version.h cvs rdiff -u -r1.16 -r1.17 \ src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c \ src/crypto/external/bsd/netpgp/dist/src/lib/signature.c cvs rdiff -u -r1.14 -r1.15 \ src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c cvs rdiff -u -r1.15 -r1.16 \ src/crypto/external/bsd/netpgp/dist/src/lib/reader.c \ src/crypto/external/bsd/netpgp/dist/src/lib/validate.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/crypto/external/bsd/netpgp/dist/TODO diff -u src/crypto/external/bsd/netpgp/dist/TODO:1.13 src/crypto/external/bsd/netpgp/dist/TODO:1.14 --- src/crypto/external/bsd/netpgp/dist/TODO:1.13 Wed May 27 00:38:26 2009 +++ src/crypto/external/bsd/netpgp/dist/TODO Thu May 28 01:52:42 2009 @@ -1,6 +1,7 @@ To Do ===== separate verify program +separate key management program separate from libcrypto? 64-bit offsets default compression when signing? Index: src/crypto/external/bsd/netpgp/dist/src/lib/compress.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/compress.c:1.9 src/crypto/external/bsd/netpgp/dist/src/lib/compress.c:1.10 --- src/crypto/external/bsd/netpgp/dist/src/lib/compress.c:1.9 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/compress.c Thu May 28 01:52:43 2009 @@ -57,7 +57,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: compress.c,v 1.9 2009/05/16 06:30:38 agc Exp $"); +__RCSID("$NetBSD: compress.c,v 1.10 2009/05/28 01:52:43 agc Exp $"); #endif #ifdef HAVE_ZLIB_H @@ -300,6 +300,7 @@ { z_decompress_t z; bz_decompress_t bz; + const int printerrors = 1; int ret; switch (type) { @@ -394,7 +395,7 @@ return 0; } - ret = __ops_parse(parse_info, 0); + ret = __ops_parse(parse_info, !printerrors); __ops_reader_pop(parse_info); Index: src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c:1.13 src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c:1.14 --- src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c:1.13 Mon May 25 06:43:32 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c Thu May 28 01:52:43 2009 @@ -54,7 +54,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: crypto.c,v 1.13 2009/05/25 06:43:32 agc Exp $"); +__RCSID("$NetBSD: crypto.c,v 1.14 2009/05/28 01:52:43 agc Exp $"); #endif #include <sys/types.h> @@ -290,6 +290,7 @@ __ops_cbfunc_t *cb_get_passphrase) { __ops_parseinfo_t *parse = NULL; + const int printerrors = 1; char *filename = NULL; int fd_in = 0; int fd_out = 0; @@ -353,7 +354,7 @@ } /* Do it */ - __ops_parse(parse, 1); + __ops_parse(parse, printerrors); /* Unsetup */ if (use_armour) { Index: src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c:1.13 src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c:1.14 --- src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c:1.13 Wed May 27 00:38:27 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c Thu May 28 01:52:43 2009 @@ -57,7 +57,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: keyring.c,v 1.13 2009/05/27 00:38:27 agc Exp $"); +__RCSID("$NetBSD: keyring.c,v 1.14 2009/05/28 01:52:43 agc Exp $"); #endif #ifdef HAVE_FCNTL_H @@ -218,7 +218,7 @@ typedef struct { const __ops_keydata_t *key; - char *pphrase; + char *passphrase; __ops_seckey_t *seckey; } decrypt_t; @@ -229,7 +229,6 @@ decrypt_t *decrypt; decrypt = __ops_parse_cb_get_arg(cbinfo); - switch (pkt->tag) { case OPS_PARSER_PTAG: case OPS_PTAG_CT_USER_ID: @@ -240,7 +239,7 @@ break; case OPS_GET_PASSPHRASE: - *content->skey_passphrase.passphrase = decrypt->pphrase; + *content->skey_passphrase.passphrase = decrypt->passphrase; return OPS_KEEP_MEMORY; case OPS_PARSER_ERRCODE: @@ -287,27 +286,26 @@ \ingroup Core_Keys \brief Decrypts secret key from given keydata with given passphrase \param key Key from which to get secret key -\param pphrase Passphrase to use to decrypt secret key +\param passphrase Passphrase to use to decrypt secret key \return secret key */ __ops_seckey_t * -__ops_decrypt_seckey(const __ops_keydata_t *key, const char *pphrase) +__ops_decrypt_seckey(const __ops_keydata_t *key, const char *passphrase) { - __ops_parseinfo_t *pinfo; - decrypt_t decrypt; + __ops_parseinfo_t *parse; + const int printerrors = 1; + decrypt_t decrypt; (void) memset(&decrypt, 0x0, sizeof(decrypt)); decrypt.key = key; - decrypt.pphrase = strdup(pphrase); - - pinfo = __ops_parseinfo_new(); - - __ops_keydata_reader_set(pinfo, key); - __ops_set_callback(pinfo, decrypt_cb, &decrypt); - pinfo->readinfo.accumulate = 1; - - __ops_parse(pinfo, 0); - + decrypt.passphrase = strdup(passphrase); + parse = __ops_parseinfo_new(); + __ops_keydata_reader_set(parse, key); + __ops_set_callback(parse, decrypt_cb, &decrypt); + parse->readinfo.accumulate = 1; + __ops_parse(parse, !printerrors); + (void) memset(decrypt.passphrase, 0x0, strlen(decrypt.passphrase)); + (void) free(decrypt.passphrase); return decrypt.seckey; } @@ -632,11 +630,11 @@ const unsigned armour, const char *filename) { - __ops_parseinfo_t *pinfo; + __ops_parseinfo_t *parse; unsigned res = 1; int fd; - pinfo = __ops_parseinfo_new(); + parse = __ops_parseinfo_new(); /* add this for the moment, */ /* @@ -644,8 +642,8 @@ * later */ - /* __ops_parse_options(pinfo,OPS_PTAG_SS_ALL,OPS_PARSE_RAW); */ - __ops_parse_options(pinfo, OPS_PTAG_SS_ALL, OPS_PARSE_PARSED); + /* __ops_parse_options(parse,OPS_PTAG_SS_ALL,OPS_PARSE_RAW); */ + __ops_parse_options(parse, OPS_PTAG_SS_ALL, OPS_PARSE_PARSED); #ifdef O_BINARY fd = open(filename, O_RDONLY | O_BINARY); @@ -653,34 +651,34 @@ fd = open(filename, O_RDONLY); #endif if (fd < 0) { - __ops_parseinfo_delete(pinfo); + __ops_parseinfo_delete(parse); perror(filename); return 0; } #ifdef USE_MMAP_FOR_FILES - __ops_reader_set_mmap(pinfo, fd); + __ops_reader_set_mmap(parse, fd); #else - __ops_reader_set_fd(pinfo, fd); + __ops_reader_set_fd(parse, fd); #endif - __ops_set_callback(pinfo, cb_keyring_read, NULL); + __ops_set_callback(parse, cb_keyring_read, NULL); if (armour) { - __ops_reader_push_dearmour(pinfo); + __ops_reader_push_dearmour(parse); } - if (__ops_parse_and_accumulate(keyring, pinfo) == 0) { + if (__ops_parse_and_accumulate(keyring, parse) == 0) { res = 0; } else { res = 1; } - __ops_print_errors(__ops_parseinfo_get_errors(pinfo)); + __ops_print_errors(__ops_parseinfo_get_errors(parse)); if (armour) - __ops_reader_pop_dearmour(pinfo); + __ops_reader_pop_dearmour(parse); close(fd); - __ops_parseinfo_delete(pinfo); + __ops_parseinfo_delete(parse); return res; } @@ -713,27 +711,23 @@ const unsigned armour, __ops_memory_t *mem) { - __ops_parseinfo_t *pinfo = NULL; + __ops_parseinfo_t *parse = NULL; + const unsigned noaccum = 0; unsigned res = 1; - pinfo = __ops_parseinfo_new(); - __ops_parse_options(pinfo, OPS_PTAG_SS_ALL, OPS_PARSE_PARSED); - - __ops_setup_memory_read(&pinfo, mem, NULL, cb_keyring_read, 0); - + parse = __ops_parseinfo_new(); + __ops_parse_options(parse, OPS_PTAG_SS_ALL, OPS_PARSE_PARSED); + __ops_setup_memory_read(&parse, mem, NULL, cb_keyring_read, noaccum); if (armour) { - __ops_reader_push_dearmour(pinfo); + __ops_reader_push_dearmour(parse); } - res = __ops_parse_and_accumulate(keyring, pinfo); - __ops_print_errors(__ops_parseinfo_get_errors(pinfo)); - + res = __ops_parse_and_accumulate(keyring, parse); + __ops_print_errors(__ops_parseinfo_get_errors(parse)); if (armour) { - __ops_reader_pop_dearmour(pinfo); + __ops_reader_pop_dearmour(parse); } - /* don't call teardown_memory_read because memory was passed in */ - __ops_parseinfo_delete(pinfo); - + __ops_parseinfo_delete(parse); return res; } @@ -749,7 +743,7 @@ void __ops_keyring_free(__ops_keyring_t *keyring) { - free(keyring->keys); + (void)free(keyring->keys); keyring->keys = NULL; keyring->nkeys = 0; keyring->nkeys_allocated = 0; Index: src/crypto/external/bsd/netpgp/dist/src/lib/misc.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/misc.c:1.13 src/crypto/external/bsd/netpgp/dist/src/lib/misc.c:1.14 --- src/crypto/external/bsd/netpgp/dist/src/lib/misc.c:1.13 Wed May 27 00:38:27 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/misc.c Thu May 28 01:52:43 2009 @@ -57,7 +57,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: misc.c,v 1.13 2009/05/27 00:38:27 agc Exp $"); +__RCSID("$NetBSD: misc.c,v 1.14 2009/05/28 01:52:43 agc Exp $"); #endif #include <sys/types.h> @@ -194,6 +194,7 @@ __ops_parse_and_accumulate(__ops_keyring_t *keyring, __ops_parseinfo_t *parse) { accumulate_t accumulate; + const int printerrors = 1; int ret; if (parse->readinfo.accumulate) { @@ -210,7 +211,7 @@ __ops_parse_cb_push(parse, accumulate_cb, &accumulate); parse->readinfo.accumulate = 1; - ret = __ops_parse(parse, 0); + ret = __ops_parse(parse, !printerrors); keyring->nkeys += 1; Index: src/crypto/external/bsd/netpgp/dist/src/lib/version.h diff -u src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.13 src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.14 --- src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.13 Wed May 27 05:42:25 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/version.h Thu May 28 01:52:43 2009 @@ -58,7 +58,7 @@ #endif /* development versions have .99 suffix */ -#define NETPGP_BASE_VERSION "1.99.6" +#define NETPGP_BASE_VERSION "1.99.7" #define NETPGP_VERSION_CAT(a, b) "NetPGP portable " a "/[" b "]" #define NETPGP_VERSION_STRING \ Index: src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c:1.16 src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c:1.17 --- src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c:1.16 Wed May 27 00:38:27 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c Thu May 28 01:52:43 2009 @@ -58,7 +58,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: packet-parse.c,v 1.16 2009/05/27 00:38:27 agc Exp $"); +__RCSID("$NetBSD: packet-parse.c,v 1.17 2009/05/28 01:52:43 agc Exp $"); #endif #ifdef HAVE_OPENSSL_CAST_H @@ -2930,6 +2930,7 @@ __ops_parseinfo_t *pinfo) { __ops_crypt_t *decrypt = __ops_parse_get_decrypt(pinfo); + const int printerrors = 1; int r = 1; if (decrypt) { @@ -2960,7 +2961,7 @@ decrypt->block_encrypt(decrypt, decrypt->civ, decrypt->civ); } - r = __ops_parse(pinfo, 0); + r = __ops_parse(pinfo, !printerrors); __ops_reader_pop_decrypt(pinfo); } else { @@ -2990,13 +2991,14 @@ __ops_parseinfo_t *pinfo) { __ops_crypt_t *decrypt = __ops_parse_get_decrypt(pinfo); + const int printerrors = 1; int r = 1; if (decrypt) { __ops_reader_push_decrypt(pinfo, decrypt, region); __ops_reader_push_se_ip_data(pinfo, decrypt, region); - r = __ops_parse(pinfo, 0); + r = __ops_parse(pinfo, !printerrors); __ops_reader_pop_se_ip_data(pinfo); __ops_reader_pop_decrypt(pinfo); Index: src/crypto/external/bsd/netpgp/dist/src/lib/signature.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/signature.c:1.16 src/crypto/external/bsd/netpgp/dist/src/lib/signature.c:1.17 --- src/crypto/external/bsd/netpgp/dist/src/lib/signature.c:1.16 Wed May 27 00:38:27 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/signature.c Thu May 28 01:52:43 2009 @@ -57,7 +57,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: signature.c,v 1.16 2009/05/27 00:38:27 agc Exp $"); +__RCSID("$NetBSD: signature.c,v 1.17 2009/05/28 01:52:43 agc Exp $"); #endif #include <sys/types.h> @@ -363,9 +363,10 @@ hash_add_key(__ops_hash_t *hash, const __ops_pubkey_t *key) { __ops_memory_t *mem = __ops_memory_new(); + const unsigned dontmakepacket = 0; size_t len; - __ops_build_pubkey(mem, key, 0); + __ops_build_pubkey(mem, key, dontmakepacket); len = __ops_mem_len(mem); __ops_hash_add_int(hash, 0x99, 1); __ops_hash_add_int(hash, len, 2); Index: src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.14 src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.15 --- src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.14 Wed May 27 00:38:27 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c Thu May 28 01:52:43 2009 @@ -58,7 +58,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: packet-print.c,v 1.14 2009/05/27 00:38:27 agc Exp $"); +__RCSID("$NetBSD: packet-print.c,v 1.15 2009/05/28 01:52:43 agc Exp $"); #endif #include <string.h> @@ -1191,6 +1191,7 @@ { __ops_parseinfo_t *pinfo = NULL; const unsigned accumulate = 1; + const int printerrors = 1; int fd = 0; fd = __ops_setup_file_read(&pinfo, filename, NULL, cb_list_packets, @@ -1201,7 +1202,7 @@ if (armour) { __ops_reader_push_dearmour(pinfo); } - __ops_parse(pinfo, 1); + __ops_parse(pinfo, printerrors); __ops_teardown_file_read(pinfo, fd); return 1; } Index: src/crypto/external/bsd/netpgp/dist/src/lib/reader.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/reader.c:1.15 src/crypto/external/bsd/netpgp/dist/src/lib/reader.c:1.16 --- src/crypto/external/bsd/netpgp/dist/src/lib/reader.c:1.15 Wed May 27 00:38:27 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/reader.c Thu May 28 01:52:43 2009 @@ -54,7 +54,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: reader.c,v 1.15 2009/05/27 00:38:27 agc Exp $"); +__RCSID("$NetBSD: reader.c,v 1.16 2009/05/28 01:52:43 agc Exp $"); #endif #include <sys/types.h> @@ -1607,9 +1607,9 @@ fprintf(stderr, "\n"); } __ops_calc_mdc_hash(preamble, sz_preamble, plaintext, - sz_plaintext, &hashed[0]); + sz_plaintext, hashed); - if (memcmp(mdc_hash, hashed, OPS_SHA1_HASH_SIZE)) { + if (memcmp(mdc_hash, hashed, OPS_SHA1_HASH_SIZE) != 0) { OPS_ERROR(errors, OPS_E_V_BAD_HASH, "Bad hash in MDC packet"); (void) free(buf); Index: src/crypto/external/bsd/netpgp/dist/src/lib/validate.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/validate.c:1.15 src/crypto/external/bsd/netpgp/dist/src/lib/validate.c:1.16 --- src/crypto/external/bsd/netpgp/dist/src/lib/validate.c:1.15 Wed May 27 00:38:27 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/validate.c Thu May 28 01:52:43 2009 @@ -54,7 +54,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: validate.c,v 1.15 2009/05/27 00:38:27 agc Exp $"); +__RCSID("$NetBSD: validate.c,v 1.16 2009/05/28 01:52:43 agc Exp $"); #endif #include <sys/types.h> @@ -542,6 +542,7 @@ { __ops_parseinfo_t *pinfo; validate_key_cb_t keysigs; + const int printerrors = 1; (void) memset(&keysigs, 0x0, sizeof(keysigs)); keysigs.result = result; @@ -560,7 +561,7 @@ /* is never used. */ keysigs.reader = pinfo->readinfo.arg; - __ops_parse(pinfo, 0); + __ops_parse(pinfo, !printerrors); __ops_pubkey_free(&keysigs.pubkey); if (keysigs.subkey.version) { @@ -646,6 +647,7 @@ validate_data_cb_t validation; __ops_parseinfo_t *parse = NULL; struct stat st; + const int printerrors = 1; unsigned ret; int64_t sigsize; char origfile[MAXPATHLEN]; @@ -695,7 +697,7 @@ } /* Do the verification */ - __ops_parse(parse, 0); + __ops_parse(parse, !printerrors); /* Tidy up */ if (armoured) { @@ -765,6 +767,7 @@ { validate_data_cb_t validation; __ops_parseinfo_t *pinfo = NULL; + const int printerrors = 1; __ops_setup_memory_read(&pinfo, mem, &validation, validate_data_cb, 1); @@ -783,7 +786,7 @@ } /* Do the verification */ - __ops_parse(pinfo, 0); + __ops_parse(pinfo, !printerrors); /* Tidy up */ if (armoured) {