Howard Chu wrote, On 2008-08-10 03:30:
>> Nelson B Bolyard wrote:

>>> Someone could write a PKCS#11 module that uses PEM files as its storage.
>>> It wouldn't be FIPS validated, at least not initially.  
> 
> In that case, there's even less motivation to adopt NSS, since OpenSSL is 
> moving ahead with validation 

Assuming you mean FIPS validation, NSS has been FIPS validated 4 times
already, and I expect it will start a 5th validation this year for the
latest version, NSS 3.12.x.

> Following on from the discussion in 
> https://bugzilla.mozilla.org/show_bug.cgi?id=292127 today I took a look
> at what would be involved in adding NSS support to OpenLDAP. Aside from
> the lack of hassle-free PEM support (which it appears may not be a
> problem for much longer)

When one considers all the important reasons to choose a crypto
implementation, support for one file format which is not used in any
standard protocols (e.g. TLS, SMIME) doesn't seem like a biggie.

All the makers of different crypto libraries each had their own separate
ways of storing private keys at one time (and still do).  They agreed
about 10 years ago to adopt PKCS#12 as the one common format for interchange
of private keys, and today they all offer tools for making
and using PKCS12 files.

> the other obvious source of pain is the lack of an intuitive API for 
> selecting cipher suites. 

Huh?  What's unintuitive about these?

SSL_CipherPrefSet(PRFileDesc *fd, PRInt32 cipher, PRBool enabled);
SSL_CipherPrefGet(PRFileDesc *fd, PRInt32 cipher, PRBool *enabled);
SSL_CipherPrefSetDefault(PRInt32 cipher, PRBool enabled);
SSL_CipherPrefGetDefault(PRInt32 cipher, PRBool *enabled);

Further, the function
SSL_GetCipherSuiteInfo(PRUint16 cipherSuite, SSLCipherSuiteInfo *info,
                       PRUintn len);
outputs a structure of info about any supported cipher suite, making
it easy to construct a localized GUI for the user tho choose from among
the offered cipher suites, and have that GUI grow automatically with new
NSS releases, without having to recode the application.  It eliminates
or reduces application dependencies on hard coded tables of information
about cipher suites.

> The notion of NSS_SetDomesticPolicy / NSS_SetExportPolicy /
> NSS_SetFrancePolicy is quaint at best. It's a relic of a closed-source
> legacy that makes no sense in FOSS that can be freely used anywhere in
> the world.

There are still countries in which it is a crime to use certain forms of
encryption, open source or not.  Those functions (and more that you didn't
mention, such as
  SECStatus SSL_CipherPolicySet(PRInt32 cipher, PRInt32 policy);
  SECStatus SSL_CipherPolicyGet(PRInt32 cipher, PRInt32 *policy);
) continue to be useful for people making products for use in those
countries, making it possible to implement arbitrary national policies,
of which the 3 functions you mentioned are examples.

> While there appears to be a function for enumerating the available cipher 
> suites and their names, it would also be convenient to have a function that 
> returns the cipher number for a given name, to make it easier to work with 
> settings read from a configuration file.

And I suppose you would want such a function to use OpenSSL's non-standard
name strings for that, right?

BTW, Are you aware of the Linux Foundation's "Linux Standard Base" (LSB)
effort?  http://www.linuxfoundation.org/en/LSB
One of the primary considerations for acceptance into the LSB is binary
backwards compatibility assurances from the libraries.  NSS is being
considered for the LSB as a/the standard library and interface for SSL,
in large part because NSS has been offering shared libs with a strong
guarantee of API and ABI backward compatibility ever since NSS was first
released as shared libraries in 2001 (or 2002, I forget).

If you absolutely must have every thing work exactly like OpenSSL to be
happy, then use OpenSSL.  Complaints about NSS, that it isn't exactly
like OpenSSL aren't going to motivate NSS to change much.  Absent
cryptographic functionality is one thing.  Absent emulation of OpenSSL
is quite another.  Near the beginning of this thread, I asked for people
to report absent crypto functionality.  But so far, what I've heard is:
"It isn't OpenSSL", which is not a statement about cryptographic functionality.
_______________________________________________
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to