]>
Commit | Line | Data |
---|---|---|
7e5fb030 | 1 | --- mutt-1.1.11.orig/init.h Sun Apr 2 23:40:02 2000 |
2 | +++ mutt-1.1.11/init.h Sun Apr 2 23:41:08 2000 | |
3 | @@ -1169,6 +1169,7 @@ | |
4 | ** lead to problems with non-verifyable PGP signatures, so only change | |
5 | ** this if you know what you are doing. | |
6 | */ | |
7 | + { "pgp_paranoid", DT_BOOL, R_NONE, OPTPGPPARANOID, 0 }, | |
8 | { "pgp_timeout", DT_NUM, R_NONE, UL &PgpTimeout, 300 }, | |
9 | /* | |
10 | ** .pp | |
11 | --- mutt-0.95/mutt.h.orig Sat Dec 12 09:06:47 1998 | |
12 | +++ mutt-0.95/mutt.h Sun Jan 3 03:39:19 1999 | |
13 | @@ -309,6 +309,7 @@ | |
14 | OPTMHPURGE, | |
15 | OPTMIMEFORWDECODE, | |
16 | OPTPAGERSTOP, | |
17 | + OPTPGPPARANOID, | |
18 | OPTPIPEDECODE, | |
19 | OPTPIPESPLIT, | |
20 | OPTPOPDELETE, | |
21 | --- mutt-0.95/patchlist.c.orig Sun Jan 3 03:11:41 1999 | |
22 | +++ mutt-0.95/patchlist.c Sun Jan 3 03:39:19 1999 | |
23 | @@ -16,6 +16,8 @@ | |
24 | ||
25 | ||
26 | ||
27 | + printf("Feature patch: condense_pgp 0.95 by Stefan `Sec` Zehl\n"); | |
28 | + | |
29 | ||
30 | ||
31 | /* DO NOT MODIFY AFTER THIS LINE */ | |
32 | --- mutt-0.95/pgp.c.orig Sat Dec 12 09:07:00 1998 | |
33 | +++ mutt-0.95/pgp.c Sun Jan 3 03:41:29 1999 | |
34 | @@ -216,6 +216,102 @@ | |
35 | } | |
36 | ||
37 | ||
38 | +/* | |
39 | + * Scan PGP output; return information about state of signature. | |
40 | + * Flush the message (on stdout). | |
41 | + * | |
42 | + * If strat==0, the message is piped to PGP on stdin, the verified | |
43 | + * message is output on stdout, and runtime messages are on stderr. | |
44 | + * If strat==1, the message comes from a file, and the runtime | |
45 | + * messages are on stdout. | |
46 | + */ | |
47 | + | |
48 | +int | |
49 | +mutt_scan_pgp_output (FILE *infile, FILE *outfile, STATE *outstate) | |
50 | +{ | |
51 | + int sigstate=0, pgpwarning=0; | |
52 | + int nl=0; | |
53 | + char buffer[LONG_STRING]; | |
54 | + | |
55 | + while (fgets (buffer, sizeof(buffer), infile) != NULL) { | |
56 | + if (strncmp (buffer, "Good signature", 14) == 0) | |
57 | + if (sigstate!=3) | |
58 | + sigstate=1; | |
59 | + if (strncmp (buffer, "WARNING", 7) == 0 && | |
60 | + strstr (buffer, "not certified") != NULL) | |
61 | + if (sigstate!=3) | |
62 | + sigstate=2; | |
63 | + if (strncmp (buffer, "Bad signature", 13) == 0) | |
64 | + sigstate=3; | |
65 | + if (strncmp (buffer, "\007Key matching", 13) == 0 && | |
66 | + strstr (buffer, "not found") != NULL) | |
67 | + if (sigstate!=3) | |
68 | + sigstate=4; | |
69 | + if (strncmp (buffer, "WARNING", 7) == 0) | |
70 | + pgpwarning|=1; | |
71 | + if (strncmp (buffer, "\007WARNING", 7) == 0) | |
72 | + pgpwarning|=1; | |
73 | + if (strncmp (buffer, "Error", 5) == 0) | |
74 | + pgpwarning|=2; | |
75 | + if (strncmp (buffer, "\007Error", 5) == 0) | |
76 | + pgpwarning|=2; | |
77 | + | |
78 | + /* pgp2 */ | |
79 | + if (strncmp(buffer, "\007Key matching", 13) == 0 && | |
80 | + strstr (buffer, "not found") != NULL) | |
81 | + continue; | |
82 | + if (strncmp(buffer, "File '", 6) == 0 && | |
83 | + strstr (buffer, "has signature, but with no text") != NULL) | |
84 | + continue; | |
85 | + if (strncmp(buffer, "Text is assumed to be in file '", 31) == 0) | |
86 | + continue; | |
87 | + /* pgp5 */ | |
88 | + if (strncmp(buffer, "No files specified. Using stdin.", 33) == 0) | |
89 | + continue; | |
90 | + if (strncmp(buffer, "Opening file \"stdout\" type text.", 32) == 0) | |
91 | + continue; | |
92 | + if (strncmp(buffer, "Message is encrypted.", 21) == 0) | |
93 | + continue; | |
94 | + /* pgp5 bogon makes pgp2 warn */ | |
95 | + if (strncmp(buffer, "Warning",7) == 0 && | |
96 | + strstr (buffer, "header label \"MessageID:\" ignored") != NULL) | |
97 | + continue; | |
98 | + | |
99 | + if(buffer[0]=='\n'){ | |
100 | + if(nl)continue; | |
101 | + nl=1; | |
102 | + }else{ | |
103 | + nl=0; | |
104 | + } | |
105 | + if (outstate) { | |
106 | + if (strlen(buffer)>2 && buffer[strlen(buffer)-2]=='\007') | |
107 | + buffer[strlen(buffer)-2]=' '; | |
108 | + else if (strlen(buffer)>3 && buffer[strlen(buffer)-3]=='\007') | |
109 | + buffer[strlen(buffer)-3]=' '; | |
110 | + | |
111 | + if (buffer[0] == '\007') { | |
112 | + state_puts(buffer+1, outstate); | |
113 | + } | |
114 | + else { | |
115 | + state_puts(buffer, outstate); | |
116 | + } | |
117 | + } | |
118 | + if (outfile) { | |
119 | + if (buffer[0] == '\007') { | |
120 | + fputs(buffer+1, outfile); | |
121 | + } | |
122 | + else { | |
123 | + fputs(buffer, outfile); | |
124 | + } | |
125 | + } | |
126 | + } | |
127 | + | |
128 | + sigstate |= (pgpwarning<<4); | |
129 | + | |
130 | + return sigstate; | |
131 | +} | |
132 | + | |
133 | + | |
134 | /* Support for the Application/PGP Content Type. */ | |
135 | ||
136 | void application_pgp_handler (BODY *m, STATE *s) | |
137 | @@ -334,7 +430,10 @@ | |
138 | fclose (pgpin); | |
139 | ||
140 | if (s->flags & M_DISPLAY) | |
141 | + if(option(OPTPGPPARANOID)) | |
142 | pgp_current_time (s); | |
143 | + else | |
144 | + mutt_scan_pgp_output(pgperr,NULL,s); | |
145 | ||
146 | mutt_wait_filter (thepid); | |
147 | ||
148 | @@ -345,17 +444,17 @@ | |
149 | fclose (pgperr); | |
150 | ||
151 | if (s->flags & M_DISPLAY) | |
152 | - state_puts (_("\n[-- End of PGP output --]\n\n"), s); | |
153 | + state_puts (_("\n[-- End of PGP output --"), s); | |
154 | } | |
155 | ||
156 | if(s->flags & M_DISPLAY) | |
157 | { | |
158 | if (needpass) | |
159 | - state_puts (_("[-- BEGIN PGP MESSAGE --]\n\n"), s); | |
160 | + state_puts ("BEGIN PGP MESSAGE --]\n\n", s); | |
161 | else if (pgp_keyblock) | |
162 | - state_puts (_("[-- BEGIN PGP PUBLIC KEY BLOCK --]\n"), s); | |
163 | + state_puts ("BEGIN PGP PUBLIC KEY BLOCK --]\n", s); | |
164 | else | |
165 | - state_puts (_("[-- BEGIN PGP SIGNED MESSAGE --]\n\n"), s); | |
166 | + state_puts ("BEGIN PGP SIGNED MESSAGE --]\n\n", s); | |
167 | } | |
168 | ||
169 | /* Use PGP's output if there was no clearsig signature. */ | |
170 | diff -Nru mutt-1.1.11.orig/pgp.c mutt-1.1.11/pgp.c | |
171 | --- mutt-1.1.11.orig/pgp.c Sun Apr 2 23:49:51 2000 | |
172 | +++ mutt-1.1.11/pgp.c Sun Apr 2 23:51:58 2000 | |
173 | @@ -678,7 +678,10 @@ | |
174 | -1, -1, fileno(pgperr), | |
175 | tempfile, sigfile)) != -1) | |
176 | { | |
177 | + if(option(OPTPGPPARANOID)) | |
178 | mutt_copy_stream(pgpout, s->fpout); | |
179 | + else | |
180 | + mutt_scan_pgp_output(pgpout,NULL,s); | |
181 | fclose (pgpout); | |
182 | fflush(pgperr); | |
183 | rewind(pgperr); |