changeset 6353:60659773c73b v7.4.509

updated for version 7.4.509 Problem: Users are not aware their encryption is weak. Solution: Give a warning when prompting for the key.
author Bram Moolenaar <bram@vim.org>
date Wed, 12 Nov 2014 15:15:42 +0100
parents 2f7bf5f90f57
children f6281b7619a8
files src/crypt.c src/ex_docmd.c src/fileio.c src/main.c src/proto/crypt.pro src/version.c
diffstat 6 files changed, 27 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/crypt.c
+++ b/src/crypt.c
@@ -504,6 +504,26 @@ crypt_free_key(key)
 }
 
 /*
+ * Check the crypt method and give a warning if it's outdated.
+ */
+    void
+crypt_check_method(method)
+    int method;
+{
+    if (method < CRYPT_M_BF2)
+    {
+	msg_scroll = TRUE;
+	MSG(_("Warning: Using a weak encryption method; see :help 'cm'"));
+    }
+}
+
+    void
+crypt_check_current_method()
+{
+    crypt_check_method(crypt_get_method_nr(curbuf));
+}
+
+/*
  * Ask the user for a crypt key.
  * When "store" is TRUE, the new key is stored in the 'key' option, and the
  * 'key' option value is returned: Don't free it.
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -11524,6 +11524,7 @@ ex_match(eap)
 ex_X(eap)
     exarg_T	*eap UNUSED;
 {
+    crypt_check_current_method();
     (void)crypt_get_key(TRUE, TRUE);
 }
 #endif
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2958,6 +2958,7 @@ check_for_cryptkey(cryptkey, ptr, sizep,
 		 * Happens when retrying to detect encoding. */
 		smsg((char_u *)_(need_key_msg), fname);
 		msg_scroll = TRUE;
+		crypt_check_method(method);
 		cryptkey = crypt_get_key(newfile, FALSE);
 		*did_ask = TRUE;
 
--- a/src/main.c
+++ b/src/main.c
@@ -854,6 +854,7 @@ vim_main2(int argc UNUSED, char **argv U
 #ifdef FEAT_CRYPT
     if (params.ask_for_key)
     {
+	crypt_check_current_method();
 	(void)crypt_get_key(TRUE, TRUE);
 	TIME_MSG("getting crypt key");
     }
--- a/src/proto/crypt.pro
+++ b/src/proto/crypt.pro
@@ -19,6 +19,8 @@ void crypt_decode __ARGS((cryptstate_T *
 void crypt_encode_inplace __ARGS((cryptstate_T *state, char_u *buf, size_t len));
 void crypt_decode_inplace __ARGS((cryptstate_T *state, char_u *buf, size_t len));
 void crypt_free_key __ARGS((char_u *key));
+void crypt_check_method __ARGS((int method));
+void crypt_check_current_method __ARGS((void));
 char_u *crypt_get_key __ARGS((int store, int twice));
 void crypt_append_msg __ARGS((buf_T *buf));
 /* vim: set ft=c : */
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    509,
+/**/
     508,
 /**/
     507,