Crypt-PKCS11-Easy
view release on metacpan or search on metacpan
t/02-basic.t view on Meta::CPAN
};
test get_mechs => sub {
my $self = shift;
ok my $slot = $self->pkcs11->get_slot(token => 'test_keys_1');
my $mechs = $self->pkcs11->get_mechanisms($slot->{id});
isa_ok $mechs, 'HASH';
};
test signing_and_verifying => sub {
my $self = shift;
my $data_file = path 't/data/10K.file';
my $key_file = path 't/keys/1024_sign.pem';
my $pkcs11 = $self->_new_pkcs11(key => 'signing_key');
ok my $sig = $pkcs11->sign(file => $data_file);
my $ossl_sig = $self->openssl_sign($key_file, $data_file);
is $sig, $ossl_sig, 'Signing produced same sig as openssl';
# save the sig to verify with openssl later
my $sig_file = $self->workdir->child($data_file->basename . '.sig');
$sig_file->spew_raw($sig);
ok my $enc_sig = $pkcs11->sign_and_encode(file => $data_file);
my $expected_sig = q{-----BEGIN SIGNATURE-----
mjNMN4+Xf7PNsDGXjzyentTLSs1JI8G55Bbr+rBvHvDl9sOgFZTh9ZjTM1ekVcTN
mUwq3aC/GjFW+pOLRYevQ2UwJiZmcVtP4nDD9Vt/exZS/ggM4HnaoGm8QyGnhlk3
77J68o6bq2ilVIUxhTn2WzwZN/Se+5PuCCIomcy2OEY=
-----END SIGNATURE-----
};
is $enc_sig, $expected_sig, 'Encoded sigs are good';
$pkcs11 = undef;
$pkcs11 = $self->_new_pkcs11(key => 'signing_key', function => 'verify');
ok $pkcs11->verify(sig => $sig, file => $data_file), 'verified signature';
$key_file = path 't/keys/1024_sign_pub.pem';
ok $self->openssl_verify($key_file, $sig_file, $data_file);
};
test encryption => sub {
my $self = shift;
my $data_file = path 't/data/64B.file';
for my $mech (qw/RSA_PKCS RSA_PKCS_OAEP/) {
my $pkcs11 = $self->_new_pkcs11(
key => 'encryption_key',
function => 'encrypt'
);
ok my $encrypted_data =
$pkcs11->encrypt(file => $data_file, mech => $mech),
"Encrypted with mech $mech";
my $private_key_file = path 't/keys/1024_enc.pem';
ok my $decrypted_data =
$self->openssl_decrypt($private_key_file, $encrypted_data, $mech),
'Decrypted using openssl';
is $decrypted_data, $data_file->slurp_raw, 'Successful round-trip';
}
};
run_me;
done_testing;
( run in 0.868 second using v1.01-cache-2.11-cpan-39bf76dae61 )