The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

OpenCA::CRL - CRL Management module.

SYNOPSIS

use OpenCA::CRL;

DESCRIPTION

This module contains functions to access CRLs infos. It, as the OpenCA::X509 module, requires some parameters such as a reference to an OpenCA::OpenSSL instance. This module provides a CRL->PERL Hashes parsing, no specific crypto functions are performed.

FUNCTIONS

sub new () - Create a new instance of the Class.

        Creating a new instance of the module you can provide a
        valid crl. As a result the crl will be parsed and stored
        in local variable(s) for later usage. You can generate a
        new instance of the class either by giving an already
        issued CRL (see OpenCA::OpenSSL for documentation) or
        even generate a new CRL if you provide the CACERT and
        CAKEY. The function will return a self reference. Accepted
        parameters are:

                SHELL   - An OpenCA::OpenSSL initialized
                          instance;
                CRL     - A valid CRL(*);
                INFILE  - A CRL file(*);
                FORMAT  - Format of the provided CRL. Supported
                          are PEM|DER(*);
                CAKEY   - CA private key file(*);
                CACERT  - CA certificate file(*);
                DAYS    - Days the CRL will be valid(*);
                EXTS    - Extentions section (see openssl.cnf
                          documentation)(*);

        (*) - Optional Parameters;

        EXAMPLE:

           my $self->{crl} = new OpenCA::CRL( SHELL=>$openssl, CRL=>$pemCRL );

        NOTE: When you generate a new CRL, you have to provide
              BOTH CAKEY and CACERT parameters.

sub initCRL () - Initialize internal CRL parameters.

        Initialize the module with a provided CRL. You can not
        generate a new CRL with this function, if you wish to
        do so you'll have to get a new instance of the class
        (see the new() function). Accepted parameters are:

                CRL     - Provided CRL(*);
                INFILE  - A CRL file (one of CRL/INFILE params
                          is required)(*);
                FORMAT  - Provided CRL format (PEM|DER)(*);

        (*) - Optional Parameters;

        EXAMPLE:

                if( not $self->{crl}->initCRL(CRL=>$derCRL, FORMAT=>DER)) {
                     print "Error!";
                }

sub getParsed () - Retrieve parsed CRL list

        This function returns an HASH structure with the main CRL
        data and a list of HASH with SERIAL and DATE of revoked
        certificates. Returned value is:

                my $ret = { VERSION=>$version,
                            ALGORITHM=>$alg,
                            ISSUER=>$issuer,
                            LAST_UPDATE=>$last,
                            NEXT_UPDATE=>$next,
                            LIST=>[ @list ] };

        Each element of the LIST has the following format:
        
                my $element = { SERIAL=>$certSerial,
                                DATE=>$revDate };


        EXAMPLE:

                print "VERSION: " . $self->{crl}->getParsed()->{VERSION};

                foreach $rev ( @{ $self->{crl}->getParsed()->{LIST} } ) {
                    print "SERIAL: " . $rev->{SERIAL} . "\n";
                    print "DATE: " . $rev->{DATE} . "\n";
                }

sub getPEM () - Get the CRL in a PEM format.

        This function accept no arguments and returns the CRL in
        PEM format.

        EXAMPLE:

                $pem = $crl->getPEM();

sub getDER () - Get the CRL in a DER format.

        This function accept no arguments and returns the CRL in
        DER format.

        EXAMPLE:

                $der = $crl->getDER();

sub getTXT () - Get the CRL in a TXT format.

        This function accept no arguments and returns the CRL in
        TXT format.

        EXAMPLE:

                print $crl->getTXT();

AUTHOR

Massimiliano Pala <madwolf@openca.org>

SEE ALSO

OpenCA::X509, OpenCA::Tools, OpenCA::OpenSSL, OpenCA::REQ, OpenCA::TRIStateCGI, OpenCA::Configuration