Crypt-OpenSSL-PKCS10
view release on metacpan or search on metacpan
lib/Crypt/OpenSSL/PKCS10.pm view on Meta::CPAN
package Crypt::OpenSSL::PKCS10;
use 5.008000;
use strict;
use warnings;
require Exporter;
our @ISA = qw(Exporter);
# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.
# This allows declaration use Crypt::OpenSSL::PKCS10 ':all';
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
# will save memory.
our @NIDS = qw(
NID_key_usage NID_subject_alt_name NID_netscape_cert_type NID_netscape_comment
NID_ext_key_usage
);
our %EXPORT_TAGS = (
'all' => [ @NIDS ],
'const' => [ @NIDS ],
);
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
#our @EXPORT = qw(
#);
our $VERSION = '0.35';
require XSLoader;
XSLoader::load('Crypt::OpenSSL::PKCS10', $VERSION);
# Preloaded methods go here.
sub new_from_rsa {
my $self = shift;
my $rsa = shift;
my ($options) = shift || ();
my $priv = $rsa->get_private_key_string();
$self->_new_from_rsa($rsa, $priv, \%{$options});
}
sub new {
my $self = shift;
my $keylen;
my $options;
my $args = scalar @_;
if ($args eq 0) {
$keylen = 1024;
} elsif ($args eq 1) {
if (ref ($_[0]) eq 'HASH') {
$keylen = 1024;
($options) = $_[0];
} else {
$keylen = $_[0];
}
} elsif ($args eq 2) {
if (ref $_[0] eq 'HASH') {
die('Wrong order for arguements: [$keysize], [%options]');
}
$keylen = $_[0];
($options) = $_[1];
} else {
die ('Maximum 2 optional arguements [$keysize], [%options]');
}
$self->_new($keylen, \%{$options});
}
1;
__END__
# ABSTRACT: Perl extension to OpenSSL's PKCS10 API.
=head1 NAME
Crypt::OpenSSL::PKCS10 - Perl extension to OpenSSL's PKCS10 API.
=head1 SYNOPSIS
use Crypt::OpenSSL::PKCS10 qw( :const );
my $req = Crypt::OpenSSL::PKCS10->new;
$req->set_subject("/C=RO/O=UTI/OU=ssi");
$req->add_ext(Crypt::OpenSSL::PKCS10::NID_key_usage,"critical,digitalSignature,keyEncipherment");
$req->add_ext(Crypt::OpenSSL::PKCS10::NID_ext_key_usage,"serverAuth, nsSGC, msSGC, 1.3.4");
$req->add_ext(Crypt::OpenSSL::PKCS10::NID_subject_alt_name,"email:steve@openssl.org");
$req->add_custom_ext('1.2.3.3',"My new extension");
$req->add_ext_final();
$req->sign();
$req->write_pem_req('request.pem');
$req->write_pem_pk('pk.pem');
print $req->get_pem_pubkey();
print $req->pubkey_type();
print $req->get_pem_req();
lib/Crypt/OpenSSL/PKCS10.pm view on Meta::CPAN
Returns the PEM encoding of the PKCS10 public key.
$req->get_pubkey();
=item get_pem_req()
Returns the PEM encoding of the PKCS10 request.
$req->get_pem_req();
=item write_pem_req($filename)
Writes the PEM encoding of the PKCS10 request to a given file.
$req->write_pem_req('request.pem');
=item get_pem_pk()
Returns the PEM encoding of the private key.
$req->get_pem_pk();
=item write_pem_pk($filename)
Writes the PEM encoding of the private key to a given file.
$req->write_pem_pk('request.pem');
=item subject()
returns the subject of the PKCS10 request
$subject = $req->subject();
=item keyinfo()
returns the human readable info about the key of the PKCS10 request
$keyinfo = $req->keyinfo();
=back
=head2 EXPORT
None by default.
On request:
NID_key_usage NID_subject_alt_name NID_netscape_cert_type NID_netscape_comment
NID_ext_key_usage
=head1 BUGS
If you destroy $req object that is linked to a Crypt::OpenSSL::RSA object, the RSA private key is also freed,
thus you can't use latter object anymore. Avoid this:
my $rsa = Crypt::OpenSSL::RSA->generate_key(512);
my $req = Crypt::OpenSSL::PKCS10->new_from_rsa($rsa);
undef $req;
print $rsa->get_private_key_string();
=head1 SEE ALSO
C<Crypt::OpenSSL::RSA>, C<Crypt::OpenSSL::X509>.
=head1 AUTHOR
JoNO, E<lt>jonozzz@yahoo.comE<gt>
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2006 by JoNO
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.2 or,
at your option, any later version of Perl 5 you may have available.
=cut
( run in 0.228 second using v1.01-cache-2.11-cpan-0d8aa00de5b )