Adri Verhoef
2024-04-22 12:00:50 UTC
De checkgroups-controlmessage had gister gepost moeten worden, maar het is niet
gelukt. Het te signeren bestand werd niet ondertekend vanwege een probleem met
PGP.
Als ik het checkgroups-script met de hand start, krijg ik:
$ ./checkgroups nl
signcontrol: -----BEGIN PGP SIGNATURE----- not found in
Na het woordje "in" wordt de inputregel afgedrukt en die is kennelijk leeg; bij
nader onderzoek moet dit in de volgende code van het script gebeuren:
# -f = write to stdout
# -a = ciphertext file in ASCII radix-64 format
# -s = sign the plaintext file
# -t = plaintext file contains ASCII text, not binary, and
# should be converted to recipient's local text line conventions
# -u = userid to use to sign
# +verbose=0 = only print errors on stderr
open(FH, "exec $pgp -fast -u $pgpsigner +verbose=0 < $tmp 2>/dev/null |") ||
die "$0: open pipe from pgp: $!\n";
# whack any passphrase out of our environment. don't let this kid
# you, it does not stop snooping.
delete $ENV{'PGPPASS'};
$pgpbegin = "-----BEGIN PGP SIGNATURE-----";
$/ = "$pgpbegin\n";
$_ = <FH>; # read to signature, discard
die "$0: $pgpbegin not found in $_\n" unless /\Q$pgpbegin\E$/;
# make sure the temp file goes away even if we die now
unlink($tmp) || warn "$0: unlink $tmp: $!\n";
In de "open(FH, ..." wordt pgp aangeroepen, de inputfile is achtergebleven,
omdat het script werd beëindigd na de die()-melding.
Om te kijken wat er misging, draai ik daarom, met ingevulde variabelen:
$ /usr/local/bin/pgp -fast -u nl.newsgroups +verbose=0 < /tmp/sign-951965
Het resultaat:
-bash: /usr/local/bin/pgp: cannot execute: required file not found
Met strace:
$ strace /usr/local/bin/pgp -fast -u nl.newsgroups +verbose=0 < /tmp/sign-951965
execve("/usr/local/bin/pgp", ["/usr/local/bin/pgp", "-fast", "-u", "nl.newsgroups", "+verbose=0"], 0x7fffe4f9f130 /* 32 vars */) = -1 ENOENT (No such file or directory)
strace: exec: No such file or directory
+++ exited with 1 +++
Kaal dan?
$ pgp
bash: /usr/local/bin/pgp: cannot execute: required file not found
Ik weet niet wat de 'required file' is. Wat nu? In de sources van pgp263is is
de term 'required file' niet te vinden.
De laatste keer dat ik pgp compileerde, was in 1999; als ik de source nu
probeer te compileren, krijg ik:
$ make linux
make all CC=gcc LD=gcc OBJS_EXT="_80386.o _zmatch.o" \
CFLAGS=" -O6 -g3 -DUNIX -DLINUX -DIDEA32 -DASM"
make[1]: Entering directory '/tmp/pgp263ii/src'
gcc -O6 -g3 -DUNIX -DLINUX -DIDEA32 -DASM -c -o pgp.o pgp.c
pgp.c: In function ‘main’:
pgp.c:795:20: error: implicit declaration of function ‘pgp_getopt’; did you mean ‘getopt’? [-Wimplicit-function-declaration]
795 | ((opt = pgp_getopt(argc, argv, OPTIONS)) == EOF)) {
| ^~~~~~~~~~
| getopt
make[1]: *** [<builtin>: pgp.o] Error 1
make[1]: Leaving directory '/tmp/pgp263ii/src'
make: *** [makefile:167: linux] Error 2
Wat nu?
Ik probeer dit werkend te krijgen, omdat ik het posten van de checkgroups
weer op gang probeer te krijgen en omdat mijn script is gebaseerd op PGP.
Waarom niet GPG? Omdat ik niet weet óf noch hóe dat mogelijk gemaakt kan
worden (https://www.gnupg.org/gph/en/pgp2x.html had ik jaren geleden zelf
al gevonden).
Adri
gelukt. Het te signeren bestand werd niet ondertekend vanwege een probleem met
PGP.
Als ik het checkgroups-script met de hand start, krijg ik:
$ ./checkgroups nl
signcontrol: -----BEGIN PGP SIGNATURE----- not found in
Na het woordje "in" wordt de inputregel afgedrukt en die is kennelijk leeg; bij
nader onderzoek moet dit in de volgende code van het script gebeuren:
# -f = write to stdout
# -a = ciphertext file in ASCII radix-64 format
# -s = sign the plaintext file
# -t = plaintext file contains ASCII text, not binary, and
# should be converted to recipient's local text line conventions
# -u = userid to use to sign
# +verbose=0 = only print errors on stderr
open(FH, "exec $pgp -fast -u $pgpsigner +verbose=0 < $tmp 2>/dev/null |") ||
die "$0: open pipe from pgp: $!\n";
# whack any passphrase out of our environment. don't let this kid
# you, it does not stop snooping.
delete $ENV{'PGPPASS'};
$pgpbegin = "-----BEGIN PGP SIGNATURE-----";
$/ = "$pgpbegin\n";
$_ = <FH>; # read to signature, discard
die "$0: $pgpbegin not found in $_\n" unless /\Q$pgpbegin\E$/;
# make sure the temp file goes away even if we die now
unlink($tmp) || warn "$0: unlink $tmp: $!\n";
In de "open(FH, ..." wordt pgp aangeroepen, de inputfile is achtergebleven,
omdat het script werd beëindigd na de die()-melding.
Om te kijken wat er misging, draai ik daarom, met ingevulde variabelen:
$ /usr/local/bin/pgp -fast -u nl.newsgroups +verbose=0 < /tmp/sign-951965
Het resultaat:
-bash: /usr/local/bin/pgp: cannot execute: required file not found
Met strace:
$ strace /usr/local/bin/pgp -fast -u nl.newsgroups +verbose=0 < /tmp/sign-951965
execve("/usr/local/bin/pgp", ["/usr/local/bin/pgp", "-fast", "-u", "nl.newsgroups", "+verbose=0"], 0x7fffe4f9f130 /* 32 vars */) = -1 ENOENT (No such file or directory)
strace: exec: No such file or directory
+++ exited with 1 +++
Kaal dan?
$ pgp
bash: /usr/local/bin/pgp: cannot execute: required file not found
Ik weet niet wat de 'required file' is. Wat nu? In de sources van pgp263is is
de term 'required file' niet te vinden.
De laatste keer dat ik pgp compileerde, was in 1999; als ik de source nu
probeer te compileren, krijg ik:
$ make linux
make all CC=gcc LD=gcc OBJS_EXT="_80386.o _zmatch.o" \
CFLAGS=" -O6 -g3 -DUNIX -DLINUX -DIDEA32 -DASM"
make[1]: Entering directory '/tmp/pgp263ii/src'
gcc -O6 -g3 -DUNIX -DLINUX -DIDEA32 -DASM -c -o pgp.o pgp.c
pgp.c: In function ‘main’:
pgp.c:795:20: error: implicit declaration of function ‘pgp_getopt’; did you mean ‘getopt’? [-Wimplicit-function-declaration]
795 | ((opt = pgp_getopt(argc, argv, OPTIONS)) == EOF)) {
| ^~~~~~~~~~
| getopt
make[1]: *** [<builtin>: pgp.o] Error 1
make[1]: Leaving directory '/tmp/pgp263ii/src'
make: *** [makefile:167: linux] Error 2
Wat nu?
Ik probeer dit werkend te krijgen, omdat ik het posten van de checkgroups
weer op gang probeer te krijgen en omdat mijn script is gebaseerd op PGP.
Waarom niet GPG? Omdat ik niet weet óf noch hóe dat mogelijk gemaakt kan
worden (https://www.gnupg.org/gph/en/pgp2x.html had ik jaren geleden zelf
al gevonden).
Adri