[xmlsec] xmlsec-nss patches from Sun( 2003-07-22 )

Aleksey Sanin aleksey@aleksey.com
Wed, 23 Jul 2003 08:51:52 -0700


> It is so hard to make you all understand myself because of my poor 
> English. :-)
> My poor English skill! Great, you understand me now. :-)

Well, your English is good enough for me :) I think I understood what 
you want
from the beginning.

> By now, you should have asked several times, "why Pk11SlotList". Some 
> reason are:
> 1. NSS provides a set of functions to manage PK11SlotList;
> 2. User can dynamicly adjust PK11SlotList directly  instead of call 
> xmlSec functions, and which  is safe also because xmlSec only get and 
> reference the slot handler;
> 3. xmlSec care less just to find the suitable slot from the list.

The question I have is: suppose you have to slots A and B that both support
RSA encryption and DSA signatures. And your application wants to use
slot A for RSA encryption and slot B for DSA signatures. I understand
how you can do it with my proposal when application explicitly maps
algorithm to the slot. I am not sure I understand how you can do it with
"Pk11SlotList" inteface you suggest: both slots needs to be in the
list, the GetSlot functions loops thru the list and always selects the 
first one.
I see no difference from original GetBestSlot().


> It is not the best one, it is the suitable one. So I like the name 
> "xmlSecNssSlotInit". :-P

Sure, I don't care :)

>>    int xmlSecNssBestSlotAdopt(CK_MECHANISM_TYPE alg, PK11SlotInfo* 
>> slot) :
>>           Sets "slot" to be used for "alg" (global inside xmlsec).
>
>
> No. Which result in complex lines because there are so many crypto 
> mechanism,
> and which also result in a table that must be maintained internally by 
> xmlSec,
> it is in-flexible. This is another reason why use PK11SlotList.

See example above.

> I don't think so( fallback to PK11_getBestSlot(): I understand this is 
> "if no slot in the slot
> list meet the require( mechanism ), call this function", right?). If a 
> PK11Slot list specified,
> it means only those slot in the list are available, while 
> "GetBestSlot" will search all active
> slots; if not slot list initialized, it means user do not care which 
> slot selected, we can call
> "GetBestSlot".

Well, it's a difference in our proposals :) In my case, I want to let 
user only map algorithms
he cares about and let GetBestSlot() do the rest :) But you are right, 
in case of "list" type API
you suggest it's probably not necessary.

Aleksey