diff options
author | dakkar <dakkar@thenautilus.net> | 2014-12-21 11:34:04 +0000 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2014-12-21 11:34:04 +0000 |
commit | aa127d020cc85e790c6caa158860a298142ed85d (patch) | |
tree | 9a08f5c7fc947558315751cdbc7485c753bedaed /lib/Net/Hawk/Crypto.pm | |
parent | more client tests (diff) | |
download | net-hawk-aa127d020cc85e790c6caa158860a298142ed85d.tar.gz net-hawk-aa127d020cc85e790c6caa158860a298142ed85d.tar.bz2 net-hawk-aa127d020cc85e790c6caa158860a298142ed85d.zip |
authenticate client tests
Diffstat (limited to 'lib/Net/Hawk/Crypto.pm')
-rw-r--r-- | lib/Net/Hawk/Crypto.pm | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/lib/Net/Hawk/Crypto.pm b/lib/Net/Hawk/Crypto.pm index 9c53148..e70b210 100644 --- a/lib/Net/Hawk/Crypto.pm +++ b/lib/Net/Hawk/Crypto.pm @@ -25,8 +25,8 @@ sub generate_normalized_string { port => Int, hash => Optional[Str], ext => Optional[Str|Undef], - app => Optional[Str], - dlg => Optional[Str], + app => Optional[Str|Undef], + dlg => Optional[Str|Undef], slurpy Any, ]); my ($self,$type,$options) = $argcheck->(@_); @@ -78,16 +78,49 @@ sub calculate_mac { my $normalized = $self->generate_normalized_string($type,$options); + return $self->calc_hmac( + $normalized, + $credentials->{algorithm}, + $credentials->{key}, + ); +} + +sub calculate_ts_mac { + state $argcheck = compile( + Object,Int, + Dict[ + algorithm => Algorithm, + key => Str, + slurpy Any, + ], + ); + my ($self,$ts,$credentials) = $argcheck->(@_); + + my $string = sprintf( + "hawk.%s.ts\n%d\n", + header_version(), + $ts, + ); + + return $self->calc_hmac( + $string, + $credentials->{algorithm}, + $credentials->{key}, + ); +} + +sub calc_hmac { + state $argcheck = compile(Object,Str,Algorithm,Str); + my ($self,$data,$algorithm,$key) = $argcheck->(@_); + state $function_map = { sha1 => \&hmac_sha1_base64, sha256 => \&hmac_sha256_base64, }; - my $mac = $function_map->{$credentials->{algorithm}}->( - $normalized,$credentials->{key}, - ); - - return _pad_b64($mac); + return _pad_b64($function_map->{$algorithm}->( + $data,$key, + )); } sub make_digest { |