|
Packit |
ae5a87 |
#!perl
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
BEGIN {
|
|
Packit |
ae5a87 |
require Test::More;
|
|
Packit |
ae5a87 |
eval { require Digest::MD5 } or Test::More->import(skip_all => 'Need Digest::MD5');
|
|
Packit |
ae5a87 |
eval { require Digest::HMAC_MD5 } or Test::More->import(skip_all => 'Need Digest::HMAC_MD5');
|
|
Packit |
ae5a87 |
}
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
use Test::More (tests => 8);
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
use Authen::SASL qw(Perl);
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
my $authname;
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
my $sasl = Authen::SASL->new(
|
|
Packit |
ae5a87 |
mechanism => 'DIGEST-MD5',
|
|
Packit |
ae5a87 |
callback => {
|
|
Packit |
ae5a87 |
user => 'fred',
|
|
Packit |
ae5a87 |
pass => 'gladys',
|
|
Packit |
ae5a87 |
authname => sub { $authname },
|
|
Packit |
ae5a87 |
},
|
|
Packit |
ae5a87 |
);
|
|
Packit |
ae5a87 |
ok($sasl,'new');
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
is($sasl->mechanism, 'DIGEST-MD5', 'sasl mechanism');
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
my $conn = $sasl->client_new("sieve","imap.spodhuis.org", "noplaintext noanonymous");
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
is($conn->mechanism, 'DIGEST-MD5', 'conn mechanism');
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
is($conn->client_start, '', 'client_start');
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
my $sparams = 'nonce="YPymzyi3YH8OILTBvSIuaul7RD3fIANDT2akHE6auBE=",realm="imap.spodhuis.org",qop="auth",maxbuf=4096,charset=utf-8,algorithm=md5-sess';
|
|
Packit |
ae5a87 |
# override for testing as by default it uses $$, time and rand
|
|
Packit |
ae5a87 |
$Authen::SASL::Perl::DIGEST_MD5::CNONCE = "foobar";
|
|
Packit |
ae5a87 |
$Authen::SASL::Perl::DIGEST_MD5::CNONCE = "foobar"; # avoid used only once warning
|
|
Packit |
ae5a87 |
my $initial = $conn->client_step($sparams);
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
ok(!$conn->code(), "SASL error: " . ($conn->code() ? $conn->error() : ''));
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
my @expect = qw(
|
|
Packit |
ae5a87 |
charset=utf-8
|
|
Packit |
ae5a87 |
cnonce="3858f62230ac3c915f300c664312c63f"
|
|
Packit |
ae5a87 |
digest-uri="sieve/imap.spodhuis.org"
|
|
Packit |
ae5a87 |
nc=00000001
|
|
Packit |
ae5a87 |
nonce="YPymzyi3YH8OILTBvSIuaul7RD3fIANDT2akHE6auBE="
|
|
Packit |
ae5a87 |
qop=auth
|
|
Packit |
ae5a87 |
realm="imap.spodhuis.org"
|
|
Packit |
ae5a87 |
response=3743421076899a855bafec1f7a9ed58a
|
|
Packit |
ae5a87 |
username="fred"
|
|
Packit |
ae5a87 |
);
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
is(
|
|
Packit |
ae5a87 |
$initial,
|
|
Packit |
ae5a87 |
join(",", @expect),
|
|
Packit |
ae5a87 |
'client_step'
|
|
Packit |
ae5a87 |
);
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
my $second = $conn->client_step('rspauth=4593215e1a0613328324b8325b975d96');
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
ok(!$conn->code(), "SASL error: " . ($conn->code() ? $conn->error() : ''));
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
is(
|
|
Packit |
ae5a87 |
$second,
|
|
Packit |
ae5a87 |
'',
|
|
Packit |
ae5a87 |
'client_step final verification'
|
|
Packit |
ae5a87 |
);
|