NSPR is a platform abstraction library that provides a cross-platform API to common OS services. NSS uses NSPR internally as the porting layer. However, a small number of NSPR functions are required for using the certificate verification and SSL functions in NSS. These NSPR functions are listed in this section.
NSPR is automatically initialized by the first NSPR function called by the application. Call
`PR_Cleanup </en-US/PR_Cleanup>`__ to shut down NSPR and clean up its resources.`
NSS uses NSPR’s thread-specific error code to report errors. Call
`PR_GetError </en-US/PR_GetError>`__ to get the error code of the last failed NSS or NSPR
`PR_SetError </en-US/PR_SetError>`__ to set the error code, which can be
The NSS functions
PORT_SetError are simply wrappers of
NSS certificate verification functions take a
PRTime parameter that specifies the time
instant at which the validity of the certificate should verified. The NSPR function
`PR_Now </en-US/PR_Now>`__ returns the current time in
The NSPR socket I/O functions
`PR_Recv </en-US/PR_Recv>`__ and
`PR_Send </en-US/PR_Send>`__ (used by the NSS SSL functions) take a
PRIntervalTime has an abstract, platform-dependent time unit. Call
`PR_SecondsToInterval </en-US/PR_SecondsToInterval>`__ or
convert a time interval in seconds or milliseconds to
NSPR file descriptors can be layered, corresponding to the layers in the network stack. The SSL library in NSS implements the SSL protocol as an NSPR I/O layer, which sits on top of another NSPR I/O layer that represents TCP.
You can implement an NSPR I/O layer that wraps your own TCP socket code. The following NSPR functions allow you to create your own NSPR I/O layer and manipulate it.
If your current TCP socket code uses the standard BSD socket API, a lighter-weight method than creating your own NSPR I/O layer is to simply import a native file descriptor into NSPR. This method is convenient and works for most applications.
As mentioned above, the SSL library in NSS implements the SSL protocol as an NSPR I/O layer. Users call NSPR socket I/O functions to read from, write to, and shut down an SSL connection, and to close an NSPR file descriptor.