Note: This document was written around ~March 2010.For an update on the status, see the chromium-dev archives, e.g. this thread.
Current StatusChromium uses the system SSL and crypto libraries on each platform.
Proposal
RequirementsWe want Chromium to integrate nicely with the OS.
IssuesAlthough using the system SSL and crypto libraries enabled us to accomplish perfect integration with the system certificate and key stores and support the native interface to smart cards, it has a few issues.
Three Components of SSLSSL consists of three components:
Crypto libraries have a long history of using a pluggable architecture for crypto modules. This allows an application to use an alternative crypto module (for better security or performance) or multiple crypto modules. Certificate verification is easy to separate from the SSL protocol. The only other certificate processing an SSL implementation needs to do is to extract the public key from a certificate so it can perform crypto operations with the public key. Using NSS for SSLWe plan to switch to NSS for SSL so that we can use new SSL features across all versions of OS. Because of tight integration of the key store with the crypto library, the requirement of using the system key store implies we need to use the system crypto library for private key operations. Although not necessary, we plan to use the system crypto library for certificate verification so that we can benefit from the system-provided certificate chain viewer and certificate management tool. This mixed use of NSS and system crypto library is possible because the three components of SSL can be separated. CostsNSS adds 781.5 KB to the size of Chromium on Windows, or a 4.0% increase (on 2010-01-21). We had to create a custom build system to build NSS as part of Chromium. This was necessary because Chromium is a single DLL on Windows and everything is statically linked in. |
