Hi,
I found more problems related to crypto engine support in OpenCA::OpenSSL.
My Token->genKey bombed out with an OpenSSL error complaining about
incorrect command line arguments.
Short investigation showed that not all OpenSSL commands accept a -keyform
parameter:
Command -engine -keyform e
gen(rsa|dh|dsa) yes no
req yes yes
ca yes yes
spkac yes no
dgst yes no
pkcs7 yes no
rand yes no
smime yes yes (see OpenCA::OpenSSL::SMIME)
When using the current code, a token implementation has to set both
engine type and key form, such as in OpenCA::Token::OpenSC, LunaCA3
or my new (not yet submitted) ::nCipher:
[...]
$keys->{ENGINE} = "chil -keyform engine";
$keys->{CERT} = $keys->{PEM_CERT};
$self->{OPENSSL} = OpenCA::OpenSSL->new ( %{$keys} );
This always expands to "-engine chil -keyform engine" in all
OpenSSL commands that are using private keys, breaking most of
the Perl module's member functions.
(LunaCA3 even uses an -enginearg parameter. Does this really work?)
Two ways around it, the second being a dirty hack:
- introduce a KEYFORM and maybe ENGINEARG argument to
OpenCA::OpenSSL, just like ENGINE and use it only for the
commands that require them
- s/-keyform\s+\S+//g or similar for all commands that cannot
handle a keyform argument
I'd go for the first option.
I volunteer to implement it and resubmit the code.
BTW: the above $keys->{CERT} = $keys->{PEM_CERT} is required and is
missing from all token implementations short of OpenSSL.pm. I'll file
a bug on SourceForge.
cheers
Martin
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
OpenCA-Devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/openca-devel