summaryrefslogtreecommitdiff
path: root/lib/ssl
Commit message (Collapse)AuthorAgeFilesLines
* Update copyright-yearErlang/OTP2016-12-0720-20/+20
|
* Merge branch 'ingela/ssl/next-version' into maintIngela Anderton Andin2016-12-061-1/+1
|\ | | | | | | | | * ingela/ssl/next-version: ssl: Prepare for release
| * ssl: Prepare for releaseIngela Anderton Andin2016-12-051-1/+1
| |
* | Merge branch 'ingela/dtls/statem/OTP-12982' into maintIngela Anderton Andin2016-12-0627-1189/+1818
|\ \ | | | | | | | | | | | | * ingela/dtls/statem/OTP-12982: ssl: Implement DTLS state machine
| * | ssl: Implement DTLS state machineIngela Anderton Andin2016-12-0527-1189/+1818
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Beta DTLS, not production ready. Only very basically tested, and not everything in the SPEC is implemented and some things are hard coded that should not be, so this implementation can not be consider secure. Refactor "TLS connection state" and socket handling, to facilitate DTLS implementation. Create dtls "listner" (multiplexor) process that spawns DTLS connection process handlers. Handle DTLS fragmentation. Framework for handling retransmissions. Replay Detection is not implemented yet. Alerts currently always handled as in TLS.
* | Merge branch 'ingela/ECC-tests' into maintIngela Anderton Andin2016-12-051-14/+23
|\ \ | |/ |/| | | | | * ingela/ECC-tests: ssl: Make sure common-test priv_dir is used for test case generated files
| * ssl: Make sure common-test priv_dir is used for test case generated filesIngela Anderton Andin2016-11-071-14/+23
| |
* | ssl: Use SHA2 for signing ECC certs if possibleIngela Anderton Andin2016-11-104-31/+55
| | | | | | | | | | ECC certs should preferably use SHA2, this is what we want to be testing. Also assembling of all available test suites must consider TLS version.
* | Merge branch 'ingela/ssl/tune-timeouts-packet_SUITE' into maintIngela Anderton Andin2016-11-091-3/+3
|\ \ | | | | | | | | | | | | * ingela/ssl/tune-timeouts-packet_SUITE: ssl: Change to more modest timeouts
| * | ssl: Change to more modest timeoutsIngela Anderton Andin2016-10-211-3/+3
| | | | | | | | | | | | | | | This should be fine as timeout problem was due to test case bug that treated a stream as if it was packet oriented.
* | | ssl: Remove faulty workaroundIngela Anderton Andin2016-11-091-11/+2
| |/ |/| | | | | | | We where never really satisfied with this workaround it was a bit far fetched, so we are pleased to be able to remove it.
* | Merge branch 'ferd/ssl-allow-ecc-config/PR-1210/OTP-13959' into maintIngela Anderton Andin2016-11-079-34/+420
|\ \ | | | | | | | | | | | | * ferd/ssl-allow-ecc-config/PR-1210/OTP-13959: Add ECC curve selection order config in TLS server
| * | Add ECC curve selection order config in TLS serverFred Hebert2016-11-029-34/+420
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As per RFC 4492 Sec 5.1, the preferred order of selection of named curves is based on client preferences. Currently, the SSL application only picks entries according to the absolute order of entries as tracked in a hardcoded list in code. This patch changes things so that the client-specified order is preferred. It also allows a mode where the server can be configured to override the client's preferred order with its own, although the chosen ECC must still be within both lists. The configuration is done through the following options: - `eccs`, shared by clients and servers alike, allows the specification of the supported named curves, in their preferred order, and may eventually support more values for explicit primes and so on. - `honor_ecc_order`, a server-only option, is similar to `honor_cipher_order` and will, by default let the server pick the client-preferred ECC, and otherwise pick the server-preferred one. The default value for `eccs` is the same as before, although the server-chosen ECC now defaults to the client rather than previous choice. A function `ssl:eccs()` has been added that returns the highest supported ECCs for the library.
* | | Correct spelling error in ssl_distribution.xmlTrevor Brown2016-10-271-1/+1
|/ / | | | | Correct "...an exra distribution..." to "...an extra distribution...".
* | ssl: Tune timeout for old solaris machineIngela Anderton Andin2016-10-141-0/+10
|/
* Merge branch 'ingela/ssl/algo-check/OTP-13959' into maintIngela Anderton Andin2016-10-111-17/+49
|\ | | | | | | | | * ingela/ssl/algo-check/OTP-13959: Properly filter ssl cipher suites reported as supported
| * Properly filter ssl cipher suites reported as supportedDániel Szoboszlay2016-10-101-17/+49
| | | | | | | | | | | | | | Adapted from commit 675ee6860d2c273bcc6c6a0536634a107e2a3d9f. Conflicts: lib/ssl/src/ssl_cipher.erl
* | Merge branch 'ingela/ssl/crl_SUITE' into maintIngela Anderton Andin2016-10-111-37/+55
|\ \ | |/ |/| | | | | * ingela/ssl/crl_SUITE: ssl: Make sure test has correct input
| * ssl: Make sure test has correct inputIngela Anderton Andin2016-09-211-37/+55
| |
* | Merge branch 'ingela/ssl/cipher-type-spec' into maintIngela Anderton Andin2016-10-072-3/+3
|\ \ | | | | | | | | | | | | * ingela/ssl/cipher-type-spec: ssl: Adjust cipher type to conform to implementation
| * | ssl: Adjust cipher type to conform to implementationIngela Anderton Andin2016-10-052-3/+3
| | |
* | | Merge branch 'RoadRunnr/crypto/no-rc4/PR-1169/OTP-13896' into maintRaimo Niskanen2016-10-041-0/+3
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | * RoadRunnr/crypto/no-rc4/PR-1169/OTP-13896: disable RC4 in SSL when crypto doesn't support it Fix compilation when OpenSSL doesn't support RC4 Conflicts: lib/crypto/c_src/crypto.c
| * | disable RC4 in SSL when crypto doesn't support itAndreas Schultz2016-09-221-0/+3
| |/
* | ssl: Correct tests tcp stream handlingIngela Anderton Andin2016-10-041-18/+11
| | | | | | | | | | | | | | Data collection function active_once_raw/4 did not handle streamed data correctly (it assumed the stream was "packet oriented"), which could result in that the test case perceived that it did not receive all data even though it did.
* | ssl: Correct anonymous suite handlingIngela Anderton Andin2016-09-303-31/+26
| | | | | | | | | | Test suite did not take TLS-version in to account. Also some anonymous suites where included incorrectly in some TLS versions.
* | Update release notesErlang/OTP2016-09-281-0/+25
| |
* | Merge branch 'ingela/ssl/prepare-patch' into maint-19Erlang/OTP2016-09-281-1/+1
|\ \ | | | | | | | | | | | | * ingela/ssl/prepare-patch: ssl: Prepare for release
| * | ssl: Prepare for releaseIngela Anderton Andin2016-09-271-1/+1
| |/
* | Merge branch 'ingela/ssl/ECC-selection-fix/OTP-13918' into maint-19Erlang/OTP2016-09-284-15/+4
|\ \ | | | | | | | | | | | | * ingela/ssl/ECC-selection-fix/OTP-13918: ssl: Correct ECC curve selection, the error could cause default to always be selected.
| * | ssl: Correct ECC curve selection, the error could cause default to always be ↵Ingela Anderton Andin2016-09-284-15/+4
| |/ | | | | | | selected.
* | ssl: Avoid event reorderingIngela Anderton Andin2016-09-272-2/+12
|/ | | | | | | | Several handshake events may be received in the same TLS packet. Then there will be several events pushed to the gen_statems internal queue. New events already in the socket-buffer should not be processed if there are more unprocessed handshake events in next_event queue. We need to handle this in the next_record/1 function.
* Prepare releaseErlang/OTP2016-09-201-0/+39
|
* Merge branch 'ingela/ssl/packet-tests' into maintIngela Anderton Andin2016-09-141-0/+28
|\ | | | | | | | | | | * ingela/ssl/packet-tests: ssl: Add timetrap scale calls ssl: Add nodelay to packet=0|raw tests
| * ssl: Add timetrap scale callsIngela Anderton Andin2016-09-131-0/+3
| |
| * ssl: Add nodelay to packet=0|raw testsIngela Anderton Andin2016-09-051-0/+25
| |
* | Merge branch 'ferd/bypass-pem-cache/PR-1143/OTP-13883' into maintIngela Anderton Andin2016-09-128-42/+254
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | * ferd/bypass-pem-cache/PR-1143/OTP-13883: ssl: Add documentation of bypass_pem_cache application environment configuration ssl: Add new benchmarks to skip file for normal testing Adding PEM cache bypass benchmark entries Fixing CRL searching in cache bypass Add option to bypass SSL PEM cache
| * | ssl: Add documentation of bypass_pem_cache application environment configurationIngela Anderton Andin2016-09-121-0/+10
| | |
| * | ssl: Add new benchmarks to skip file for normal testingIngela Anderton Andin2016-09-021-1/+2
| | |
| * | Adding PEM cache bypass benchmark entriesFred Hebert2016-08-311-7/+95
| | | | | | | | | | | | | | | The benchmarks run through the local node only, as an attempt to show more potential contention on certificate usage.
| * | Fixing CRL searching in cache bypassFred Hebert2016-08-221-8/+20
| | |
| * | Add option to bypass SSL PEM cacheFred Hebert2016-08-194-26/+127
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current SSL implementation has a PEM cache running through the ssl manager process, whose primary role is caching CA chains from files on disk. This is intended as a way to save on disk operation when the requested certificates are often the same, and those cache values are both time-bound and reference-counted. The code path also includes caching the Erlang-formatted certificate as decoded by the public_key application The same code path is used for DER-encoded certificates, which are passed in memory and do not require file access. These certificates are cached, but not reference-counted and also not shared across connections. For heavy usage of DER-encoded certificates, the PEM cache becomes a central bottleneck for a server, forcing the decoding of every one of them individually through a single critical process. It is also not clear if the cache remains useful for disk certificates in all cases. This commit adds a configuration variable for the ssl application (bypass_pem_cache = true | false) which allows to open files and decode certificates in the calling connection process rather than the manager. When this action takes place, the operations to cache and return data are replaced to strictly return data. To provide a transparent behaviour, the 'CacheDbRef' used to keep track of the certificates in the cache is replaced by the certificates itself, and all further lookup functions or folds can be done locally. This has proven under benchmark to more than triple the performance of the SSL application under load (once the session cache had also been disabled).
* | | ssl: Make sure tests get a clean startIngela Anderton Andin2016-09-0714-21/+39
| | |
* | | ssl: Tune timeoutIngela Anderton Andin2016-09-071-1/+3
| | |
* | | ssl: Consistent timeout handlingIngela Anderton Andin2016-09-071-2/+3
| | | | | | | | | | | | | | | init_per_testcase timeout for renegotiation tests would be overridden by local timeout in test case help function.
* | | Merge branch 'ingela/ssl/dtls-progress/connection-states-as-maps' into maintIngela Anderton Andin2016-09-0616-1052/+1165
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ingela/ssl/dtls-progress/connection-states-as-maps: dtls: fix encoding of client hello cookie dtls: Prepare start of DTLS connection manager with SSL app ssl: Refactor to use maps for the connection states ssl, dtls: Refactor sni handling dtls: Add close/5 dtls: Add renegotiate/2 dtls: Add protocol event handling ssl: Refactor code so that tls and dtls can share more code ssl, dtls: Disable V2 compatibility clause from ssl_handshake:update_handshake_history ssl: Make sure common code for TLS and DTLS uses the TLS Version ssl: remove unused RecordCB argument from master_secret dtls: Add reinit_handshake_data/1 to dtls dtls: replace tls_record with RecordCB in connection_info Fix version numbers and dependencies
| * | | dtls: fix encoding of client hello cookieAndreas Schultz2016-09-051-10/+4
| | | |
| * | | dtls: Prepare start of DTLS connection manager with SSL appAndreas Schultz2016-09-051-5/+6
| | | |
| * | | ssl: Refactor to use maps for the connection statesIngela Anderton Andin2016-09-0513-495/+488
| | | |
| * | | ssl, dtls: Refactor sni handlingIngela Anderton Andin2016-09-053-53/+67
| | | |
| * | | dtls: Add close/5Ingela Anderton Andin2016-09-051-1/+7
| | | |