Skip to content

Instantly share code, notes, and snippets.

@ritou
Created November 14, 2015 15:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ritou/0644cac2baba56232804 to your computer and use it in GitHub Desktop.
Save ritou/0644cac2baba56232804 to your computer and use it in GitHub Desktop.
sample for Crypt::JWT
use Crypt::JWT qw(encode_jwt decode_jwt);
use Data::Dumper;
# encode
my $payload = "Payload";
my $ecc_priv = {
kty => "EC",
crv => "P-521",
x => "AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk",
y => "ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2",
d => "AY5pb7A0UFiB3RELSD64fTLOSV_jazdF7fLYyuTw8lOfRhWg6Y6rUrPAxerEzgdRhajnu0ferB0d53vM9mE15j2C",
};
my $jwt = encode_jwt(payload=>$payload, alg=>'ES512', key=>$ecc_priv);
warn Dumper($jwt);
# decode
my $decoded_payload = decode_jwt(token=>$jwt, key=>$ecc_priv);
warn Dumper($decoded_payload);
# decode with sample jwt in rfc7515
$jwt = "eyJhbGciOiJFUzUxMiJ9.UGF5bG9hZA.AdwMgeerwtHoh-l192l60hp9wAHZFVJbLfD_UxMi70cwnZOYaRI1bKPWROc-mZZqwqT2SI-KGDKB34XO0aw_7XdtAG8GaSwFKdCAPZgoXD2YBJZCPEX3xKpRwcdOO8KpEHwJjyqOgzDO7iKvU8vcnwNrmxYbSW9ERBXukOXolLzeO_Jn";
my $decoded_payload = decode_jwt(token=>$jwt, key=>$ecc_priv);
warn Dumper($decoded_payload);
eval {
$decoded_payload = decode_jwt(token=>$jwt . "invalid", key=>$ecc_priv);
};
warn Dumper($@);
@ritou
Copy link
Author

ritou commented Nov 14, 2015

$ perl crypt_jwt_sample_jws_es512.pl 
$VAR1 = 'eyJhbGciOiJFUzUxMiJ9.UGF5bG9hZA.AQw0n706gWY7qvMtVshXFX6HtM5TaG9yscUKXBoaCsalrusWrHuBfcjxw7FWQtkzTVIocfrDNK8w6k4n5wgpq8C1AOVuEHt8rB06N2pOpHvyEDcMX5FOeagQgqd291fA2UtIiZSFBgH7D5M7RX2Uigrft_c0b9Qkfwl5HBSBe9LGFDW6';
$VAR1 = 'Payload';
$VAR1 = 'Payload';
$VAR1 = 'JWS: decode failed at crypt_jwt_sample_jws_es512.pl line 28.
';

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment