Add SHA2 algorithms to SSL_library_init(). Although these aren't used
authorDr. Stephen Henson <steve@openssl.org>
Wed, 7 Apr 2010 13:19:48 +0000 (13:19 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Wed, 7 Apr 2010 13:19:48 +0000 (13:19 +0000)
directly by SSL/TLS SHA2 certificates are becoming more common and
applications that only call SSL_library_init() and not
OpenSSL_add_all_alrgorithms() will fail when verifying certificates.

Update docs.

CHANGES
doc/ssl/SSL_library_init.pod
ssl/ssl_algs.c

diff --git a/CHANGES b/CHANGES
index bf2af58a4703fdc014b30371d75b6bfe619791d2..a20fe1759c496bc076967fc42b359bd58338b1d8 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,11 @@
 
  Changes between 0.9.8n and 0.9.8o [xx XXX xxxx]
 
+  *) Add SHA2 algorithms to SSL_library_init(). SHA2 is becoming far more
+     common in certificates and some applications which only call
+     SSL_library_init and not OpenSSL_add_all_algorithms() will fail.
+     [Steve Henson]
+
   *) VMS fixes: 
      Reduce copying into .apps and .test in makevms.com
      Don't try to use blank CA certificate in CA.com
index 0e9b035884e315cb72a22e60e9c647bf543f306f..7f1356a7b56723d606003d14b1829dc7b37821fd 100644 (file)
@@ -26,25 +26,28 @@ SSL_library_init() must be called before any other action takes place.
 
 =head1 WARNING
 
-SSL_library_init() mainly adds ciphers and digests used directly by SSL/TLS.
-In some cases this is not sufficient and errors about unknown algorithms
-will occur: for example when an attempt is made to use a certificate using
-SHA256. This can be resolved by also calling OpenSSL_add_all_algorithms().
+SSL_library_init() adds ciphers and digests used directly and indirectly by
+SSL/TLS.
 
 =head1 EXAMPLES
 
 A typical TLS/SSL application will start with the library initialization,
-will provide readable error messages and will seed the PRNG.
+and provide readable error messages.
 
  SSL_load_error_strings();                /* readable error messages */
  SSL_library_init();                      /* initialize library */
- actions_to_seed_PRNG(); 
 
 =head1 RETURN VALUES
 
 SSL_library_init() always returns "1", so it is safe to discard the return
 value.
 
+=head1 NOTES
+
+OpenSSL 0.9.8o and 1.0.0a and later added SHA2 algorithms to SSL_library_init().
+Applications which need to use SHA2 in earlier versions of OpenSSL should call
+OpenSSL_add_all_algorithms() as well.
+
 =head1 SEE ALSO
 
 L<ssl(3)|ssl(3)>, L<SSL_load_error_strings(3)|SSL_load_error_strings(3)>,
index 2d9077e303377096bfc966d9dbb58f19bf8cde83..6488cdfa9c6194d6f2cae6a105f3490e816ab637 100644 (file)
@@ -102,6 +102,14 @@ int SSL_library_init(void)
        EVP_add_digest_alias(SN_sha1,"ssl3-sha1");
        EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA);
 #endif
+#ifndef OPENSSL_NO_SHA256
+       EVP_add_digest(EVP_sha224());
+       EVP_add_digest(EVP_sha256());
+#endif
+#ifndef OPENSSL_NO_SHA512
+       EVP_add_digest(EVP_sha384());
+       EVP_add_digest(EVP_sha512());
+#endif
 #if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_DSA)
        EVP_add_digest(EVP_dss1()); /* DSA with sha1 */
        EVP_add_digest_alias(SN_dsaWithSHA1,SN_dsaWithSHA1_2);