On Mon, Dec 5, 2011 at 12:53 PM, Mattes, David <david.mat...@boeing.com> wrote:
> Hi Peter,
>
> I would love to see this functionality in the engine_pkcs11.  We have 
> applications that would benefit from this addition.

I should have a patch ready for submission in a couple of days.  Not
much needs to be changed since the functionality for getting a
certificate already exists; it's just not exposed publicly.

Regards,
Peter

>
> Thanks!
> David
> ----------------------------------------------------------------------
> David Mattes                       The Boeing Company
> PO Box 3707  MC 7L-40              Boeing Research & Technology
> Seattle, WA  98124-2207            Information & Network Technology
> 425-373-2886                       Autonomous & NetEnabled Integration
> 425-213-4691 (cell)
> 425-373-2960 (fax)                 david.mat...@boeing.com
>
>
>
>> -----Original Message-----
>> From: opensc-devel-boun...@lists.opensc-project.org [mailto:opensc-
>> devel-boun...@lists.opensc-project.org] On Behalf Of Peter Ordonez
>> Sent: Thursday, December 01, 2011 1:18 PM
>> To: opensc-devel@lists.opensc-project.org
>> Subject: [opensc-devel] engine_pkcs11 enhancement
>>
>> Hi,
>>
>> I'd like to make an enhancement to engine_pkcs, so I'm sending a
>> message to the community beforehand for feedback.
>>
>> engine_pkcs does not currently provide a way to get a certificate from
>> a PKCS#11 hard token when accessed from OpenSSL.  I'd like to enhance
>> the engine to support the OpenSSL ENGINE_load_ssl_client_cert()
>> function, which returns among other things a x509 certificate.  Since
>> the function provides no way that I can see to specify which
>> certificate to "load", I would do this by adding a method to the
>> engine to set the certificate name before actually getting the
>> certificate.  The way the function would be used when interfacing with
>> OpenSSL would be roughly as follows:
>>
>>         // Set the certificate name (slot-id) to use for a subsequent
>> certificate request
>>         ENGINE_ctrl_cmd(e, "CERT_ID", strlen(cert_name), cert_name,
>> NULL, 0));
>>
>>         // Get the certificate from the engine
>>         ENGINE_load_ssl_client_cert(e, https_ssl, ca_dn, &cert,
>> &key,&othercerts, NULL,NULL)
>>
>>         //  Use the certificate when establishing an SSL session
>>         SSL_CTX_use_certificate(https_ctx, cert);
>>
>>
>> The model is similar to the way that engine is used for setting the
>> PIN as follows:
>>
>>         ENGINE_ctrl_cmd(e, "PIN", strlen(pin), pin, NULL, 0);
>>
>> Subsequent engine private key functions use the PIN if one set;
>> otherwise, the user is prompted.
>>
>> Any feedback would be greatly appreciated.
>>
>> Thanks,
>> Peter
>> _______________________________________________
>> opensc-devel mailing list
>> opensc-devel@lists.opensc-project.org
>> http://www.opensc-project.org/mailman/listinfo/opensc-devel
>
_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to