package Crypt::Perl::RSA::PublicKey; =encoding utf-8 =head1 NAME Crypt::Perl::RSA::PublicKey - object representation of an RSA public key =head1 SYNOPSIS #You’ll probably instantiate this class using Parser.pm #or PrivateKey’s get_public_key() method. #cf. JSON Web Algorithms (RFC 7518, page 5) #These return 1 or 0 to indicate verification or non-verification. $pbkey->verify_RS256($message, $sig); $pbkey->verify_RS384($message, $sig); $pbkey->verify_RS512($message, $sig); #---------------------------------------------------------------------- my $enc = $pbkey->encrypt_raw($payload); #---------------------------------------------------------------------- my $der = $pbkey->to_der(); my $pem = $pbkey->to_pem(); #For use in creating PKCS #10 CSRs and X.509 certificates my $pub_der = $pbkey->to_subject_der(); #---------------------------------------------------------------------- $pbkey->size(); #modulus length, in bits $pbkey->modulus_byte_length(); #---------------------------------------------------------------------- # The following all return instances of Crypt::Perl::BigInt, # a subclass of Math::BigInt. # The pairs (e.g., modulus() and N()) are aliases. #---------------------------------------------------------------------- $pbkey->modulus(); $pbkey->N(); $pbkey->publicExponent(); $pbkey->E(); $pbkey->exponent(); #another alias of publicExponent() =cut use strict; use warnings; use parent qw( Crypt::Perl::RSA::KeyBase ); use constant _PEM_HEADER => 'RSA PUBLIC KEY'; use constant _ASN1_MACRO => 'RSAPublicKey'; BEGIN { *exponent = __PACKAGE__->can('publicExponent'); *to_subject_der = __PACKAGE__->can('_to_subject_public_der'); } 1;