PECL::gnupgでPGP
GnUPGとPHPを使ってPGP暗号をかけるサンプルが載ってます。 gpgコマンドをexecコマンドで得た結果をmail関数でメールするっていう簡単なサンプルですが、何かの時に使えそうですね。
おお。これ使えそう!
そういえば、PECL::gnupgがあったなぁ。。。ということで、ちょこっとだけ試してみた。
あらかじめ、gpgmeをインストール(手順は割愛)。以下、PECL::gnupgのインストールと設定手順。
# pecl install gnupg # echo "extension=gnupg.so" >> /path/to/php.ini # su - guestuser $ $ mkdir .gnupg $ chmod 777 .gnupg $ gpg --gen-key $ cd .gnupg $ chmod 666 trustdb.gpg $ chmod 604 secring.gpg $ chmod 604 random_seed $ chmod 644 pubring.gpg $ exit # # export GNUPGHOME=/home/hoge/.gnupg # apachectl stop # apachectl start #
暗号化は設定の関係か、確認できなかったので、とりあえずテキストの署名で妥協。。。
PHPのソースはこんな感じ。マニュアルにある通りですね。
<?php $gnupg = new gnupg(); $gnupg->setsignmode(gnupg::SIG_MODE_CLEAR); $gnupg->addsignkey("[fingerprint]","[passphrase]"); var_dump($gnupg->sign("テストです。どうかな?")); ?>
フィンガープリントは
$ gpg --fingerprint
で表示される値のスペースを消して繋げたもの(40バイト)です。
パスフレーズは
$ gpg --gen-key
で指定したものです。
これの実行結果はこんな感じ。
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 テストです。どうかな? -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) iQCVAwUBRIW2Z6m7QuXBcaOBAQJacAQAmlvx9NI/TxIEHXqEVDFw/7ckwrhtd+D9 : l+R0mOJSqxo= =CZYb -----END PGP SIGNATURE-----
おおっ!結構良い感じに動くじゃないッスか。
。。。って、やんなきゃいけないこと終わってないよ orz