Elliptic Crypto support for OpenSSLSocketImpl

Summary:
- Enable Elliptic Crypto support for OpenSSL based SSLSocket instances
- More RI compliant usage of key types, client auth types, and server auth types
- Steps toward TLS_EMPTY_RENEGOTIATION_INFO_SCSV support, currently test updates

Details:

Elliptic Curve changes

    CipherSuite updates for EC
    - Adding KEY_EXCHANGE_EC* and corresponding CipherSuites Updated
      isAnonymous, getKeyType (now renamed getServerKeyType) to handle
      new EC cases.  Added new getAuthType for use by
      checkServerTrusted callers.
    - Restructured code to handle two SUITES_BY_CODE_* arrays
    - Remove KEY_EXCHANGE_DH_* definitions which unused because the
      corresponding CipherSuites were previously disabled.
    - Changed AES CipherSuites definitions to use "_CBC" to match other definitions.
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/CipherSuite.java

    openssl EC
    - NativeCrypto now registers TLS_EC_* cipher suites and has update default list
    - Improved auth type arguments to checkClientTrusted/checkServerTrusted
    - NativeCrypto support for emphemeral EC keys
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/NativeCrypto.java
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl.java
	luni/src/main/native/NativeCrypto.cpp

non-openssl SSL/TLS cleanups

    - cleanup around code trying to cope with DiffieHellman vs DH since either should work.
    - changed client to use new CipherSuite.getAuthType shared with NativeCrypto implementation
    - changed server to use CipherSuite.getKeyType
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ClientHandshakeImpl.java
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/HandshakeProtocol.java
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/KeyManagerImpl.java
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ServerHandshakeImpl.java

Consolidate CertificateRequestType code into CipherSuite so that its
shared between java and openssl implementations. This includes the
KEY_TYPE_ string constants, TLS_CT_* byte constants and the 'String
keyType(byte)' (now renamed getClientKeyType) code that depends on them.

	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/CertificateRequest.java
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/CipherSuite.java
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ClientHandshakeImpl.java
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/NativeCrypto.java
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLServerSocketImpl.java
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl.java
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ServerHandshakeImpl.java

Tests

   Differentiate between supported list of cipher suites openssl-based
   SSLSocket and SSLEngine based, since the SSLEngine code does not support EC.

	luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java
	luni/src/test/java/libcore/javax/net/ssl/SSLSocketTest.java

   Added testing for expected default cipher suites. Before we just ensured the values were valid.
	luni/src/test/java/libcore/javax/net/ssl/SSLSocketFactoryTest.java
	support/src/test/java/libcore/java/security/StandardNames.java

   Updated to handle new EC cipher suites codes. Added test for new getClientKeyType.
	luni/src/test/java/org/apache/harmony/xnet/provider/jsse/CipherSuiteTest.java

   Better use of "standard names" particularly to correctly deal with
   the subtle differences between key types, client auth types, and
   server auth types. TestKeyManager and TestTrustManager now verify
   the values they are passed are acceptable.

	support/src/test/java/libcore/java/security/StandardNames.java
	support/src/test/java/libcore/javax/net/ssl/TestKeyManager.java
	support/src/test/java/libcore/javax/net/ssl/TestTrustManager.java

   Changed to timeout after 30 seconds and to log to reveal both client and server issues.
	support/src/test/java/libcore/javax/net/ssl/TestSSLSocketPair.java

Bug: 3058375
Change-Id: I14d1d0285d591c99cc211324f3595a5be682cab1
19 files changed