1package OpenXPKI::Server::API2::Plugin::Crypto::get_key_identifier_from_data; 2use OpenXPKI::Server::API2::EasyPlugin; 3 4=head1 NAME 5 6OpenXPKI::Server::API2::Plugin::Crypto::get_key_identifier_from_data 7 8=cut 9 10# Core modules 11use Digest::SHA qw(sha1_hex); 12 13# Project modules 14use OpenXPKI::Server::Context qw( CTX ); 15use OpenXPKI::Server::API2::Types; 16use OpenXPKI::Crypt::PKCS10; 17 18=head1 COMMANDS 19 20=head2 get_key_identifier_from_data 21 22returns the key identifier (sha1 hash of the public key bit string) of the 23given data as string, uppercased hex with colons. 24 25=over 26 27=item DATA 28 29Data, encoded as given by FORMAT parameter. 30 31=item FORMAT 32 33* PKCS10: PEM encoded PKCS10 block 34 35=back 36 37B<Parameters> 38 39=over 40 41=item * C<XXX> I<Bool> - XXX. Default: XXX 42 43=back 44 45=cut 46command "get_key_identifier_from_data" => { 47 data => { isa => 'PEM', required => 1, }, 48 format => { isa => 'Str', matching => qr/( \A (PKCS10) \z )/msx, required => 1, }, 49} => sub { 50 my ($self, $params) = @_; 51 52 # we currently only support PKCS10 53 54 my $pkcs10 = OpenXPKI::Crypt::PKCS10->new( $params->data ); 55 OpenXPKI::Exception->throw(message => 'Unable to parse data in get_key_identifier_from_data') if (!$pkcs10); 56 57 return $pkcs10->get_subject_key_id(); 58}; 59 60__PACKAGE__->meta->make_immutable; 61