トップ «前の日記 最新 次の日記» 追記

おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


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」だったのを修正しました。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>