aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--g10/ChangeLog17
-rw-r--r--g10/build-packet.c15
-rw-r--r--g10/g10.c3
-rw-r--r--g10/keyedit.c36
-rw-r--r--g10/plaintext.c2
5 files changed, 46 insertions, 27 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index aeb5903c3..b7b986408 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,5 +1,22 @@
2004-04-16 David Shaw <[email protected]>
+ * plaintext.c (handle_plaintext): Accept 'u' as a plaintext mode
+ that requires end of line conversion. This is being considered
+ for a UTF8 text packet. If this doesn't take place, no major harm
+ done. If it does take place, we'll get a jump on starting the
+ changeover.
+
+ * g10.c (main): --no-use-embedded-filename.
+
+ * build-packet.c (calc_plaintext, do_plaintext): Do not create
+ illegal (packet header indicates a size larger than the actual
+ packet) encrypted data packets when not compressing and using a
+ filename longer than 255 characters.
+
+ * keyedit.c (no_primary_warning): Cleanup. (menu_expire): Don't
+ give primary warning for subkey expiration changes. These cannot
+ reorder primaries.
+
* keygen.c (gen_elg, gen_dsa, gen_rsa, do_create,
do_generate_keypair, generate_subkeypair): New is_subkey argument
to set whether a generated key is a subkey. Do not overload the
diff --git a/g10/build-packet.c b/g10/build-packet.c
index 57d75758a..a7e03ae0b 100644
--- a/g10/build-packet.c
+++ b/g10/build-packet.c
@@ -460,7 +460,14 @@ do_pubkey_enc( IOBUF out, int ctb, PKT_pubkey_enc *enc )
static u32
calc_plaintext( PKT_plaintext *pt )
{
- return pt->len? (1 + 1 + pt->namelen + 4 + pt->len) : 0;
+ /* Truncate namelen to the maximum 255 characters. Note this means
+ that a function that calls build_packet with an illegal literal
+ packet will get it back legalized. */
+
+ if(pt->namelen>255)
+ pt->namelen=255;
+
+ return pt->len? (1 + 1 + pt->namelen + 4 + pt->len) : 0;
}
static int
@@ -471,12 +478,6 @@ do_plaintext( IOBUF out, int ctb, PKT_plaintext *pt )
byte buf[1000]; /* this buffer has the plaintext! */
int nbytes;
- /* Truncate namelen to the maximum 255 characters. This does mean
- that a function that calls build_packet with an illegal literal
- packet will get it back legalized. */
- if(pt->namelen>255)
- pt->namelen=255;
-
write_header(out, ctb, calc_plaintext( pt ) );
iobuf_put(out, pt->mode );
iobuf_put(out, pt->namelen );
diff --git a/g10/g10.c b/g10/g10.c
index 0db3a02e6..a50251a3b 100644
--- a/g10/g10.c
+++ b/g10/g10.c
@@ -237,6 +237,7 @@ enum cmd_and_opt_values
oNoShowPolicyURL,
oSigKeyserverURL,
oUseEmbeddedFilename,
+ oNoUseEmbeddedFilename,
oComment,
oDefaultComment,
oNoComments,
@@ -605,6 +606,7 @@ static ARGPARSE_OPTS opts[] = {
{ oLoggerFile, "logger-file",2, "@" },
#endif /* __riscos__ */
{ oUseEmbeddedFilename, "use-embedded-filename", 0, "@" },
+ { oNoUseEmbeddedFilename, "no-use-embedded-filename", 0, "@" },
{ oUtf8Strings, "utf8-strings", 0, "@" },
{ oNoUtf8Strings, "no-utf8-strings", 0, "@" },
{ oWithFingerprint, "with-fingerprint", 0, "@" },
@@ -1926,6 +1928,7 @@ main( int argc, char **argv )
break;
case oSigKeyserverURL: add_keyserver_url(pargs.r.ret_str,0); break;
case oUseEmbeddedFilename: opt.use_embedded_filename = 1; break;
+ case oNoUseEmbeddedFilename: opt.use_embedded_filename = 0; break;
case oComment:
if(pargs.r.ret_str[0])
append_to_strlist(&opt.comments,pargs.r.ret_str);
diff --git a/g10/keyedit.c b/g10/keyedit.c
index c96aeb4ab..c4a82941d 100644
--- a/g10/keyedit.c
+++ b/g10/keyedit.c
@@ -2290,13 +2290,10 @@ show_key_and_fingerprint( KBNODE keyblock )
/* Show a warning if no uids on the key have the primary uid flag
set. */
static void
-no_primary_warning(KBNODE keyblock, int uids)
+no_primary_warning(KBNODE keyblock)
{
KBNODE node;
- int select_all=1,have_uid=0,uid_count=0;
-
- if(uids)
- select_all=!count_selected_uids(keyblock);
+ int have_primary=0,uid_count=0;
/* TODO: if we ever start behaving differently with a primary or
non-primary attribute ID, we will need to check for attributes
@@ -2309,17 +2306,18 @@ no_primary_warning(KBNODE keyblock, int uids)
{
uid_count++;
- if((select_all || (node->flag & NODFLG_SELUID))
- && node->pkt->pkt.user_id->is_primary==2)
- have_uid|=2;
- else
- have_uid|=1;
+ if(node->pkt->pkt.user_id->is_primary==2)
+ {
+ have_primary=1;
+ break;
+ }
}
}
- if(uid_count>1 && have_uid&1 && !(have_uid&2))
- log_info(_("WARNING: no user ID has been marked as primary. This command "
- "may\n cause a different user ID to become the assumed primary.\n"));
+ if(uid_count>1 && !have_primary)
+ log_info(_("WARNING: no user ID has been marked as primary. This command"
+ " may\n cause a different user ID to become"
+ " the assumed primary.\n"));
}
/****************
@@ -2838,12 +2836,12 @@ menu_expire( KBNODE pub_keyblock, KBNODE sec_keyblock )
}
else if( n1 )
tty_printf(_("Changing expiration time for a secondary key.\n"));
- else {
+ else
+ {
tty_printf(_("Changing expiration time for the primary key.\n"));
mainkey=1;
- }
-
- no_primary_warning(pub_keyblock,0);
+ no_primary_warning(pub_keyblock);
+ }
expiredate = ask_expiredate();
node = find_kbnode( sec_keyblock, PKT_SECRET_KEY );
@@ -3099,7 +3097,7 @@ menu_set_preferences (KBNODE pub_keyblock, KBNODE sec_keyblock )
int selected, select_all;
int modified = 0;
- no_primary_warning(pub_keyblock,1);
+ no_primary_warning(pub_keyblock);
select_all = !count_selected_uids (pub_keyblock);
@@ -3184,7 +3182,7 @@ menu_set_keyserver_url (KBNODE pub_keyblock, KBNODE sec_keyblock )
int modified = 0;
char *answer;
- no_primary_warning(pub_keyblock,1);
+ no_primary_warning(pub_keyblock);
answer=cpr_get_utf8("keyedit.add_keyserver",
_("Enter your preferred keyserver URL: "));
diff --git a/g10/plaintext.c b/g10/plaintext.c
index 43c0c4be1..26a5cad3b 100644
--- a/g10/plaintext.c
+++ b/g10/plaintext.c
@@ -56,7 +56,7 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
static off_t count=0;
int rc = 0;
int c;
- int convert = pt->mode == 't';
+ int convert = (pt->mode == 't' || pt->mode == 'u');
#ifdef __riscos__
int filetype = 0xfff;
#endif