[PATCH] configure: add --without-api-docs option
[notmuch-archives.git] / 88 / 818bf1e95bbb0b476b9c09ab684afe50df7b0a
1 Return-Path: <dkg@fifthhorseman.net>\r
2 X-Original-To: notmuch@notmuchmail.org\r
3 Delivered-To: notmuch@notmuchmail.org\r
4 Received: from localhost (localhost [127.0.0.1])\r
5         by olra.theworths.org (Postfix) with ESMTP id EAAEF40DDF3\r
6         for <notmuch@notmuchmail.org>; Fri, 12 Nov 2010 23:56:09 -0800 (PST)\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
8 X-Spam-Flag: NO\r
9 X-Spam-Score: -1.899\r
10 X-Spam-Level: \r
11 X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5\r
12         tests=[BAYES_00=-1.9, UNPARSEABLE_RELAY=0.001] autolearn=ham\r
13 Received: from olra.theworths.org ([127.0.0.1])\r
14         by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
15         with ESMTP id ggJ21e48gzL5 for <notmuch@notmuchmail.org>;\r
16         Fri, 12 Nov 2010 23:55:58 -0800 (PST)\r
17 Received: from rodolpho.mayfirst.org (rodolpho.mayfirst.org [209.234.253.107])\r
18         (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))\r
19         (No client certificate requested)\r
20         by olra.theworths.org (Postfix) with ESMTPS id AF61140DDDB\r
21         for <notmuch@notmuchmail.org>; Fri, 12 Nov 2010 23:55:58 -0800 (PST)\r
22 Received: from localhost (localhost [127.0.0.1])\r
23         by rodolpho.mayfirst.org (Postfix) with ESMTP id 1B6D33CD58\r
24         for <notmuch@notmuchmail.org>; Sat, 13 Nov 2010 02:55:55 -0500 (EST)\r
25 X-Virus-Scanned: Debian amavisd-new at rodolpho.mayfirst.org\r
26 Received: from rodolpho.mayfirst.org ([127.0.0.1])\r
27         by localhost (rodolpho.mayfirst.org [127.0.0.1]) (amavisd-new,\r
28         port 10024) with ESMTP id jS0rqkMPz2dh for <notmuch@notmuchmail.org>;\r
29         Sat, 13 Nov 2010 02:55:54 -0500 (EST)\r
30 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender:\r
31         smtpauth@rodolpho.mayfirst.org) with ESMTPSA id 814CB3CD56\r
32 Message-ID: <4CDE4486.2050101@fifthhorseman.net>\r
33 Date: Sat, 13 Nov 2010 02:55:50 -0500\r
34 From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>\r
35 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;\r
36         rv:1.9.2.9) Gecko/20100918 Icedove/3.1.4\r
37 MIME-Version: 1.0\r
38 To: notmuch <notmuch@notmuchmail.org>\r
39 Subject: a proposed change to JSON output to report verification of PGP/MIME\r
40         signatures.\r
41 X-Enigmail-Version: 1.1.2\r
42 OpenPGP: id=D21739E9\r
43 Content-Type: multipart/signed; micalg=pgp-sha512;\r
44         protocol="application/pgp-signature";\r
45         boundary="------------enig76D4CD9CFE607DF25F2033C6"\r
46 X-BeenThere: notmuch@notmuchmail.org\r
47 X-Mailman-Version: 2.1.13\r
48 Precedence: list\r
49 Reply-To: notmuch <notmuch@notmuchmail.org>\r
50 List-Id: "Use and development of the notmuch mail system."\r
51         <notmuch.notmuchmail.org>\r
52 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
53         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
54 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
55 List-Post: <mailto:notmuch@notmuchmail.org>\r
56 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
57 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
58         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
59 X-List-Received-Date: Sat, 13 Nov 2010 07:56:10 -0000\r
60 \r
61 This is an OpenPGP/MIME signed message (RFC 2440 and 3156)\r
62 --------------enig76D4CD9CFE607DF25F2033C6\r
63 Content-Type: multipart/mixed;\r
64  boundary="------------010905080104070601060702"\r
65 \r
66 This is a multi-part message in MIME format.\r
67 --------------010905080104070601060702\r
68 Content-Type: text/plain; charset=UTF-8\r
69 Content-Transfer-Encoding: quoted-printable\r
70 \r
71 hi notmuch folks--\r
72 \r
73 i've been trying to wrap my head around how to get notmuch to support\r
74 verifying cryptographically-signed mail.  i'm afraid my current\r
75 understanding of the problem space is that it is neither pretty nor\r
76 clean.  Sorry for the length of this message.\r
77 \r
78 Scope:\r
79 ------\r
80 \r
81 I'm focusing initially here only on verifying PGP/MIME cleartext\r
82 signatures.  I'm proposing to do the verification in the backend, and to\r
83 report on the validity of the signatures to the frontend through\r
84 "notmuch show --format=3Djson" (ignoring the other output formats for now=\r
85 ).\r
86 \r
87 This mail is only trying to explain how the JSON format might\r
88 communicate this information from the backend to the frontend.\r
89 (implementation will happen depending on the followup discussion, but i\r
90 don't mean for implementation questions to derail this first)\r
91 \r
92 \r
93 Proposal:\r
94 ---------\r
95 \r
96 No attempt to actually validate the signatures will be made unless the\r
97 new --verify flag is passed to "notmuch show".\r
98 \r
99 A signed MIME part will contain a new element "signedby", which is a\r
100 list of part numbers identifying signatures that cover this part.\r
101 \r
102 Signature parts (Content-Type: application/pgp-signature) will contain a\r
103 new element "signs", which points back to the list of parts this\r
104 signature covers.  It will also contain a "sigstatus" member, which is a\r
105 list of objects, each of which contain at least the following element:\r
106  * "verified" -- one of the following values:\r
107      "success" (the sig has been tested and is cryptographically valid)\r
108      "failure" (the sig has been tested and does not match)\r
109      "nokey"   (the sig could not be tested because pubkey is missing)\r
110      "error"   (testing the sig failed for some other reason)\r
111      "unknown" (testing was not tried)\r
112  If "verified" is "success" in a "sigstatus" object, then the following\r
113 fields might also be present:\r
114  * "signingkey" -- hexadecimal representation of 160-bit fingerprint of\r
115                    the signing key\r
116  * "digest" -- the hash over which the sig was made (e.g. "SHA1")\r
117  * "timestamp" -- the time the signature claims to have been made\r
118                   (let me know what format i should represent this in)\r
119  * "pubkeyalgo" -- the signing key's asymmetric algorithm (e.g. "RSA")\r
120  * "expires" -- if the signature has an expiration date, it goes here\r
121 \r
122 \r
123 Example:\r
124 --------\r
125 \r
126 currently, the "body" element of a PGP/MIME signed message looks like\r
127 this with --format=3Djson:\r
128 \r
129 ---------------------------\r
130  "body": [\r
131      {\r
132          "content": "here is a test message i signed on 2010-11-11.\n\n\r
133  --dkg\n\n",\r
134          "content-type": "text/plain",\r
135          "id": 1\r
136      },\r
137      {\r
138          "content-type": "application/pgp-signature",\r
139          "filename": "signature.asc",\r
140          "id": 2\r
141      }\r
142  ],\r
143 ---------------------------\r
144 \r
145 It would end up like this (without the --verify flag):\r
146 \r
147 ---------------------------\r
148  "body": [\r
149      {\r
150          "content": "here is a test message i signed on 2010-11-11.\n\n\r
151  --dkg\n\n",\r
152          "content-type": "text/plain",\r
153          "id": 1,\r
154          "signedby": [ 2 ]\r
155      },\r
156      {\r
157          "content-type": "application/pgp-signature",\r
158          "filename": "signature.asc",\r
159          "id": 2,\r
160          "signs": [ 1 ],\r
161          "sigstatus": [ {\r
162              "verified": "unknown"\r
163          } ]\r
164      }\r
165  ],\r
166 ---------------------------\r
167 \r
168 and here it is with the --verify flag:\r
169 \r
170 ---------------------------\r
171  "body": [\r
172      {\r
173          "content": "here is a test message i signed on 2010-11-11.\n\n\r
174  --dkg\n\n",\r
175          "content-type": "text/plain",\r
176          "id": 1,\r
177          "signedby": [ 2 ]\r
178      },\r
179      {\r
180          "content-type": "application/pgp-signature",\r
181          "filename": "signature.asc",\r
182          "id": 2,\r
183          "signs": [ 1 ],\r
184          "sigstatus": [ {\r
185              "verified": "success",\r
186              "signingkey": "0EE5BE979282D80B9F7540F1CCD2ED94D21739E9",\r
187              "digest": "SHA512",\r
188              "timestamp": "2010-11-11 22:32:45 -0400",\r
189              "pubkeyalgo": "RSA"\r
190          } ]\r
191      }\r
192  ],\r
193 ---------------------------\r
194 \r
195 \r
196 Observations:\r
197 -------------\r
198 \r
199 i'm not covering key->userid bindings in this first pass -- it's already\r
200 complicated enough to say "the following key did actually sign this\r
201 message part".  I'm still not sure whether the front-end or the backend\r
202 should be responsible for resolution of key->userid bindings, but i'm OK\r
203 punting on that question for the moment.\r
204 \r
205 Multipart messages can have some parts signed and other parts not\r
206 signed: think of mailing lists which tack on a footer to each relayed\r
207 mail; the footer isn't signed, though the rest of the message is.\r
208 \r
209 One MIME signature can cover more than one MIME part: Think of a signed\r
210 e-mail with an attachment. In this case, the signature is actually over\r
211 the aggregate, not the individual parts.  For example, a signed two-part\r
212 message that says:\r
213  [ (A) "this is the budget for 2011", and (B) an attached spreadsheet ]\r
214 is *not* the same as either (A) or (B) signed independently.\r
215 \r
216 A multipart MIME message can contain more than one distinct signature on\r
217 different parts:  Think of a digest of a mailing list discussion between\r
218 several participants who each sign their own messages.  Each signature\r
219 needs to be bound to the relevant parts (and vice versa); and some\r
220 signatures within a message can fail while others succeed.\r
221 \r
222 A single application/pgp-signature part could contain signing material\r
223 from multiple signers.  Think of a PGP/MIME-signed key transition documen=\r
224 t.\r
225 \r
226 MIME is actually a tree structure, and any subtree can be signed.  But\r
227 currently, "notmuch show" hides the tree structure and produces what\r
228 appears to be a linear set of parts.\r
229 \r
230 Even more perversely, the tree structure means that a single MIME part\r
231 could potentially be signed by multiple signatures, each of which\r
232 potentially has independent origin and independent validity.\r
233 \r
234 I've attached a moderately nasty e-mail message to this one\r
235 demonstrating a confluence of a bunch of these observations.\r
236 \r
237 The structure of the attached e-mail looks like this:\r
238 \r
239 A=E2=94=94=E2=94=AC=E2=95=B4multipart/signed 10936 bytes\r
240 B =E2=94=9C=E2=94=AC=E2=95=B4multipart/mixed 7403 bytes\r
241 C =E2=94=82=E2=94=9C=E2=95=B4text/plain 77 bytes\r
242 D =E2=94=82=E2=94=9C=E2=95=B4image/jpeg attachment [dkg.jpg] 4753 bytes\r
243 E =E2=94=82=E2=94=94=E2=94=AC=E2=95=B4message/rfc822 2072 bytes\r
244 F =E2=94=82 =E2=94=94=E2=94=AC=E2=95=B4multipart/signed 1914 bytes\r
245 G =E2=94=82  =E2=94=9C=E2=95=B4text/plain 57 bytes\r
246 H =E2=94=82  =E2=94=94=E2=95=B4application/pgp-signature attachment [sign=\r
247 ature.asc] 900 bytes\r
248 I =E2=94=94=E2=95=B4application/pgp-signature attachment [signature.asc] =\r
249 900 bytes\r
250 \r
251 "notmuch show" emits it as 5 parts (omitting A, B, E, and F):\r
252 \r
253  1: C\r
254  2: D\r
255  3: G\r
256  4: H\r
257  5: I\r
258 \r
259 Note that while C and D are both signed by I, G is actually signed by\r
260 both H and I.  yuck.  And since this example message is attached to the\r
261 e-mail i'm writing right now (which itself will be signed) it can\r
262 certainly get even yuckier.\r
263 \r
264 \r
265 \r
266 Questions:\r
267 ----------\r
268 \r
269 Am i missing any data or relationships you think we might want?\r
270 \r
271 Is anything broken, unexpected, or dangerous about the choice of JSON\r
272 modifications?\r
273 \r
274 I realize i've gone down a bit of a rabbit hole in the corner cases here\r
275 (driven mainly by my observations section).  Are there any simplifying\r
276 assumptions we can safely make about what kinds of messages are worth\r
277 verifying?  That is, are there ways to make this more intelligible that\r
278 don't throw away our ability to accurately represent the verified state\r
279 of some non-trivial subset of messages?\r
280 \r
281 If this method (or something similar to it) gets put into the notmuch\r
282 backend, is this something we can actually represent to a human with a\r
283 reasonable frontend?\r
284 \r
285 Would it make more sense to do deeper structural modifications of the\r
286 json output (e.g. return the full MIME tree instead of a list of parts)\r
287 than to go with the current proposal?\r
288 \r
289 It would be nice to also make this kind of reporting structure also work\r
290 for S/MIME and maybe other crypto-signature structures like DKIM.  Is\r
291 that doable within this framework?  are there other tweaks we might want\r
292 to consider to cover that possibility?\r
293 \r
294 \r
295 \r
296 If you actually read this far, you are a champion!  I look forward to\r
297 any feedback you have.\r
298 \r
299 OK, off to bed!\r
300 \r
301         --dkg\r
302 \r
303 --------------010905080104070601060702\r
304 Content-Type: message/rfc822;\r
305  name="Fwd: a test signature.eml"\r
306 Content-Transfer-Encoding: 7bit\r
307 Content-Disposition: attachment;\r
308  filename="Fwd: a test signature.eml"\r
309 \r
310 Return-Path: <dkg@fifthhorseman.net>\r
311 Delivered-To: thought-fifthhorseman:net-pobox00@fifthhorseman.net\r
312 X-Envelope-To: pobox00@fifthhorseman.net\r
313 Received: (qmail 80379 invoked by uid 3127); 13 Nov 2010 05:00:36 -0000\r
314 Delivered-To: thought-fifthhorseman:net-daniel_gillmor@fifthhorseman.net\r
315 Received: (qmail 80376 invoked by uid 3127); 13 Nov 2010 05:00:36 -0000\r
316 Delivered-To: thought-fifthhorseman:net-dkg@fifthhorseman.net\r
317 Received: (qmail 80373 invoked from network); 13 Nov 2010 05:00:36 -0000\r
318 Received: from mailwash19.pair.com (66.39.2.19)\r
319   by gebo.pair.com with SMTP; 13 Nov 2010 05:00:36 -0000\r
320 Received: from localhost (localhost [127.0.0.1])\r
321         by mailwash19.pair.com (Postfix) with SMTP id BEDE510E6D6\r
322         for <dkg@fifthhorseman.net>; Sat, 13 Nov 2010 00:00:36 -0500 (EST)\r
323 X-Virus-Check-By: mailwash19.pair.com\r
324 Received: from rodolpho.mayfirst.org (mail.freitas.net [209.234.253.107])\r
325         by mailwash19.pair.com (Postfix) with ESMTP id 9B9EA10E6D4\r
326         for <dkg@fifthhorseman.net>; Sat, 13 Nov 2010 00:00:36 -0500 (EST)\r
327 Received: from localhost (localhost [127.0.0.1])\r
328         by rodolpho.mayfirst.org (Postfix) with ESMTP id 828B63CD56\r
329         for <dkg@fifthhorseman.net>; Sat, 13 Nov 2010 00:00:34 -0500 (EST)\r
330 Received: from rodolpho.mayfirst.org ([127.0.0.1])\r
331         by localhost (rodolpho.mayfirst.org [127.0.0.1]) (amavisd-new, port 10024)\r
332         with ESMTP id 5tGw+mJDhlAw for <dkg@fifthhorseman.net>;\r
333         Sat, 13 Nov 2010 00:00:34 -0500 (EST)\r
334 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: smtpauth@rodolpho.mayfirst.org) with ESMTPSA id 2FA053CD51\r
335 Message-ID: <4CDE1B6D.8090208@fifthhorseman.net>\r
336 Date: Sat, 13 Nov 2010 00:00:29 -0500\r
337 From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>\r
338 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.9) Gecko/20100918 Icedove/3.1.4\r
339 MIME-Version: 1.0\r
340 To: Daniel Kahn Gillmor <dkg@fifthhorseman.net>\r
341 Subject: Fwd: a test signature\r
342 X-Enigmail-Version: 1.1.2\r
343 OpenPGP: id=D21739E9;\r
344         url=http://fifthhorseman.net/dkg.gpg\r
345 Content-Type: multipart/signed; micalg=pgp-sha512;\r
346  protocol="application/pgp-signature";\r
347  boundary="------------enig3B66DFD2DF6BC54D110D09E4"\r
348 X-Spam-Filtered: 398e33084aa1a5409cad950589a52b8e\r
349 X-Spam-Status: No, hits=-2.6 required=4.0 tests=UNPARSEABLE_RELAY,for,BAYES_00\r
350 X-Spam-Flag: NO\r
351 X-Spam-Level: \r
352 \r
353 This is an OpenPGP/MIME signed message (RFC 2440 and 3156)\r
354 --------------enig3B66DFD2DF6BC54D110D09E4\r
355 Content-Type: multipart/mixed;\r
356  boundary="------------030807050707080905030604"\r
357 \r
358 This is a multi-part message in MIME format.\r
359 --------------030807050707080905030604\r
360 Content-Type: text/plain; charset=UTF-8\r
361 Content-Transfer-Encoding: quoted-printable\r
362 \r
363 This message wraps another one.  and includes a picture of me.  woo!\r
364 \r
365         --dkg\r
366 \r
367 --------------030807050707080905030604\r
368 Content-Type: image/jpeg;\r
369  name="dkg.jpg"\r
370 Content-Transfer-Encoding: base64\r
371 Content-Disposition: attachment;\r
372  filename="dkg.jpg"\r
373 \r
374 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\r
439 sdUf/9k=\r
440 --------------030807050707080905030604\r
441 Content-Type: message/rfc822;\r
442  name="a test signature.eml"\r
443 Content-Transfer-Encoding: 7bit\r
444 Content-Disposition: attachment;\r
445  filename="a test signature.eml"\r
446 \r
447 Message-ID: <4CDCB76F.10003@fifthhorseman.net>\r
448 Date: Thu, 11 Nov 2010 22:41:35 -0500\r
449 From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>\r
450 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.9) Gecko/20100918 Icedove/3.1.4\r
451 MIME-Version: 1.0\r
452 To: Daniel Kahn Gillmor <dkg@fifthhorseman.net>\r
453 Subject: a test signature\r
454 X-Enigmail-Version: 1.1.2\r
455 OpenPGP: id=D21739E9\r
456 Content-Type: multipart/signed; micalg=pgp-sha512;\r
457  protocol="application/pgp-signature";\r
458  boundary="------------enigD059A3B3496B7DDFCDAB0CEC"\r
459 \r
460 This is an OpenPGP/MIME signed message (RFC 2440 and 3156)\r
461 --------------enigD059A3B3496B7DDFCDAB0CEC\r
462 Content-Type: text/plain; charset=UTF-8\r
463 Content-Transfer-Encoding: quoted-printable\r
464 \r
465 here is a test message i signed on 2010-11-11.\r
466 \r
467   --dkg\r
468 \r
469 \r
470 --------------enigD059A3B3496B7DDFCDAB0CEC\r
471 Content-Type: application/pgp-signature; name="signature.asc"\r
472 Content-Description: OpenPGP digital signature\r
473 Content-Disposition: attachment; filename="signature.asc"\r
474 \r
475 -----BEGIN PGP SIGNATURE-----\r
476 Version: GnuPG v1.4.10 (GNU/Linux)\r
477 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/\r
478 \r
479 iQIcBAEBCgAGBQJM3LdvAAoJEMzS7ZTSFznpD6QP/A8Xm06ptMBDykTxe9vvVNOw\r
480 R2TJQKMO0kF0Qr6IzxNllCoOd9d3CkG+isaTnoMvJj48jSNhYb6Y1GYi1TLeUEgs\r
481 U71dg+Sc3fQ5SQiqJVAYqklmlbT8DZXg87xJAOLqFzdXGkfgM4SrwLPsvfJrkpZJ\r
482 yRlUS1lNiFhoKHM7DmmkJ2KrquPmdVkTucFKgqPnyEBMrAQw5Yb1Y2D8kZtKPBZ4\r
483 eHCRwCTXbuhTxzIaZOFB7rjD3Pt+q6AUwUH/uKPcY5kY4YsOW9kS5nlAD3VLC3A/\r
484 fI6UiTQMvH3HUF8AwWyIMf+r5KzspoRe2HVrHGG01N+7u2rE16EfkkH9gItCKeWV\r
485 jgJsxUGpM0cei4TYTwPlY1hT6NeWGXifVt/CbKgs4aHPOpZG4oc+bO+STm254bJM\r
486 wR0H7ID6YaC7d+LWYsQyx1ZV2ioqcCNBvQls3q1GjyUXsIjqQ6Om9hliMUpzOsgK\r
487 idRVFFlDxHaktsz+nfOXzaz3Xoh1JVkwvQr1ySyNS8MSpoHZ7JGn1MYE02zdBptV\r
488 C15+vEqEfilgw0a0TRXPxQuz8lhqXN3fpYRabLDdiIkzNJwTi4vCdHMJ3s4EEy2t\r
489 rbJsOagXsLkLRj4gLy3HYiFnpUftnbeO3fZmEROHi4ge5Sn/wYZWG7yidbBImFGJ\r
490 XLiRv0Qocsw5ZM8hvLqu\r
491 =1/7r\r
492 -----END PGP SIGNATURE-----\r
493 \r
494 --------------enigD059A3B3496B7DDFCDAB0CEC--\r
495 \r
496 --------------030807050707080905030604--\r
497 \r
498 --------------enig3B66DFD2DF6BC54D110D09E4\r
499 Content-Type: application/pgp-signature; name="signature.asc"\r
500 Content-Description: OpenPGP digital signature\r
501 Content-Disposition: attachment; filename="signature.asc"\r
502 \r
503 -----BEGIN PGP SIGNATURE-----\r
504 Version: GnuPG v1.4.10 (GNU/Linux)\r
505 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/\r
506 \r
507 iQIcBAEBCgAGBQJM3httAAoJEMzS7ZTSFznpsUUP/jkEvEneGx6YHcaBv579H7jX\r
508 0tmbwAegHOAuIKXaqmEGa1lhb5JgcHyixz+sUtlBN1cq1VcvmNpiI3bitFq6cTJt\r
509 1XCXMJ6z+YzQQESt+91T6pcNrZ1Qi/jHWdw3VmlMXB0dpxrkoylmDhhO/d3jiVBe\r
510 U32wTmWVoN6QLSGzUnHmcUXjqSqImdBwEUYq/QBER4Down5OyvHE05ORbozWpf4O\r
511 6EcmeVdMPMFfCxj+8opW1MHy0V+gNGFxCrnRV7UUiAteMmvSAjqCytrbwoHQEp1P\r
512 v2eVXPWrOaSph1qvAfjWesTydqTLJUZ5IjwcCof46nZFvAoqVA2EF2y3GPDbb7ei\r
513 ulp/EOVy2yOUHb3tbXwXAFExJRAKkuOh5CC7CNfqtB/q/MenyWPJiPODQBmucFT1\r
514 i3ZODFbva2XvMiyJGTocyU/xXRZbo/jurPmSRsTVHzabtfGYeQ2lX4fa1spOgzAu\r
515 m2TmY0h72KPFmfYfkZZELF1eD1zoYGw+aRbJ0hg9NA9JrD+mXF4Mhpc8N1axPjjh\r
516 vPFcDBEFvRj6OGXA47TRnezQv5ROsq78+Y/90nKb4KJJFFxIP7NOMhZSq/n1xw7o\r
517 nptBM/EinYQAB9Mfgi76hdwmOfEYwH9Va0v6/ptjuqN/PGju3CYD5yRLodGIheRQ\r
518 DK+JacTvfmQkVcXj+Y+Q\r
519 =RQgW\r
520 -----END PGP SIGNATURE-----\r
521 \r
522 --------------enig3B66DFD2DF6BC54D110D09E4--\r
523 \r
524 \r
525 --------------010905080104070601060702--\r
526 \r
527 --------------enig76D4CD9CFE607DF25F2033C6\r
528 Content-Type: application/pgp-signature; name="signature.asc"\r
529 Content-Description: OpenPGP digital signature\r
530 Content-Disposition: attachment; filename="signature.asc"\r
531 \r
532 -----BEGIN PGP SIGNATURE-----\r
533 Version: GnuPG v1.4.10 (GNU/Linux)\r
534 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/\r
535 \r
536 iQIcBAEBCgAGBQJM3kSGAAoJEMzS7ZTSFznpeW4P/1ULLKBCgPtqeN9EXCudJyNV\r
537 ENslifdl1mwmWFHbGA7of/EJ4LX6zZoFZ1ba1TpJ4TbXAj1woMcNMRKHRgFPj1Ff\r
538 Upz4Iarp2A4OjLRVdQ8o5fuCL+ONfhy6Vobgu6IpdfAmlRSslpXr2+vLFAD9ib0y\r
539 SVWYOwwAyYheX8b4CWhbVCE67XWpOvt+Onji68/NerWjywqK/1cc5WfVrvFLtaMS\r
540 d96GhEA5iVNnJlNJUsw+5C7qAT2Ca4bL4ShsZ7Ptuco0+CnQB1e1U2rN/EiZqs04\r
541 zhEylVhSChjUJ7CMf3W4Z42u6+fQlFrMUcjWe8i0z895A7GMKZiBaYUeo+32BKwp\r
542 bT/4idJnWhf1fkYu2/42EDv6O1i4IyymzCgqkrk1JB9+J8Gl0dDOc2puH1k+1V6Z\r
543 3Xj3n7suPd8yXjsjwlAOgdJcL+WmXQOcg+iQ9JRGu3+P3UGNvaZDmKzc5AupdBih\r
544 qVXSRb5HmnZMqSglzwb4xw3rjVpMmY8o2rIB++3q790NviJuN9zmq+/XeAP07xkI\r
545 Yfk+37ecjVdSAfmMzm2ESKBidM7V1ruifa+V18IXrTrxeA1gQJsexun93BnHglfK\r
546 1JbrM32YeLm7UxG/VNpUbWoSp63Sq22Wslhs1gtqpe7YM2ucO8LqSDvIvKMpH0bD\r
547 1DyaNp3n9cad0fgwbDRm\r
548 =6/ba\r
549 -----END PGP SIGNATURE-----\r
550 \r
551 --------------enig76D4CD9CFE607DF25F2033C6--\r