Crypt-PKCS11-Easy

 view release on metacpan or  search on metacpan

t/lib/CommonTest.pm  view on Meta::CPAN


    return $obj;
}

sub _new_pkcs11 {
    my $self = shift;
    my %args = @_;

    my $mod = 'Crypt::PKCS11::Easy';

    require_ok $mod;

    $ENV{SOFTHSM2_CONF} = $self->hsm_config_file;

    $args{module} = 'libsofthsm2' unless $args{module};
    $args{pin}    = '1234'        unless $args{pin};
    $args{token}  = 'test_keys_1' unless $args{token};

    my @arg_list = %args;
    my $obj = new_ok $mod => \@arg_list;

    BAIL_OUT "Failed to initialise $mod, no point continuing" unless $obj;

    return $obj;
}

sub _build_hsm_token_dir {
    my $self = shift;

    my $archive = path('t/data/tokens.tar.gz')->absolute;

    local $CWD = $self->workdir;

    diag "Extracting test tokens into $CWD";
    Archive::Tar->extract_archive($archive);

    return path('tokens')->absolute;
}

sub openssl_sign {
    my ($self, $key_file, $data_file) = @_;
    my $openssl_cmd = [$self->_openssl, 'dgst', '-sha1', '-sign', $key_file];
    my $output = run_forked $openssl_cmd,
      {verbose => $ENV{TEST_DEBUG}, child_stdin => $data_file->slurp_raw};
    chomp $output->{stdout};
    return $output->{stdout};
}

sub openssl_verify {
    my ($self, $key_file, $sig_file, $data_file) = @_;

    my $openssl_cmd = [
        $self->_openssl, 'dgst',       '-sha1',   '-verify',
        $key_file,       '-signature', $sig_file, $data_file
    ];

    return run command => $openssl_cmd, verbose => $ENV{TEST_DEBUG};
}

sub openssl_decrypt {
    my ($self, $private_key_file, $encrypted_data, $mech) = @_;

    my $openssl_cmd =
      [$self->_openssl, 'rsautl', '-decrypt', '-inkey', $private_key_file];

    if ($mech eq 'RSA_PKCS') {
        push @$openssl_cmd, '-pkcs';
    } elsif ($mech eq 'RSA_PKCS_OAEP') {
        push @$openssl_cmd, '-oaep';
    } else {
        die "Unsupported mech: $mech";
    }

    my $output = run_forked $openssl_cmd,
      {verbose => $ENV{TEST_DEBUG}, child_stdin => $encrypted_data};
    chomp $output->{stdout};

    return $output->{stdout};
}

1;

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.679 second using v1.00-cache-2.02-grep-82fe00e-cpan-2cc899e4a130 )