NAME
Panda::NSS - Perl bindings to NSS Mozilla security library
VERSION
version 0.004
SYNOPSIS
# verify certificate
use Panda::NSS;
Panda::NSS::init($nssdb_path);
Panda::NSS::add_builtins();
my $cert = Panda::NSS::Cert->new($cert_data_in_der_format);
if ($cert->simple_verify(Panda::NSS::CERTIFICATE_USAGE_OBJECT_SIGNER)) {
print "Certificate OK\n";
}
else {
print "Certificate NOT VALID\n";
}
DESCRIPTION
This library is in very early stage of development. Any API can change. Currently you can verify certificates with AIA extension (when not all chain exists locally).
FUNCTIONS
Panda::NSS::init( [ $certdb_path ] )-
This function initialize NSS library. It calls
NSS_InitReadWrite(dbpath). However you may not specify$certdb_path, in that caseNSS_NoDB_Init()called, that mode not very useful for certificate checks. Panda::NSS::reinit()-
This function should be called after fork to reinitialize NSS library. Any outstanding handles will become invalid, but new will work.
Actually this function compare current PID with saved in previous
initorreinitone and callsSECMOD_RestartModules(false)if needed.Example:
use Panda::NSS; Panda::NSS::init($nssdb_path); my $pid = fork(); if ($pid == 0) { # child Panda::NSS::reinit(); # ... other code in child } Panda::NSS::add_builtins()-
This function load nssckbi module, that contains default root certificates in NSS. May croaks if library initialized without certdb.
CONSTANTS
Certificate usage
Panda::NSS::CERTIFICATE_USAGE_CHECK_ALL_USAGESPanda::NSS::CERTIFICATE_USAGE_SSL_CLIENTPanda::NSS::CERTIFICATE_USAGE_SSL_SERVERPanda::NSS::CERTIFICATE_USAGE_SSL_SERVER_WITH_STEP_UPPanda::NSS::CERTIFICATE_USAGE_SSL_CAPanda::NSS::CERTIFICATE_USAGE_EMAIL_SIGNERPanda::NSS::CERTIFICATE_USAGE_EMAIL_RECIPIENTPanda::NSS::CERTIFICATE_USAGE_OBJECT_SIGNERPanda::NSS::CERTIFICATE_USAGE_USER_CERT_IMPORTPanda::NSS::CERTIFICATE_USAGE_VERIFY_CAPanda::NSS::CERTIFICATE_USAGE_PROTECTED_OBJECT_SIGNERPanda::NSS::CERTIFICATE_USAGE_STATUS_RESPONDERPanda::NSS::CERTIFICATE_USAGE_ANY_CA
CLASSES
Panda::NSS::Cert
CONSTRUCTOR
$cert = Panda::NSS::Cert->new( $data )-
Constructs certificate object.
$datacan be certificate in DER binary format or in PEM format (Base64 encoded DER certificate, enclosed between "-----BEGIN CERTIFICATE-----" and "-----END CERTIFICATE-----"). Format is auto-detected.
PROPERTIES
$cert->version-
Returns certificate version. 1, 2 or 3.
$cert->serial_number-
Returns certificate serial number as a binary string.
$cert->serial_number_hex-
Returns certificate serial number as a hex encoded string.
$cert->subject-
Returns certificate subject as a string.
$cert->issuer-
Returns certificate issuer as a string.
$cert->common_name-
Returns common name extracted from subject.
$cert->country_name-
Returns country name extracted from subject.
$cert->locality_name-
Returns locality name extracted from subject.
$cert->state_name-
Returns state field extracted from subject.
$cert->org_name-
Returns organization name extracted from subject.
$cert->org_unit_name-
Returns organization unit extracted from subject.
$cert->domain_component_name-
Returns domain component extracted from subject.
METHODS
$rv = $cert->simple_verify( [ $usage ], [ $time ])-
Arguments:
$usage(Default:CERTIFICATE_USAGE_CHECK_ALL_USAGES)-
Certificate usage. One of
CERTIFICATE_USAGE_*constants. $time(Default: current time)-
Time at which the certificate should be valid.
Method do verification process (it uses
CERT_PKIXVerifyCertfrom NSS).Returns
trueif certificate valid. $rv = $cert->verify_signed_data( $data, $signature, [ $time ])-
Verify the signature of a signed data with the given certificate.
Returns
trueif signature match.
SEE ALSO
- Crypt::NSS::X509
-
Another try to bind NSS to Perl.
- Crypt::OpenSSL::X509
-
Allow to work with certificates, but can't validate with AIA.
LICENSE
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
SUPPORT
Bugs / Feature Requests
Please report any bugs or feature requests through the issue tracker at https://github.com/vovkasm/perl-Panda-NSS/issues. You will be notified automatically of any progress on your issue.
Source Code
This is open source software. The code repository is available for public review and contribution under the terms of the license.
https://github.com/vovkasm/perl-Panda-NSS
git clone https://github.com/vovkasm/perl-Panda-NSS.git
AUTHOR
Vladimir Timofeev <vovkasm@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Vladimir Timofeev.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.