forked from aniani/vim
Problem: Encryption implementation is messy. Blowfish encryption has a
weakness.
Solution: Refactor the encryption, store the state in an allocated struct
instead of using a save/restore mechanism. Introduce the
"blowfish2" method, which does not have the weakness and encrypts
the whole undo file. (largely by David Leadbeater)
95 lines
1.7 KiB
Plaintext
95 lines
1.7 KiB
Plaintext
Test for encryption.
|
|
The test data is in another file to avoid problems with 'encoding', especially
|
|
cp932.
|
|
|
|
STARTTEST
|
|
:so small.vim
|
|
:set enc=latin1
|
|
:bwipe!
|
|
:r test71a.in
|
|
:/^start of text/+1
|
|
:let text_lines = getline('.', line('.') + 2)
|
|
:/^start of cm=zip bytes/+1
|
|
:let cm0_bytes = getline('.', '.')
|
|
:/^start of cm=blowfish bytes/+1
|
|
:let cm1_bytes = getline('.', '.')
|
|
:/^start of cm=blowfish2 bytes/+1
|
|
:let cm2_bytes = getline('.', '.')
|
|
:bwipe!
|
|
:call append(0, text_lines)
|
|
:$d
|
|
:X
|
|
foobar
|
|
foobar
|
|
:w! Xtestfile
|
|
:bwipe!
|
|
:e Xtestfile
|
|
foobar
|
|
:let cm0_read_back = getline('.', '$')
|
|
:set key=
|
|
:set cryptmethod=blowfish
|
|
:" If the blowfish test fails 'cryptmethod' will be 'zip' now.
|
|
:%s/^/\=&cryptmethod == 'blowfish' ? "OK " : "blowfish test failed "/
|
|
:X
|
|
barfoo
|
|
barfoo
|
|
:w! Xtestfile
|
|
:bwipe!
|
|
:e Xtestfile
|
|
barfoo
|
|
:let cm1_read_back = getline('.', '$')
|
|
:set key=
|
|
:set cryptmethod=blowfish2
|
|
:" If the blowfish test fails 'cryptmethod' will be 'zip' now.
|
|
:%s/^/\=&cryptmethod == 'blowfish2' ? "OK " : "blowfish test failed "/
|
|
:X
|
|
bar2foo
|
|
bar2foo
|
|
:w! Xtestfile
|
|
:bwipe!
|
|
:e Xtestfile
|
|
bar2foo
|
|
:let cm2_read_back = getline('.', '$')
|
|
:bwipe!
|
|
:set bin noeol key=
|
|
:call append(0, cm0_bytes)
|
|
:$d
|
|
:set fenc=latin1
|
|
:w! Xtestfile
|
|
:bwipe!
|
|
:set nobin
|
|
:e Xtestfile
|
|
foofoo
|
|
:let cm0_read_bin = getline('.', '$')
|
|
:bwipe!
|
|
:set bin noeol key=
|
|
:call append(0, cm1_bytes)
|
|
:$d
|
|
:set fenc=latin1
|
|
:w! Xtestfile
|
|
:bwipe!
|
|
:set nobin
|
|
:e Xtestfile
|
|
barbar
|
|
:let cm1_read_bin = getline('.', '$')
|
|
:bwipe!
|
|
:set bin noeol key=
|
|
:call append(0, cm2_bytes)
|
|
:$d
|
|
:set fenc=latin1
|
|
:w! Xtestfile
|
|
:bwipe!
|
|
:set nobin
|
|
:e Xtestfile
|
|
barburp
|
|
:call append(0, cm1_read_bin)
|
|
:call append(0, cm0_read_bin)
|
|
:call append(0, cm2_read_back)
|
|
:call append(0, cm1_read_back)
|
|
:call append(0, cm0_read_back)
|
|
:set key= fenc=latin1
|
|
:w! test.out
|
|
:qa!
|
|
ENDTEST
|
|
|