Author: muffin
Date: 2006-03-04 16:46:17 -0500 (Sat, 04 Mar 2006)
New Revision: 969
Modified:
trunk/perl/client/bin/haver_passcode.pl
trunk/perl/client/examples/clitest.pl
trunk/perl/client/lib/Haver/Client.pm
Log:
Add support for more AUTH digests to Haver::Client
Modified: trunk/perl/client/bin/haver_passcode.pl
===================================================================
--- trunk/perl/client/bin/haver_passcode.pl 2006-03-04 21:24:28 UTC (rev
968)
+++ trunk/perl/client/bin/haver_passcode.pl 2006-03-04 21:46:17 UTC (rev
969)
@@ -1,8 +1,9 @@
+#!/usr/bin/perl
# vim: set ft=perl ts=4 sw=4:
-# passcode.pl - generate a passcode for use in any Haver client according
+# haver_passcode.pl - generate a passcode for use in any Haver client according
# to Haver::Spec::Auth.
#
-# Copyright (C) 2005 Eric Goodwin.
+# Copyright (C) 2005-2006 Eric Goodwin.
#
# This module is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
Modified: trunk/perl/client/examples/clitest.pl
===================================================================
--- trunk/perl/client/examples/clitest.pl 2006-03-04 21:24:28 UTC (rev
968)
+++ trunk/perl/client/examples/clitest.pl 2006-03-04 21:46:17 UTC (rev
969)
@@ -8,7 +8,7 @@
inline_states => {
_start => sub {
print "id=" . $_[SESSION]->ID, "\n";
- Haver::Client->create(alias => 'haver');
+ Haver::Client->create(alias => 'haver' debug => 1);
$poe_kernel->post('haver', 'register', 'all');
$poe_kernel->post('haver', 'connect',
name => 'testbot',
Modified: trunk/perl/client/lib/Haver/Client.pm
===================================================================
--- trunk/perl/client/lib/Haver/Client.pm 2006-03-04 21:24:28 UTC (rev
968)
+++ trunk/perl/client/lib/Haver/Client.pm 2006-03-04 21:46:17 UTC (rev
969)
@@ -1,7 +1,7 @@
# vim: set ft=perl ts=4 sw=4:
# Haver::Client - A POE::Component for haver clients.
#
-# Copyright (C) 2004, 2005 Bryan Donlan, Dylan Hardison, Eric Goodwin.
+# Copyright (C) 2004, 2006 Bryan Donlan, Dylan Hardison, Eric Goodwin.
#
# This module is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -39,8 +39,7 @@
use POE::Wheel::ReadWrite;
use POE::Wheel::SocketFactory;
use Haver::Protocol::Filter;
-use Digest::MD5 qw( md5_base64 );
-use Digest::SHA1 qw( sha1_base64 );
+use Digest;
use constant {
S_IDLE => 0, # not connected, not connecting
@@ -397,17 +396,28 @@
# Generate a passcode as per Haver::Spec::Auth.
- my $passcode = sha1_base64($heap->{password} .
lc("$heap->{host}$heap->{name}"));
-
- if (grep(/^sha1$/, @types)) {
+ my $digester = Digest->new("SHA-1");
+ $digester->add($heap->{password} . lc("$heap->{host}$heap->{name}"));
+ my $passcode = $digester->b64digest();
+ #Check for available ciphers and pick one, in order of preference.
+ if (grep(/^sha512$/, @types)) {
+ $type = "sha512";
+ $digester = Digest->new("SHA-512");
+ } elsif (grep(/^sha384$/, @types)) {
+ $type = "sha384";
+ $digester = Digest->new("SHA-384");
+ } elsif (grep(/^sha256$/, @types)) {
+ $type = "sha256";
+ $digester = Digest->new("SHA-256")
+ } elsif (grep(/^sha1$/, @types)) {
$type = "sha1";
- $response = sha1_base64($nonce . $passcode);
} else {
- # Surely, *surely* the server has MD5 if nothing else...
+ # The server must support md5 at this point.
$type = "md5";
- $response = md5_base64($nonce . $passcode);
+ $digester = Digest->new("MD5");
}
-
+ $digester->add($nonce.$passcode);
+ $response = $digester->b64digest();
call('send_raw', 'AUTH:BASIC', $type, $response);
}
_______________________________________________
Haver-commits mailing list
[email protected]
https://mail.gna.org/listinfo/haver-commits