# HG changeset patch # User Bram Moolenaar # Date 1415801742 -3600 # Node ID 60659773c73bc34f16340dba6f96f02f4664c7e7 # Parent 2f7bf5f90f57ba5feec86c71781b61ddd18b53a0 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 --- 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. diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- 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 diff --git a/src/fileio.c b/src/fileio.c --- 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; diff --git a/src/main.c b/src/main.c --- 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"); } diff --git a/src/proto/crypt.pro b/src/proto/crypt.pro --- 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 : */ diff --git a/src/version.c b/src/version.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,