[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
REMAIL: simple digital postage
-----BEGIN PGP SIGNED MESSAGE-----
>How willing are remailers to try this? Both Hal Finney and Karl
>Barrus have code for remailers (Karl's is more recent, Hal's is in
>wide use). Could their code be modified easily to accomodate a
>primitive form of stamps?
Well, I know that integrating a quick and dirty (not particularly
cryptographically sophisticated) digital money system can be done in
Hal's code, since thats what I did at [email protected] for
quite a while. (Now elee6ue@rosebud has been restored to "ordinary"
operation).
And the one I recently wrote could be modified the same way - I just
put it together to test cutmarks, automatically detecting pgp
encryption, and latency delayed remailing.
I was looking into a more efficient way to check the validity of cash,
and making things bomb-proof, but sorta got sidetracked ;)
The way I did it is to add to remail.pl, have the script search the
header for a Digicash line (you use the pasting tokens as usual to
place it in the header). The script extracted the "cash" and searched
for it in a list maintained by the remailer. If found, then the
remailing proceeded as usual, otherwise the message "Insufficient
funds to deliver message" was sent along instead. The cash list is
read into memory and rewritten out, minus the value just used.
The cash strings I used were random characters, which looked like this
(all starting with the character B):
BU2j4yCJgtl8wO2KvsEIIttaSOt9zEfS7giqHwEuuh3bbuTGppoElILYeW09a
BYnIA2EQSXEJQ65U8PM2nG07ilq7zCEFqaTBXDuzeEb6YjBgVWUGNm6GPA0zS
BmgF0hscwOHICfLNcDefkPo8PSO1ou2NQ4ecMcIPiGDu5fUEz63Wjiosj0JSD
and so forth.
Now with magic money a more sophisticated system may be developed.
Perhaps I will shift elee6ue@rosebud back to a pay-for-remail system,
or do it at the mystery middle point of the remailer chain I'm
experimenting with.
Here is an extract of the additions to remail.pl I made to implement
this:
if (/^Digicash:/) {
chop ;
s/^.*: // ; # remove text before colon AND blank afterwards
$payment = $_ ;
}
}
# check validity of digital cash
# open cash file and read it all in
open(CASHLIST, "./digicash.list");
@listofcash = <CASHLIST>;
close(CASHLIST);
unlink "./digicash.list";
#open file, check cash for validity
#if valid, don't write it back to the file
open(CASHLIST, "> ./digicash.list");
$paidfor = "n";
while (@listofcash) {
$validcash = shift @listofcash;
chop $validcash;
if ($validcash eq $payment) {
$paidfor = "y";
next;
}
print CASHLIST $validcash, "\n";
}
close(CASHLIST);
-----BEGIN PGP SIGNATURE-----
Version: 2.3a
iQCVAgUBLWGxcoOA7OpLWtYzAQHV2AP/T7o0N9qUE8XU/urPqx8pzL+h/Rvs2zbg
6Lky3vu2GoMXEUmVbtbB8xl4c20kvSz5ysSkQ3B8NYXhTdAtcrgH0J2Zd1YHdCKb
xmh+rS4xLXuiO6T/j24XqiLOcq0YiF2F2ytzgM/mi03cxN6FMZrat+8vIqLrgjfg
ZNVvBAR46to=
=JDF6
-----END PGP SIGNATURE-----