Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

PECL::gnupgでPGP

GnUPGPHPを使って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