[xmlsec] xmlsec-nss patch
Tejkumar Arora
tej@netscape.com
Mon, 21 Jul 2003 09:27:39 -0700
Aleksey Sanin wrote:
> Tej,
>
> It took less time than I expected to look at your changes :) Almost
> everything looks
> great except few minor things listed bellow. I have checked in your
> patch into
> the same XMLSEC_NSS_030714 with only one change (item 0) bellow).
> However, there are a couple items (1) and 2)) that needs to be resolved
> before we can put this code into the trunk.
>
> BTW, I can't run the xmlsec-nss tests because of certutiland I could
> not test xmlsec-nss
> with valgrind :(
That's a bummer. certutil is available in an official NSS
distribution - I did not expect that mozilla-nss package
will not have it.... I'll try to figure something out..
>
> Aleksey
>
>
>
> 0) I have moved the NSS DB reset code from test*.sh scripts to the top
> level
> Makefile.am. No need to repeat it again and again. This allowed me to
> remove
> xmlsec-config option from the test*.sh scripts. Also I don't think that
> we want
> to pass crypto_config to these scripts because nobody else should use it
> anyway (it is also removed).
Another reason to use xmlsec-config in the *.sh scripts was
to derive the name of the valgrind suppression file (nss.supp,
openssl.supp....). I noticed that you just list them all -
not quite right but it works :).
> 1) As I mentioned before, I don't have "cryptoutil" installed. Thus
> other users
> might miss it too :) We need to find a way to avoid using this tool in
> the tests scripts.
> Is it possible to initializa the nss db from xmlSecNssAppInit() instead
> (if config is not
> NULL and NSS DB does not exist there, create it)?
I had tried that, but it turns out that a db created
on the fly needs to have the password initialized. The
code in NSS to initialize the password is not exported....
so I'd have to file a NSS bug.
Another reason I went with the approach I took is that
it is more flexible (for example, it allows you to
pre-populate the db with anything you wanted...).
It gives any crypto implementation a chance to run
some start/stop scripts.
> 2) xmlSecNssAppPkcs12Load(): why do you do these initializations in this
> function?
> PORT_SetUCS2_ASCIIConversionFunction(xmlSecNssAppAscii2UCS2Conv);
> SEC_PKCS12EnableCipher(...)
> SEC_PKCS12EnableCipher(...)
> It seems to me that it's a wrong idea. These initializations are global.
> The function
> can be called many times from multiple threads. IMO, these
> initialization calls
> need to be done once in applicaiton init function (xmlSecNssAppInit?).
> Please take a look at it.
These are idempotent.... but I agree with you.
I'll take a look.
> 3) keysstore.c: I wonder why do you need to have simple keys store in
> default nss
> keys manager? Why you could not use only NSS keydb?
The generic keysstore interface defines the keystorefindmethod
to return a "xmlsecKeyPtr". In other words, the method is
returning xmlsec objects and not just crypto objects.
The xmlsec object contain a lot more info than
just the crypto handles. So NSS db can't replace the
keystore completely. I'm using the NSS db as an
alternative source of keys (sort of a "read-through" cache).
I was thinking about speeding up lookups in the simple
keysstore, but it is not easy to replace the list with
a hashtable because many different criteria are used
to lookup a key, and may not all be defined (name, type,
usage, etc..).
> 4) warnings about __CERT_NewTempCertificate function:
> src/nss/app.c:847: warning: implicit declaration of function
> `__CERT_NewTempCertificate'
> x509.c:1494: warning: implicit declaration of function
> `__CERT_NewTempCertificate'
> Is it worth it to put a declaration somewhere in xmlsec-nss headers if
> it does not exist in NSS?
I have this in my list of nss problems to report.
I can put it in xmlsec-nss header as a workaround fow
now.
-Tej