From 9e680b80e0c22ce76b6314741e05f1bcb0deb4f9 Mon Sep 17 00:00:00 2001 From: Matthias Benkard Date: Thu, 14 Aug 2014 09:38:28 +0200 Subject: Make stateless. MulkyID does not use session state stored in /tmp anymore. Instead, it uses a cookie encrypted with the private part of the MulkyID instance's RSA key. --- www/common.pl | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'www/common.pl') diff --git a/www/common.pl b/www/common.pl index 736bf00..a094442 100644 --- a/www/common.pl +++ b/www/common.pl @@ -7,6 +7,7 @@ use Modern::Perl; use Mail::ExpandAliases; use URI; +use MIME::Base64 qw(encode_base64 decode_base64); sub load_config() { $::MULKONF = { }; @@ -41,3 +42,19 @@ sub reluri($$) { $uri->path_segments(@path); return "$uri"; } + +sub decode_base64_url($) { + # From: https://github.com/ptarjan/base64url/blob/master/perl.pl + (my $s = shift) =~ tr{-_}{+/}; + $s .= '=' x (4 - length($s)); + return decode_base64($s); +} + +sub encode_base64_url($) { + my ($s) = shift; + $s = encode_base64($s); + $s =~ tr{+/}{-_}; + $s =~ s/=*$//; + $s =~ s/\n//g; + return $s; +} -- cgit v1.2.3