searchcert

来自「Perl写的CA认证程序」· 代码 · 共 175 行

TXT
175
字号
## OpenCA - RA Server Command## (c) 1998-2001 by Massimiliano Pala and OpenCA Group####   File Name: searchCert##       Brief: ## Description: ##  Parameters: if ( $cmd !~ /searchCert/i ) {        configError( "Wrong Command Usage ($cmd/searchCert)!" );        exit 1;}if( $cmd =~ /^searchCert/i ) {        ##Reseved Variables        my $doc, $date, $sheet;        ## Get the Serial Number        my $key      = $query->param( 'key' );        my $dataType = $query->param( 'dataType' );        my @certDataTypes = ( VALID_CERTIFICATE, EXPIRED_CERTIFICATE,                              REVOKED_CERTIFICATE );        if( (not $key) or ( not $dataType ) ) {                configError( "Error, missing key and/or dataType params!" );        }        foreach $myType ( @certDataTypes ) {                next if( $myType !~ /$dataType/ );                if( $db->getItem( DATATYPE=>$myType,KEY=>$key )) {                        $dataType = $myType;                }        }}if( $cmd =~ /^(viewCert|searchCert)/i ) {        ##Reseved Variables        my $doc, $date, $sheet, $myType;        ## Get the Serial Number        my $key      = $query->param( 'key' );        my $dataType = $query->param( 'dataType' );        my $date  = $tools->getDate();        my @certDataTypes = ( VALID_CERTIFICATE, EXPIRED_CERTIFICATE,                              REVOKED_CERTIFICATE );        if( (not $key) or ( not $dataType ) ) {                configError( "Error, missing key and/or dataType params!" );        }        if( $cmd =~ /^searchCert/ ) {                foreach $myType ( @certDataTypes ) {                        next if( $myType !~ /$dataType/ );                        if( $db->getItem( DATATYPE=>$myType,KEY=>$key )) {                                $dataType = $myType;                        }                }        }             if ( $dataType =~ /^VALID_CERTIFICATE/ ) {                $status = "Valid";        } elsif ( $dataType =~ /^EXPIRED_CERTIFICATE/ ) {                $status = "Expired";        } elsif ( $dataType =~ /^REVOKED_CERTIFICATE/ ) {                $status = "Revoked";        } elsif ( $dataType =~ /^VALID_CA_CERTIFICATE/ ) {                $status = "Valid";        } elsif ( $dataType =~ /^EXPIRED_CA_CERTIFICATE/ ) {                $status = "Expired";        } else {                configError( "DataType not supported ($dataType)!");        }        ## Get Required Param        if( $dataType =~ /VALID_CERTIFICATE/ ) {                $sheet    = getRequired( 'ValidCertSheet' );        } else {                $sheet    = getRequired( 'ViewCertSheet' );        }        my $page  = $query->getFile ( "$sheet" );        my $cert  = $db->getItem( DATATYPE=>$dataType, KEY=>$key );        if( not $cert ) {                configError("Error, unable to get cert from dB!");        }        if( $page eq "" ) {                configError("Error, unable load $sheet!");        }        my @cols;        push( @cols, "Variable" );        push( @cols, "Value" );        $certTable .= $query->startTable( COLS=>[ @cols ],                                     WIDTH=>"100%",                                     BGCOLOR=>"#EEEEF1",                                     TITLE_BGCOLOR=>"#DDCCFF" );        my $parsedCert = $cert->getParsed();        my $tmpIssuer = $parsedCert->{ISSUER};        my $tmpDN     = $parsedCert->{DN};        my $tmpStatus = $status;        $tmpIssuer =~ s/\//<BR>\n/g;        $tmpDN =~ s/\//<BR>\n/g;        $date = $tools->getDate();        if ( $tmpStatus =~ /^Valid/i ) {                if ( not $tools->isInsidePeriod ( DATE=>"$date",                                START=>$parsedCert->{NOT_BEFORE},                                END=>$parsedCert->{NOT_AFTER} )) {                        $tmpStatus = "<FONT COLOR=\"RED\">" .                                     "Expired (dB needs updating)" .                                     "</FONT>";                }        } elsif ( $tmpStatus =~ /revoked/gi ) {                $tmpStatus .= " on " . $parsedCert->{REVOKED_DATE};        } elsif ( $tmpStatus =~ /^Expired/i ) {                if ( $tools->isInsidePeriod ( DATE=>"$date",                                START=>$parsedCert->{NOT_BEFORE},                                END=>$parsedCert->{NOT_AFTER} )) {                        $tmpStatus = "<FONT COLOR=\"RED\">" .                                     "Not Expired (dB needs updating)" .                                     "</FONT>";                }        };        $certTable .=$query->addTableLine(DATA=>["<B>Certificate Version:</B>",                                ($parsedCert->{VERSION} or "n/a") ]);        $certTable .=$query->addTableLine(DATA=>[ "<B>Serial Number:</B>",                                ($parsedCert->{SERIAL} or "n/a") ]);        $certTable .=$query->addTableLine(DATA=>[ "<B>Common Name:</B>",                                ($parsedCert->{CN} or "n/a") ]);        $certTable .=$query->addTableLine(DATA=>[ "<B>E-Mail:</B>",                                ($parsedCert->{EMAIL} or "n/a") ]);        $certTable .=$query->addTableLine(DATA=>[ "<B>Distinguished Name:</B>",                                ($tmpDN or "n/a") ]);        $certTable .=$query->addTableLine(DATA=>[ "<B>Issued by:</B>",                                ($tmpIssuer or "n/a") ]);        $certTable .=$query->addTableLine(DATA=>[ "<B>Valid From:</B>",                                ($parsedCert->{NOTBEFORE} or "n/a") ]);        $certTable .=$query->addTableLine(DATA=>[ "<B>Exipration on:</B>",                                ($parsedCert->{NOTAFTER} or "n/a") ]);        $certTable .=$query->addTableLine(DATA=>[ "<B>Current Status:</B>",                                ($tmpStatus or "n/a") ]);        $certTable .= $query->endTable();        $certTable .= getCopyRight();        $page = $query->subVar( $page, '$serial',   $parsedCert->{SERIAL} );        $page = $query->subVar( $page, '$certable', $certTable );        $page = $query->subVar( $page, '$key',      $key );        $page = $query->subVar( $page, '$dataType', $dataType );        print "$page";        exit;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?