• Alex Klyubin's avatar
    Expose support for TLS-PSK. · 01cce891
    Alex Klyubin authored
    TLS-PSK (Pre-Shared Key) is a set of TLS/SSL cipher suites that use
    symmetric (pre-shared) keys for mutual authentication of peers. These
    cipher suites are in some scenarios more suitable than those based on
    public key cryptography and X.509. See RFC 4279 (Pre-Shared Key
    Ciphersuites for Transport Layer Security (TLS)) for more information.
    
    OpenSSL currently supports only the following PSK cipher suites:
    * TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
    * TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
    * TLS_PSK_WITH_3DES_EDE_CBC_SHA
    * TLS_PSK_WITH_AES_128_CBC_SHA
    * TLS_PSK_WITH_AES_256_CBC_SHA
    * TLS_PSK_WITH_RC4_128_SHA
    
    The last four cipher suites mutually authenticate the peers and
    secure the connection using a pre-shared symmetric key. These cipher
    suites do not provide Forward Secrecy -- once the pre-shared key is
    compromised, all previous communications secured with that key can be
    decrypted. The first two cipher suites combine the pre-shared
    symmetric key with an ephemeral key obtained from an ECDH key
    exchange performed during the TLS/SSL handshake, thus providing
    Forward Secrecy.
    
    Users of TLS-PSK are expected to provide an implementation of
    PSKKeyManager to SSLContext.init and then enable at least one PSK
    cipher suite in SSLSocket/SSLEngine.
    
    Bug: 15073623
    Change-Id: I8e59264455f980f23a5e66099c27b5b4d932b9bb
    01cce891
SSLParametersImpl.java 36.6 KB