#
aea145e3 |
| 09-Jan-2016 |
Viktor Dukhovni |
Regenerate SSL record/statem error strings Reviewed-by: Rich Salz <rsalz@openssl.org>
|
#
bbd86bf5 |
| 07-Jan-2016 |
Rich Salz |
mem functions cleanup Only two macros CRYPTO_MDEBUG and CRYPTO_MDEBUG_ABORT to control this. If CRYPTO_MDEBUG is not set, #ifdef out the whole debug machinery. (Thanks to Jak
mem functions cleanup Only two macros CRYPTO_MDEBUG and CRYPTO_MDEBUG_ABORT to control this. If CRYPTO_MDEBUG is not set, #ifdef out the whole debug machinery. (Thanks to Jakob Bohm for the suggestion!) Make the "change wrapper functions" be the only paradigm. Wrote documentation! Format the 'set func' functions so their paramlists are legible. Format some multi-line comments. Remove ability to get/set the "memory debug" functions at runtme. Remove MemCheck_* and CRYPTO_malloc_debug_init macros. Add CRYPTO_mem_debug(int flag) function. Add test/memleaktest. Rename CRYPTO_malloc_init to OPENSSL_malloc_init; remove needless calls. Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
919ba009 |
| 29-Dec-2015 |
Viktor Dukhovni |
DANE support structures, constructructors and accessors Also tweak some of the code in demos/bio, to enable interactive testing of BIO_s_accept's use of SSL_dup. Changed the sconnect
DANE support structures, constructructors and accessors Also tweak some of the code in demos/bio, to enable interactive testing of BIO_s_accept's use of SSL_dup. Changed the sconnect client to authenticate the server, which now exercises the new SSL_set1_host() function. Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
4fa52141 |
| 29-Dec-2015 |
Viktor Dukhovni |
Protocol version selection and negotiation rewrite The protocol selection code is now consolidated in a few consecutive short functions in a single file and is table driven. Protocol-sp
Protocol version selection and negotiation rewrite The protocol selection code is now consolidated in a few consecutive short functions in a single file and is table driven. Protocol-specific constraints that influence negotiation are moved into the flags field of the method structure. The same protocol version constraints are now applied in all code paths. It is now much easier to add new protocol versions without reworking the protocol selection logic. In the presence of "holes" in the list of enabled client protocols we no longer select client protocols below the hole based on a subset of the constraints and then fail shortly after when it is found that these don't meet the remaining constraints (suiteb, FIPS, security level, ...). Ideally, with the new min/max controls users will be less likely to create "holes" in the first place. Reviewed-by: Kurt Roeckx <kurt@openssl.org>
show more ...
|
#
e091c83e |
| 22-Dec-2015 |
Dr. Stephen Henson |
remove unused error code Reviewed-by: Kurt Roeckx <kurt@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org>
|
#
a2074b92 |
| 21-Dec-2015 |
Dr. Stephen Henson |
make errors Reviewed-by: Richard Levitte <levitte@openssl.org>
|
#
41609361 |
| 05-Dec-2015 |
Dr. Stephen Henson |
update errors Reviewed-by: Matt Caswell <matt@openssl.org>
|
#
361a1191 |
| 05-Dec-2015 |
Kurt Roeckx |
Remove support for all 40 and 56 bit ciphers. Reviewed-by: Rich Salz <rsalz@openssl.org> MR: #364
|
#
600fdc71 |
| 27-Nov-2015 |
Dr. Stephen Henson |
fix function code discrepancy Reviewed-by: Matt Caswell <matt@openssl.org>
|
#
7fecbf6f |
| 09-Oct-2015 |
Matt Caswell |
Rename start_async_job to ssl_start_async_job Make it clear that this function is ssl specific. Reviewed-by: Rich Salz <rsalz@openssl.org>
|
#
add2f5ca |
| 06-Oct-2015 |
Matt Caswell |
Clean up libssl async calls Tidy up the libssl async calls and make sure all IO functions are covered. Reviewed-by: Rich Salz <rsalz@openssl.org>
|
Revision tags: OpenSSL_1_0_1p, OpenSSL_1_0_2d, OpenSSL-fips-2_0_11, OpenSSL_1_0_1o, OpenSSL_1_0_2c, OpenSSL_0_9_8zg, OpenSSL_1_0_0s, OpenSSL_1_0_1n, OpenSSL_1_0_2b, OpenSSL-fips-2_0_10, OpenSSL_0_9_8zf, OpenSSL_1_0_0r, OpenSSL_1_0_1m, OpenSSL_1_0_2a |
|
#
07bbc92c |
| 13-Feb-2015 |
Matt Caswell |
Make libssl async aware The following entry points have been made async aware: SSL_accept SSL_read SSL_write Also added is a new mode - SSL_MODE_ASYNC. Calling the above
Make libssl async aware The following entry points have been made async aware: SSL_accept SSL_read SSL_write Also added is a new mode - SSL_MODE_ASYNC. Calling the above functions with the async mode enabled will initiate a new async job. If an async pause is encountered whilst executing the job (such as for example if using SHA1/RSA with the Dummy Async engine), then the above functions return with SSL_WANT_ASYNC. Calling the functions again (with exactly the same args as per non-blocking IO), will resume the job where it left off. Reviewed-by: Rich Salz <rsalz@openssl.org>
show more ...
|
#
5f3d93e4 |
| 06-Nov-2015 |
Matt Caswell |
Ensure all EVP calls have their returns checked where appropriate There are lots of calls to EVP functions from within libssl There were various places where we should probably check the
Ensure all EVP calls have their returns checked where appropriate There are lots of calls to EVP functions from within libssl There were various places where we should probably check the return value but don't. This adds these checks. Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
b8fb5989 |
| 03-Nov-2015 |
Dr. Stephen Henson |
Rebuild error source files. Rebuild error source files: the new mkerr.pl functionality will now pick up and translate static function names properly. Reviewed-by: Richard Levitt
Rebuild error source files. Rebuild error source files: the new mkerr.pl functionality will now pick up and translate static function names properly. Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
73999b62 |
| 10-Sep-2015 |
Matt Caswell |
Move PACKET creation into the state machine Previously each message specific process function would create its own PACKET structure. Rather than duplicate all of this code lots of times
Move PACKET creation into the state machine Previously each message specific process function would create its own PACKET structure. Rather than duplicate all of this code lots of times we should create it in the state machine itself. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
c130dd8e |
| 04-Sep-2015 |
Matt Caswell |
Move server side DTLS to new state machine Implement all of the necessary changes to make DTLS on the server work with the new state machine code. Reviewed-by: Tim Hudson <tjh@o
Move server side DTLS to new state machine Implement all of the necessary changes to make DTLS on the server work with the new state machine code. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
94836de2 |
| 08-Sep-2015 |
Matt Caswell |
Move server side TLS to new state machine Implement all of the necessary changes for moving TLS server side processing into the new state machine code. Reviewed-by: Tim Hudson <
Move server side TLS to new state machine Implement all of the necessary changes for moving TLS server side processing into the new state machine code. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
e27f234a |
| 08-Sep-2015 |
Matt Caswell |
Split TLS server functions Split the TLS server ssl3_get_* and ssl3_send_* functions into two ready for the migration to the new state machine code. Reviewed-by: Tim Hudson <tjh
Split TLS server functions Split the TLS server ssl3_get_* and ssl3_send_* functions into two ready for the migration to the new state machine code. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
473483d4 |
| 07-Sep-2015 |
Matt Caswell |
Implement DTLS client move to new state machine Move all DTLS client side processing into the new state machine code. A subsequent commit will clean up the old dead code. Review
Implement DTLS client move to new state machine Move all DTLS client side processing into the new state machine code. A subsequent commit will clean up the old dead code. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
76af3037 |
| 11-Aug-2015 |
Matt Caswell |
dtls_get_message changes for state machine move Create a dtls_get_message function similar to the old dtls1_get_message but in the format required for the new state machine code. The old
dtls_get_message changes for state machine move Create a dtls_get_message function similar to the old dtls1_get_message but in the format required for the new state machine code. The old function will eventually be deleted in later commits. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
b9908bf9 |
| 29-Jul-2015 |
Matt Caswell |
Split client message reading and writing functions The new state machine code will split up the reading and writing of hanshake messages into discrete phases. In order to facilitate that
Split client message reading and writing functions The new state machine code will split up the reading and writing of hanshake messages into discrete phases. In order to facilitate that the existing "get" type functions will be split into two halves: one to get the message and one to process it. The "send" type functions will also have all work relating to constructing the message split out into a separate function just for that. For some functions there will also be separate pre and post "work" phases to prepare or update state. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
f8e0a557 |
| 29-Jul-2015 |
Matt Caswell |
Add initial state machine rewrite code This is the first drop of the new state machine code. The rewrite has the following objectives: - Remove duplication of state code between
Add initial state machine rewrite code This is the first drop of the new state machine code. The rewrite has the following objectives: - Remove duplication of state code between client and server - Remove duplication of state code between TLS and DTLS - Simplify transitions and bring the logic together in a single location so that it is easier to validate - Remove duplication of code between each of the message handling functions - Receive a message first and then work out whether that is a valid transition - not the other way around (the other way causes lots of issues where we are expecting one type of message next but actually get something else) - Separate message flow state from handshake state (in order to better understand each) - message flow state = when to flush buffers; handling restarts in the event of NBIO events; handling the common flow of steps for reading a message and the common flow of steps for writing a message etc - handshake state = what handshake message are we working on now - Control complexity: only the state machine can change state: keep all the state changes local to a file This builds on previous state machine related work: - Surface CCS processing in the state machine - Version negotiation rewrite Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
9ab930b2 |
| 29-Jul-2015 |
Matt Caswell |
Split ssl3_get_message The function ssl3_get_message gets a whole message from the underlying bio and returns it to the state machine code. The new state machine code will split this
Split ssl3_get_message The function ssl3_get_message gets a whole message from the underlying bio and returns it to the state machine code. The new state machine code will split this into two discrete steps: get the message header and get the message body. This commit splits the existing function into these two sub steps to facilitate the state machine implementation. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
show more ...
|
#
32942870 |
| 02-Oct-2015 |
Emilia Kasper |
PACKET: simplify ServerKeyExchange parsing Reviewed-by: Matt Caswell <matt@openssl.org>
|
#
e3d0dae7 |
| 14-Sep-2015 |
Matt Caswell |
DTLSv1_listen rewrite The existing implementation of DTLSv1_listen() is fundamentally flawed. This function is used in DTLS solutions to listen for new incoming connections from DTLS
DTLSv1_listen rewrite The existing implementation of DTLSv1_listen() is fundamentally flawed. This function is used in DTLS solutions to listen for new incoming connections from DTLS clients. A client will send an initial ClientHello. The server will respond with a HelloVerifyRequest containing a unique cookie. The client the responds with a second ClientHello - which this time contains the cookie. Once the cookie has been verified then DTLSv1_listen() returns to user code, which is typically expected to continue the handshake with a call to (for example) SSL_accept(). Whilst listening for incoming ClientHellos, the underlying BIO is usually in an unconnected state. Therefore ClientHellos can come in from *any* peer. The arrival of the first ClientHello without the cookie, and the second one with it, could be interspersed with other intervening messages from different clients. The whole purpose of this mechanism is as a defence against DoS attacks. The idea is to avoid allocating state on the server until the client has verified that it is capable of receiving messages at the address it claims to come from. However the existing DTLSv1_listen() implementation completely fails to do this. It attempts to super-impose itself on the standard state machine and reuses all of this code. However the standard state machine expects to operate in a stateful manner with a single client, and this can cause various problems. A second more minor issue is that the return codes from this function are quite confused, with no distinction made between fatal and non-fatal errors. Most user code treats all errors as non-fatal, and simply retries the call to DTLSv1_listen(). This commit completely rewrites the implementation of DTLSv1_listen() and provides a stand alone implementation that does not rely on the existing state machine. It also provides more consistent return codes. Reviewed-by: Andy Polyakov <appro@openssl.org>
show more ...
|