/
100-SCRAM.t
67 lines (49 loc) · 1.83 KB
/
100-SCRAM.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env perl6
use v6.c;
use Test;
use Auth::SCRAM;
#-------------------------------------------------------------------------------
# Example from rfc
# C: n,,n=user,r=fyko+d2lbbFgONRv9qkxdawL
# S: r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096
# C: c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,
# p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts=
# S: v=rmF9pqV8S7suAoZWja4dJRkFsKQ=
#
class MyClient {
#-----------------------------------------------------------------------------
# send client first message to server and return server response
method client-first ( Str:D $client-first-message --> Str ) {
is $client-first-message,
'n,,n=user,r=fyko+d2lbbFgONRv9qkxdawL',
$client-first-message;
'r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096';
}
#-----------------------------------------------------------------------------
method client-final ( Str:D $client-final-message --> Str ) {
is $client-final-message,
< c=biws r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j
p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts=
>.join(','),
$client-final-message;
'v=rmF9pqV8S7suAoZWja4dJRkFsKQ=';
}
# method mangle-password() is optional
# method cleanup() is optional
#-----------------------------------------------------------------------------
method error ( Str:D $error-message --> Str ) {
}
}
#-------------------------------------------------------------------------------
subtest {
my Auth::SCRAM $sc .= new(
:username<user>,
:password<pencil>,
:client-object(MyClient.new)
);
isa-ok $sc, Auth::SCRAM;
$sc.c-nonce = 'fyko+d2lbbFgONRv9qkxdawL';
is '', $sc.start-scram, 'client side authentication of user ok';
}, 'SCRAM tests';
#-------------------------------------------------------------------------------
done-testing;