Samuel Rios Carvalho schrieb:
Please, send us the complete file
Attached is the modified viewCRR.I removed the "\r\n" at the end of line 116 and added it at the beginning of "USER_CRR" at line 117.
Also I removed the "\r\n" at the end of line 117. I think this could cause trouble as well... Regards
Ralf
## OpenCA - Command ## (c) 1998-2001 by Massimiliano Pala and OpenCA Group ## (c) Copyright 2002-2004 The OpenCA Project ## ## File Name: viewCRR ## Brief: View CRR ## Version: $Revision: 1.2 $ ## Description: Display given CRR to the RA Operator ## Parameters: dataType, key ## this script supports the following configurable references ## ## EDIT ## APPROVE ## APPROVE_WITHOUT_SIGNING ## REVOKE_CERT ## REVOKE_CERT_NEW ## REVOKE_CERT_PENDING ## REVOKE_CERT_SIGNED ## REVOKE_CERT_APPROVED ## DELETE ## DELETE_NEW ## DELETE_PENDING ## DELETE_SIGNED ## DELETE_APPROVED use strict; sub cmdViewCRR { ## Get the Configuration parameters ... my $def; my ( $myCN, $myEmail ); my ( $lnk, $sigInfo ); my $reqStatus; my $tmp; my ($info_list, $cmd_list, $hidden_list) = (undef, undef, undef); my $dataType = $query->param('dataType' ); my $key = $query->param('key'); configError( gettext("Error, needed dB key!") ) if ( not $key ); if ( $dataType eq "PENDING_CRR" ) { $reqStatus = gettext("Revocation Request Waiting for Approval"); } elsif ( $dataType eq "NEW_CRR" ) { $reqStatus = gettext("New Revocation Request"); } elsif ( $dataType eq "SIGNED_CRR" ) { $reqStatus = gettext("Signed Revocation Request Waiting for Additional Signature"); } elsif ( $dataType eq "APPROVED_CRR" ) { $reqStatus = gettext("Approved Revocation Request"); } elsif ( $dataType eq "ARCHIVED_CRR" ) { $reqStatus = gettext("Archived Revocation Request"); } elsif ( $dataType eq "DELETED_CRR" ) { $reqStatus = gettext("Deleted Revocation Request"); } elsif ( $dataType eq "CRR" ) { ## try to determine the datatype if ($db->getItem ( DATATYPE => "ARCHIVED_CRR", KEY => $key )) { $dataType = "ARCHIVED_CRR"; $reqStatus = gettext ("Archived Revocation Request"); } elsif ($db->getItem ( DATATYPE => "APPROVED_CRR", KEY => $key )) { $dataType = "APPROVED_CRR"; $reqStatus = gettext ("Approved Revocation Request"); } elsif ($db->getItem ( DATATYPE => "DELETED_CRR", KEY => $key )) { $dataType = "DELETED_CRR"; $reqStatus = gettext ("Deleted Revocation Request"); } elsif ($db->getItem ( DATATYPE => "SIGNED_CRR", KEY => $key )) { $dataType = "SIGNED_CRR"; $reqStatus = gettext ("Signed Revocation Request Waiting for Additional Signature"); } elsif ($db->getItem ( DATATYPE => "PENDING_CRR", KEY => $key )) { $dataType = "PENDING_CRR"; $reqStatus = gettext("Revocation Request Waiting for Approval"); } elsif ($db->getItem ( DATATYPE => "NEW_CRR", KEY => $key )) { $dataType = "NEW_CRR"; $reqStatus = gettext("New Revocation Request"); } else { configError ( gettext ("Cannot determine status of this request!")); } } else { configError ( i18nGettext ("Invalid or missing dataType (__DATATYPE__)!", "__DATATYPE__", $dataType)); } my $req = $db->getItem( DATATYPE=>$dataType, KEY=>$key ); configError ( gettext("CRR not present in DB!") ) if ( not $req ); ## Get the parsed Request my $parsed_req = $req->getParsed(); ######################################## ## begin to build request for signing ## ######################################## my ($header, $text); my $beginHeader = "-----BEGIN HEADER-----"; my $endHeader = "-----END HEADER-----"; ## build header $header = "$beginHeader\r\n"; $header .= "TYPE = CRR\r\n"; $header .= "SERIAL = $key\r\n"; $header .= "SSL_CERT_SERIAL = " . ($req->getParsed()->{HEADER}->{SSL_CERT_SERIAL} or gettext("n/a")) . "\r\n"; $header .= "SSL_CERT_DN = " . ($req->getParsed()->{HEADER}->{SSL_CERT_DN} or gettext("n/a")) . "\r\n"; $header .= "SSL_CERT_ISSUER = " . ($req->getParsed()->{HEADER}->{SSL_CERT_ISSUER} or gettext("n/a")) . "\r\n"; $header .= "$endHeader\r\n"; ## build body $text = "SUBMIT_DATE = " . $req->getParsed()->{SUBMIT_DATE}. "\r\n"; $text .= "APPROVED_DATE = " . $tools->getDate() . "\r\n"; $text .= "CRIN = ".($req->getParsed()->{CRIN} or gettext("n/a")) . "\r\n"; $text .= "REVOKE_REASON = ".($parsed_req->{REVOKE_REASON} or gettext("n/a")) . "\r\n"; $text .= "REVOKE_CERTIFICATE_DN = " . ($req->getParsed()->{REVOKE_CERTIFICATE_DN} or gettext("n/a")) . "\r\n"; $text .= "REVOKE_CERTIFICATE_NOTBEFORE = " . ($req->getParsed()->{REVOKE_CERTIFICATE_NOTBEFORE} or gettext("n/a")) . "\r\n"; $text .= "REVOKE_CERTIFICATE_NOTAFTER = " . ($req->getParsed()->{REVOKE_CERTIFICATE_NOTAFTER} or gettext("n/a")) . "\r\n"; $text .= "REVOKE_CERTIFICATE_SERIAL = " . ($req->getParsed()->{REVOKE_CERTIFICATE_SERIAL} or gettext("n/a")) . "\r\n"; $text .= "REVOKE_CERTIFICATE_ISSUER_DN = " . ($req->getParsed()->{REVOKE_CERTIFICATE_ISSUER_DN} or gettext("n/a")) . "\r\n"; $text .= "REVOKE_CERTIFICATE_KEY_DIGEST = " . ($req->getParsed()->{REVOKE_CERTIFICATE_KEY_DIGEST} or gettext("n/a")); $text .= "\r\nUSER_CRR = " . $req->getParsed()->{USER_CRR} if ($req->getParsed()->{USER_CRR}); $hidden_list->{"head"} = ""; $hidden_list->{"text"} = $header.$text; $hidden_list->{"CRL_REASON"} = $parsed_req->{REVOKE_REASON}; $hidden_list->{"DESCRIPTION"} = $parsed_req->{REVOKE_DESCRIPTION};; ###################################### ## prepare normal links and siginfo ## ###################################### ## which cert should be revoked my $cert = $db->getItem (DATATYPE => "CERTIFICATE", KEY => $req->getParsed()->{REVOKE_CERTIFICATE_SERIAL}); if ($cert) { if ( $cert->getParsed()->{DN_HASH}->{CN}[0] ne "" ) { $lnk = new CGI({cmd=>"search", dataType=>"CERTIFICATE", name=>"CN", value=>$cert->getParsed()->{DN_HASH}->{CN}[0]} ); $myCN = $lnk->a({-href=>"?".$lnk->query_string()}, $cert->getParsed()->{DN_HASH}->{CN}[0]); } if ( $cert->getParsed()->{EMAILADDRESS} ne "" ) { $lnk = new CGI({cmd=>"search", dataType=>"CERTIFICATE", name=>"EMAIL", value=>$cert->getParsed()->{EMAILADDRESS}} ); $myEmail = $lnk->a({-href=>"?".$lnk->query_string()}, $cert->getParsed()->{EMAILADDRESS}); }; }; ## check signature if ( $req->getParsed()->{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->query_string()}, $tmp ); } else { $def = "<FONT COLOR=\"RED\">".gettext("Not Signed")."</FONT>"; $parsed_req->{OPERATOR} = $def; } ## try to get the issuer of the CRR my $submit; if ($parsed_req->{SIGNATURE}) { ## signature-based revocation if (my $sig = libGetSignatureObject ( OBJECT => $req )) { if (my $cert = libGetSignerCertificateDB( SIGNATURE=> $sig )) { $submit = $cert->getParsed()->{DN}; } else { $submit = gettext("Cannot determine certificate from signature!"); print STDERR "Cannot determine certificate from signature (CRR: ".$req->getSerial ().")\n"; } } else { $submit = gettext ("Cannot build object from signature!"); print STDERR "Cannot build object from signature (CRR: ".$req->getSerial ().")\n"; } } elsif ($parsed_req->{REVOKE_CERTIFICATE_DN}) { ## pin-based revocation $submit = $parsed_req->{REVOKE_CERTIFICATE_DN}; } else { ## last chance by strong ssl-authentication $submit = $req->getParsed()->{HEADER}->{SSL_CERT_DN}; print STDERR i18nGettext ("submitter of CRR not determinable (CRR: __SERIAL__).", "__SERIAL__", $key)."\n"; } $hidden_list->{"cmd"} = ""; $hidden_list->{"signature"}= ""; $hidden_list->{"key"} = $key; $hidden_list->{"dataType"} = $dataType; ##################### ## build info_list ## ##################### my $pos = 0; $info_list->{HEAD}->[0] = gettext ("Variable"); $info_list->{HEAD}->[1] = gettext ("Value"); $info_list->{BODY}->[$pos]->[0] = gettext ("Request Version"); $info_list->{BODY}->[$pos++]->[1] = ($parsed_req->{VERSION} or gettext("n/a")); $info_list->{BODY}->[$pos]->[0] = gettext ("CRR Serial Number"); $info_list->{BODY}->[$pos++]->[1] = ($req->getSerial() or gettext("n/a")); $info_list->{BODY}->[$pos]->[0] = gettext ("Request Type"); $info_list->{BODY}->[$pos++]->[1] = ($parsed_req->{TYPE} or gettext("n/a")); $info_list->{BODY}->[$pos]->[0] = gettext ("Submission Date"); $info_list->{BODY}->[$pos++]->[1] = ($parsed_req->{SUBMIT_DATE} or gettext("n/a")); $info_list->{BODY}->[$pos]->[0] = gettext ("Submitter"); $info_list->{BODY}->[$pos++]->[1] = ($submit or gettext("n/a")); $info_list->{BODY}->[$pos]->[0] = gettext ("Reason"); $info_list->{BODY}->[$pos++]->[1] = ($parsed_req->{REVOKE_REASON} or gettext("n/a")); $info_list->{BODY}->[$pos]->[0] = gettext ("Description"); $info_list->{BODY}->[$pos++]->[1] = ($parsed_req->{REVOKE_DESCRIPTION} or gettext("n/a")); $info_list->{BODY}->[$pos]->[0] = gettext ("Common Name"); $info_list->{BODY}->[$pos++]->[1] = ($myCN or gettext("n/a")); $info_list->{BODY}->[$pos]->[0] = gettext ("E-Mail"); $info_list->{BODY}->[$pos++]->[1] = ($myEmail or gettext("n/a")); $info_list->{BODY}->[$pos]->[0] = gettext ("Role"); $info_list->{BODY}->[$pos++]->[1] = $cert->getParsed()->{HEADER}->{ROLE}; $info_list->{BODY}->[$pos]->[0] = gettext ("Distinguished Name"); $info_list->{BODY}->[$pos++]->[1] = ($cert->getParsed()->{DN} or gettext("n/a")); $info_list->{BODY}->[$pos]->[0] = gettext ("Approved on"); $info_list->{BODY}->[$pos++]->[1] = ($parsed_req->{APPROVED_DATE} or gettext("n/a")); $info_list->{BODY}->[$pos]->[0] = gettext ("Used Identification PIN"); $info_list->{BODY}->[$pos++]->[1] = ($parsed_req->{CRIN} or gettext("n/a")); $info_list->{BODY}->[$pos]->[0] = gettext ("Signature Algorithm"); $info_list->{BODY}->[$pos++]->[1] = ($parsed_req->{SIG_ALGORITHM} or gettext("n/a")); ####################################### ## here starts the filtered commands ## ## cmd_list ## ####################################### $cmd_list->{HEAD}->[0] = gettext ("Operations"); my $allow = libGetPermissionHash (getRequiredList ('CmdRefs_viewCRR')); my $pos = 0; ## perhaps an operator want to have a look at the certificate if ($allow->{VIEW_CERT}) { $cmd_list->{BODY}->[$pos]->[0] = gettext("Cert's Serial Number"); $cmd_list->{BODY}->[$pos]->[1] = "<a href=\"". "?cmd=viewCert&key=". $parsed_req->{REVOKE_CERTIFICATE_SERIAL}."\">". "$parsed_req->{REVOKE_CERTIFICATE_SERIAL}</a>"; $pos++; } ## perhaps an operator want to have a look at the original CRR if ($allow->{VIEW_USER_CRR} and $parsed_req->{USER_CRR}) { $cmd_list->{BODY}->[$pos]->[0] = gettext("Original user CRR"); $cmd_list->{BODY}->[$pos]->[1] = "<a href=\"". "?cmd=viewCRR&dataType=ARCHIVED_CRR&key=". $parsed_req->{USER_CRR}."\">". "$parsed_req->{USER_CRR}</a>"; $pos++; } ## edit CRR if ( $allow->{EDIT} and ($dataType =~ /NEW|PENDING/i) ) { $cmd_list->{BODY}->[$pos]->[0] = gettext("Edit the request"); $cmd_list->{BODY}->[$pos]->[1] = '<input type="submit" value="'. gettext("Edit Request"). '" onClick="cmd.value='."'editCRR'".';">'; $pos++; } ## approve CRR if ( $allow->{APPROVE} and ($dataType =~ /NEW|PENDING|SIGNED/i) ) { $cmd_list->{BODY}->[$pos]->[0] = gettext("Approve and sign the request"); $cmd_list->{BODY}->[$pos]->[1] = '<input type="button" value="'. gettext("Approve Request"). '" onClick="cmd.value='. "'approveCRR'".';signForm( this.form, window )">'; $pos++; } ## approve CRR without signing if ( $allow->{APPROVE_WITHOUT_SIGNING} and ($dataType =~ /NEW|PENDING/i) ) { $cmd_list->{BODY}->[$pos]->[0] = gettext("Approve Request without Signing"); $cmd_list->{BODY}->[$pos]->[1] = '<input type="button" value="'. gettext("Approve Request without Signing"). '" onClick="cmd.value='. "'approveCRRnotSigned';if (confirm ('". gettext ("Do you want to approve this request without signing?"). "')) {this.form.submit();}\">"; $pos++; } ## revoke certificate if ( ( $allow->{REVOKE_CERT} and ($dataType =~ /(NEW|PENDING|SIGNED|APPROVED)/i) ) or ( $allow->{REVOKE_CERT_NEW} and ($dataType =~ /NEW/i) ) or ( $allow->{REVOKE_CERT_PENDING} and ($dataType =~ /PENDING/i) ) or ( $allow->{REVOKE_CERT_SIGNED} and ($dataType =~ /SIGNED/i) ) or ( $allow->{REVOKE_CERT_APPROVED} and ($dataType =~ /APPROVED/i) ) ) { $cmd_list->{BODY}->[$pos]->[0] = gettext("Revoke Certificate"); $cmd_list->{BODY}->[$pos]->[1] = '<input type="submit" value="'. gettext("Revoke certificate"). '" onClick="cmd.value='."'revokeCertificate'".';">'; $pos++; } ## delete pending or approved CRR if ( ( $allow->{DELETE} and ($dataType =~ /(PENDING|APPROVED)/i) ) or ( $allow->{DELETE_NEW} and ($dataType =~ /NEW/i) ) or ( $allow->{DELETE_PENDING} and ($dataType =~ /PENDING/i) ) or ( $allow->{DELETE_SIGNED} and ($dataType =~ /SIGNED/i) ) or ( $allow->{DELETE_APPROVED} and ($dataType =~ /APPROVED/i) ) ) { $cmd_list->{BODY}->[$pos]->[0] = gettext("Delete"); $cmd_list->{BODY}->[$pos]->[1] = '<input type="button" value="'. gettext("Delete Request"). '" onClick="cmd.value='."'deleteCRR';if (confirm ('". gettext ("Do you want to delete this request?"). "')) {this.form.submit();}\">"; $pos++; } return libSendReply ( "NAME" => $reqStatus, "EXPLANATION" => gettext ("Following you can find the CRR's details."), "TIMESTAMP" => 1, "INFO_LIST" => $info_list, "CMD_LIST" => $cmd_list, "HIDDEN_LIST" => $hidden_list, "SIGINFO" => $sigInfo, "SIGN_FORM" => 1 ); } 1;
------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________ Openca-Users mailing list Openca-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openca-users