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