lgorithm name e.g. 'ECDH-ES+A256KW' (see rfc7518)
# $epk .. ephemeral ECC public key (JWK/JSON or Crypt::PK::ECC|X25519)
# optional params:
# $apu .. Agreement PartyUInfo Header Par
# $apv .. Agreement PartyVInfo Header Parameter
Value C<$cek> - binary octets, C<$epk> JWK/JSON string with ephemeral ECC public key.
=head2 ecdh_key_unwrap
ECDH (Ephememeral Static) key agre
ption algorithm name e.g. 'A256GCM' (see rfc7518)
# $epk .. ephemeral ECC public key (JWK/JSON or Crypt::PK::ECC|X25519)
# optional params:
# $apu .. Agreement PartyUInfo Header Par
} );
our @EXPORT = qw();
use Carp;
use Crypt::Misc qw(decode_b64u encode_b64u);
use JSON qw(decode_json encode_json);
use Crypt::PK::RSA;
use Crypt::PK::ECC;
use Crypt::PK::Ed25519;
use Crypt::PK::X2
|| !defined $alg;
$kid_keys = eval { decode_json($kid_keys) } if $kid_keys && !ref $kid_keys;
croak "JWT: kid_keys must be a HASHREF or a valid JSON/HASH" if ref $kid_keys ne 'HASH';
my $found;
b64url = shift;
return undef unless $b64url;
my $json = decode_b64u($b64url);
return undef unless $json;
my $hash = eval { decode_json($json) };
return undef unless ref $hash eq 'HASH';
re