Douglas E. Engert wrote:

Thank you for your help.  Please see my comments below ...

> 
> 
> Huie-Ying Lee wrote:
>> Hi,
>>
>>
>> I'm a Solaris engineer at Sun Micros.  We have been working on porting 
>> the OpenSC/pam_pkcs11 module, version 0.6.0, to Solaris.  During the 
>> porting, I encountered a couple of build issues and I would appreciate 
>> if you can help me with them.
>>
>> Q1: According to the configure.in file, the default value of the 
>> "--with-nss" option is "No". In my build, I am pretty sure that it was 
>> not built with NSS on, because the output of build indicated there was 
>> no NSS support as below.
>>
>>    ---------------------------------
>>    Debugging:           yes
>>    DocBook support:     yes
>>    PC/SC support:       no
>>    CURL support:        no
>>    LDAP support:        yes
>>    NSS support:         no
>>    OPENSSL support:     yes
>>    ---------------------------------
>>
>> However, the resulting module is linked with the NSS libraries.  
>>  -----------------------------------------------
>>   $ldd pam_pkcs11.so
>>   ....
>>       libnspr4.so =>   /usr/lib/mps/libnspr4.so
>>       libplc4.so =>    /usr/lib/mps/libplc4.so
>>       libnss3.so =>    /usr/lib/mps/libnss3.so
> 
> 
> What other libraries are include? Could it be that the Solaris ldap 
> which uses nss is included?
> 

Yes, Solaris ldap uses nss and this is exactly the cause.  Thanks!

> ldd libldap.so
> on Solaris 10 shows it uses  /usr/lib/mps/libnss3.so
> 
> 
>>   ------------------------------------------------
>>
>> Any hint about the reason that these NSS libraries are linked with 
>> pam_pkcs11.so ?  How can I get rid of them ?
> 
> 
> Use OpenLDAP built on OpenSSL :-)
> 
>>
>>
>> Q2: To meet the Solaris file location convention, I changed the 
>> default location of the pam_pkcs11.conf file in the pam_config.c 
>> file.  To reserve the original code, I used CPP "#ifdef" to 
>> differenciate the new code from the original code. For example, 
>> pam_config.c file,
>>
>> -----------------------------------------------------------------------------------
>>  
>>
>>   34  struct configuration_st configuration = {
>>   35          "/etc/pam_pkcs11/pam_pkcs11.conf",      /* char * 
>> config_file; */
>>   36          NULL,                           /* scconf_context *ctx; */
>> -----------------------------------------------------------------------------------
>>  
>>
>>
> 
> A better to do this would be to make the path a define, and change 
> configure.in  to add it to the config.h
> 

Yes, making the path a define will be better for this case.
However, I need to make other changes to get it work on Solaris.  Most of them 
are not location related.  I think I have picked a bad example to show the 
#ifdef problem that I am trying to solve.
> 
>> I changed the above code tp the code below and added the -DSUN_SOLARIS 
>> flag to the Maekfile.am file.
>>
>> -------------------------------------------------------------------------------------
>>  
>>
>>   struct configuration_st configuration = {
>>   #ifdef SUN_SOLARIS
>>         "/etc/security/pam_pkcs11/pam_pkcs11.conf",
>>   #else
>>          "/etc/pam_pkcs11/pam_pkcs11.conf",      /* char * 
>> config_file; */
>>   #endif
>>         NULL,                           /* scconf_context *ctx; */
>> -------------------------------------------------------------------------------------
>>  
>>
>>
>> However, the resulting file still picked up the original line.  It 
>> seems that the generated Makefile file doesn't recognize the new 
>> "SUN_SOLARIS" flag. Currently, I worked around this problem, but I 
>> would like to know which file that I should update so that the 
>> "-DSUN_SOLARIS" will be recognized.
>>
> 
> Did you run the ./bootstrap after updating the Makefile.am?

No, I didn't run the ./bootstrap script but I did run ".configure".

The reason that I didn't run the "./bootstrap" script is because this script 
will remove the config.sub file and the config.guress file.  However, these two 
config.* files are needed by the configure script.  Is this a bug in the 
bootstrap command ?

> 
>>
>> Q3:  For the NLS support, I found that the only file that has the 
>> gettext support is the pam_pkcs11.c file which is part of the 
>> pam_pkcs11 module.  All the utility commands under the src/tools 
>> directory currently do not have the NLS support.  Is this correct ?
>>
>>
>> Note that in order to make it work on Solaris, I also made a design 
>> change to resolve an incompatibility problem between the pam_pkcs11 
>> module and the Solaris Cryptographic framework, a PKCS#11 
>> implementation.  I will explain this problem and my changes in a 
>> seperate email later.
>>
> 
> Are you also working with the Kerberos groups at Sun who are looking 
> pam_krb5 with PKINIT?

Yes, I am working with the Kerberos group at Sun.

> In many environments, this is a better way to use smartcardas for logon. 
> You not only
> login to the local machine, you login to the realm/domain...
> 

Yes, a Kerberos engineer and I have discussed about this a while before.
We concluded that if pam_krb5 is enhanced to support PKINIT, then stacking a 
"pam_pkcs11.so" below the PAM stack is probably redundent.   However, the 
pam_pkcs11 module is still useful for a system that is not a Kerberos client. 

Huie-Ying 
_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to