Crypt-Perl

 view release on metacpan or  search on metacpan

lib/Crypt/Perl/PKCS10.pm  view on Meta::CPAN

=encoding utf-8

=head1 NAME

Crypt::Perl::PKCS10 - Certificate Signing Request (CSR) creation

=head1 SYNOPSIS

    my $pkcs10 = Crypt::Perl::PKCS10->new(

        key => $private_key_obj,

        subject => [
            commonName => 'foo.com',
            localityName => 'somewhere',
            #...
        ],
        attributes => [
            [ 'extensionRequest',
                [ 'subjectAltName',
                    [ dNSName => 'foo.com' ],

lib/Crypt/Perl/X509v3.pm  view on Meta::CPAN

        ],

        serial_number => 12345,

        issuer_unique_id => '..',
        subject_unique_id => '..',
    );

    # The signature algorithm (2nd argument) is not needed
    # when the signing key is Ed25519.
    $cert->sign( $crypt_perl_private_key_obj, 'sha256' );

    my $pem = $cert->to_pem();

=head1 STATUS

This module is B<experimental>! The API may change between versions.
If you’re going to build something off of it, ensure that you check
Crypt::Perl’s changelog before updating this module.

=head1 DESCRIPTION

t/Crypt-Perl-RSA-PrivateKey.t  view on Meta::CPAN


        is(
            $key->can("verify_$alg")->( $key, $message, $key->can("sign_$alg")->( $key, "00$message" ) ),
            q<>,
            "$alg: Perl non-verified a wrong signature",
        );

        SKIP: {
            skip 'No Crypt::OpenSSL::RSA; skipping', 1 if !$self->{'_has_ossl'};

            my $rsa = Crypt::OpenSSL::RSA->new_private_key($largest_pem);
            $alg =~ m<([0-9]+)> or die "huh? $alg";
            $rsa->can("use_sha$1_hash")->($rsa);
            ok(
                $rsa->verify( $message, $signature ),
                "$alg: OpenSSL verified Perl’s signature",
            );
        }
    }

    return;

t/Crypt-Perl-RSA-PrivateKey.t  view on Meta::CPAN

        my $mangled_sig = reverse $signature;

        dies_ok(
            sub { $key->verify_RS256( $message, $mangled_sig ) },
            "$label: mangled signature non-verification",
        );

        SKIP: {
            skip 'No Crypt::OpenSSL::RSA; skipping', 1 if !$self->{'_has_ossl'};

            my $rsa = Crypt::OpenSSL::RSA->new_private_key($key_pem);
            $rsa->use_sha256_hash();
            ok(
                $rsa->verify( $message, $signature ),
                "$label: OpenSSL verified Perl’s signature",
            );
        }
    }

    return;
}

t/assets/generate_rs256_tests.pl  view on Meta::CPAN

use Data::Dumper ();
use MIME::Base64 ();

my @rs256_tests = map {
    my $msg = rand;

    my $use_exp_3 = $msg > 0.5;

    my $orsa = Crypt::OpenSSL::RSA->generate_key($_, ($use_exp_3 ? 0x3 : ()));
    $orsa->use_sha256_hash();
    [ "$_-bit key" . ($use_exp_3 ? ', exp = 3' : q<>), $orsa->get_private_key_string(), $msg, MIME::Base64::encode($orsa->sign($msg)) ];
} (510 .. 768);

open my $rs256_wfh, '>', "$FindBin::Bin/RS256.dump";

{
    local $Data::Dumper::Terse = 1;
    print {$rs256_wfh} Data::Dumper::Dumper(\@rs256_tests) or die $!;
}

close $rs256_wfh;



( run in 1.068 second using v1.01-cache-2.11-cpan-a5abf4f5562 )