ModuleInterfaces: Difference between revisions

Jump to navigation Jump to search
Line 26: Line 26:
=== In Error State ===
=== In Error State ===


The boolean global variable <code>sftk_fatalError</code> tracks whether the NSS cryptographic module is in the Error state. Most PKCS #11 functions, including all the functions that output data via the data output interface, check the <code>sftk_fatalError</code> state variable on entry, and if it is true, return the CKR_DEVICE_ERROR error code immediately. Only the functions that shut down and restart the module, reinitialize the module, or output status information can be invoked in the Error state: FC_GetFunctionList, FC_Initialize, FC_Finalize, FC_GetInfo, FC_GetSlotList, FC_GetSlotInfo, FC_GetTokenInfo, FC_InitToken, FC_CloseSession, FC_CloseAllSessions, and FC_WaitForSlotEvent.
The boolean state variable <code>sftk_fatalError</code> tracks whether the NSS cryptographic module is in the Error state. Most PKCS #11 functions, including all the functions that output data via the data output interface, check the <code>sftk_fatalError</code> state variable and, if it is true, return the <code>CKR_DEVICE_ERROR</code> error code immediately. Only the functions that shut down and restart the module, reinitialize the module, or output status information can be invoked in the Error state. These functions are <code>FC_GetFunctionList</code>, <code>FC_Initialize</code>, <code>FC_Finalize</code>, <code>FC_GetInfo</code>, <code>FC_GetSlotList</code>, <code>FC_GetSlotInfo</code>, <code>FC_GetTokenInfo</code>, <code>FC_InitToken</code>, <code>FC_CloseSession</code>, <code>FC_CloseAllSessions</code>, and <code>FC_WaitForSlotEvent</code>.


=== During Self-Tests ===
=== During Self-Tests ===


The NSS cryptographic module performs power-up self-tests in FC_Initialize and FC_Login.
The NSS cryptographic module performs power-up self-tests in the <code>FC_Initialize</code> function. Since no PKCS #11 function (except <code>FC_GetFunctionList</code>) may be called before the NSS cryptographic module is "powered up" (i.e., before <code>FC_Initialize</code> returns successfully), all data output via the data output interface is inhibited while <code>FC_Initialize</code> is performing the self-tests.
 
No PKCS #11 function (except FC_GetFunctionList) works before the NSS cryptographic module is "powered up" (i.e., before FC_Initialize is called), so all data output via the data output interface is inhibited while FC_Initialize is performing the self-tests. When FC_Initialize is successful a global boolean variable is set to true. When FC_Login is successful a second global boolean, isLoggedIn, is set to true.
 
All functions that use secret or private cryptographic keys, including those that output data via the data output interface, check the global isLoggedIn boolean and, if it is false return the CKR_USER_NOT_LOGGED_IN error code immediately.  Only the following functions may be called when the user is not logged in to the NSS cryptographic module: FC_GetFunctionList, FC_Finalize, FC_GetInfo, FC_GetSlotList, FC_GetSlotInfo, FC_GetTokenInfo, FC_GetMechanismList, FC_GetMechanismInfo, FC_InitToken, FC_InitPIN, FC_OpenSession, FC_CloseSession, FC_CloseAllSessions, FC_GetSessionInfo, FC_Login, FC_DigestInit, FC_Digest, FC_DigestUpdate, FC_DigestFinal, FC_SeedRandom, FC_GenerateRandom, FC_GetOperationState, FC_SetOperationState, and FC_WaitForSlotEvent.
 
Notes: FC_InitPIN may be called initially with the null password, after that the existing password must be supplied. FC_SeedRandom adds entropy data to the seed. It does not replace the seed.


== Disconnecting the Output Data Path From the Key Processes ==
== Disconnecting the Output Data Path From the Key Processes ==


During key generation and key zeroization, the NSS cryptographic module doesn't execute any "printf" or logging statement that outputs sensitive information. Audit logging is performed as requested, but the entry does not contain cryptographically sensitive information. The NSS cryptographic module doesn't return the function output arguments until key generation or key zeroization is finished. Therefore, the logical paths used by output data exiting the module are logically disconnected from the processes/threads performing key generation and key zeroization.
During key generation and key zeroization, the NSS cryptographic module doesn't execute any "printf" or logging statement that outputs sensitive information. Audit logging is performed as requested, but the entry does not contain cryptographically sensitive information. The NSS cryptographic module doesn't return the function output arguments until key generation or key zeroization is finished. Therefore, the logical paths used by output data exiting the module are logically disconnected from the processes/threads performing key generation and key zeroization.
canmove, Confirmed users
937

edits

Navigation menu