ready to release 0.4.3
[gnupg.git] / g10 / sign.c
index 349b2f3..db5272e 100644 (file)
@@ -156,7 +156,6 @@ sign_file( STRLIST filenames, int detached, STRLIST locusr,
     int compr_algo = -1; /* unknown */
 
 
-
     memset( &afx, 0, sizeof afx);
     memset( &zfx, 0, sizeof zfx);
     memset( &mfx, 0, sizeof mfx);
@@ -178,6 +177,7 @@ sign_file( STRLIST filenames, int detached, STRLIST locusr,
        goto leave;
     if( !old_style )
        old_style = only_old_style( sk_list );
+
     if( encrypt ) {
        if( (rc=build_pk_list( remusr, &pk_list, PUBKEY_USAGE_ENC )) )
            goto leave;
@@ -225,12 +225,14 @@ sign_file( STRLIST filenames, int detached, STRLIST locusr,
 
     if( opt.armor && !outfile  )
        iobuf_push_filter( out, armor_filter, &afx );
+  #ifdef ENABLE_COMMENT_PACKETS
     else {
        write_comment( out, "#created by GNUPG v" VERSION " ("
                                            PRINTABLE_OS_NAME ")");
        if( opt.comment_string )
            write_comment( out, opt.comment_string );
     }
+  #endif
     if( encrypt ) {
        efx.pk_list = pk_list;
        /* fixme: set efx.cfx.datalen if known */
@@ -251,7 +253,7 @@ sign_file( STRLIST filenames, int detached, STRLIST locusr,
        int skcount=0;
        /* loop over the secret certificates and build headers
         * The specs now say that the data should be bracket by
-        * the onepass-sig and signature-packet; so we muts build it
+        * the onepass-sig and signature-packet; so we must build it
         * here in reverse order */
        for( sk_rover = sk_list; sk_rover; sk_rover = sk_rover->next )
            skcount++;
@@ -318,10 +320,11 @@ sign_file( STRLIST filenames, int detached, STRLIST locusr,
     }
     else {
        if( fname || opt.set_filename ) {
-           const char *s = opt.set_filename ? opt.set_filename : fname;
+           char *s = make_basename( opt.set_filename ? opt.set_filename : fname );
            pt = m_alloc( sizeof *pt + strlen(s) - 1 );
            pt->namelen = strlen(s);
            memcpy(pt->name, s, pt->namelen );
+           m_free(s);
        }
        else { /* no filename */
            pt = m_alloc( sizeof *pt - 1 );
@@ -367,7 +370,7 @@ sign_file( STRLIST filenames, int detached, STRLIST locusr,
        /* build the signature packet */
        /* fixme: this code is partly duplicated in make_keysig_packet */
        sig = m_alloc_clear( sizeof *sig );
-       sig->version = sk->version;
+       sig->version = old_style || opt.force_v3_sigs ? 3 : sk->version;
        keyid_from_sk( sk, sig->keyid );
        sig->digest_algo = hash_for(sk->pubkey_algo);
        sig->pubkey_algo = sk->pubkey_algo;
@@ -603,7 +606,7 @@ clearsign_file( const char *fname, STRLIST locusr, const char *outfile )
        /* build the signature packet */
        /* fixme: this code is duplicated above */
        sig = m_alloc_clear( sizeof *sig );
-       sig->version = sk->version;
+       sig->version = old_style || opt.force_v3_sigs ? 3 : sk->version;
        keyid_from_sk( sk, sig->keyid );
        sig->digest_algo = hash_for(sk->pubkey_algo);
        sig->pubkey_algo = sk->pubkey_algo;