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

Reply via email to