Forum und email

gnupg 関数

導入

このモジュールにより、» gnupg を扱うことが可能となります。

要件

gnupg 拡張モジュールは PHP 4.3 以降を必要とします。 この拡張モジュールをオブジェクト指向形式で使用するには、PHP 5 が必要です。

この拡張モジュールは » gpgme ライブラリを必要とします。

インストール手順

gnupg 拡張モジュールは PHP にバンドルされていません。これは » PECL 拡張モジュールであり、 » https://pecl.php.net/package/gnupg にあります。

定義済み定数

GNUPG_SIG_MODE_NORMAL (integer)
GNUPG_SIG_MODE_DETACH (integer)
GNUPG_SIG_MODE_CLEAR (integer)
GNUPG_VALIDITY_UNKNOWN (integer)
GNUPG_VALIDITY_UNDEFINED (integer)
GNUPG_VALIDITY_NEVER (integer)
GNUPG_VALIDITY_MARGINAL (integer)
GNUPG_VALIDITY_FULL (integer)
GNUPG_VALIDITY_ULTIMATE (integer)
GNUPG_PROTOCOL_OpenPGP (integer)
GNUPG_PROTOCOL_CMS (integer)
GNUPG_SIGSUM_VALID (integer)
GNUPG_SIGSUM_GREEN (integer)
GNUPG_SIGSUM_RED (integer)
GNUPG_SIGSUM_KEY_REVOKED (integer)
GNUPG_SIGSUM_KEY_EXPIRED (integer)
GNUPG_SIGSUM_KEY_MISSING (integer)
GNUPG_SIGSUM_SIG_EXPIRED (integer)
GNUPG_SIGSUM_CRL_MISSING (integer)
GNUPG_SIGSUM_CRL_TOO_OLD (integer)
GNUPG_SIGSUM_BAD_POLICY (integer)
GNUPG_SIGSUM_SYS_ERROR (integer)
GNUPG_ERROR_WARNING (integer)
GNUPG_ERROR_EXCEPTION (integer)
GNUPG_ERROR_SILENT (integer)

注意

この拡張モジュールは、現在のユーザのキーリングを使用します。キーリングは、 通常は ~./.gnupg/ にあります。別の場所を指定するには、環境変数 GNUPGHOME にキーリングへのパスを格納します。その詳細な方法については putenv を参照ください。

キーを特定する設定項目を必要とする関数も存在します。この設定項目は、何らかの ユニークなキー (ユーザ ID、キー ID、フィンガープリント、…) を参照します。 このドキュメントでは、すべての例でフィンガープリントを使用しています。

keylistiterator

この拡張モジュールでは、キーリングの内容を繰り返し処理することも可能です。

<?php
// 'example' にマッチするキーを抜き出して繰り返し処理をするイテレータを生成します
$iterator = new gnupg_keylistiterator("example");
foreach(
$iterator as $fingerprint => $userid){
    echo 
$fingerprint." -> ".$userid."\n";
}
?>

この例は、指定したテキストに署名をします。

Example#1 gnupg での署名の例 (手続き型)

<?php
// gnupg を初期化します
$res gnupg_init();
// 必須ではありません。Clearsign はデフォルト値です
gnupg_setsignmode($res,GNUPG_SIG_MODE_CLEAR);
// 署名のためのキーを、パスフレーズ 'test' で追加します
gnupg_addsignkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
// 署名します
$signed gnupg_sign($res,"just a test");
echo 
$signed;
?>

Example#2 gnupg での署名の例 (オブジェクト指向)

<?php
// 新しいクラス
$gnupg = new gnupg();
// 必須ではありません。Clearsign はデフォルト値です
$gnupg->setsignmode(gnupg::SIG_MODE_CLEAR);
// 署名のためのキーを、パスフレーズ 'test' で追加します
$gnupg->addsignkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
// 署名します
$signed $gnupg->sign("just a test");
echo 
$signed;
?>

目次