Douglas E. Engert wrote:
> This sounds like an interesting change. But could it be reworked to
> allow the use of either the slot_num or the slot_description?
> (But not both.) This would then avoid all the #ifdef SUN_SOLARIS
> and make the mod more general, and easier to test.
>
This sounds like a good suggestion.  In fact,  I was also thinking about 
this arrangement prior to submit this patch.
I will go ahead to make the enhancement and resummit the patch.

Thanks,
Huie-Ying

> Huie-Ying Lee wrote:
>> Hi,
>>
>> To port the pam_pkcs11 module to OpenSolaris, we made a change in the 
>> slot/token selection scheme to resolve an incompatibility issue 
>> between the OpenSC/pam_pkcs11 module and Solaris Cryptographic 
>> Framework library (a PKCS#11 implementation).     We would like to 
>> share with you why the changes are necessary and hopefully they will 
>> be adopted by the community.
>>
>> ======================================
>> Problem
>> ======================================
>> Currently, the pam_pkcs11 module uses slot_num for the slot/token 
>> selection.   However, this is not safe because there is no guaranteed 
>> ordering of slots returned from the PKCS#11 C_GetSlotList() function, 
>> according to the RSA PKCS#11 specification.
>>
>> On Solaris OS, the libpkcs11 library uses plug-ins to provide the 
>> slots.  An administrator can install or uninstall a plug-in by using 
>> a utility command called "cryptoadm" on Solaris.  Therefore, a 
>> particular slot may be associated with different slot numbers on 
>> different systems or even on the same system on different runs.
>>
>> ======================================
>> Solution
>> ======================================
>> To address the above issue,  our solution is to replace the 
>> "slot_num" entry with a "slot_description" entry in the 
>> "pam_pkcs11.conf" configuration file for the slot/token selection as 
>> illustrated below.
>>
>> --- pam_pkcs11.conf ----
>>
>> pkcs11_module default {
>>
>>   module = /usr/lib/libpkcs11.so;
>>   description = "Solaris PKCS#11 Cryptographic Framework library";
>>     #
>>   # Which slot to use. The slot is specified by the slot description.
>>   # For example, slot_description = "Sun Crypto Softtoken".
>>   #
>>   # An administrator can use the "cryotoadm list -v" command to find
>>   # all the available slots and their slot descriptions. For more    
>> # information, see the libpkcs11(3LIB) and cryptoadm(1m) man pages.
>>   #
>>   # The default value is "none" which means to use the first slot with
>>   # an available token.
>>   #
>>   slot_description = "none"
>>
>>   ...
>>
>> }
>>
>> The slot_description field will be used to specify the slot to be 
>> used.   Its value should be the slot label for the slot, which is 
>> basically same as the slotDescription string in the CK_SLOT_INFO 
>> structure returned from the C_GetSlotInfo()function.
>>
>> In the original slot_num design, when slot_num is 0, it means to use 
>> the first slot with an available token.   To provide a similar 
>> functionality, an administrator can specify slot_description to be 
>> "none", which also means to use the first slot with an available token.
>>
>> ======================
>> Souce changes
>> ======================
>> To implement the solution,  we added and modified several functions 
>> to the pam_pkcs11 source.    We also successfully tested on Solaris OS.
>> Attached is the patch file for the source changes.   Please let me 
>> know if you have any questions or comments.
>>
>> Thanks,
>> Huie-Ying
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> opensc-devel mailing list
>> [email protected]
>> http://www.opensc-project.org/mailman/listinfo/opensc-devel
>

_______________________________________________
opensc-devel mailing list
[email protected]
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to