Network Security with OpenSSL by John Viega, Matt Messier, Pravir Chandra The following errata *corrected* in the 6/06 reprint: Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem (39) In the last para of the RSA section. The sentence "In general, we do not recommend that you use this command at all for signing data." NOW READS: "In general, we do not recommend that you use this command at all for encrypting data." (56) In the fourth full paragraph on the page, every instance of "certificate" NOW READS "private key". (57) In the first paragraph under the section "Code-Signing Certificates", the last word of the third sentence NOW READS "private key" instead of "certificate." {65} In Example 3-5, the command output shown; "Generating a 1024 bit RSA private key" NOW READS: "Generating a 2048 bit RSA private key" {76} In Example 4-1, the 11th line: #elif _POSIX_THREADS NOW READS: #elif defined(_POSIX_THREADS) {76} In Example 4-1, the 25th line: static MUTEX_TYPE mutex_buf[] = NULL; NOW READS: static MUTEX_TYPE *mutex_buf = NULL; {80} In Example 4-2, the 30th line: MUTEX_CLEANUP(l->mutexp); NOW READS: MUTEX_CLEANUP(l->mutex); {117} In Example 5-4, the 5th line: int done, err, nread; NOW READS: int err, nread; {127} In Example 5-6, the 88th line: THREAD_create(tid, server_thread, ssl); NOW READS: THREAD_CREATE(tid, server_thread, ssl); {160} On lines 35 and 36 of Example 5-16, function name NOW READS "set_nonblocking rather than "set_non-blocking".