Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/crypto/external/bsd/netpgp/dist/src/lib use hexdump() functi...



details:   https://anonhg.NetBSD.org/src/rev/a8a50d9aa8d1
branches:  trunk
changeset: 754660:a8a50d9aa8d1
user:      agc <agc%NetBSD.org@localhost>
date:      Sat May 08 00:31:07 2010 +0000

description:
use hexdump() function where appropriate.

change the way that we generate a detached signature file, so that ascii
armour is used if --armor is specified. addresses PR 43248 from Juan RP.

diffstat:

 crypto/external/bsd/netpgp/dist/src/lib/netpgp.c    |  15 ++-
 crypto/external/bsd/netpgp/dist/src/lib/signature.c |  84 ++++++++------------
 crypto/external/bsd/netpgp/dist/src/lib/signature.h |   4 +-
 3 files changed, 44 insertions(+), 59 deletions(-)

diffs (253 lines):

diff -r 8373cb75985f -r a8a50d9aa8d1 crypto/external/bsd/netpgp/dist/src/lib/netpgp.c
--- a/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c  Sat May 08 00:27:08 2010 +0000
+++ b/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c  Sat May 08 00:31:07 2010 +0000
@@ -34,7 +34,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: netpgp.c,v 1.46 2010/05/07 16:22:39 agc Exp $");
+__RCSID("$NetBSD: netpgp.c,v 1.47 2010/05/08 00:31:07 agc Exp $");
 #endif
 
 #include <sys/types.h>
@@ -829,7 +829,7 @@
                                        overwrite);
 }
 
-#define ARMOR_HEAD     "-----BEGIN PGP MESSAGE-----"
+#define ARMOR_HEAD     "-----BEGIN PGP MESSAGE-----\r\n"
 
 /* decrypt a file */
 int
@@ -856,7 +856,7 @@
        if (fgets(buf, sizeof(buf), fp) == NULL) {
                realarmor = 0;
        } else {
-               realarmor = (strncmp(buf, ARMOR_HEAD, strlen(ARMOR_HEAD)) == 0);
+               realarmor = (strcmp(buf, ARMOR_HEAD) == 0);
        }
        (void) fclose(fp);
        return __ops_decrypt_file(netpgp->io, f, out, netpgp->secring,
@@ -931,7 +931,9 @@
        if (detached) {
                ret = __ops_sign_detached(io, f, out, seckey, hashalg,
                                get_birthtime(netpgp_getvar(netpgp, "birthtime")),
-                               get_duration(netpgp_getvar(netpgp, "duration")));
+                               get_duration(netpgp_getvar(netpgp, "duration")),
+                               (unsigned)armored,
+                               overwrite);
        } else {
                ret = __ops_sign_file(io, f, out, seckey, hashalg,
                                get_birthtime(netpgp_getvar(netpgp, "birthtime")),
@@ -943,7 +945,7 @@
        return ret;
 }
 
-#define ARMOR_SIG_HEAD "-----BEGIN PGP SIGNATURE-----"
+#define ARMOR_SIG_HEAD "-----BEGIN PGP SIGNATURE-----\r\n"
 
 /* verify a file */
 int
@@ -971,8 +973,7 @@
        if (fgets(buf, sizeof(buf), fp) == NULL) {
                realarmor = 0;
        } else {
-               realarmor = (strncmp(buf, ARMOR_SIG_HEAD, strlen(ARMOR_SIG_HEAD)) == 0 ||
-                            strncmp(buf, ARMOR_HEAD, strlen(ARMOR_HEAD)) == 0);
+               realarmor = (strcmp(buf, ARMOR_SIG_HEAD) == 0);
        }
        (void) fclose(fp);
        if (__ops_validate_file(io, &result, in, out, (const int)realarmor, netpgp->pubring)) {
diff -r 8373cb75985f -r a8a50d9aa8d1 crypto/external/bsd/netpgp/dist/src/lib/signature.c
--- a/crypto/external/bsd/netpgp/dist/src/lib/signature.c       Sat May 08 00:27:08 2010 +0000
+++ b/crypto/external/bsd/netpgp/dist/src/lib/signature.c       Sat May 08 00:31:07 2010 +0000
@@ -57,7 +57,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: signature.c,v 1.26 2010/03/05 16:01:10 agc Exp $");
+__RCSID("$NetBSD: signature.c,v 1.27 2010/05/08 00:31:07 agc Exp $");
 #endif
 
 #include <sys/types.h>
@@ -335,31 +335,14 @@
        }
 
        if (__ops_get_debug_level(__FILE__)) {
-               unsigned        zz;
-               unsigned        uu;
-
-               printf("\n");
-               printf("hashbuf_from_sig\n");
-               for (zz = 0; zz < debug_len_decrypted; zz++) {
-                       printf("%02x ", hashbuf_from_sig[n + zz]);
-               }
-               printf("\n");
-               printf("prefix\n");
-               for (zz = 0; zz < plen; zz++) {
-                       printf("%02x ", prefix[zz]);
-               }
-               printf("\n");
-
-               printf("\n");
-               printf("hash from sig\n");
-               for (uu = 0; uu < hash_length; uu++) {
-                       printf("%02x ", hashbuf_from_sig[n + plen + uu]);
-               }
-               printf("\n");
-               printf("hash passed in (should match hash from sig)\n");
-               for (uu = 0; uu < hash_length; uu++) {
-                       printf("%02x ", hash[uu]);
-               }
+               (void) fprintf(stderr, "\nhashbuf_from_sig\n");
+               hexdump(stderr, hashbuf_from_sig, debug_len_decrypted, " ");
+               printf("\nprefix\n");
+               hexdump(stderr, prefix, plen, " ");
+               (void) fprintf(stderr, "\nhash from sig\n");
+               hexdump(stderr, &hashbuf_from_sig[n + plen], hash_length, " ");
+               (void) fprintf(stderr, "\nhash passed in (should match hash from sig)\n");
+               hexdump(stderr, hash, hash_length, " ");
                printf("\n");
        }
        return (memcmp(&hashbuf_from_sig[n], prefix, plen) == 0 &&
@@ -938,11 +921,12 @@
        return &sig->hash;
 }
 
+/* open up an output file */
 static int 
 open_output_file(__ops_output_t **output,
                        const char *inname,
                        const char *outname,
-                       const unsigned armored,
+                       const char *suffix,
                        const unsigned overwrite)
 {
        int             fd;
@@ -958,8 +942,7 @@
                        (void) fprintf(stderr, "open_output_file: bad alloc\n");
                        fd = -1;
                } else {
-                       (void) snprintf(f, flen, "%s.%s", inname,
-                                       (armored) ? "asc" : "gpg");
+                       (void) snprintf(f, flen, "%s.%s", inname, suffix);
                        fd = __ops_setup_file_write(output, f, overwrite);
                        free(f);
                }
@@ -995,9 +978,9 @@
        __ops_hash_alg_t         hash_alg;
        __ops_memory_t          *infile;
        __ops_output_t          *output;
-       uint8_t          keyid[OPS_KEY_ID_SIZE];
        __ops_hash_t            *hash;
        unsigned                 ret;
+       uint8_t                  keyid[OPS_KEY_ID_SIZE];
        int                      fd_out;
 
        sig = NULL;
@@ -1023,7 +1006,8 @@
        }
 
        /* setup output file */
-       fd_out = open_output_file(&output, inname, outname, armored, overwrite);
+       fd_out = open_output_file(&output, inname, outname,
+                               (armored) ? "asc" : "gpg", overwrite);
        if (fd_out < 0) {
                __ops_memory_free(infile);
                return 0;
@@ -1148,7 +1132,7 @@
        __ops_hash_alg_t         hash_alg;
        __ops_output_t          *output;
        __ops_memory_t          *mem;
-       uint8_t          keyid[OPS_KEY_ID_SIZE];
+       uint8_t                  keyid[OPS_KEY_ID_SIZE];
        __ops_hash_t            *hash;
        unsigned                 ret;
 
@@ -1249,14 +1233,14 @@
                        __ops_seckey_t *seckey,
                        const char *hash,
                        const int64_t from,
-                       const uint64_t duration)
+                       const uint64_t duration,
+                       const unsigned armored, const unsigned overwrite)
 {
        __ops_create_sig_t      *sig;
        __ops_hash_alg_t         alg;
        __ops_output_t          *output;
        __ops_memory_t          *mem;
-       uint8_t          keyid[OPS_KEY_ID_SIZE];
-       char                     fname[MAXPATHLEN];
+       uint8_t                  keyid[OPS_KEY_ID_SIZE];
        int                      fd;
 
        /* find out which hash algorithm to use */
@@ -1266,6 +1250,14 @@
                return 0;
        }
 
+       /* setup output file */
+       fd = open_output_file(&output, f, sigfile,
+                               (armored) ? "asc" : "sig", overwrite);
+       if (fd < 0) {
+               (void) fprintf(io->errs,"Can't open output file: %s\n", f);
+               return 0;
+       }
+
        /* create a new signature */
        sig = __ops_create_sig_new();
        __ops_start_sig(sig, seckey, alg, OPS_SIG_BINARY);
@@ -1273,8 +1265,13 @@
        /* read the contents of 'f', and add that to the signature */
        mem = __ops_memory_new();
        if (!__ops_mem_readfile(mem, f)) {
+               __ops_teardown_file_write(output, fd);
                return 0;
        }
+       /* set armoured/not armoured here */
+       if (armored) {
+               __ops_writer_push_armor_msg(output);
+       }
        __ops_sig_add_data(sig, __ops_mem_data(mem), __ops_mem_len(mem));
        __ops_memory_free(mem);
 
@@ -1284,24 +1281,9 @@
        __ops_keyid(keyid, sizeof(keyid), &seckey->pubkey);
        __ops_add_issuer_keyid(sig, keyid);
        __ops_end_hashed_subpkts(sig);
-
-       /* write the signature to the detached file */
-       if (sigfile == NULL) {
-               (void) snprintf(fname, sizeof(fname), "%s.sig", f);
-               sigfile = fname;
-       }
-       fd = open(sigfile, O_CREAT|O_TRUNC|O_WRONLY, 0666);
-       if (fd < 0) {
-               (void) fprintf(io->errs, "can't write signature to \"%s\"\n",
-                               sigfile);
-               return 0;
-       }
-
-       output = __ops_output_new();
-       __ops_writer_set_fd(output, fd);
        __ops_write_sig(output, sig, &seckey->pubkey, seckey);
+       __ops_teardown_file_write(output, fd);
        __ops_seckey_free(seckey);
-       (void) close(fd);
 
        return 1;
 }
diff -r 8373cb75985f -r a8a50d9aa8d1 crypto/external/bsd/netpgp/dist/src/lib/signature.h
--- a/crypto/external/bsd/netpgp/dist/src/lib/signature.h       Sat May 08 00:27:08 2010 +0000
+++ b/crypto/external/bsd/netpgp/dist/src/lib/signature.h       Sat May 08 00:31:07 2010 +0000
@@ -126,7 +126,9 @@
                        __ops_seckey_t *,
                        const char *,
                        const int64_t,
-                       const uint64_t);
+                       const uint64_t,
+                       const unsigned,
+                       const unsigned);
 
 /* armoured stuff */
 unsigned __ops_crc24(unsigned, uint8_t);



Home | Main Index | Thread Index | Old Index