The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use Test::More;
use Math::BigInt try => 'GMP,Pari';
use strict;
use warnings;
no strict 'refs';

use lib '../lib';

our $module;
BEGIN {
    our $module = 'Crypt::MagicSignatures::Key';
    use_ok($module, qw/b64url_encode b64url_decode/);   # 1
};

#########################################
# From OStatus2 gem used in Mastodon    #
# https://github.com/tootsuite/ostatus2 #

my $mkey = 'data:application/magic-public-key,RSA.AKfeoEM7t8a5nBIudEnCZ37cXBw-QgijUmO3JGDFY0OJKrlwtMlUn9-7_dMpYQx_ehSIo1HrFfnVY4YLKQVfpwc.AQAB';

ok($mkey = Crypt::MagicSignatures::Key->new($mkey), 'Get private key');

is($mkey->n, '8792046075689043363232416638565141340544360030419271972383556104721760666810289531879428170641142438262522893048913367584534393199599425777885589146674951',
   "OStatus Modulus");
is($mkey->_emLen, 64, 'OStatus2 k');
ok(!$mkey->d, 'Is a public key');

is(b64url_decode('SGVsbG8gd29ybGQsIEkgYW0gZG9vbSwgYnJpbmdlciBvZiBiYWQgQmFz'.
                   'ZTY0IGFuZCBiaWcgbnVtYmVycyBsaWtlIDk5OTI4ODg3MjM2NzY3ODI4Mg'),
   'Hello world, I am doom, bringer of bad Base64 and big numbers like 999288872367678282',
   'Decoding is fine');

is(b64url_decode(b64url_encode('Hello world')), 'Hello world', 'b64url');

done_testing;
__END__