echo -n hello |
openssl dgst -verify pubkey.pem -signature hello.sig -sha1 \
-sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:20
####
####
use Crypt::RSA;
use Crypt::RSA::SS::PSS;
my ($message, $rsa, $pss, $signature, $verify);
my ($public, $private);
# The message to be encrypted
#
$message = "hello";
# Generate RSA key
#
$rsa = new Crypt::RSA;
($public, $private) = $rsa->keygen( Size => 1024,
Filename => "key" );
# Generate PSS signature
#
$pss = new Crypt::RSA::SS::PSS;
$signature = $pss->sign ( Message => $message,
Key => $private ) || die $pss->errstr;
$verify = $pss->verify ( Message => $message,
Key => $public,
Signature => $signature) || die $pss->errstr;
# $verify returns true, it worked.
####
####
####
$publicKey = new Crypt::RSA::Key::Public (Filename => "key.public");
….
# I pack the 256 character (128 byte) hex string of the signature
# that's generated by the device.
$signature = pack ("H*", '03808458…..73E92');
####