aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2017-04-21ssl: TLS-1.2 clients will now always send hello messages on its own format.Ingela Anderton Andin
Note this is a change form how it works for earlier versions that will send the first hello message on the lowest supported version. From RFC 5246 Appendix E. Backward Compatibility E.1. Compatibility with TLS 1.0/1.1 and SSL 3.0 Since there are various versions of TLS (1.0, 1.1, 1.2, and any future versions) and SSL (2.0 and 3.0), means are needed to negotiate the specific protocol version to use. The TLS protocol provides a built-in mechanism for version negotiation so as not to bother other protocol components with the complexities of version selection. TLS versions 1.0, 1.1, and 1.2, and SSL 3.0 are very similar, and use compatible ClientHello messages; thus, supporting all of them is relatively easy. Similarly, servers can easily handle clients trying to use future versions of TLS as long as the ClientHello format remains compatible, and the client supports the highest protocol version available in the server. A TLS 1.2 client who wishes to negotiate with such older servers will send a normal TLS 1.2 ClientHello, containing { 3, 3 } (TLS 1.2) in ClientHello.client_version. If the server does not support this version, it will respond with a ServerHello containing an older version number. If the client agrees to use this version, the negotiation will proceed as appropriate for the negotiated protocol. If the version chosen by the server is not supported by the client (or not acceptable), the client MUST send a "protocol_version" alert message and close the connection. If a TLS server receives a ClientHello containing a version number greater than the highest version supported by the server, it MUST reply according to the highest version supported by the server. A TLS server can also receive a ClientHello containing a version number smaller than the highest supported version. If the server wishes to negotiate with old clients, it will proceed as appropriate for the highest version supported by the server that is not greater than ClientHello.client_version. For example, if the server supports TLS 1.0, 1.1, and 1.2, and client_version is TLS 1.0, the server will proceed with a TLS 1.0 ServerHello. If server supports (or is willing to use) only versions greater than client_version, it MUST send a "protocol_version" alert message and close the connection. Whenever a client already knows the highest protocol version known to a server (for example, when resuming a session), it SHOULD initiate the connection in that native protocol. Note: some server implementations are known to implement version negotiation incorrectly. For example, there are buggy TLS 1.0 servers that simply close the connection when the client offers a version newer than TLS 1.0. Also, it is known that some servers will refuse the connection if any TLS extensions are included in ClientHello. Interoperability with such buggy servers is a complex topic beyond the scope of this document, and may require multiple connection attempts by the client. Earlier versions of the TLS specification were not fully clear on what the record layer version number (TLSPlaintext.version) should contain when sending ClientHello (i.e., before it is known which version of the protocol will be employed). Thus, TLS servers compliant with this specification MUST accept any value {03,XX} as the record layer version number for ClientHello. TLS clients that wish to negotiate with older servers MAY send any value {03,XX} as the record layer version number. Typical values would be {03,00}, the lowest version number supported by the client, and the value of ClientHello.client_version. No single value will guarantee interoperability with all old servers, but this is a complex topic beyond the scope of this document.
2017-04-21Merge branch 'ingela/ssl/AEAD'Ingela Anderton Andin
* ingela/ssl/AEAD: ssl, dtls: Refactor so that DTLS records are handled correctly together with AEAD handling ssl, dtls: Correct integer type for sequence number
2017-04-21Merge branch 'ingela/ssl/test-data'Ingela Anderton Andin
* ingela/ssl/test-data: ssl: Rewrite test data generation
2017-04-21ssl: Rewrite test data generationIngela Anderton Andin
With the new help functions for creating test data we can simplify the code. And sometimes corrections have been made so that the test actually perform the test intended.
2017-04-20Update primary bootstrapBjörn Gustavsson
2017-04-20Merge pull request #1410 from fxn/patch-1Hans Bolinder
Removes spurious ">"
2017-04-20Merge pull request #1414 from michalmuskala/type-optimBjörn Gustavsson
Enhance type-driven optimisation in beam_type.erl
2017-04-20Merge pull request #1415 from garazdawi/lukas/travis/run-dialyzer-scriptLukas Larsson
Move travis dialyzer logic to script file
2017-04-20Merge branch 'lukas/erts/20_minor_fixes'Lukas Larsson
* lukas/erts/20_minor_fixes: erts: Rebuild etc executables if config.h changes erts: Fix new gcc warning in check io kernel: Add mem check to prim_file:large_write tc erts: Fix two compiler warnings on OS X erts: Fix erts_debug:df function info output erts: Get rid of some unused function warnings on os x
2017-04-20Merge branch 'lukas/erts/erlexec_docker_cpuset-cpus/OTP-14352'Lukas Larsson
* lukas/erts/erlexec_docker_cpuset-cpus/OTP-14352: erts: Fix erlexec to handle mismatch in sysconf and proc fs
2017-04-20erts: Fix erlexec to handle mismatch in sysconf and proc fsLukas Larsson
This behaviour has been seen when using docker together with --cpuset-cpus.
2017-04-20erts: Rebuild etc executables if config.h changesLukas Larsson
2017-04-20erts: Fix new gcc warning in check ioLukas Larsson
2017-04-20kernel: Add mem check to prim_file:large_write tcLukas Larsson
2017-04-20Move travis dialyzer logic to script fileLukas Larsson
2017-04-19Enhance type-driven optimisation in beam_type.erlMichal Muskala
* kill type information only for affected registers in get_map_elements * bs_get_utf* will produce integers of unicode range This optimises code created by Elixir compiler, where: <<x::utf8,_::binary>> when x in 1..10 will compile the guard to is_integer(X) andalso X >= 1 andalso X =< 10 This allows us to eliminate the is_integer check. * bs_get_float will produce a float * allow to carry type information over other bs instructions killing only the affected registers * kill only x registers after call_fun and apply instructions
2017-04-19Merge pull request #1409 from margnus1/hipe-m32-build2Sverker Eriksson
HiPE: Fix --enable-native-libs --enable-m32-build
2017-04-19Merge branch 'sverker/remove-latin1-atom-encoding'Sverker Eriksson
AGAIN * sverker/remove-latin1-atom-encoding: tools: Fix more assumptions in lcnt about external format
2017-04-19Merge branch 'bjorn/stdlib/erl_tar/OTP-14278'Björn Gustavsson
* bjorn/stdlib/erl_tar/OTP-14278: erl_tar: Handle leading slashes and directory traversal attacks Don't create absolute path names in tar files
2017-04-18tools: Fix more assumptions in lcnt about external formatSverker Eriksson
Also tried to prepare for large creation.
2017-04-18Merge pull request #1412 from manuel-rubio/manuel-rubio/add-re-versionRickard Green
Add re:version/0 OTP-14347
2017-04-18HiPE: Fix --enable-native-libs --enable-m32-buildMagnus Lång
This fixes a mistake in 6d8c39229 where a few "enable_hipe=no" that makes the build fail when building with both --enable-native-libs and --enable-m32-build slipped through.
2017-04-18Merge branch 'hans/ssh/dialyzer_fixes'Hans Nilsson
2017-04-18ssh: fix dialyzer errorsHans Nilsson
2017-04-18Merge branch 'hasse/stdlib/linter_check_dialyzer/OTP-14323'Hans Bolinder
* hasse/stdlib/linter_check_dialyzer/OTP-14323: stdlib: Add checks of the dialyzer attribute to the linter
2017-04-17test for re:version/0Manuel Rubio
2017-04-17add re:version/0 documentation and update the copyright of the file to 2017Manuel Rubio
2017-04-16Removes spurious ">"Xavier Noria
2017-04-13Merge branch 'hans/ssh/crypt_rand_uniform'Hans Nilsson
2017-04-13Merge branch 'hans/ssh/use_postpone'Hans Nilsson
2017-04-13Merge branch 'hans/ssh/rename_to_init'Hans Nilsson
2017-04-13ssh: re-write to use callback init/1Hans Nilsson
2017-04-13erl_tar: Handle leading slashes and directory traversal attacksBjörn Gustavsson
2017-04-13stdlib: Add checks of the dialyzer attribute to the linterHans Bolinder
The same checks are also performed by the Dialyzer.
2017-04-13ssl, dtls: Refactor so that DTLS records are handled correctly together with ↵Ingela Anderton Andin
AEAD handling
2017-04-13ssl, dtls: Correct integer type for sequence numberIngela Anderton Andin
2017-04-13Merge branch 'ingela/dtls/progress'Ingela Anderton Andin
* ingela/dtls/progress: dtls: Correct cookie map name dtls: Fix active once emulation for DTLS
2017-04-13dtls: Correct cookie map nameIngela Anderton Andin
2017-04-13dtls: Fix active once emulation for DTLSIngela Anderton Andin
2017-04-13Merge branch 'siri/make/include-path/ERL-395/OTP-14339'Siri Hansen
* siri/make/include-path/ERL-395/OTP-14339: [tools/make] Add current directory to include path
2017-04-12ssh: replace deprecated crypto:rand_uniformHans Nilsson
2017-04-12Merge branch sverker/remove-latin1-atom-encoding/OTP-14337Sverker Eriksson
* sverker/remove-latin1-atom-encoding: kernel: Fix erl_distribution_wb_SUITE:whitebox kernel: Remove pg2_SUITE:compat erts: Remove fun_r13_SUITE stdlib: Remove test cases for R12 io protocol kernel: Make DFLAG_UTF8_ATOMS mandatory kernel: Rewrite distribution flag verification tools: Update assumptions in lcnt about external atom format stdlib: Tweak beam_lib_SUITE whitebox assumptions orber: Remove hard dependency to external atom format kernel: Try mend disk_log whitebox tests erts: Mark latin1 atom encoding as deprecated jinterface: Do not generate atoms on old latin1 external format erl_interface: Do not generate atoms on old latin1 ext format erts: Do not generate atoms on old latin1 external format erts: Fix faulty ASSERT for failed dec_term
2017-04-12ssh: change next_event to postponeHans Nilsson
2017-04-12Merge branch 'ingela/openssl-version'Ingela Anderton Andin
* ingela/openssl-version: crypto: Update documentation to reflect new version policy erts: Update configure check for OpenSSL
2017-04-12Don't create absolute path names in tar filesBjörn Gustavsson
We should not assume that erl_tar will allow unpacking tar files with absolute path names for archive members.
2017-04-12[tools/make] Add current directory to include pathSiri Hansen
This is to ensure that files are recompiled if a .hrl file in the current directory is changed.
2017-04-12Merge branch 'bjorn/compiler/unicode-atoms/OTP-14285'Björn Gustavsson
* bjorn/compiler/unicode-atoms/OTP-14285: Correct compile_SUITE:core_roundtrip/1 Atoms in Core Erlang must be encoded in UTF-8
2017-04-12Merge branch 'hans/ssh/message_queue_data_off_heap'Hans Nilsson
2017-04-12ssh: added message_queue_data,off_heap to spawnHans Nilsson
Seems to solve some test case problems when heavily loaded
2017-04-12Correct compile_SUITE:core_roundtrip/1Björn Gustavsson
The test is supposed to compare the Core Erlang code that has been printed and parsed back. It did compare and print any differences, but it did not fail when there were differences. Also fix problems with variable names and maps not comparing equal when the inliner has been used.