Stas Bekman wrote:

> Peter Rothermel wrote:
>
> >
> > PerlChildInitHandler Apache::foo->loadkey
> >
> > Will the genkey method get execute at the
> > initialization of each thread?
>
> Apache doesn't provide such a hook yet. May be in the future.
>
> child_init is for child process init, not threads.
> 
>http://perl.apache.org/release/docs/2.0/user/handlers/handlers.html#PerlChildInitHandler
>
> what are you trying to do?

I'm encrypting/decrypting data within cookies that are holding session keys
for authentication purposes.  I decrypt the session key within the cookie data,
whenever I get an http request that has a cookie in the header.

The RSA keys that I use for encrytion/decryption are regenerated when the Apache
server is started.  My module has a load_key subroutine that I call before I do any
encryption or decryption.  This returns a RSA object that is initialized with a global
var that hold a 2048 bit RSA key.  If the global var is empty I generate a new key.

The code works OK but I seem to be generating a 2048 bit key the first time
that a user logs into my site. This key generation takes awhile. I would prefer
generating the key when server/thread/interupter is started. I was hoping that
a PerlClhildInitHandler could be used to call the gen_key subroutine to load
the data into global var $private_key_string.

my $self = shift;use vars qw($VERSION $private_key_string @ISA);

sub gen_key : method {
    my ($self,$r) = @_;
    my $rlog = $r->log;

    my $tmprsa = Crypt::OpenSSL::RSA->new();
    $rlog->notice("Generating a RSA key");
    $tmprsa->generate_key(2048);
    $private_key_string = $tmprsa->get_private_key_string();
}


sub load_key : method {
    my ($self,$r) = @_;
    my $rlog = $r->log;

    my $rsa;
    if (length($private_key_string))  {
        $rsa = Crypt::OpenSSL::RSA->new();
        $rsa->load_private_key( $private_key_string );
    }
    else  {
         $rsa = $self->gen_key;
    }
    return $rsa;
}


>
>
> You should try to write your code in mpm-agnostic way if possible. so
> the same code can run under various mpms.
>
> __________________________________________________________________
> Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
> http://stason.org/     mod_perl Guide ---> http://perl.apache.org
> mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
> http://modperlbook.org http://apache.org   http://ticketmaster.com

Reply via email to