updated for version 7.4.509
Problem: Users are not aware their encryption is weak.
Solution: Give a warning when prompting for the key.
diff --git a/src/crypt.c b/src/crypt.c
index c54e15c..f25a2c4 100644
--- a/src/crypt.c
+++ b/src/crypt.c
@@ -504,6 +504,26 @@
}
/*
+ * 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.
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 35e44f0..e90a36e 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -11524,6 +11524,7 @@
ex_X(eap)
exarg_T *eap UNUSED;
{
+ crypt_check_current_method();
(void)crypt_get_key(TRUE, TRUE);
}
#endif
diff --git a/src/fileio.c b/src/fileio.c
index 0843d04..a978ec2 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2958,6 +2958,7 @@
* 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;
diff --git a/src/main.c b/src/main.c
index fe75495..1814385 100644
--- a/src/main.c
+++ b/src/main.c
@@ -854,6 +854,7 @@
#ifdef FEAT_CRYPT
if (params.ask_for_key)
{
+ crypt_check_current_method();
(void)crypt_get_key(TRUE, TRUE);
TIME_MSG("getting crypt key");
}
diff --git a/src/proto/crypt.pro b/src/proto/crypt.pro
index d61df71..7b29026 100644
--- a/src/proto/crypt.pro
+++ b/src/proto/crypt.pro
@@ -19,6 +19,8 @@
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 : */
diff --git a/src/version.c b/src/version.c
index 76ab146..06c4016 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 509,
+/**/
508,
/**/
507,