Mercurial > vim
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 : */