Preview application/pgp-encrypted

Hiroya Murata <[email protected]> Mon, 08 Jan 2007 17:47:07 +0900
Newsgroups gmane.mail.wanderlust.general.japanese,gmane.mail.emacs.mime.japanese
Message-ID <uejq5zz04.wl%[email protected]>
--Multipart_Mon_Jan_08_17:47:07_2007-1
Content-Type: text/plain; charset=ISO-2022-JP

$B:#G/$b59$7$/$*4j$$$7$^$9(B.

application/pgp-encrypted $B%Q!<%H$N;RMWAG$H$7$F(B mmencrypted $B$J$k(B
stub entity $B$r@_Dj$9$k;v$G(B, $B0E9f2=%Q!<%H$r%$%s%i%$%s$GI=<(=PMh$kMM(B
$B$K$7$F$_$^$7$?(B. $B%Q%C%A$rE:IU$7$^$9(B.

$BI|9f2=$7$?FbMF$O(B, mmexternal $B$KJo$C$F?75,$K%P%C%U%!$r:n$C$FJ];}$9(B
$B$kMM$K$7$F$$$^$9(B. Wanderlust $B$G$O(B, $B=*N;;~$K$3$l$i$N%P%C%U%!$b(B ($B6v!9(B
$B$G$9$,(B) $B:o=|$5$l$^$9(B.

$B<h$j4:$($:(B, $B<B:]$NI|9f=hM}$G(B epg $B$rD>@\8F$s$G$7$^$C$F$$$^$9$,(B, $B8=(B
$B:_(B wl-mime.el $B$K$"$k(B pgg $B$H$N%i%C%Q!<It$r(B elmo $B$K0\F0$9$k$+(B, $BI|9f(B
$B=hM}H!?t$rJQ?t$H$7$F1w$$$F30It$+$i@_Dj$9$kMM$K$7$h$&$H;W$C$F$$$^$9(B.

$B$=$3Kx=PMh$?$i(B commit $B$9$k$D$b$j$G$9(B.

;; Wanderlust $B$N0JA0$N<BAu$G$O(B, $BI=<($@$1$O=PMh$^$7$?$,Cf$KF~$l$^$;(B
;; $B$s$G$7$?(B.

-- 
Hiroya Murata ($BB<ED(B $B9@Li(B) <[email protected]>

--Multipart_Mon_Jan_08_17:47:07_2007-1
Content-Type: application/octet-stream; type=patch
Content-Disposition: attachment; filename="wl-preivew-pgp.patch"
Content-Transfer-Encoding: base64

PyBlbG1vL21tZW5jcnlwdGVkLmVsCkluZGV4OiBXTC1FTFMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L3dhbmRlcmx1c3QvV0wtRUxTLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM2CmRp
ZmYgLXUgLXcgLXIxLjM2IFdMLUVMUwotLS0gV0wtRUxTCTE3IFNlcCAyMDA1IDA5OjQzOjI2IC0w
MDAwCTEuMzYKKysrIFdMLUVMUwk4IEphbiAyMDA3IDA4OjE5OjU5IC0wMDAwCkBAIC0xNSw3ICsx
NSw3IEBACiAgICApKQogCiAoZGVmY29uc3QgRUxNTy1NT0RVTEVTICcoCi0gICB1dGY3IHBsZGFw
IGFjYXAgc2xwIG1taW1hcAorICAgdXRmNyBwbGRhcCBhY2FwIHNscCBtbWltYXAgbW1lbmNyeXB0
ZWQKICAgIGVsbW8tc2lnbmFsIGVsbW8tZGF0ZSBlbG1vLXV0aWwgZWxtby12ZXJzaW9uCiAgICBl
bG1vLXZhcnMgZWxtbyBlbG1vLW1zZ2RiCiAgICBlbG1vLW5ldCBlbG1vLWltYXA0IGVsbW8tcG9w
MyBlbG1vLW5udHAKSW5kZXg6IGVsbW8vZWxtby1taW1lLmVsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC93YW5kZXJsdXN0L2VsbW8vZWxtby1taW1lLmVsLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjI2CmRpZmYgLXUgLXcgLXIxLjI2IGVsbW8tbWltZS5lbAotLS0gZWxtby9lbG1vLW1p
bWUuZWwJMTcgTm92IDIwMDUgMTI6NTA6MjMgLTAwMDAJMS4yNgorKysgZWxtby9lbG1vLW1pbWUu
ZWwJOCBKYW4gMjAwNyAwODoxOTo1OSAtMDAwMApAQCAtMTIyLDYgKzEyMiwzNSBAQAogCQkJCQkJ
ICZyZXN0IGluaXQtYXJncykKICAgKGx1bmEtY2FsbC1uZXh0LW1ldGhvZCkpCiAKKyhkZWZ1biBl
bG1vLW1pbWUtbWFrZS1tdWx0aXBhcnQvZW5jcnlwdGVkLXN0dWIgKGNvbnRyb2wgZGF0YSkKKyAg
KHJlcXVpcmUgJ21tZW5jcnlwdGVkKQorICAobHVuYS1tYWtlLWVudGl0eSAnbWltZS1lbmNyeXB0
ZWQtZW50aXR5CisJCSAgICA6bG9jYXRpb24gY29udHJvbAorCQkgICAgOnBhcmVudCBjb250cm9s
CisJCSAgICA6bm9kZS1pZCAoY29ucyAwIChtaW1lLWVudGl0eS1ub2RlLWlkIGNvbnRyb2wpKQor
CQkgICAgOmRhdGEgZGF0YQorCQkgICAgOmNoaWxkLXR5cGUgJ2VsbW8tYnVmZmVyKSkKKworKGRl
ZnVuIGVsbW8tbWltZS1lbnRpdHktc2V0dXAtY2hpbGRyZW4gKGVudGl0eSBjaGlsZHJlbikKKyAg
KG1pbWUtZW50aXR5LXNldC1jaGlsZHJlbi1pbnRlcm5hbAorICAgZW50aXR5CisgICAobGV0KiAo
KGNvbnRlbnQtdHlwZSAobWltZS1lbnRpdHktY29udGVudC10eXBlIGVudGl0eSkpCisJICAocHJp
bWFyeS10eXBlIChtaW1lLWNvbnRlbnQtdHlwZS1wcmltYXJ5LXR5cGUgY29udGVudC10eXBlKSkp
CisgICAgICh3aGVuIChhbmQgKGVxIHByaW1hcnktdHlwZSAnbXVsdGlwYXJ0KQorCQkoZXEgKG1p
bWUtY29udGVudC10eXBlLXN1YnR5cGUgY29udGVudC10eXBlKSAnZW5jcnlwdGVkKSkKKyAgICAg
ICAobWltZS1lbnRpdHktc2V0LWNoaWxkcmVuLWludGVybmFsCisJKGNhciBjaGlsZHJlbikKKwko
bGlzdCAoYXBwbHkgIydlbG1vLW1pbWUtbWFrZS1tdWx0aXBhcnQvZW5jcnlwdGVkLXN0dWIgY2hp
bGRyZW4pKSkpCisgICAgIGNoaWxkcmVuKSkpCisKKyhsdW5hLWRlZmluZS1tZXRob2QgbWltZS1l
bnRpdHktY2hpbGRyZW4gOmFyb3VuZAorICAoKGVudGl0eSBtaW1lLWVsbW8tYnVmZmVyLWVudGl0
eSkpCisgIChlbG1vLW1pbWUtZW50aXR5LXNldHVwLWNoaWxkcmVuIGVudGl0eSAobHVuYS1jYWxs
LW5leHQtbWV0aG9kKSkpCisKKyhsdW5hLWRlZmluZS1tZXRob2QgbWltZS1lbnRpdHktY2hpbGRy
ZW4gOmFyb3VuZAorICAoKGVudGl0eSBtaW1lLWVsbW8taW1hcC1lbnRpdHkpKQorICAoZWxtby1t
aW1lLWVudGl0eS1zZXR1cC1jaGlsZHJlbiBlbnRpdHkgKGx1bmEtY2FsbC1uZXh0LW1ldGhvZCkp
KQorCiA7OzsgSW5zZXJ0IHNvcnRlZCBoZWFkZXIuCiAoZGVmc3Vic3QgZWxtby1taW1lLWluc2Vy
dC1oZWFkZXItZnJvbS1idWZmZXIgKGJ1ZmZlcgogCQkJCQkgICAgICAgc3RhcnQgZW5kCkluZGV4
OiB3bC93bC1taW1lLmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC93YW5kZXJsdXN0
L3dsL3dsLW1pbWUuZWwsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTAwCmRpZmYgLXUgLXcgLXIx
LjEwMCB3bC1taW1lLmVsCi0tLSB3bC93bC1taW1lLmVsCTcgSmFuIDIwMDcgMTI6MjY6MjcgLTAw
MDAJMS4xMDAKKysrIHdsL3dsLW1pbWUuZWwJOCBKYW4gMjAwNyAwODoxOTo1OSAtMDAwMApAQCAt
NjY5LDE2ICs2NjksNiBAQAogCSAgIChlbnRpdHktYnV0dG9uIC4gaW52aXNpYmxlKSkKIAkgdG8t
YnVmKSkpKSkKIAotKGRlZnVuIHdsLW1pbWUtcHJldmlldy1hcHBsaWNhdGlvbi9wZ3AtZW5jcnlw
dGVkIChlbnRpdHkgc2l0dWF0aW9uKQotICAobGV0KiAoKGVudGl0eS1ub2RlLWlkIChtaW1lLWVu
dGl0eS1ub2RlLWlkIGVudGl0eSkpCi0JIChtb3RoZXIgKG1pbWUtZW50aXR5LXBhcmVudCBlbnRp
dHkpKQotCSAoa251bSAoY2FyIGVudGl0eS1ub2RlLWlkKSkKLQkgKG9udW0gKGlmICg+IGtudW0g
MCkKLQkJICAgKDEtIGtudW0pCi0JCSAoMSsga251bSkpKQotCSAob3JpZy1lbnRpdHkgKG50aCBv
bnVtIChtaW1lLWVudGl0eS1jaGlsZHJlbiBtb3RoZXIpKSkpCi0gICAgKHdsLW1pbWUtcHJldmll
dy1hcHBsaWNhdGlvbi9wZ3AgZW50aXR5IG9yaWctZW50aXR5IHNpdHVhdGlvbikpKQotCiA7Ozsg
U3VtbWFyeQogKGRlZnVuIHdsLXN1bW1hcnktYnVyc3Qtc3ViciAobWVzc2FnZS1lbnRpdHkgdGFy
Z2V0IG51bWJlcikKICAgOzsgcmV0dXJucyBuZXcgbnVtYmVyLgpAQCAtODY1LDcgKzg1NSw3IEBA
CiAgICAnKCh0eXBlIC4gYXBwbGljYXRpb24pKHN1YnR5cGUgLiBwZ3AtZW5jcnlwdGVkKQogICAg
ICAoZW5jb2RpbmcgLiB0KQogICAgICAoYm9keSAuIGludmlzaWJsZSkKLSAgICAgKGJvZHktcHJl
c2VudGF0aW9uLW1ldGhvZCAuIHdsLW1pbWUtcHJldmlldy1hcHBsaWNhdGlvbi9wZ3AtZW5jcnlw
dGVkKQorICAgICAoYm9keS1wcmVzZW50YXRpb24tbWV0aG9kIC4gbWltZS1kaXNwbGF5LW11bHRp
cGFydC9taXhlZCkKICAgICAgKG1ham9yLW1vZGUgLiB3bC1vcmlnaW5hbC1tZXNzYWdlLW1vZGUp
KSkKIAogICAoY3RyZWUtc2V0LWNhbGlzdC1zdHJpY3RseQo=

--Multipart_Mon_Jan_08_17:47:07_2007-1
Content-Type: application/octet-stream; type=emacs-lisp
Content-Disposition: attachment; filename="mmencrypted.el"
Content-Transfer-Encoding: 7bit

;;; mmencrypted.el --- MIME entity module for encrypeted part

;; Copyright (C) 2007 Hiroya Murata <[email protected]>

;; Author: Hiroya Murata <[email protected]>
;; Keywords: MIME, multimedia, mail, news

;; This file is part of FLIM (Faithful Library about Internet Message).

;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2, or (at
;; your option) any later version.

;; This program is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;; General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING.  If not, write to the
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.

;;; Commentary:
;;

;;; Code:

(require 'mmgeneric)
(require 'mime)
(require 'epg)

(eval-and-compile
  (luna-define-class mime-encrypted-entity (mime-entity)
		     (data decrypted children-type))
  (luna-define-internal-accessors 'mime-encrypted-entity))

(luna-define-method mime-entity-name ((entity mime-encrypted-entity))
  (mime-entity-name (mime-entity-location-internal entity)))

(defun mime-encrypted-entity-decrypt-entity (entity)
  (or (mime-encrypted-entity-decrypted-internal entity)
      (with-current-buffer (get-buffer-create (concat " *Body of "
						      (mime-entity-name entity)
						      "*"))
	(erase-buffer)
	(mime-insert-entity (mime-encrypted-entity-data-internal entity))
	(let ((context (epg-make-context)))
	  (insert (prog1
		      (decode-coding-string
		       (epg-decrypt-string context (buffer-string))
		       'raw-text)
		    (erase-buffer))))
	(mime-encrypted-entity-set-decrypted-internal
	 entity
	 (mime-parse-message
	  (mm-expand-class-name
	   (or (mime-encrypted-entity-children-type-internal entity)
	       'buffer))
	  nil
	  entity
	  (mime-entity-node-id-internal entity))))))


;;; @ entity
;;;

(luna-define-method mime-insert-entity ((entity mime-encrypted-entity))
  (mime-insert-entity (mime-encrypted-entity-decrypt-entity entity)))

(luna-define-method mime-write-entity ((entity mime-encrypted-entity) filename)
  (mime-write-entity (mime-encrypted-entity-decrypt-entity entity) filename))


;;; @ entity header
;;;


;;; @ entity body
;;;

(luna-define-method mime-entity-body ((entity mime-encrypted-entity))
  (mime-entity-body (mime-encrypted-entity-decrypt-entity entity)))

(luna-define-method mime-insert-entity-body ((entity mime-encrypted-entity))
  (mime-insert-entity-body (mime-encrypted-entity-decrypt-entity entity)))

(luna-define-method mime-write-entity-body ((entity mime-encrypted-entity)
					    filename)
  (mime-write-entity-body (mime-encrypted-entity-decrypt-entity entity)
			  filename))


;;; @ entity content
;;;

(luna-define-method mime-entity-content ((entity mime-encrypted-entity))
  (mime-entity-content (mime-encrypted-entity-decrypt-entity entity)))

(luna-define-method mime-insert-entity-content ((entity mime-encrypted-entity))
  (mime-insert-entity-content (mime-encrypted-entity-decrypt-entity entity)))

(luna-define-method mime-write-entity-content ((entity mime-encrypted-entity)
					       filename)
  (mime-write-entity-content (mime-encrypted-entity-decrypt-entity entity)
			     filename))


;;; @ header field
;;;

(luna-define-method mime-entity-fetch-field :around
  ((entity mime-encrypted-entity) field-name)
  (or (luna-call-next-method)
      (mime-entity-fetch-field (mime-encrypted-entity-decrypt-entity entity)
			       field-name)))

(luna-define-method mime-insert-header ((entity mime-encrypted-entity)
					&optional invisible-fields
					visible-fields)
  (mime-insert-header (mime-encrypted-entity-decrypt-entity entity)
		      invisible-fields
		      visible-fields))

(luna-define-method mime-entity-children ((entity mime-encrypted-entity))
  (mime-entity-children (mime-encrypted-entity-decrypt-entity entity)))


;;; @ end
;;

(provide 'mmencrypted)

;;; mmencrypted.el ends here

--Multipart_Mon_Jan_08_17:47:07_2007-1--