123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- This version of SSLeay has quite a lot of things different from the
- previous version.
- Basically check all callback parameters, I will be producing documentation
- about how to use things in th future. Currently I'm just getting 080 out
- the door. Please not that there are several ways to do everything, and
- most of the applications in the apps directory are hybrids, some using old
- methods and some using new methods.
- Have a look in demos/bio for some very simple programs and
- apps/s_client.c and apps/s_server.c for some more advanced versions.
- Notes are definitly needed but they are a week or so away.
- Anyway, some quick nots from Tim Hudson (tjh@cryptsoft.com)
- ---
- Quick porting notes for moving from SSLeay-0.6.x to SSLeay-0.8.x to
- get those people that want to move to using the new code base off to
- a quick start.
- Note that Eric has tidied up a lot of the areas of the API that were
- less than desirable and renamed quite a few things (as he had to break
- the API in lots of places anyrate). There are a whole pile of additional
- functions for making dealing with (and creating) certificates a lot
- cleaner.
- 01-Jul-97
- Tim Hudson
- tjh@cryptsoft.com
- ---8<---
- To maintain code that uses both SSLeay-0.6.x and SSLeay-0.8.x you could
- use something like the following (assuming you #include "crypto.h" which
- is something that you really should be doing).
- #if SSLEAY_VERSION_NUMBER >= 0x0800
- #define SSLEAY8
- #endif
- buffer.h -> splits into buffer.h and bio.h so you need to include bio.h
- too if you are working with BIO internal stuff (as distinct
- from simply using the interface in an opaque manner)
- #include "bio.h" - required along with "buffer.h" if you write
- your own BIO routines as the buffer and bio
- stuff that was intermixed has been separated
- out
-
- envelope.h -> evp.h (which should have been done ages ago)
- Initialisation ... don't forget these or you end up with code that
- is missing the bits required to do useful things (like ciphers):
- SSLeay_add_ssl_algorithms()
- (probably also want SSL_load_error_strings() too but you should have
- already had that call in place)
- SSL_CTX_new() - requires an extra method parameter
- SSL_CTX_new(SSLv23_method())
- SSL_CTX_new(SSLv2_method())
- SSL_CTX_new(SSLv3_method())
- OR to only have the server or the client code
- SSL_CTX_new(SSLv23_server_method())
- SSL_CTX_new(SSLv2_server_method())
- SSL_CTX_new(SSLv3_server_method())
- or
- SSL_CTX_new(SSLv23_client_method())
- SSL_CTX_new(SSLv2_client_method())
- SSL_CTX_new(SSLv3_client_method())
- SSL_set_default_verify_paths() ... renamed to the more appropriate
- SSL_CTX_set_default_verify_paths()
- If you want to use client certificates then you have to add in a bit
- of extra stuff in that a SSLv3 server sends a list of those CAs that
- it will accept certificates from ... so you have to provide a list to
- SSLeay otherwise certain browsers will not send client certs.
- SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(s_cert_file));
- X509_NAME_oneline(X) -> X509_NAME_oneline(X,NULL,0)
- or provide a buffer and size to copy the
- result into
- X509_add_cert -> X509_STORE_add_cert (and you might want to read the
- notes on X509_NAME structure changes too)
- VERIFICATION CODE
- =================
- The codes have all be renamed from VERIFY_ERR_* to X509_V_ERR_* to
- more accurately reflect things.
- The verification callback args are now packaged differently so that
- extra fields for verification can be added easily in future without
- having to break things by adding extra parameters each release :-)
- X509_cert_verify_error_string -> X509_verify_cert_error_string
- BIO INTERNALS
- =============
- Eric has fixed things so that extra flags can be introduced in
- the BIO layer in future without having to play with all the BIO
- modules by adding in some macros.
- The ugly stuff using
- b->flags ~= (BIO_FLAGS_RW|BIO_FLAGS_SHOULD_RETRY)
- becomes
- BIO_clear_retry_flags(b)
- b->flags |= (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)
- becomes
- BIO_set_retry_read(b)
- Also ... BIO_get_retry_flags(b), BIO_set_flags(b)
- OTHER THINGS
- ============
- X509_NAME has been altered so that it isn't just a STACK ... the STACK
- is now in the "entries" field ... and there are a pile of nice functions
- for getting at the details in a much cleaner manner.
- SSL_CTX has been altered ... "cert" is no longer a direct member of this
- structure ... things are now down under "cert_store" (see x509_vfy.h) and
- things are no longer in a CERTIFICATE_CTX but instead in a X509_STORE.
- If your code "knows" about this level of detail then it will need some
- surgery.
- If you depending on the incorrect spelling of a number of the error codes
- then you will have to change your code as these have been fixed.
- ENV_CIPHER "type" got renamed to "nid" and as that is what it actually
- has been all along so this makes things clearer.
- ify_cert_error_string(ctx->error));
- SSL_R_NO_CIPHER_WE_TRUST -> SSL_R_NO_CIPHER_LIST
- and SSL_R_REUSE_CIPHER_LIST_NOT_ZERO
|