Patrick wrote:
> 
> Well, I'd be curious to know if you could use any of those acpkcs.dll with
> an NSS-enabled client app and successfully use a cert off an ActivCard
> smartcard for SSL client auth?

So would I.  I've got two readers and all the drivers, but no cards for the 
readers.  Our IT department is not ready to distribute them yet.  :(

> And how does ActivCard exactly make their supposedly generic PKCS#11 library
> usable in Communicator? That answer will explain how the PKCS#11 lib then
> gets "hobbled" with respect to usage in latest NSS.

Communicator didn't use all the possible facets of PKCS#11, so a module 
vendor could implement just the subset that Communicator used and stop 
there instead of implementing the full thing. Many vendors did exactly that.
 
Say, PKCS#11 defines some function that returns a structure with 15 members, 
but Communicator only uses 11.  Some implementations might only fill in 
those 11 members and leave the other 4 uninitialized or filled in 
incorrectly.  But NSS might use all 15 of them, and when NSS goes to use 
one of those 4 that weren't initialized correctly, boom.  

For example, PKCS#11 defines a struct named CK_TOKEN_INFO.  The last 4
fields in that struct are: 
        ulTotalPublicMemory,
        ulFreePublicMemory,
        ulTotalPrivateMemory,
        ulFreePrivateMemory.
As the names imply, those are 4 "unsigned longs".  I know of one vendor's
implementation that seems to fill in those fields with values that can
be expressed as 
        (correct_value << 16) | 0x4000.
AFAIK, Communicator doesn't care about those values, so...

PKCS#11 defines a large collection of "object attributes" that objects like 
keys are supposed to have.  An application should be able to set or 
interrogate them all (although some are sensitive).  Some vendors don't
implement the ones that Communicator didn't use.  NSS uses more than
Communicator did, so again ...

An example of this is the CKA_MODULUS_BITS attribute on a private key.
It's merely the length of the modulus in bits, and should be a readable
attribute.  Communicator apparently didn't ask for that.  NSS does.  

I believe that a module that works with NSS should also work with 
Communicator.  Communicator uses a subset of what NSS uses.

--
Nelson Bolyard            
Disclaimer:                  I speak for myself, not for Netscape

Reply via email to