Hmmmm... right you are. I will look at this tomorrow. I suspect that the problem is that the LPR client is closing (not passing) the file descriptor. However, it does appear to be passing something.
<aside> much code reading and cursing... mutter mutter </aside> I suspect that fixing this might be a little more difficult than a quick one-line fix, as the code for 'protecting' filters clobbers just about everything and tries to pass them only a known and limited number of things. Make that the day AFTER tomorrow. In the mean time, can you put your password in the 'clientkey' file and use that? i.e. - echo "my pgp password" >~/.pgp/clientkey lpr .... > From [EMAIL PROTECTED] Fri Sep 26 16:11:52 2003 > Subject: LPRng: PGP Authentication problem > From: Steve Kostecke <[EMAIL PROTECTED]> > To: [EMAIL PROTECTED] > Date: Fri, 26 Sep 2003 18:17:40 -0400 > > I've been unsuccessfully trying for the last few days to make PGP > Authentication work using LPRng 3.8.22 and PGP 2.6.3 on Debian. > Print jobs sent to my test printer are failing due to a PGP signature > error. > > Here's the printcap section for my test printer: > > test: > :lp=/dev/lp0 > :sd=/var/spool/lpd/test > :af=/var/log/lp-acct > :lf=/var/log/lp-errs > :auth=pgp > :[EMAIL PROTECTED] > :pgp_path=/usr/bin/pgp > :pgp_server_key=/root/.pgp/serverkey > :pgp_passphrasefile=clientkey > > My passphrase is in ~/.pgp/clientkey and I have the server public key > and the server has mine. > > When I send a print-job it times out, retries a few times and finally dies: > > [EMAIL PROTECTED]:~$ date | lpr -P test > Status Information, attempt 1 of 3: > sending job '[EMAIL PROTECTED]' to [EMAIL PROTECTED] > connecting to 'localhost', attempt 1 > connected to 'localhost' > Waiting 10 seconds before retry > <snip 2 more tries> > > I've traced the problem to a PGP signature error by adding -D5 to the > command line (date-stamps elided for clarity): > > [6100] lpr test: Dump_line_list: Make_passthrough - env - 0xbfff9ac0, count 14, max > 102 , list 0x80cd5c0 > [6100] lpr test: [ 0] 0x80cd9f8 ='HOME=/root' > [6100] lpr test: [ 1] 0x80cdaf8 ='IFS= ' > [6100] lpr test: [ 2] 0x80cdde0 ='LANG=C' > [6100] lpr test: [ 3] 0x80cdf08 ='LC_CTYPE=en_US' > [6100] lpr test: [ 4] 0x80cdaa8 ='LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib' > [6100] lpr test: [ 5] 0x80cda08 ='LOGDIR=/root' > [6100] lpr test: [ 6] 0x80cd9e0 ='LOGNAME=root' > [6100] lpr test: [ 7] 0x80cda48 ='PATH=/bin:/usr/bin:/usr/local/bin' > [6100] lpr test: [ 8] 0x80cc080 ='PGPPASSFD=3' > [6100] lpr test: [ 9] 0x80cddf8 ='PRINTCAP_ENTRY=test > [6100] lpr test: [10] 0x80cd9b8 ='PRINTER=test' > [6100] lpr test: [11] 0x80cdae0 ='SHELL=/bin/sh' > [6100] lpr test: [12] 0x80cdb08 ='SPOOL_DIR=/var/spool/lpd/test' > [6100] lpr test: [13] 0x80cd9d0 ='USER=root' > [6100] lpr test: Pgp_encode: pgp pid 6103 > [6103] lpr test: Make_passthrough: after fixing fd, count 4 > [6103] lpr test: [0]=0 > [6103] lpr test: [1]=6 > [6103] lpr test: [2]=6 > [6103] lpr test: [3]=4 > [6103] lpr test: Set_full_group: euid '1000' > [6103] lpr test: after setuid: (1000, 1000) > [6100] lpr test: Pgp_encode: pgp output '^GSignature error' > > Earlier on in the log the PGPPASSFD is apparently set: > > [6100] lpr test: Pgp_encode: esc_from_id 'steve', esc_to_id '[EMAIL PROTECTED]' > [6100] lpr test: Find_first_key: count 8, key 'passphrasefile', sep ' =#@' > [6100] lpr test: Find_first_key: cmp 10, top 7, mid 3, bot 4 > [6100] lpr test: Find_first_key: cmp 0, top 7, mid 5, bot 4 > [6100] lpr test: Find_first_key: cmp 0, mid 5, key 'passphrasefile', count 8 > [6100] lpr test: Find_str_value: key 'passphrasefile', value 'clientkey' > [6100] lpr test: Checkread: file '/home/steve/.pgp/clientkey' > [6100] lpr test: Checkread: '/home/steve/.pgp/clientkey' fd 4, size 32 > [6100] lpr test: Pgp_get_pgppassfd: PGPPASSFD file '/home/steve/.pgp/clientkey', > size 3 > [6100] lpr test: Add_line_list: 'PGPPASSFD=3', sep ' =#@', sort 1, uniq 1 > [6100] lpr test: Find_last_key: count 0, key 'PGPPASSFD' > [6100] lpr test: Find_last_key: key 'PGPPASSFD', cmp -1, mid 0 > [6100] lpr test: Dump_line_list: Add_line_list: result - 0xbfff9b60, count 1, max > 102, list 0x80ccf20 > [6100] lpr test: [ 0] 0x80cbe90 ='PGPPASSFD=3' > [6100] lpr test: Make_passthrough: cmd '$- /usr/bin/pgp +armorlines=0 +verbose=0 > +force +batch -sea '/tmp/temp01sd90sE' '[EMAIL PROTECTED]' -u '$%steve' -o > /tmp/temp01sd90sE.pgp', flags '<NULL>' > > But it appears the the PGP child process can't read the passphrase (more > than one word) through the PGPPASSFD. > > I have also tried this with PGPPASSFILE set in my ~/.bashrc instead of > :pgp_passphrasefile in /etc/printcap. But I receive the same failure messages. > > What am I doing wrong? > > -- > Steve Kostecke <[EMAIL PROTECTED]> > ----------------------------------------------------------------------------- YOU MUST BE A LIST MEMBER IN ORDER TO POST TO THE LPRNG MAILING LIST The address you post from MUST be your subscription address If you need help, send email to [EMAIL PROTECTED] (or lprng-requests or lprng-digest-requests) with the word 'help' in the body. For the impatient, to subscribe to a list with name LIST, send mail to [EMAIL PROTECTED] with: | example: subscribe LIST <mailaddr> | subscribe lprng-digest [EMAIL PROTECTED] unsubscribe LIST <mailaddr> | unsubscribe lprng [EMAIL PROTECTED] If you have major problems, send email to [EMAIL PROTECTED] with the word LPRNGLIST in the SUBJECT line. -----------------------------------------------------------------------------
