Cancel-Lock und Perl
Von: Alexander Bartolich (alexander.bartolich@gmx.at) [Profil]
Datum: 30.06.2007 13:00
Message-ID: <f65d4e$kci$1@news.albasani.net>
Newsgroup: de.comm.software.newsserver
Datum: 30.06.2007 13:00
Message-ID: <f65d4e$kci$1@news.albasani.net>
Newsgroup: de.comm.software.newsserver
Am Ende von draft-ietf-usefor-cancel-lock-01.txt finden sich Beispiele:
Cancel-Lock: sha1:bNXHc6ohSmeHaRHHW56BIWZJt+4
Cancel-Key: sha1:aaaBBBcccDDDeeeFFF
Cancel-Lock: SHA1:H7/zsCUemvbvSDyARDaMs6AQu5s
Cancel-Key: sha1:chW8hNeDx3iNUsGBU6/ezDk88P4= sha1:4srkWaRIzvK51ArAP
Cancel-Lock: sha1:JyEBL4w9/abCBuzCxMIE/E73GM4
sha1:2Bmg+zWaY1noRiCdy8k3IapwSDU
Cancel-Key: sha1:K4rkWRjRcXmIzvK51ArAP
Eine Überprüfung dieser Beispiele, d.h. die Berechnung der jeweiligen
Cancel-Lock anhand des Cancel-Key, sieht so aus:
#!/usr/bin/perl -w
use MIME::Base64();
use Digest::SHA1();
for my $key(
'aaaBBBcccDDDeeeFFF',
'chW8hNeDx3iNUsGBU6/ezDk88P4=',
'4srkWaRIzvK51ArAP',
'K4rkWRjRcXmIzvK51ArAP' )
{
my $lock = MIME::Base64::encode_base64(Digest::SHA1::sha1($key), '');
printf "\nCancel-Lock: sha1:%s\n", $lock;
printf "Cancel-Key: sha1:%s\n", $key;
}
Der Newsreader slrn implementiert Cancel-Locks mit Hilfe der Bibliothek
"canlock". Die Berechnung des Cancel-Key hängt dabei nur von Message-ID
und dem Inhalt einer Datei ab.
Ein Beispiel (mit kaputter Message-ID, örks):
http://groups.google.at/group/de.comm.provider.usenet/msg/e862290d5d0602eb
# Message-ID: <slrnf8b1hh.fj2.alexander.bartolich@esther.asyl>
# Cancel-Lock: sha1:1ZGxrKCMfOrk+l4F6Ho2xoyu2eo
Dieses hab ich später ersetzt:
http://groups.google.at/group/de.comm.provider.usenet/msg/2f212b0c62b59276
# Message-ID: <f640sp$dmp$1@news.albasani.net>
# Supersedes: <slrnf8b1hh.fj2.alexander.bartolich@esther.asyl>
# Cancel-Key: sha1:jAj7NiUc0rXh9tnKgY4VFdkOz/k
Der Cancel-Lock lässt sich wieder aus Cancel-Key berechnen, siehe erstes
Programm. Interessant ist aber, wie slrn den Cancel-Key bestimmt.
Die durch "cansecret_file" definierte Datei schrieb ich ein Wort
mit vier Buchstaben. Allerdings nimmt slrn jedes Byte der Datei,
inklusive dem Zeilenwechsel.
$ od -c ~/.cansecret
0000000 h u h u \n
0000005
Die Message-ID beinhaltet die spitzen Klammern.
MIME::Base64::encode hängt in der Voreinstellung eine Zeilenwechsel
an, dies muss man durch den zweiten Parameter ausschalten.
#!/usr/bin/perl -w
use MIME::Base64();
use Digest::SHA1();
use Digest::HMAC_SHA1();
my $key = "huhu\n";
my $data = '<slrnf8b1hh.fj2.alexander.bartolich@esther.asyl>';
my $digest = Digest::HMAC_SHA1::hmac_sha1($data, $key);
my $cancel_key = MIME::Base64::encode($digest, '');
my $cancel_lock = MIME::Base64::encode(Digest::SHA1::sha1(
$cancel_key, ''
));
printf "Cancel-Key: sha1:%s\n", $cancel_key;
printf "Cancel-Lock: sha1:%s\n", $cancel_lock;
--
news.albasani.net
[ Auf dieses Posting antworten ]Antworten
- Urs Janßen (30.06.2007 13:40)
- Urs Janßen (02.07.2007 03:09)
