Revisions 1.76: Can automatically fetch unknown keys when checking signatures. Fixed bug that cached cleartext even when not wanted. Fixed bug that did not recognize expired gnupg keys. Now signs when having no recipients (enables sending to newsgroups) 1.75: snprintf() should work now. Compiles (hopefully) on non-gcc and non-gnumake. Better caching. Caching of keyrings. PGP 6.5.2 support (former 'PGP 6' was only 6.5.1 which is different) Finally made a detection of failed clearsign (see FAQ question 4). 1.74: Added snprintf() for installations that lack this function. Possibility to cache decoded messages to speed up multiple calls. 1.73: Support for PGP 6.5. Display-bugfix concerning Pine4/GPG. 1.72: GPG bug fixes. Changed my mail address because my current one will be renamed in the near future. 1.71a,b,c: Bug fixes 1.71: Selection of own ID via rc. Automatic recognition of incoming signed messages. 1.7: Number of bugfixes, big rework to check keys before presenting choices; added "ask keyserver" functionality 1.63: Added code to allow disabling the Comment: Made with pgp4pine line. Also removed auto-adding keys in emails (only worked with PGP 5 and still didn't work reliably.) 1.62: Added code to automagically create tmpfile, so it's no longer needed in config file. This will fix 95% of the bug reports.. 1.61: Switched to using KDevelop, so now it's automaked for me. 1.60: Fixed gpg outfile spec. Added extra_enter_at_end option. 1.59: Fixed outfile not specified causing pgp4pine to crash. 1.58: Added patch from Steffen Sledz to fix display names like "" with no real display name. Also fixed GnuPG bug with --clearsign and -e together : gpg didn't like this. 1.57: More GnuPG and PGP 2 fixes. 1.56: Some GnuPG keyring fixes (although duplicates may be loaded). RPM fixes. 1.55: Overhaul of keyring code, I re-imported the Geheimnis code (which itself sprung a few months ago from pgp4pine's code), and grafted it back in. GnuPG and PGP 2 seem to work fine. 1.54: Fixed some keyring bugs, I think. 1.53: Fixed a nasty recipient-checking routine bug, would loop forever. Also fixed Yet Another Bug with respect to GPG keyring loading. 1.48: Since 1.44 I've basically fixed bugs, although I've added default profile support, and new in 1.48, it will actually start a new ~/.pgp4pinerc file for you if you don't have one. 1.44: Updated documentation to say gpg 0.9 instead of gpg 0.4, added gpg's comment option (says "Comment: Made with PGP4Pine" cool, eh?). 1.43: Merged in a fix for gpg 0.4.4 pubrings/secrings. 1.42: Major Bug Fix: when sending in GPG, I (still) notice that it doesn't load the entire public keyring, I dunno why, I have to look in Werner's code. Nonetheless, I had public keyring problems when I choose a SECRET key, it would clobber allover the public keyring, that's because someone wanted to use display names instead of keyIDs () so I put in an #ifdef, and forgot to match it in the code, it was using by default a smaller field than was put into it, and overflow right into the pointer for the public keyring... 1.41: Fixed problem in ./configure for older versions of bash. Also, fixed it so that it checks all recipients, not just the first one. Fixed a bug in main.c where mainTmpFile wasn't always empty... Micheal Fleming also sent in some patches, for a) my bad math in pki.c (with askAlphaRange, math never was my high point...), and b) fixing a NULL pointer issue (pesky pointers!). 1.4: Added recipient checking support, beefed up gpg support (now that I can compile it with egcc, at least...). If a recipient doesn't appear, you can a) shell out, b) remove them *from sending it to PGP*, or c) ignore them. Soon, I'm going to add (for PGP5 only) adding from a hkp server or fingering them. Also added askAlphaRange so now if I ask a multiple choice question, it's a-z (instead of just 1-9). Added in some patches from Leon Kukovec. 1.33: Added support for commandline override of many prefs, like signing file, encrypting file, etc, so this program is more of a general GPG/PGP wrapper.... Make sure you read doc/pgp4pinerc for cool options like detached signatures, profiles, etc... I'm currently compiling a FAQ, please send me your questions. 1.32: Merged in Sean Farley's patch to change scanf()s to fgets()s (safer), and fix askInteger's defaults. (defaults work now!) Also fixed recipients bug. (should be a permanent fix for all recipients bugs...in-laws excluded. :) 1.3: Added profile support, re-did main(), removed many global variables. Removed PGP/MIME "support" since it didn't really work... 1.27: Removed trimFirstChar(), was unnecessary and caused complaints on egcs systems. Also merged in duffy patch (Thanks!). Re-added GPG 0.41 key type (ElGamal, etc...) stuff. 1.25-1.26: Minor fixed which really didn't do anything so they kinda got trashed... 1.24_duffy: Updated Makefiles, made GPG 0.41 compliant. 1.24: Added more debugging code. 1.23: Fixed secret ring code. 1.22: Broke secret ring code...fixed minor bugs for gpg... 1.21: Cleaned up code, Makefile, and cleared out unused variables... 1.2: Added some malloc()/free() junk so that I can dynamically load the secret key. This is 1.2 because if this code is stable, then reading the public key is a small step away, and I want to be able to check recipients, which is what 1.3 will be... 1.13: Changed all pointers to either a) "safe" pointers that are only called with a variable that already exists/is malloced, or b) compiled string arrays. Removed complaint about no my_address in .rc file, since if it isn't there, we draw it from the secret key, or, if there's no secret key, and no my_address in the .rc file, we turn off encrypt_to_self... 1.12: Split the source (almost 1000 lines..) into several smaller files, for my sanity. BTW, I now learned about the extern keyword. I've been wanting to do this for awhile! 1.11: Fixed another GPG bug, GPG works on my system now (0.4), so I can test it correctly instead of using man pages... :) Also, added PGP/MIME support for sending using the older (Mutt) Application/PGP-* standard. Can receive newer PGP/MIME standard as well as Application/PGP-* standard as well. 1.1: Added support to use clear instead of typing 60 empty lines... Added consts so that the compiler is happier, and added piping support. 1.07: Fixed GPG encrypting bug. 1.05: Fixed error with multiple secret keys, didn't do bounds checking (non-fatal, unless you entered a negative number!) 1.02: Changed commenting, I forget if it's C++ or C now...Added support for multiple non-hard-coded versions of PGP... 1.01: Supports selective senders. That means, if you have two secret keys (say one RSA and one DH/DSS), then you can select which one. If you have none, it alerts you, but tries anyways. If you have only one, it goes ahead and uses it. 0.97: Moved to sprintf() to clean up code, big time! Took out pgpBinary(), 'cause it wasn't all that useful... Also added --encrypt and --decrypt. Also found big bug in prefs*() where if you read a prefs twice in the same session it gave junk from the rc file, so now I'm using global variables, and I read them at startup. 0.96: Fixed bug in readPrefs() if you used spaces in the lines, and had comments in there. It now ignores lines beginning with // or # and allows spaces to exist. 0.95: Okay, I now read the .pgp4pinerc file that the OTHER pgp4pine (also known as one of the PAPPs) uses. Took me 3 hours to make the file parser work! What fun! :) 0.9: Removed ncurses support. Oy. Okay, the command line is ALOT more flexible. Using new sending filters, it autogets the recipients from Pine. (*I*'ve wanted this for awhile..) 0.8: Tried re-merging the code between pgp4pine and pgpmenu, failed miserably. This code has little in common, because I didn't keep an archive of the old one, and needed email quick. It uses ncurses now, I'm going to make it look more like Pine 3.96 or 4.00 now... 0.7: Am now using proper #defines and other stuff. Added config.h. Hope to add a ./configure script to auto-detect PGP someday... Minor changes (really!) for code cleanup... I have pipe-dreams now of using pipes (variable passing?) to PGP5, since it supports that (from the command line, this is something like "cat encrypted.msg | pgpv > decrypted.msg", except all in memory, so unless it's swapped, it's more secure, esp. if you're not root... However, this isn't implemented YET.) 0.67: Removed all scripts, it's now all internal. Confirmed PGP2 now works. 0.6: Okay, I'm still working on it... I'm going to (in the near future) rename this pgp4mail, since it should work with any console-based MUA. I also have pipe-dreams of someone sending me a helloworld.c for X or even KDE... that should text boxes, buttons, and windows...perhaps pixmaps? 0.5: "final" release (hah!). Program has spawned cousin, pgpmenu (ed: dead). Remove pgp4pineEditor script, now in main(). 0.4: Added pgp2x stuff, I think... 0.3: Don't know. 0.21: Fixed problem where choosing not to sign crashed program. Also, if you enter no recipients, it cancels encryption now. 0.2: Use shell("/bin/sh","sh","-c",pgpAppString,NULL) to run pgp indirectly as per man pgp-integration suggestion, still have to use pgp4pineEditor script to run joe (or vi, pico, etc...). Put program officially under GNU License (even though it was before, I forgot to send the license along with it.) 0.1: Program compiles on gcc 2.7.2 fine. Works with pine. Uses multiple external scripts to run pgp indirectly.