[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4. 構成

PGG は「PGP 実装のスキーム (枠組)」という考えを導入します。以後、「スキー ム (scheme)」と表記します。この用語は luna object system での singleton object に由来します。

PGG は PGP の機能にアクセスすると同時にそれを開発するために設計されたの で、その構成は、相互運用性だけでなく拡張性も考慮する必要がありました。こ の章では、PGG のバックエンドをどのように記述するかを探しながら、PGG がど のようにつくられているかを探検してみましょう。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.1 初期化

スキームは、使う前に初期化されなければなりません。ただ一つのスキームを使 うことを保証するのが良いでしょう。

以下のコードは ‘pgg-gpg.el’ からの抜き書きです。あ る pgg-gpg のスキームがいったん初期化されると、それ は pgg-scheme-gpg-instance 変数に保存され、以後、再利用されます。

 
(defvar pgg-scheme-gpg-instance nil)

(defun pgg-make-scheme-gpg ()
  (or pgg-scheme-gpg-instance
      (setq pgg-scheme-gpg-instance
            (luna-make-entity 'pgg-scheme-gpg))))

関数の名前は pgg-make-scheme- の後ろにバックエンド名を付加したも のにしなければなりません。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.2 バックエンドのメソッド

各バックエンドには、これらのメソッドが存在しなければなりません。メソッド の実行結果のステータスを知らせなければならないので、メソッドの出力は特別 なバッファーに保存されます (see section 出力を得る)。

Method: pgg-scheme-lookup-key scheme string &optional type

string に関連付けられた鍵を返します。三番目のオプション引 数 type が非-nil だったら、秘密の鍵束から検索します。

Method: pgg-scheme-encrypt-region scheme start end recipients &optional sign passphrase

startend の間の領域を recipients 宛に送るものとし て暗号化します。オプション引数 signnil でなかったら、署 名と暗号化を同時に行ないます。暗号化に成功すると t を、失敗する と nil を返します。

Method: pgg-scheme-encrypt-symmetric-region scheme start end &optional passphrase

現在の startend の間の領域を、共通鍵暗号 (symmetric cipher) とパスフレーズで暗号化します。暗号化に成功すると t を返し、 そうでなければ nil を返します。この機能は現在 GnuPG だけで実装さ れています。

Method: pgg-scheme-decrypt-region scheme start end &optional passphrase

startend の間の領域を解読します。解読に成功する と t を、失敗すると nil を返します。

Method: pgg-scheme-sign-region scheme start end &optional cleartext passphrase

startend の間のテキストに署名します。三番目のオプション 引数 cleartextnil ではない場合、分離された署名を作りま せん。署名に成功すると t を、失敗すると nil を返します。

Method: pgg-scheme-verify-region scheme start end &optional signature

startend の間の領域にある署名を検証します。三番目のオプ ション引数 signaturenil でなかったら、その引数は現在の 領域の分離された署名のファイルとして取り扱われます。署名が正しく検証され た場合は t を、失敗すると nil を返します。

Method: pgg-scheme-insert-key scheme

ユーザーの公開鍵を取得して、それを ASCII 装甲の形式で挿入します。成功す ると t を、失敗すると nil を返します。

Method: pgg-scheme-snarf-keys-region scheme start end

startend の間の領域にある公開鍵を集め、ユーザーの鍵 束 (keyring) に追加します。成功すると t を、失敗する と nil を返します。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.3 出力を得る

バックエンドメソッド (see section バックエンドのメソッド) の出力は特別なバッファー に格納されます。したがって、これらのメソッドは実行結果を伝える必要があり ます。

Variable: pgg-errors-buffer

PGP コマンド実行時の標準エラー出力は、このバッファーに格納されます。

Variable: pgg-output-buffer

PGP コマンド実行時の標準出力は、このバッファーに格納されます。

Variable: pgg-status-buffer

PGP コマンド実行時のその他の結果の情報は、このバッファーに格納されます。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Yasutaka SHINDOH on May 11, 2011 using texi2html 1.82.