NSS 3.1 Plan

Newsgroup: mozilla.dev.tech.crypto
Engineering lead: Bob Relyea
Product Manager: Roland Jones
Engineering manager: Wan-Teh Chang

Draft Version: 0.1.3


Introduction

Earlier this year, we contributed NSS to the open source community. All the code that we could publish was released as NSS 3.0 on mozilla.org. To build NSS 3.0 requires a licensed copy of RSA's BSAFE Crypto-C Library to provide low-level crypto functionality.

The main goal of NSS 3.1 is to have a complete open-source implementation of the NSS crypto libraries. A second goal is to establish a framework to which developers and OEMs can contribute patches, such as assembler code, to optimize performance on their platforms.

Features and Tasks

Bugs Fixed

Release Focus

Platforms Supported

Platform Build Certify Compiler(s)
AIX 4.3.3 (32 bit) 4.3.3 xlC/C++ 3.6.4
4.3.3 (64 bit) 4.3.3 xlC/C++ 3.6.4
Compaq Tru64 4.0D 4.0D 
5.0A
(cc) Digital C v5.6-071
HP-UX 11.0 (32 bit) 11.0 (32 bit) C compiler: A.11.01.00
11.0 (64 bit) 11.0 (64 bit) C compiler: A.11.00.00
Linux RedHat 6.0 RedHat 6.0, 6.1, 6.2 egcs-1.1.2
Macintosh 8.5  8.5 
9.x
Metrowerks 
CodeWarrior
NT NT 4.0 w/ SP 6a NT 4.0 w/ SP 6a
Win2000
VC++ 6.0 Service Pack 3
Windows NT 4.0 w/ SP 6a 95 OSR2
98 SE
NT 4.0 w/ SP 6a
Win2000
VC++ 6.0 Service Pack 3
Solaris 2.6 2.6 and 8 (32-bit and 64-bit) WorkShop Compilers 
C/C++ version 4.2 
8 (64-bit) 8 (64-bit) WorkShop Compilers 
C/C++ version 5.0

Doc Plan

Preliminary documentation for the S/MIME Toolkit API will be added to the NSS Reference Documentation.

Schedule

Task Date
BigNum package integrated, without performance tuning 7/28
Feature cut-off 8/4
Beta 9/11
Certification (RTM Candidate) 10/6
RTM 10/13

Root Cert Plan

We need to change the way we handle updating root certs to meet the following new goals:
  • Be able to include the certs in the source tree.
  • Allow vendors to replace our set of root certs with their own without conflicting between their application and ours.
  • Allow field upgrade of the root certs without building a new version of the NSS libraries or new versions of the applications that use the libraries.
  • We discussed three possible solutions to the problems of multiple applications defining their own list of trusted roots.

    Here is the summary of those solutions.

    Option 1

    Option 2

    Option 3

    Option 3: Implementation

    In fleshing out option 3, we need to decide how to implement it and what can we do to reduce the risks involved.

    First we should assume minimal changes to the PKCS #11 loading code. Rather than including the whole Stan infrastructure for loading PKCS #11 modules, we can simply use the existing structure, with code that can help 'discover' the applications trusted root cert base.

    We also don't need to implement the Stan wrapped key semantics for this to work.

    We will have to introduce the new Stan trust module, at least for a single trust domain. We only need enought to implement it under the existing API.

    The basic design would be to have the root certs live in a read-only 'Database'. This DB would be accessed through a separate PKCS #11 module. The cert code would be modified to only search for certificates through PKCS #11, and not through the cert DB code.

    Trust will include both accept and reject versions of trust. Trust would be merged through a heiarchy of trusted modules.

    Certificate verification would have to be modified to support this trust information.

    Issues that need to be addressed:

    Useful links