1. 08 3月, 2016 15 次提交
    • M
      Fix building without multiblock support · fa22f98f
      Matt Caswell 提交于
      Not all platforms support multiblock. Building without it fails prior to
      this fix.
      
      RT#4396
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      fa22f98f
    • M
      Rename the numpipes argument to ssl3_enc/tls1_enc · 37205971
      Matt Caswell 提交于
      The numpipes argument to ssl3_enc/tls1_enc is actually the number of
      records passed in the array. To make this clearer rename the argument to
      |n_recs|.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      37205971
    • M
      Rename a function · ea71906e
      Matt Caswell 提交于
      Rename the have_whole_app_data_record_waiting() function to include the
      ssl3_record prefix...and make it a bit shorter.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      ea71906e
    • M
      Remove the wrec record layer field · f482740f
      Matt Caswell 提交于
      We used to use the wrec field in the record layer for keeping track of the
      current record that we are writing out. As part of the pipelining changes
      this has been moved to stack allocated variables to do the same thing,
      therefore the field is no longer needed.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      f482740f
    • M
      Update a comment · d3b324a1
      Matt Caswell 提交于
      Update a comment that was out of date due to the pipelining changes
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      d3b324a1
    • M
      Fix erroneous fall thgrough in switch statement · 07077415
      Matt Caswell 提交于
      Fix an erroenous fall through when setting the max_pipelines value.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      07077415
    • M
      Add an SSL_has_pending() function · 49580f25
      Matt Caswell 提交于
      This is similar to SSL_pending() but just returns a 1 if there is data
      pending in the internal OpenSSL buffers or 0 otherwise (as opposed to
      SSL_pending() which returns the number of bytes available). Unlike
      SSL_pending() this will work even if "read_ahead" is set (which is the
      case if you are using read pipelining, or if you are doing DTLS). A 1
      return value means that we have unprocessed data. It does *not* necessarily
      indicate that there will be application data returned from a call to
      SSL_read(). The unprocessed data may not be application data or there
      could be errors when we attempt to parse the records.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      49580f25
    • M
      Add an ability to set the SSL read buffer size · dad78fb1
      Matt Caswell 提交于
      This capability is required for read pipelining. We will only read in as
      many records as will fit in the read buffer (and the network can provide
      in one go). The bigger the buffer the more records we can process in
      parallel.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      dad78fb1
    • M
      Lazily initialise the compression buffer · 0220fee4
      Matt Caswell 提交于
      With read pipelining we use multiple SSL3_RECORD structures for reading.
      There are SSL_MAX_PIPELINES (32) of them defined (typically not all of these
      would be used). Each one has a 16k compression buffer allocated! This
      results in a significant amount of memory being consumed which, most of the
      time, is not needed.  This change swaps the allocation of the compression
      buffer to be lazy so that it is only done immediately before it is actually
      used.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      0220fee4
    • M
      Implement read pipeline support in libssl · 94777c9c
      Matt Caswell 提交于
      Read pipelining is controlled in a slightly different way than with write
      pipelining. While reading we are constrained by the number of records that
      the peer (and the network) can provide to us in one go. The more records
      we can get in one go the more opportunity we have to parallelise the
      processing.
      
      There are two parameters that affect this:
      * The number of pipelines that we are willing to process in one go. This is
      controlled by max_pipelines (as for write pipelining)
      * The size of our read buffer. A subsequent commit will provide an API for
      adjusting the size of the buffer.
      
      Another requirement for this to work is that "read_ahead" must be set. The
      read_ahead parameter will attempt to read as much data into our read buffer
      as the network can provide. Without this set, data is read into the read
      buffer on demand. Setting the max_pipelines parameter to a value greater
      than 1 will automatically also turn read_ahead on.
      
      Finally, the read pipelining as currently implemented will only parallelise
      the processing of application data records. This would only make a
      difference for renegotiation so is unlikely to have a significant impact.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      94777c9c
    • M
      Implement write pipeline support in libssl · d102d9df
      Matt Caswell 提交于
      Use the new pipeline cipher capability to encrypt multiple records being
      written out all in one go. Two new SSL/SSL_CTX parameters can be used to
      control how this works: max_pipelines and split_send_fragment.
      
      max_pipelines defines the maximum number of pipelines that can ever be used
      in one go for a single connection. It must always be less than or equal to
      SSL_MAX_PIPELINES (currently defined to be 32). By default only one
      pipeline will be used (i.e. normal non-parallel operation).
      
      split_send_fragment defines how data is split up into pipelines. The number
      of pipelines used will be determined by the amount of data provided to the
      SSL_write call divided by split_send_fragment. For example if
      split_send_fragment is set to 2000 and max_pipelines is 4 then:
      SSL_write called with 0-2000 bytes == 1 pipeline used
      SSL_write called with 2001-4000 bytes == 2 pipelines used
      SSL_write called with 4001-6000 bytes == 3 pipelines used
      SSL_write_called with 6001+ bytes == 4 pipelines used
      
      split_send_fragment must always be less than or equal to max_send_fragment.
      By default it is set to be equal to max_send_fragment. This will mean that
      the same number of records will always be created as would have been
      created in the non-parallel case, although the data will be apportioned
      differently. In the parallel case data will be spread equally between the
      pipelines.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      d102d9df
    • R
      Use s->session->peer instead of calling SSL_get_peer_certificate(s) · 3f3c7d26
      Rob Percival 提交于
      Avoids modifying certificate reference count, and thereby avoids locking.
      Reviewed-by: NEmilia Käsper <emilia@openssl.org>
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      3f3c7d26
    • R
    • R
      CT code now calls X509_free() after calling SSL_get_peer_certificate() · 1cb437be
      Rob Percival 提交于
      Without this, the peer certificate would never be deleted, resulting in
      a memory leak.
      Reviewed-by: NEmilia Käsper <emilia@openssl.org>
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      1cb437be
    • M
      Swap the init code to use CRYPTO_ONCE · b1f1e7ae
      Matt Caswell 提交于
      The init code was using its own "once" implementation. Now that we have
      the new thread API we should use that instead.
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      b1f1e7ae
  2. 07 3月, 2016 1 次提交
    • E
      Rework the default cipherlist. · a556f342
      Emilia Kasper 提交于
       - Always prefer forward-secure handshakes.
       - Consistently order ECDSA above RSA.
       - Next, always prefer AEADs to non-AEADs, irrespective of strength.
       - Within AEADs, prefer GCM > CHACHA > CCM for a given strength.
       - Prefer TLS v1.2 ciphers to legacy ciphers.
       - Remove rarely used DSS, IDEA, SEED, CAMELLIA, CCM from the default
         list to reduce ClientHello bloat.
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      a556f342
  3. 05 3月, 2016 1 次提交
  4. 04 3月, 2016 3 次提交
  5. 03 3月, 2016 3 次提交
  6. 29 2月, 2016 2 次提交
    • M
      Refactor the async wait fd logic · ff75a257
      Matt Caswell 提交于
      Implementation experience has shown that the original plan for async wait
      fds was too simplistic. Originally the async logic created a pipe internally
      and user/engine code could then get access to it via API calls. It is more
      flexible if the engine is able to create its own fd and provide it to the
      async code.
      
      Another issue is that there can be a lot of churn in the fd value within
      the context of (say) a single SSL connection leading to continually adding
      and removing fds from (say) epoll. It is better if we can provide some
      stability of the fd value across a whole SSL connection. This is
      problematic because an engine has no concept of an SSL connection.
      
      This commit refactors things to introduce an ASYNC_WAIT_CTX which acts as a
      proxy for an SSL connection down at the engine layer.
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      ff75a257
    • D
      TLS support for X25519 · 1db3107a
      Dr. Stephen Henson 提交于
      Add X25519 to TLS supported curve list.
      Reject attempts to configure keys which cannot be used
      for signing.
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      Reviewed-by: NEmilia Käsper <emilia@openssl.org>
      1db3107a
  7. 26 2月, 2016 1 次提交
  8. 25 2月, 2016 2 次提交
  9. 24 2月, 2016 2 次提交
  10. 23 2月, 2016 1 次提交
  11. 20 2月, 2016 2 次提交
    • R
      Always build library object files with shared library cflags · 45502bfe
      Richard Levitte 提交于
      This takes us away from the idea that we know exactly how our static
      libraries are going to get used.  Instead, we make them available to
      build shareable things with, be it other shared libraries or DSOs.
      
      On the other hand, we also have greater control of when the shared
      library cflags.  They will never be used with object files meant got
      binaries, such as apps/openssl or test/test*.
      
      With unified, we take this a bit further and prepare for having to
      deal with extra cflags specifically to be used with DSOs (dynamic
      engines), libraries and binaries (applications).
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      45502bfe
    • E
      TLS: reject duplicate extensions · aa474d1f
      Emilia Kasper 提交于
      Adapted from BoringSSL. Added a test.
      
      The extension parsing code is already attempting to already handle this for
      some individual extensions, but it is doing so inconsistently. Duplicate
      efforts in individual extension parsing will be cleaned up in a follow-up.
      Reviewed-by: NStephen Henson <steve@openssl.org>
      aa474d1f
  12. 19 2月, 2016 3 次提交
    • R
      Remove all special make depend flags, as well as OPENSSL_DOING_MAKEDEPEND · ce192ebe
      Richard Levitte 提交于
      All those flags existed because we had all the dependencies versioned
      in the repository, and wanted to have it be consistent, no matter what
      the local configuration was.  Now that the dependencies are gone from
      the versioned Makefile.ins, it makes much more sense to use the exact
      same flags as when compiling the object files.
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      ce192ebe
    • R
      Fix {TLS,CIPHER}_DEBUG compiles. · d1776fde
      Rich Salz 提交于
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      d1776fde
    • R
      Remove outdated DEBUG flags. · d63a5e5e
      Rich Salz 提交于
      Add -DBIO_DEBUG to --strict-warnings.
      Remove comments about outdated debugging ifdef guards.
      Remove md_rand ifdef guarding an assert; it doesn't seem used.
      Remove the conf guards in conf_api since we use OPENSSL_assert, not assert.
      For pkcs12 stuff put OPENSSL_ in front of the macro name.
      Merge TLS_DEBUG into SSL_DEBUG.
      Various things just turned on/off asserts, mainly for checking non-NULL
      arguments, which is now removed: camellia, bn_ctx, crypto/modes.
      Remove some old debug code, that basically just printed things to stderr:
        DEBUG_PRINT_UNKNOWN_CIPHERSUITES, DEBUG_ZLIB, OPENSSL_RI_DEBUG,
        RL_DEBUG, RSA_DEBUG, SCRYPT_DEBUG.
      Remove OPENSSL_SSL_DEBUG_BROKEN_PROTOCOL.
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      d63a5e5e
  13. 18 2月, 2016 4 次提交