Jack Disu schrieb:
>
> hi
> thanx a lot.......
> I use openca-0.9.1-RC4 , it works fine.
> also mail and renewed request work at both RA and CA
> with(Without sign and approve)
> but only csr canot edit at RA afetr saying renew.
> This is a not so important.
> Thank you for help.
Fixed in CVS. It was a typo ($datatype instead of $dataType).
Michael
--
-------------------------------------------------------------------
Michael Bell Email (private): [EMAIL PROTECTED]
Rechenzentrum - Datacenter Email: [EMAIL PROTECTED]
Humboldt-University of Berlin Tel.: +49 (0)30-2093 2482
Unter den Linden 6 Fax: +49 (0)30-2093 2959
10099 Berlin
Germany http://www.openca.org
## OpenCA - RAServer Command
## (c) 1998-2001 by Massimiliano Pala and OpenCA Group
##
## File Name: editCSR
## Brief: Edit Request
## Description: Edit a given Request
## Parameters: key
my $cmdName = "editCSR";
if ( $cmd !~ /$cmdName/i ) {
configError( "Wrong Command Usage ($cmd over $cmdName)!" );
exit 1;
}
## Get the Configuration parameters ...
my ( $ou, $ouList, $def, $op, $opCert, $info, $opStatus, $dnLabel);
my ( $sigStatus, $signer, $signature, $myCN, $myEmail, @myDnInfo, $subject,
$subjectAltName );
my ( @opCertList, $reqDataTable, @cols, $opCert, $serLink, $lnk, $sigInfo );
my ( %labels, @values, $role );
my ( $reqStatus, $cmdsPanel, $reqDesc );
my $key = $query->param('key');
my $dataType = $query->param('dataType');
if (not $dataType) {
$dataType = "PENDING_REQUEST";
}
## Required Configuration Key
my $sheetsDir = getRequired( 'SheetsDir' );
my $includeDir = getRequired( 'IncludeDir' );
my $txtDir = getRequired( 'TextDir' );
my $baseDoc = getRequired('ViewCSRSheet');
configError( "Error, needed dB key!" ) if ( not $key );
$reqStatus = "Waiting for Approval";
$cmdsPanel = "$includeDir/editing_cmds.inc";
$reqDesc = "$txtDir/pending_desc.txt";
if( not ( $page = $query->getFile( $baseDoc )) ) {
configError ("Error while loading $baseDoc!" );
};
## Substitute the cmdsPanel, reqStatus and reqDesc
$page = $query->subVar( $page, '@STATUS@', $reqStatus );
$page = $query->subVar( $page, '@REQDESC@', $tools->getFile( "$reqDesc") );
$page = $query->subVar( $page, '@CMDSPANEL@', $tools->getFile("$cmdsPanel") );
my $req = $db->getItem( DATATYPE=>$dataType, KEY=>$key );
configError ("Request not present in DB or the status of the request was changed!" )
if ( not $req );
## Get the parsed Request
my $parsed_req = $req->getParsed();
my $head = $req->getParsed()->{HEADER};
my $dbKey = $req->getSerial();
@cols = ( "Variable", "Value" );
$reqDataTable = $query->startTable( COLS=>[ @cols ],
WIDTH=>"100%",
## BGCOLOR=>"#F1F0F8",
PADDING=>"2",
CELLPADDING=>"4",
TABLE_BGCOLOR=>"#F1F0F8",
TITLE_BGCOLOR=>"#DDCCFF" );
if ( $parsed_req->{DN_HASH}->{CN}[0] ne "" ) {
$lnk = new CGI({cmd=>"search", dataType=>"CERTIFICATE",
name=>"CN", value=>$parsed_req->{DN_HASH}->{CN}[0]} );
$myCN = $lnk->a({-href=>$lnk->self_url()}, $parsed_req->{DN_HASH}->{CN}[0]);
}
## subject alternative name
if ( defined $req->getParsed()->{HEADER}->{SUBJECT_ALT_NAME} ) {
$subjectAltName = $req->getParsed()->{HEADER}->{SUBJECT_ALT_NAME};
} elsif ( $parsed_req->{EMAILADDRESS} ne "" ) {
$subjectAltName = "email:".$parsed_req->{EMAILADDRESS};
} else {
$subjectAltName = "";
}
## email address
my @emails = [];
if ( defined $req->getParsed()->{HEADER}->{SUBJECT_ALT_NAME} ) {
@subjectAltNames = split (/,/,
$req->getParsed()->{HEADER}->{SUBJECT_ALT_NAME});
foreach my $h (@subjectAltNames) {
next if ($h !~ /^\s*email:/i);
$h =~ s/^\s*email://i;
push (@emails, $h);
}
}
if ( $req->getParsed()->{EMAILADDRESS} ne "" ) {
push (@emails, $req->getParsed()->{EMAILADDRESS});
};
foreach my $h (@emails) {
my $lnk = new CGI({cmd=>"search", dataType=>"CERTIFICATE",
name=>"EMAIL", value=>$h} );
$myEmail .= ", " if ($myEmail);
$myEmail .= $lnk->a({-href=>$lnk->self_url()}, $h);
}
## If the Request is signed
if ( $parsed_req->{TYPE} =~ /with .*? Signature/i ) {
$lnk = new CGI({cmd=>"viewSignature", dataType=>$dataType, key=>$key});
if( libCheckSignature( OBJECT=>$req ) ) {
$tmp = $query->img({src=>getRequired ('ValidSigImage'),
border=>"0", align=>"MIDDLE"});
} else {
$tmp = $query->img({-src=>getRequired ('SigErrorImage'),
-border=>"0", -align=>"MIDDLE"});
}
$sigInfo = $lnk->a({-href=>$lnk->self_url()}, $tmp );
} else {
$def = "<FONT COLOR=\"RED\">Not Signed</FONT>";
$parsed_req->{OPERATOR} = $def;
}
## get the subject
if ($req->getParsed()->{HEADER}->{SUBJECT}) {
$subject = $req->getParsed()->{HEADER}->{SUBJECT};
} else {
$subject = $req->getParsed()->{DN};
}
$subject =~ s/,\s*/\n/g;
$subject = $query->newInput( -regx=>'*',
-intype=>'textarea',
-name=>'subj',
-rows=>6,
-columns=>35,
-default=>$subject);
$subjectAltName = $query->newInput( -regx=>'*',
-intype=>'textfield',
-name=>'subjectAltName',
-size=>35,
-default=>$subjectAltName);
$role = $query->newInput( -regx=>'*',
-intype=>"popup_menu",
-name=>"ROLE",
-values=> [ loadRoles () ],
-default=>$head->{ROLE});
$tmp = $head->{OPERATOR_DN};
$tmp =~ s/(,|\/)/<br>/g;
@cols = ( "Variable", "Value" );
$reqDataTable = $query->startTable( COLS=>[ @cols ],
WIDTH=>"100%",
BGCOLOR=>"#F1F0F8",
PADDING=>"2",
CELLPADDING=>"4",
TABLE_BGCOLOR=>"#F1F0F8",
TITLE_BGCOLOR=>"#DDCCFF" );
$reqDataTable .=$query->addTableLine(DATA=>["<B>Request Version:</B>",
($parsed_req->{VERSION} or "n/a") ]);
$reqDataTable .=$query->addTableLine(DATA=>[ "<B>Serial Number:</B>",
($req->getSerial() or "n/a") ]);
$reqDataTable .=$query->addTableLine(DATA=>["<B>Request Type:</B>",
($parsed_req->{TYPE} or "n/a") ]);
$reqDataTable .=$query->addTableLine(DATA=>["<B>Submission Date:</B>",
($head->{NOTBEFORE} or "n/a") ]);
$reqDataTable .=$query->addTableLine(DATA=>
[ "<B>Subject alternative name:</B>", $subjectAltName ]);
$reqDataTable .=$query->addTableLine(DATA=>
[ "<B>Subject:</B>", $subject ]);
$reqDataTable .=$query->addTableLine(DATA=>
["<B>Role:</B>",
($role or "n/a") ]);
$reqDataTable.=$query->addTableLine(DATA=>
["<B>Used Identification PIN:</B>",
($head->{PIN} or "n/a") ]);
$reqDataTable .=$query->addTableLine(DATA=>
[ "<B>Modulus (key size):</B>",
($parsed_req->{KEYSIZE} or "n/a") ]);
$reqDataTable .=$query->addTableLine(DATA=>
[ "<B>Public Key Algorithm:</B>",
($parsed_req->{PK_ALGORITHM} or "n/a") ]);
$reqDataTable .=$query->addTableLine(DATA=>
[ "<B>Signature Algorithm:</B>",
($parsed_req->{SIG_ALGORITHM} or "n/a") ]);
$reqDataTable .= $query->endTable();
$page = $query->subVar( $page, '@KEY@', $dbKey );
$page = $query->subVar( $page, '@DATATYPE@',$dataType );
$page = $query->subVar( $page, '@REQDATA@', $reqDataTable );
$page = $query->subVar( $page, '@_KEYLESS_DATA@', "" );
## View the Signature Logo
$page = $query->subVar( $page, '@SIGINFO@', $sigInfo );
print "$page";
1;