Michael, I am now further along and here is what I had to do
1. in the OpenCA::Token::LunaCA3 function new sub new { print "Enter OpenCA::Token:LunaCA3 sub new\n"; my $that = shift; my $class = ref($that) || $that; my $self = { DEBUG => 0, debug_fd => $STDOUT, ## debug_msg => () }; bless $self, $class; my $keys = { @_ }; $self->{CRYPTO} = $keys->{OPENCA_CRYPTO}; $self->{gettext} = $keys->{GETTEXT}; $self->{NAME} = $keys->{OPENCA_TOKEN}; $self->{MODE} = $keys->{TOKEN_MODE}; $self->{UTILITY} = $keys->{UTILITY}; $self->{SLOT} = $keys->{SLOT}; $self->{APPID} = $keys->{APPID}; $self->{LOCK_FILE} = $keys->{LOCK_FILE}; #$keys->{SHELL} = "/apps/local/bin/openssl"; return undef if (not $self->{CRYPTO}); return undef if (not $self->{NAME}); #my $ret =`/apps/usr/luna/bin/ ## create openssl object #$keys->{ENGINE} = "LunaCA3 -enginearg ". $keys->{ENGINE} = "-engine LunaCA3 "; #$self->{SLOT}.":".$self->{APPID}; print "Calling self->{OPENSSL} = OpenCA::OpenSSL->new ($keys )\n"; $self->{OPENSSL} = OpenCA::OpenSSL->new ( $keys ); $errno = $OpenCA::OpenSSL::errno; $errval = $OpenCA::OpenSSL::errval; return undef if not $self->{OPENSSL}; return $self; } ################################################################################# you can see that I modified the way it passes the engine stuff ################################################################################# OpenCA::Token::LunaCA3 function AUTOLOAD sub AUTOLOAD { #print "in the AutoLOAD sub"; my $self = shift; use vars qw($AUTOLOAD); #print "KKK $AUTOLOAD KKKK\n"; if ($AUTOLOAD =~ /OpenCA::OpenSSL/) { print STDERR "PKI Master Alert: OpenCA::OpenSSL is missing a function\n"; print STDERR "PKI Master Alert: $AUTOLOAD\n"; # $self->setError (666, # $self->{gettext} ("OpenCA::OpenSSL is missing a function. __FUNCTION__", print "OpenCA::OpenSSL is missing a function. __FUNCTION__ __FUNCTION__ , $AUTOLOAD\n"; return undef; } $self->debug ("OpenCA::Token::LunaCA3: AUTOLOAD => $AUTOLOAD"); return 1 if ($AUTOLOAD eq 'OpenCA::Token::LunaCA3::DESTROY'); my $function = $AUTOLOAD; $function =~ s/.*:://g; print "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\n"; my $ret = $self->{OPENSSL}->$function ( @_ ); $self->setError ($OpenCA::OpenSSL::errno, $OpenCA::OpenSSL::errval); return $ret; } ################################################################################### I basically commented out the gettext call here to get it to go pass this and really I think this was causing it to infinitely call itself recursively. ################################################################################## in OpenCA::OpenSSL function new sub new { print " Enter OpenCA::OpenSSL sub new\n"; my $that = shift; my $class = ref($that) || $that; my $self = { %params, }; bless $self, $class; my $keys = { @_ }; $self->setParams( @_ ); if( not $self->{binDir} ) { $self->{binDir} = "/usr/bin"; }; if( not $self->{shell} ) { $self->{shell} = "$self->{binDir}/openssl"; }; if( not $self->{openca_sv} ) { $self->{openca_sv} = "$self->{binDir}/openca-sv"; } if( not $self->{verify} ) { $self->{verify} = "$self->{binDir}/openca-sv verify"; }; if( not $self->{sign} ) { $self->{sign} = "$self->{binDir}/openca-sv sign"; }; if( not $self->{decrypt} ) { $self->{decrypt} = "$self->{binDir}/openca-sv decrypt"; }; if( not $self->{encrypt} ) { $self->{encrypt} = "$self->{binDir}/openca-sv encrypt"; }; if( not $self->{tmpDir} ) { $self->{tmpDir} = '/tmp'; }; print " Just before if (self->{gettext} )\n self->setError (7700110, \"There is no translation fun ction specified.\")"; # if( not $self->{gettext} ) { # $self->setError (7700110, "There is no translation function specified."); # return undef; print " after the gettext code"; print " $self->{openssl}\n"; if( not -e $self->{openssl} ) { $self->setError (7700120, $self->{gettext} ("There is no path to OpenSSL specified.")); return undef; }; $self->setError (0, ""); return $self; } ################################################################################################## Here I did the same thing, I commented out the gettext function call to get it to go pass this point. ################################################################################################# OpenCA::OpenSSL in function setParams sub setParams { print "Entering function setParams \n"; my $self = shift; my $params = { @_ }; my $key; my $rebuild_engine = 0; ## activate debugging $self->{DEBUG} = $params->{DEBUG} if (exists $params->{DEBUG}); foreach $key ( keys %{$params} ) { $self->_debug ("setParams: key: $key"); $self->_debug ("setParams: value: $params->{$key}"); $self->{cnf} = $params->{$key} if ( $key =~ /CONFIG/ ); $self->{gettext} = $params->{$key} if ( $key =~ /GETTEXT/ ); $self->{openssl} = "/apps/local/bin/openssl"; #:w$self->{openssl} = $params->{$key} if ( $key =~ /SHELL/ ); $self->{wrapper} = $params->{$key} if ( $key =~ /WRAPPER/ ); $self->{ENGINE} = $params->{$key} if ( $key =~ /^ENGINE/ ); $self->{PRE_ENGINE} = $params->{$key} if ( $key =~ /PRE_ENGINE/ ); $self->{POST_ENGINE} = $params->{$key} if ( $key =~ /POST_ENGINE/ ); $self->{CALLBACK_HANDLER} = $params->{$key} if ( $key =~ /CALLBACK_HANDLER/); $self->{GET_PIN_CALLBACK} = $params->{$key} if ( $key =~ /GET_PIN_CALLBACK/); $self->{PIN_CALLBACK} = $params->{$key} if ( $key =~ /^PIN_CALLBACK/); $self->{STDERR_CALLBACK} = $params->{$key} if ( $key =~ /STDERR_CALLBACK/); $self->{STDOUT_CALLBACK} = $params->{$key} if ( $key =~ /STDOUT_CALLBACK/); $self->{KEY} = $params->{$key} if ( $key =~ /KEY/ ); $self->{PASSWD} = $params->{$key} if ( $key =~ /PASSWD/ ); $self->{PEM_CERT} = $params->{$key} if ( $key =~ /PEM_CERT/ ); $self->{tmpDir} = $params->{$key} if ( $key =~ /TMPDIR/ ); $self->{binDir} = $params->{$key} if ( $key =~ /BINDIR/ ); if ( $key =~ /OPENCA_SV/ ) { $self->{openca_sv} = $params->{$key}; $self->{verify} = $self->{openca_sv}." verify"; $self->{sign} = $self->{openca_sv}." sign"; $self->{decrypt} = $self->{openca_sv}." decrypt"; $self->{encrypt} = $self->{openca_sv}." encrypt"; $rebuild_engine = 1; } $ENV{RANDFILE} = $params->{$key} if ( $key =~ /RANDFILE/ ); $self->{DEBUG} = $params->{$key} if ( $key =~ /DEBUG/ ); open STDERR, $params->{$key} if ( $key =~ /STDERR/ ); } $self->{shell} = $self->{openssl}; # add wrapper to commands that make use of private keys if ((exists $self->{wrapper}) and $self->{wrapper}) { foreach (qw(shell sign decrypt)) { if (exists $self->{$_}) { $self->{$_} = $self->{wrapper} . " " . $self->{$_}; } } } print "Leaving function setParams\n"; return 1; } ################################################################################################# Here I added the line $self->{openssl} = "/apps/local/bin/openssl"; because it was null before and openssl was not passed. ################################################################################################# and here is what was in the log OpenCA::Crypto->addToken: argument: name: DER_CERT OpenCA::Crypto->addToken: argument: name: UTILITY OpenCA::Crypto->addToken: argument: name: CONFIG OpenCA::Crypto->addToken: argument: name: LOCK_FILE OpenCA::Crypto->addToken: argument: name: TOKEN_MODE OpenCA::Crypto->addToken: argument: name: PEM_CERT OpenCA::Crypto->addToken: argument: name: GETTEXT OpenCA::Crypto->addToken: argument: name: SLOT OpenCA::Crypto->addToken: argument: name: PASSWD_PARTS OpenCA::Crypto->addToken: argument: name: DEBUG OpenCA::Crypto->addToken: argument: name: KEY OpenCA::Crypto->addToken: argument: name: OPENCA_SV OpenCA::Crypto->addToken: argument: name: RANDFILE OpenCA::Crypto->addToken: argument: name: OPENCA_TOKEN OpenCA::Crypto->addToken: argument: name: TXT_CERT OpenCA::Crypto->addToken: argument: name: CHAIN OpenCA::Crypto->addToken: argument: name: SHELL OpenCA::Crypto->addToken: argument: name: OPENCA_CRYPTO OpenCA::Crypto->addToken: argument: name: TMPDIR OpenCA::Crypto->addToken: argument: name: WRAPPER OpenCA::Crypto->addToken: argument: name: APPID OpenCA::Crypto->addToken: fixed multivalued options OpenCA::Crypto->addToken: try to setup LunaCA3 token OpenCA::Crypto->newToken: entering function OpenCA::Crypto->newToken: argument: DER_CERT OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/cacerts/cacert.der OpenCA::Crypto->newToken: argument: UTILITY OpenCA::Crypto->newToken: argument: /apps/usr/luna/bin/ca3util OpenCA::Crypto->newToken: argument: CONFIG OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/etc/openssl/openssl.cnf OpenCA::Crypto->newToken: argument: LOCK_FILE OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/tmp/ca_hsm_lock OpenCA::Crypto->newToken: argument: TOKEN_MODE OpenCA::Crypto->newToken: argument: standby OpenCA::Crypto->newToken: argument: PEM_CERT OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/cacerts/cacert.pem OpenCA::Crypto->newToken: argument: GETTEXT OpenCA::Crypto->newToken: argument: CODE(0xad3165c) OpenCA::Crypto->newToken: argument: SLOT OpenCA::Crypto->newToken: argument: 1 OpenCA::Crypto->newToken: argument: PASSWD_PARTS OpenCA::Crypto->newToken: argument: 0 OpenCA::Crypto->newToken: argument: DEBUG OpenCA::Crypto->newToken: argument: 1 OpenCA::Crypto->newToken: argument: KEY OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/keys/cakey.pem OpenCA::Crypto->newToken: argument: OPENCA_SV OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/bin/openca-sv OpenCA::Crypto->newToken: argument: RANDFILE OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/.rand OpenCA::Crypto->newToken: argument: OPENCA_TOKEN OpenCA::Crypto->newToken: argument: CA OpenCA::Crypto->newToken: argument: TXT_CERT OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/cacerts/cacert.txt OpenCA::Crypto->newToken: argument: CHAIN OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/chain OpenCA::Crypto->newToken: argument: SHELL OpenCA::Crypto->newToken: argument: /apps/local/bin/openssl OpenCA::Crypto->newToken: argument: OPENCA_CRYPTO OpenCA::Crypto->newToken: argument: OpenCA::Crypto=HASH(0xb4e44b8) OpenCA::Crypto->newToken: argument: TMPDIR OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/tmp OpenCA::Crypto->newToken: argument: WRAPPER OpenCA::Crypto->newToken: argument: OpenCA::Crypto->newToken: argument: APPID OpenCA::Crypto->newToken: argument: 11:10 OpenCA::Crypto->newToken: class: OpenCA::Token::LunaCA3 OpenCA::Crypto->newToken: no error during new OpenCA::Crypto->newToken: new token present OpenCA::Crypto->addToken: token CA successfully added OpenCA::Crypto->new: crypto layer is ready OpenCA::Crypto->getToken: entering function OpenCA::Crypto->getToken: CA OpenCA::Crypto->getToken: token added OpenCA::Crypto->getToken: token is present OpenCA::Crypto->getToken: token is usable OpenCA::Crypto->getToken: entering function OpenCA::Crypto->getToken: LOG OpenCA::Crypto->addToken: entering function OpenCA::Crypto->addToken: LOG OpenCA::Crypto->addToken: checking name OpenCA::Crypto->addToken: checking name OpenCA::Crypto->addToken: checking name OpenCA::Crypto->addToken: name ok OpenCA::Crypto->addToken: loading mode OpenCA::Crypto->addToken: loading options OpenCA::Crypto->addToken: option name: SHELL OpenCA::Crypto->addToken: option value: /apps/local/bin/openssl OpenCA::Crypto->addToken: option name: WRAPPER OpenCA::Crypto->addToken: option value: OpenCA::Crypto->addToken: option name: KEY OpenCA::Crypto->addToken: option value: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/keys/log_key.pem OpenCA::Crypto->addToken: option name: PASSWD_PARTS OpenCA::Crypto->addToken: option value: 1 OpenCA::Crypto->addToken: option name: PEM_CERT OpenCA::Crypto->addToken: option value: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/cacerts/log_cert.pem OpenCA::Crypto->addToken: option name: CHAIN OpenCA::Crypto->addToken: option value: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/chain OpenCA::Crypto->addToken: option name: OPENCA_SV OpenCA::Crypto->addToken: option value: /apps/var/OpenCA/ca/0921/vtc1sca/bin/openca-sv OpenCA::Crypto->addToken: option name: TMPDIR OpenCA::Crypto->addToken: option value: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/tmp OpenCA::Crypto->addToken: option name: CONFIG OpenCA::Crypto->addToken: option value: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/etc/openssl/openssl.cnf OpenCA::Crypto->addToken: option name: RANDFILE OpenCA::Crypto->addToken: option value: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/.rand OpenCA::Crypto->addToken: option name: DEBUG OpenCA::Crypto->addToken: option value: 0 OpenCA::Crypto->addToken: loaded options OpenCA::Crypto->addToken: argument: name: CONFIG OpenCA::Crypto->addToken: argument: name: TOKEN_MODE OpenCA::Crypto->addToken: argument: name: PEM_CERT OpenCA::Crypto->addToken: argument: name: GETTEXT OpenCA::Crypto->addToken: argument: name: PASSWD_PARTS OpenCA::Crypto->addToken: argument: name: DEBUG OpenCA::Crypto->addToken: argument: name: KEY OpenCA::Crypto->addToken: argument: name: OPENCA_SV OpenCA::Crypto->addToken: argument: name: RANDFILE OpenCA::Crypto->addToken: argument: name: OPENCA_TOKEN OpenCA::Crypto->addToken: argument: name: CHAIN OpenCA::Crypto->addToken: argument: name: SHELL OpenCA::Crypto->addToken: argument: name: TMPDIR OpenCA::Crypto->addToken: argument: name: OPENCA_CRYPTO OpenCA::Crypto->addToken: argument: name: WRAPPER OpenCA::Crypto->addToken: fixed multivalued options OpenCA::Crypto->addToken: try to setup OpenSSL token OpenCA::Crypto->newToken: entering function OpenCA::Crypto->newToken: argument: CONFIG OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/etc/openssl/openssl.cnf OpenCA::Crypto->newToken: argument: TOKEN_MODE OpenCA::Crypto->newToken: argument: standby OpenCA::Crypto->newToken: argument: PEM_CERT OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/cacerts/log_cert.pem OpenCA::Crypto->newToken: argument: GETTEXT OpenCA::Crypto->newToken: argument: CODE(0xad3165c) OpenCA::Crypto->newToken: argument: PASSWD_PARTS OpenCA::Crypto->newToken: argument: 1 OpenCA::Crypto->newToken: argument: DEBUG OpenCA::Crypto->newToken: argument: 1 OpenCA::Crypto->newToken: argument: KEY OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/keys/log_key.pem OpenCA::Crypto->newToken: argument: OPENCA_SV OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/bin/openca-sv OpenCA::Crypto->newToken: argument: RANDFILE OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/.rand OpenCA::Crypto->newToken: argument: OPENCA_TOKEN OpenCA::Crypto->newToken: argument: LOG OpenCA::Crypto->newToken: argument: CHAIN OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/chain OpenCA::Crypto->newToken: argument: SHELL OpenCA::Crypto->newToken: argument: /apps/local/bin/openssl OpenCA::Crypto->newToken: argument: TMPDIR OpenCA::Crypto->newToken: argument: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/tmp OpenCA::Crypto->newToken: argument: OPENCA_CRYPTO OpenCA::Crypto->newToken: argument: OpenCA::Crypto=HASH(0xb4e44b8) OpenCA::Crypto->newToken: argument: WRAPPER OpenCA::Crypto->newToken: argument: OpenCA::Crypto->newToken: class: OpenCA::Token::OpenSSL OpenCA::OpenSSL->setParams: key: DEBUG OpenCA::OpenSSL->setParams: value: 1 OpenCA::OpenSSL->setParams: key: KEY OpenCA::OpenSSL->setParams: value: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/keys/log_key.pem OpenCA::OpenSSL->setParams: key: OPENCA_SV OpenCA::OpenSSL->setParams: value: /apps/var/OpenCA/ca/0921/vtc1sca/bin/openca-sv OpenCA::OpenSSL->setParams: key: CONFIG OpenCA::OpenSSL->setParams: value: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/etc/openssl/openssl.cnf OpenCA::OpenSSL->setParams: key: RANDFILE OpenCA::OpenSSL->setParams: value: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/.rand OpenCA::OpenSSL->setParams: key: CHAIN OpenCA::OpenSSL->setParams: value: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/chain OpenCA::OpenSSL->setParams: key: SHELL OpenCA::OpenSSL->setParams: value: /apps/local/bin/openssl OpenCA::OpenSSL->setParams: key: TOKEN_MODE OpenCA::OpenSSL->setParams: value: standby OpenCA::OpenSSL->setParams: key: GETTEXT OpenCA::OpenSSL->setParams: value: CODE(0xad3165c) OpenCA::OpenSSL->setParams: key: PEM_CERT OpenCA::OpenSSL->setParams: value: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/crypto/cacerts/log_cert.pem OpenCA::OpenSSL->setParams: key: TMPDIR OpenCA::OpenSSL->setParams: value: /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/tmp OpenCA::OpenSSL->setParams: key: WRAPPER OpenCA::OpenSSL->setParams: value: OpenCA::OpenSSL->setError: errno: 0 OpenCA::OpenSSL->setError: errval: OpenCA::Crypto->newToken: no error during new OpenCA::Crypto->newToken: new token present OpenCA::Crypto->addToken: token LOG successfully added OpenCA::Crypto->getToken: token added OpenCA::Crypto->getToken: token is present OpenCA::Crypto->getToken: token is usable OpenCA::Crypto->getToken: entering function OpenCA::Crypto->getToken: CA OpenCA::Crypto->getToken: token added OpenCA::Crypto->getToken: token is present OpenCA::Crypto->getToken: token is usable OpenCA::Crypto->getToken: entering function OpenCA::Crypto->getToken: CA OpenCA::Crypto->getToken: token added OpenCA::Crypto->getToken: token is present OpenCA::Crypto->getToken: token is usable Process Backgrounded 2005/02/02-10:50:08 OpenCA::Server (type Net::Server::Fork) starting! pid(25841) OpenCA::OpenSSL->_stop_shell: try to stop shell Binding to UNIX socket file /apps/var/OpenCA/ca/0921/vtc1sca/OpenCA/var/tmp/openca_socket using SOCK_STREAM ####################################################################### then it fails any ideas? best regards Bahaa Al-amood On Wed, 2005-02-02 at 10:05 -0500, Bahaaldin Al-amood wrote: > Michael, > > I have to use my own debugging statements since I think the debug > function here does not work and it is the one being called as AUTLOAD > infinitely. I put these debugging statement because I do not get any of > the relevant output in the log even though I enabled debugging. here is > a trace of just output to debugging statements I put in the relevant > parts of the code: > > > [EMAIL PROTECTED] etc]$ ./openca_rc restart > Shutting down OpenCA ... > Stopping XML cache ...done > Stopping openca server ...done > Starting OpenCA ... Enter OpenCA::Token:LunaCA3 sub new > Calling self->{OPENSSL} = OpenCA::OpenSSL->new ($keys ) Enter > OpenCA::OpenSSL sub new > Entering function setParams > Leaving function setParams > Just before if (self->{gettext} ) > self->setError (7700110, "There is no translation function > specified.")./openca_rc: line 26: 22881 Killed > $openca_start > FAILED > > > best regards, > Bahaa Al-amood > > > On Wed, 2005-02-02 at 15:41 +0100, Michael Bell wrote: > > Bahaaldin Al-amood wrote: > > > Hi all, > > > > > > from the debuging I have been doing on the LunaCA3 module it seems that > > > OpenCA::OpenSSL has issues with "gettext" in the sub new which causes it > > > to fail. any help here is welcome. > > > > How about a small trace or other debugging output ... ;) > > > > Michael
smime.p7s
Description: S/MIME cryptographic signature