From 3a0c90898338c04bde314bede9f116f299eaddef Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 12 Nov 2014 15:15:42 +0100 Subject: [PATCH] updated for version 7.4.509 Problem: Users are not aware their encryption is weak. Solution: Give a warning when prompting for the key. --- src/crypt.c | 20 ++++++++++++++++++++ src/ex_docmd.c | 1 + src/fileio.c | 1 + src/main.c | 1 + src/proto/crypt.pro | 2 ++ src/version.c | 2 ++ 6 files changed, 27 insertions(+) diff --git a/src/crypt.c b/src/crypt.c index c54e15c4a..f25a2c4a9 100644 --- a/src/crypt.c +++ b/src/crypt.c @@ -503,6 +503,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 diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 35e44f0f3..e90a36ecc 100644 --- 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 index 0843d0429..a978ec241 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -2958,6 +2958,7 @@ check_for_cryptkey(cryptkey, ptr, sizep, filesizep, newfile, fname, did_ask) * 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 fe7549582..181438519 100644 --- a/src/main.c +++ b/src/main.c @@ -854,6 +854,7 @@ vim_main2(int argc UNUSED, char **argv UNUSED) #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 d61df718b..7b29026a1 100644 --- a/src/proto/crypt.pro +++ b/src/proto/crypt.pro @@ -19,6 +19,8 @@ void crypt_decode __ARGS((cryptstate_T *state, char_u *from, size_t len, char_u 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 76ab14690..06c4016be 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 509, /**/ 508, /**/ -- 2.40.0