Geoff,

Just wanted to provide some additional info to Bob's reply.

There are three ways to configure NSS in the FIPS mode.
In our FIPS Security Policy, we describe the low-level method
for people who use only the NSS software cryptographic
module (i.e., libsoftokn3.so/softokn3.dll only).

Most of our users use the whole NSS and can use the
other two methods to enable FIPS mode.  We decided
not to describe these two methods in our FIPS Security
Policy for fear that they may confuse people to think
the entire NSS is the validated module.

1. Use the modutil command-line utility, as Bob said.

2. Call NSS SECMOD_xxx functions to *toggle* the
FIPS mode, as Firefox does here:
http://lxr.mozilla.org/security/source/security/manager/ssl/src/nsPKCS11Slot.cpp#534

534 /* void toggleFIPSMode (); */
535 NS_IMETHODIMP nsPKCS11ModuleDB::ToggleFIPSMode()
536 {
537   nsNSSShutDownPreventionLock locker;
538   // The way to toggle FIPS mode in NSS is extremely obscure.
539   // Basically, we delete the internal module, and voila it
540   // gets replaced with the opposite module, ie if it was
541   // FIPS before, then it becomes non-FIPS next.
542   SECMODModule *internal;
543
544   // This function returns us a pointer to a local copy of
545   // the internal module stashed in NSS.  We don't want to
546   // delete it since it will cause much pain in NSS.
547   internal = SECMOD_GetInternalModule();
548   if (!internal)
549     return NS_ERROR_FAILURE;
550
551   SECStatus srv = SECMOD_DeleteInternalModule(internal->commonName);
552   if (srv != SECSuccess)
553     return NS_ERROR_FAILURE;
554
555   return NS_OK;
556 }

Wan-Teh
_______________________________________________
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to