2006年1月22日(日) 雪積もりました [同日]
● 山頂が雪で通行止めになったというニュースをテレビでやっていた。むっちゃローカルやなー。
● [memo] gpgで暗号化したい情報をviで編集する
gpg.elの続き。
Vim Gpgを基に、zunda版のgpg.vimを作ってみました。UnixやOS Xでは、~/.vim/plugin/以下に拡張子を.vimとして置いておけば有効になるみたい。変更点は下記のとおりです。
- gpgコマンドの流儀に合わせてAscii形式の暗号文の拡張子を.ascにした。バイナリの暗号文は標準出力に出さないようなのでどうしても一時ファイルが必要になる。なんだかいやなのでサポートしない。
- 署名もするようにした。署名の検証結果はvimのなかからは確かめられない。command-lineに表示される終了コードでわかるとは思うけれど。
- .ascを除いたファイル名に対するautocommandを実行しない。設定されていないとワーニングが出るので邪魔。
- ファイルの書き込み時に暗号化されたファイルのバックアップを作るようにした。^Cを押したりして暗号化に失敗すると空のファイルになっちゃうので。
パスフレーズを扱うだけに、このファイル自体の正当性をいつも確認したいところなのだけれど、このファイル自身の絶対パスを中から知る方法がなかったので保留中です。もし絶対パスがわかれば、detached signatureの絶対パスがわかるので、例えばパスフレーズの入力を促す直前に検証ができるんだけどな。
" Transparent editing of gpg encrypted files.
" By Wouter Hanegraaff <wouter@blub.net>
"
" Copied from http://www.vi-improved.org/wiki/index.php/VimGpg and
" Modified by zunda <zunda at freeshell.org>
"
if has("autocmd")
augroup encrypted
au!
" no history or swap
au BufReadPre,FileReadPre *.asc set viminfo=
au BufReadPre,FileReadPre *.asc set noswapfile
" reading
au BufReadPre,FileReadPre *.asc let s:ch_save = &ch|set ch=2
au BufReadPost,FileReadPost *.asc '[,']!gpg --decrypt 2>/dev/null
au BufReadPost,FileReadPost *.asc let &ch = s:ch_save
"au BufReadPost,FileReadPost *.asc exe ":doautocmd BufReadPost ".expand("%:r")
" writing - always make a (crypted) backup just in case gpg command fails
au BufWritePre,FileWritePre *.asc let s:bu_save = &backup|set backup
au BufWritePre,FileWritePre *.asc '[,']!gpg --default-recipient-self -aes 2>/dev/null
au BufWritePost,FileWritePost *.asc u
au BufWritePost,FileWritePost *.asc let &backup = s:bu_save
augroup END
endif
(追記)最後から2つめのauコマンドの「*.asc」の部分が「*asc」だったのを修正しました。
[ツッコミを入れる]
最近のツッコまれどころ