home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1998 February / PCOnline_02_1998.iso / filesbbs / os2 / pgprex12.arj / PGPREXX.ZIP / PGPrexx.doc < prev    next >
Encoding:
Text File  |  1996-08-08  |  22.0 KB  |  521 lines

  1. PGPREXX 1.2                                           Aug 7, 1996
  2. --------------------------------------------------------------------
  3.    This is release 1.2 of PGPREXX, a package of seven REXX scripts to
  4. give PGP functionality to any OS/2 mail program. It has been written by
  5. Lüko Willms in Frankfurt/Main, Germany <Lueko.Willms@T-Online.de>. For 
  6. changes in version 1.2, see section 2.1 further below.
  7.    
  8.     Please send any comments to me via e-mail, snail mail, or fax. If
  9. you want to register (no charges), send me a postcard with some nice views
  10. of your city. Please find my full address at the end of this text.
  11.  
  12.     There are seven REXX scripts in this package:
  13.  PGPenCod.CMD   - signs and encodes any outgoing message
  14.  PGPdeCod.CMD   - decodes incoming PGP signed messages
  15.  PGPckSig.CMD   - checks PGP signatures in incoming messages
  16.  PGPadKey.CMD   - adds a PGP public key block from a message
  17.  SPLTMAIL.CMD   - auxiliary program to PGPenCod.CMD
  18.  JOINMAIL.CMD   - auxiliary program to PGPenCod.CMD
  19.  PGPEXEC.CMD    - auxiliary program to PGPenCod.CMD
  20.  
  21.     An eighth script is included to help overcome a temporary problem
  22. with the Post Road Mailer:
  23.  NUL2SPAC.CMD   - see section 6
  24.  
  25. Table of Contents
  26. =================
  27. 1. Legal Stuff
  28. 2. Description
  29. 2.1 Format of Logfile
  30. 2.2 Changes in Version 1.2
  31. 2.3 Changes in version 1.1
  32. 3. Installation requirements
  33. 4. Installation
  34. 4.1 Post Road Mailer
  35. 4.2 PMMail
  36. 4.3 MR/2 ICE
  37. 5. Technicalities
  38. 6. Restrictions and known problems
  39. 6.1 MIME
  40. 7. Where to get PGP
  41. 8. Getting PGP 2.6.3i by FTP
  42. 8.1 Norway
  43. 8.2 Europe 
  44. 9. PGP Return Codes
  45. 10. Where to get this software
  46. 11. How to contact the author
  47.  
  48.   
  49. 1. Legal Stuff
  50. --------------
  51.   PGPREXX is provided "as-is" without any warranties (or
  52. conditions), expressed or implied with respect to the 
  53. software, including the implied warranties (or 
  54. conditions) of merchantability and fitness for a 
  55. particular purpose.  The entire risk arising out of use 
  56. or performance of the program remains with you. In 
  57. no event, will the copyright holder be liable for any 
  58. lost profits, lost savings, incidental or indirect 
  59. damages or other economic consequential damages, 
  60. even if I have been advised of the possibility of such 
  61. damages. In addition, I will not be liable for any 
  62. damages claimed on you based on any third party 
  63. claim. 
  64.  
  65. Copyright 1996 Lüko Willms
  66.  
  67.    PGPREXX can be freely copied provided the packaging with the PGP signed
  68. inner ZIP archive remains intact.
  69.  
  70.  
  71. 2. Description
  72. --------------
  73.    These scripts have been tested sucessfully with Post Road Mailer 
  74. (PRM) version 1.05, 1.99, and 2.0, PMMail 1.51 and 1.52 and MR/2 ICE
  75. versions from 1.05 upwards.
  76.  
  77.     PGP REXX might also work with other mailers like IBM's Ultimail or
  78. others which allow for User Exits or REXX scripts to be run from 
  79. filters. Even more easy when the mailer uses SENDMAIL, since this is a
  80. separate program and process, and the PGP encoding can easily occur
  81. between queueing the message for sending and the actual sending.
  82.  
  83.    You use PGPdeCod.CMD to automatically decode any incoming message
  84. which has been encoded by PGP. The script will append the decoded
  85. message to the original message. Let me know if you think that
  86. this is a security risk.  
  87.  
  88.    You use PGPckSig.CMD to check the PGP signature of a plaintext 
  89. message. PGP's diagnosis is appended to the message file so that you can 
  90. view it together with the message itself.
  91.  
  92.    PGPdeCode and PGPckSig have to be configured as a filter for incoming
  93. mail, triggered by searching for '-----BEGIN PGP MESSAGE-----' or
  94. '-----BEGIN PGP SIGNED MESSAGE-----' in the body of the message. To 
  95. trigger PGPadKey.CMD, you have to configure the string '-----BEGIN PGP
  96. PUBLIC KEY BLOCK-----' as the string to seach for.
  97.  
  98.    You use PGPenCode.CMD to sign and encode outgoing messages. It will 
  99. automatically sign all messages with the secret key of the sender. This 
  100. is either the last entry of the "FROM:" header lines, or the last entry 
  101. of the "SENDER:" header lines, when SENDER: is encountered.
  102.  
  103.    If all addresses in "TO:", "CC:" and "BCC:" header lines are found in
  104. your public key ring, then the message will be encrypted with the keys 
  105. of those recipients. When one recipient is not found in the key ring, 
  106. then the message is not encrypted at all. This is a potential security 
  107. risk since a message you wanted to be encrypted is sent out in the net 
  108. because you might have entered a recipient's address with a typing 
  109. error; please let me know what you think about it or even suggest other
  110. solutions.
  111.  
  112.    If there was an error in PGP processing, PGPREXX will blank out the text.
  113.  
  114.    PGPenCode runs in a OS/2 window. PGP will prompt you for your PGP 
  115. pass phrase to access your private key for signing the message. With 
  116. PRM, you can configure PGPenCode to run in the foreground, with PMMAIL 
  117. (up to 1.52) and MR/2 ICE (up to 1.03), you will have to bring its window
  118. to the foreground yourself: hit CTRL-ESC to open the window list and 
  119. select the last entry.
  120.  
  121.    You will note that OS/2 is a real multi-tasking operating system: the
  122. three programs in the pipe are started simultaneously.
  123.  
  124.  
  125. 2.1 Format of Logfile
  126. ---------------------
  127.    The logfile is written as text file PGPREXX.LOG to the same directory
  128. where the programs are loaded from.
  129.  
  130.    There is one line per message being processed with several fields 
  131. separated by tabulator characters ('09'x). The order of the fields is as 
  132. follows:
  133.     Timestamp
  134.     Indicator for action 
  135.                     >>> = outgoing message (PGPenCod)
  136.                     deCod = Message was processed by PGPdeCod
  137.                     ckSig = Message was processed by PGPckSig
  138.     Message-Id      (when known)
  139.     Result-Code     0 = success, everything else meaning an error 
  140.                     detailed error list in section 9 of this text
  141.     PGP UserIds     userids for which has been enrypted and/or signed
  142.  
  143.  
  144. 2.2 Changes in Version 1.2
  145. --------------------------
  146.     It is no longer necessary to put all scripts into a directory on the
  147. PATH; PGPenCode.CMD now calls the secondary scripts SPLTMAIL.CMD,
  148. JOINMIL.CMD and PGPEXEX.CMD from the directory itself is loaded from. All
  149. other scripts are named with full path name in the respective mailer
  150. configuration.
  151.  
  152.     In 1.1 I introduced an embarassing error, just by a last minute 
  153. cosmetic change in routine JOINMAIL.CMD. This is fixed. Before uploading 
  154. this version, I used the scripts myself for a longer period of time.
  155.  
  156.     SPLITMAIL.CMD has been renamed to SPLTMAIL.CMD to fit into 8.3 file name
  157. schemes on FAT drives.
  158.  
  159.     I implemented some basic logging, You will see which outgoing messages
  160. are only signed and which ones are encrypted and for whom, and which
  161. messages have been decoded and checked for signature. You also find the 
  162. PGP result code, although is not always very useful. A list of the result
  163. codes and their meaning is in section 9 of this text. The logfile is
  164. written as file PGPREXX.LOG to the same directory that the programs are
  165. executed from.
  166.  
  167.    PGPdeSig.CMD is no longer supported. PGPckSig.CMD does it all and 
  168. better.
  169.  
  170.  
  171. 2.3 Changes in version 1.1
  172. --------------------------
  173.     PGPadKey.CMD was added for adding a PGP public key to your key ring.
  174. Documentation was updated, especially in respect to MR/2 ICE 1.04.
  175.  
  176.     Changes were made to procedure JOINMAIL.CMD and PGPenCod.CMD. 
  177.     
  178.     JOINMAIL now waits indefinitely for exclusive WRITE access to the
  179. message file; in version 1.0 the procedure would give up waiting after
  180. trying 200 times what could result in appending the encrypted message to
  181. the plaintext message instead of replacing it.
  182.  
  183.     In PGPenCod.CMD, the comparison for a mailbox address from the 
  184. message with a PGP key user-id was case sensitive 1.0; it is no longer
  185. case sensitive now, the same way that PGP itself does operate. Also, 
  186. provisions were made to remove a trailing comment from a mailbox 
  187. address.
  188.  
  189.  
  190. 3. Installation requirements
  191. ----------------------------
  192.    In order to run the scripts, you need to have PGP.EXE installed on 
  193. the PATH. Check the end of this text on hints for getting PGP. You must
  194. have an environment variable named PGPPATH pointing to the directory
  195. where your PGP.EXE is found (e.g. in CONFIG.SYS: SET PGPPATH=C:\PGP).
  196.  
  197.    The keys in your public key ring need to have the e-mail
  198. address in their user-id (i.e. for me I need to have 
  199. Lueko.Willms@T-Online.de and not just "Luko Willms" in the PGP key
  200. userid), otherwise the script won't be able to find the recipient and 
  201. originator addresses in the key ring.
  202.  
  203.  
  204. 4. Installation
  205. ---------------
  206.    Copy all seven scripts in a directory of your choice and configure
  207. your mailer to use the scripts. JOINMAIL, SPLTMAIL and PGPEXEC are only 
  208. called internally, and don't need to be configured.
  209.  
  210.    Please note that the file name is PGPenCOD.CMD resp. PGPdeCOD.CMD, 
  211. i.e. just COD and not CODE. This abbreviation is done to fit the file 
  212. name in 8 characters.
  213.  
  214.  
  215.  
  216. 4.1 Post Road Mailer
  217. ....................
  218.     Open the SETTINGS menu and select the USER EXIT submenu. Go to
  219. SEND MESSAGE EXIT and enter the path and file name for PGPenCod.CMD. 
  220. Mark EXIT IS ACTIVE and select the FOREGROUND radio button.
  221.    Deactivate PRM's built in PGP support (which doesn't work properly, or 
  222. at least until some point in the 1.99 beta series).
  223.  
  224.    Open the FEATURES drop down menu and select FEATURES. Select to ADD A
  225. NEW FILTER. Enter an appropriate DESCRIPTION (e.g. PGP Decode), ender 
  226. '-----BEGIN PGP MESSAGE-----' as the SEARCH STRING (without quotes), 
  227. enter the path and file name of PGPdeCod.CMD in the USER EXIT field. 
  228. Hit the FOREGROUND radio button in the USER EXIT box. In OPTIONS, 
  229. activate FILTER IS ACTIVE and CASE SENSITIVE; in SEARCH select MESSAGE 
  230. BODY, in REACTION select NO REACTION.
  231.  
  232.    See section 6 for a problem with release 2.00 or 1.99 or PRM.
  233.  
  234. 4.2 PMMail
  235. ..........
  236.     This refers to version 1.51 and 1.52 of this mailer.
  237.  
  238.     Select ACCOUNT\UTILITY SETTINGS\FILTERS. Give an appropriate 
  239. description, like "PGP decode", make TYPE = Incoming, in SEARCH select
  240. <BODY>, in FOR THE FOLLOWING TEXT enter '-----BEGIN PGP MESSAGE-----', 
  241. in AND TAKE THE FOLLOWING ACTIONS activate EXECUTE REXX SCRIPT and enter
  242. the full path and file name for PGPdeCOD.CMD.
  243.     Do the same for '-----BEGIN PGP SIGNED MESSAGE-----' and PGPckSig.CMD,
  244. and '-----BEGIN PGP PUBLIC KEY BLOCK-----' and PGPadKey.CMD.
  245.  
  246.     Select ACCOUNT\UTILITY SETTINGS\REXX Exits. Activate MESSAGE SEND
  247. EXIT and enter the full path and file name for PGPenCOD.CMD as the
  248. script to run. Alternatively you can configure PGPenCOD.CMD as a filter 
  249. for outgoing messages and let it sign and enrypt only when a certain 
  250. string is found in the outgoing message.
  251.  
  252.     Starting with PMMAIL 1.53, you can specify that the scripts run in the
  253. foreground.
  254.  
  255.  
  256. 4.3 MR/2 ICE
  257. ............
  258.     Select UTILITIES\FILTER MAINTENANCE, make a NEW filter. Give it an 
  259. appropriate name, like PGP encrypt. For PGPenCod, select "On Event:
  260. PreSend" for FILTER TYPE, select ALWAYS for PROCESS WHEN MESSAGE, select
  261. LINK TO REXX as the DESIRED ACTIONS and enter the path and file name for
  262. PGPENCOD.CMD,with a leading asterisk to force foreground processing.
  263. Activate ENABLED. In version 1.07, there is a new filter type "To Outbox"
  264. which would be the best way, but it is not yet fully functional in this
  265. version.
  266.  
  267.   Make a NEW filter for incoming messages, select BODY among the
  268. SEARCH AREAS FOR and enter '-----BEGIN PGP MESSAGE-----' as the string 
  269. to search for. Make the FILTER TYPE to INBOUND, select MATCHES in 
  270. PROCESS WHEN MESSAGE, activate in DESIRED ACTIONS the LINK TO REXX and 
  271. enter full path and file name for PGPdeCOD.CMD. 
  272.     Make other filters for incoming or stored messages for checking the 
  273. PGP signature of a message or adding the PGP Public Key block from a 
  274. message. Don't forget to put the leading asterisk before the path and 
  275. file name of the REXX script to force foreground operation, where 
  276. appropriate. 
  277.     MR/2 ICE offers an advantage here over the other mailers in so far 
  278. as you can call filters to be processed on any message stored in your 
  279. folders at any time, not only at reception or sending time. So you might
  280. be more at leasure to do the incoming processing at a time when you 
  281. want, without the pressure of entering your pass phrase during online 
  282. time. Up to 1.07, the "Filter Type: Demand" is not yet functional. Using
  283. the REXX script MSGUTIL.CMD, and using some CTRL-Fxx combination should
  284. do it, I was told by MR/2 ICE's author.
  285.  
  286.  
  287. 5. Technicalities
  288. -----------------
  289.    PGPdeCOD.CMD is simple and straightforward. PGPenCOD.CMD requires 
  290. some more explanation.
  291.  
  292.    PGPenCOD.CMD first builds a table of all key user ids in your PGP key
  293. ring. Then it builds tables for all recipients, for all FROM addresses 
  294. and all SENDER addresses. The latter three are reduced to the mailbox 
  295. address (user@host.domain); this means that the PGP key will only be 
  296. found when this e-mail address is included in the PGP key userid.
  297.    When all recipients are found in the PGP key table, the message will 
  298. be encrypted for all recipients, otherwise it will not be encrypted at 
  299. all.
  300.  
  301.    The actual encoding is done by calling SPLTMAIL.CMD, PGP.EXE and 
  302. then JOINMAIL.CMD in a pipe, i.e. without any temporary files created by
  303. the scripts themselves. SPLTMAIL sends all header lines via the SESSION
  304. queue to JOINMAIL. but writes the message body to standard output where 
  305. it is captured by PGP. JOINMAIL receives the untouched header lines from
  306. the queue, and the PGP signed or encrypted (and signed) from PGP via 
  307. standard input.
  308.  
  309.     Join mail waits until it can OPEN WRITE the message file handed over
  310. from the mail program, and overwrites the file by the newly created 
  311. text.
  312.  
  313.  
  314. 6. Restrictions and known problems
  315. ----------------------------------
  316.    It can be a nuisance when you have to enter the pass phrase to access
  317. your private key for every message sent and every PGP encrypted message 
  318. received. This could be overcome by starting your favorite mailer in a 
  319. CMD file where you ask once for the pass phrase and then store it into 
  320. an environment variable.
  321.  
  322.    It might be better to encrypt the outgoing messages for the sender, 
  323. too, to avid that accidentally a message is sent out in plaintext, 
  324. unencrypted, because someone's recipient address has suffered from a 
  325. typo. Let me know what you think.
  326.  
  327.     In PRM 2.00 or the 1.99 beta series, PRM will not show the first 
  328. part or all of the text which is appended by PGP to the end of the
  329. message as it came in. The problem does not occur when you print the
  330. message or quote it in a reply. This is caused by a NUL ('00'x) character
  331. near the end of the incoming message. You find a little REXX script named
  332. NUL2SPAC.CMD in this package which you can call as
  333.  
  334.      NUL2SPAC  1F2E3D4C.POP
  335.  
  336. to change the NUL to a SPACE. You find the actual filename of the mail
  337. at the end of the folder list.
  338.  
  339.    You could also configure NUL2SPAC.CMD as the receive message exit so
  340. that it is executed for every incoming mail. You could also try to add it
  341. to the filter list (search for '-----BEGIN PGP'), but I have not yet
  342. managed to get it working; it seems that PRM only activates one filter
  343. per message. But you might be more cute than I am and avoid the error
  344. which I might have made.
  345.  
  346.     Innoval is aware of the problem, and hopefully will do away with it 
  347. in release 2.01 announced for end of August 1996 or in 2.1 to come sometime
  348. later.
  349.  
  350.     Also with PRM, I observed that only the first calls to the PGP scripts
  351. will execute in the foreground, and from some point on only in the 
  352. background. Check your window list with CTRL-ESC and select the appropriate
  353. window which will probably the last one in the list.
  354.  
  355. 6.1 MIME
  356. --------
  357.     You will have problems when you use
  358. Content-Transfer-Encoding=Quoted-Printable and PGP encoding. Several users
  359. of MR/2 ICE have reported problems with this. MR/2 ICE converts the
  360. message to the format it will actually be transmitted to the next SMTP hop,
  361. and PGP will then encrypt it, but not change the
  362. Content-Transfer-Encoding=Quoted-Printable header line. So the
  363. receiving mailer will first interpret the Content-Transfer-Encoding and
  364. destroy the PGP checksum which is a line also starting with an equal sign
  365. (=).
  366.  
  367.     The solution will lie in adapting the ideas from PGP/MINE, I think, but
  368. this requires more work what I can't do at this moment in time.
  369.  
  370.  
  371. 7. Where to get PGP
  372. -------------------
  373.    As a private user, you can get PGP free of any charges via FTP, from 
  374. Online services like Compuserve or BBSes. You should get version 2.6.3i 
  375. (i stands for international) when you live outside the USA (see 
  376. following paragraphs), and version 2.6.2 when you are a US citizen 
  377. living in the USA or a Canadian citizen living in Canada. Then you can 
  378. either download it from the MIT at http://web.mit.edu/network/pgp.html 
  379. (MS-DOS, UNIX and Mac versions precompiled, or source code) or you 
  380. contact the company Viacrypt for a commercial version at 
  381. http://www.viacrypt.com or mailto://info@viacrypt.com.
  382.    You might also get source code from www.ifi.uio.no which can be 
  383. compiled for use in the USA, and which then corresponds to the latest 
  384. 2.6.3 release.
  385.  
  386.  
  387. 8. Getting PGP 2.6.3i by FTP
  388. ----------------------------
  389.    This is an edited version of the list of PGP 2.6.3i FTP sites, 
  390. reduced to those addresses relevant to OS/2. Executable programs for 
  391. other operating systems like MS-DOS, Windows, Unix, Macintosh, Amiga, 
  392. Atari, Archimedes are also available at those sites.
  393.  
  394. 8.1 Norway
  395. ..........
  396. The main distribution site for PGPi is ftp.ifi.uio.no. The latest
  397. international PGP version can always be found here. You can call
  398. http://www.ifi.uio.no/~staalesc/PGP to get information or FTP directly 
  399. to:
  400.  
  401. ftp.ifi.uio.no
  402.         /pub/pgp/doc/ - PGP User's Guide, drafts, specifications
  403.         /pub/pgp/faq/ - FAQs
  404.         /pub/pgp/lang/ - language modules
  405.         /pub/pgp/pc/os2/ - OS/2 tools & binaries
  406.         /pub/pgp/src/ - source code (all platforms)
  407.  
  408. 8.2 Europe
  409. ..........
  410. PGP 2.6.3i is also available from a number of other European FTP sites. I am not aware of any export restrictions in the countries listed here. Standard disclaimer applies. 
  411.  
  412. ftp.cert.dfn.de
  413.         /pub/tools/crypt/pgp/doc/ - Documentation
  414.         /pub/tools/crypt/pgp/language/ - language modules
  415.         /pub/tools/crypt/pgp/pc/os2/ - OS/2 binaries
  416.         /pub/tools/crypt/pgp/unix/ - source code (all platforms)
  417.  
  418. ftp.encomix.es
  419.         /pub/pgp/lang/ - language modules
  420.         /pub/pgp/pgp263i/ - source code and binaries (MS-DOS & OS/2)
  421.  
  422. ftp.funet.fi
  423.         /pub/crypt/cryptography/pgp/doc/ - Documentation
  424.         /pub/crypt/cryptography/pgp/language/ - language modules
  425.         /pub/crypt/cryptography/pgp/pc/os2/ - OS/2 binaries
  426.         /pub/crypt/cryptography/pgp/unix/ - source code (all platforms)
  427.  
  428. ftp.dsi.unimi.it
  429.         /pub/security/crypt/PGP/ - source code, binaries, tools (all
  430.                                                             platforms)
  431.  
  432. ftp.sunet.se
  433.         /pub/security/tools/crypt/pgp/language/ - language modules
  434.         /pub/security/tools/crypt/pgp/pc/os2/ - OS/2 binaries
  435.         /pub/security/tools/crypt/pgp/unix/ - source code (all 
  436.                                                           platforms)
  437.  
  438. ftp.ox.ac.uk
  439.         /pub/crypto/pgp/doc/ - Documentation
  440.         /pub/crypto/pgp/language/ - language modules
  441.         /pub/crypto/pgp/pc/os2/ - OS/2 binaries
  442.         /pub/crypto/pgp/unix/ - source code (all platforms)
  443.  
  444. Last updated April 11, 1996 by Staale Schumacher <stale@hypnotech.com>
  445.  
  446.  
  447. 9. PGP Return Codes
  448. -------------------
  449.   PGP Return Codes are logged to PGPREXX.LOG.
  450.  
  451.   This list is from the PGP source PGP.C version 2.6.3i:
  452.  
  453. /* Possible error exit codes - not all of these are used.  Note that we
  454.    don't use the ANSI EXIT_SUCCESS and EXIT_FAILURE.  To make things
  455.    easier for compilers which don't support enum we use #defines */
  456.  
  457. #define EXIT_OK                          0
  458. #define INVALID_FILE_ERROR               1
  459. #define FILE_NOT_FOUND_ERROR             2
  460. #define UNKNOWN_FILE_ERROR               3
  461. #define NO_BATCH                         4
  462. #define BAD_ARG_ERROR                    5
  463. #define INTERRUPT                        6
  464. #define OUT_OF_MEM                       7
  465.  
  466. /* Keyring errors: Base value = 10 */
  467. #define KEYGEN_ERROR                    10
  468. #define NONEXIST_KEY_ERROR              11
  469. #define KEYRING_ADD_ERROR               12
  470. #define KEYRING_EXTRACT_ERROR           13
  471. #define KEYRING_EDIT_ERROR              14
  472. #define KEYRING_VIEW_ERROR              15
  473. #define KEYRING_REMOVE_ERROR            16
  474. #define KEYRING_CHECK_ERROR             17
  475. #define KEY_SIGNATURE_ERROR             18
  476. #define KEYSIG_REMOVE_ERROR             19
  477.  
  478. /* Encode errors: Base value = 20 */
  479. #define SIGNATURE_ERROR                 20
  480. #define RSA_ENCR_ERROR                  21
  481. #define ENCR_ERROR                      22
  482. #define COMPRESS_ERROR                  23
  483.  
  484. /* Decode errors: Base value = 30 */
  485. #define SIGNATURE_CHECK_ERROR           30
  486. #define RSA_DECR_ERROR                  31
  487. #define DECR_ERROR                      32
  488. #define DECOMPRESS_ERROR                33
  489.  
  490.  
  491. 10. Where to get this software
  492. -----------------------------
  493.    The latest version of PRPREXX will be available as file PGPREXxx.ZIP,
  494. with xx being the version number, in Compuserve in the forums OS2USER,
  495. OS2UGER and NCSA (this is version 1.2, so it will be file name
  496. PGPREXX12.ZIP), on Hobbes and and ftp://ftp.ifi.uio.no/pub/pgp/pc/os2. 
  497. As to Hobbes, I have uploaded the previous versions only to
  498. hobbes.cdrom.com, but it spread to other Hobbes sites as well.
  499.  
  500.  
  501. 11.  How to contact the author
  502. ------------------------------
  503.  
  504. Send e-mail to one of the following addresses:
  505.     Lueko.Willms@T-Online.de
  506.     L.WILLMS@LINK-F.rhein-main.de
  507.     100021.64@compuserve.com
  508.  
  509. Send paper mail to:
  510.     Lüko Willms
  511.     Nusszeil 54
  512.     D-60433 Frankfurt/Main
  513.     Germany
  514.  
  515. Dial phone number
  516.     +49-69-529208 fon (i.e. voice)
  517.     +49-69-519886 fax
  518.  
  519. --------- End of Text ------------------------------------------------
  520.  
  521.