TrustManager improvements

Overhaul of TrustManagerImpl
- PKIXParameters can now be final in TrustManagerImpl because we
  always immediately create an IndexedPKIXParameters instead of only
  doing it in SSLParametersImpl.createDefaultTrustManager.
- Use new KeyStore constructor for IndexedPKIXParameters to remove
  duplicate logic for creating set of TrustAnchors from a KeyStore.
- Improved checkTrusted/cleanupCertChain to remove special cases for
  directly trusting the end cert or pruning only self signed certs. To
  support b/2530852, we need to stop prune the chain as soon as we
  find any trust anchor (using newly improved
  TrustManagerImpl.isTrustAnchor), which could be at the beginning,
  middle, or end. That means cleanupCertChain can return an empty
  chain if everything was trusted directly. (and we don't need to do
  extra checks on exception cases to see if the problem was just that
  the trust anchor was in the chain)
- isDirectlyTrusted -> isTrustAnchor here as well, using new
  IndexedPKIXParameters.isTrustAnchor APIs
- Fix incorrect assumption in getAcceptedIssuers that all TrustAnchor
  instances have non-null results for getTrustedCert.

	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/TrustManagerImpl.java

    Removed indexing in createDefaultTrustManager since we always index now

	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLParametersImpl.java

Overhaul of IndexedPKIXParameters
- Single map from subject X500Principal to TrustAnchors
  instead of two different X500Principal keyed maps to check
- Removed map based on encoded cert. For b/2530852, we want to treat
  certs as equal if they have the same name and public key, not
  byte-for-byte equality, which can be done with the remaining map.
  Revamped isDirectlyTrusted into isTrustAnchor(cert) to perform this
  new name/key based comparison.
- Added helper isTrustAnchor(cert, anchors) to reuse code in
  non-IndexedPKIXParameters case in TrustManagerImpl.
- Added constructor from KeyStore
- Moved anchor indexing code to index() from old constructor

	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/IndexedPKIXParameters.java

TestKeyStore.getPrivateKey allowed some existing test simplification.

	luni/src/test/java/libcore/java/security/KeyStoreTest.java
	luni/src/test/java/org/apache/harmony/xnet/provider/jsse/NativeCryptoTest.java
	support/src/test/java/libcore/java/security/TestKeyStore.java

Added missing "fail()" before catching expected exceptions.

	luni/src/test/java/libcore/java/security/KeyStoreTest.java

Expanded KeyManagerFactoryTest to excercise ManagerFactoryParameters b/1628001

	luni/src/test/java/libcore/javax/net/ssl/KeyManagerFactoryTest.java

Added KeyStoreBuilderParametersTest because I thought I saw a bug in
KeyStoreBuilderParameters, but this convinced me otherwise.

	luni/src/test/java/libcore/javax/net/ssl/KeyStoreBuilderParametersTest.java

New TrustManagerFactory test modeled on expanded KeyManagerFactoryTest.
test_TrustManagerFactory_intermediate specifically is targeting the
new functionality of b/2530852 to handling trust anchors within the
chain.

	luni/src/test/java/libcore/javax/net/ssl/TrustManagerFactoryTest.java
	support/src/test/java/libcore/java/security/StandardNames.java

Some initial on tests for Elliptic Curve (b/3058375) after the RI
started reporting it was supported. Removed old @KnownFailure
tags. Skipped a test on the RI that it can't handle. Improved some
assert messages.

	luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java
	luni/src/test/java/libcore/javax/net/ssl/SSLSocketTest.java
	support/src/test/java/libcore/java/security/StandardNames.java
	support/src/test/java/libcore/java/security/TestKeyStore.java

Removed unneeded bytes->javax->bytes->java case of which can just go bytes->java directly.
	luni/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl.java

Removed super()
	luni/src/main/java/javax/net/ssl/KeyStoreBuilderParameters.java

Made Security.secprops final
	luni/src/main/java/java/security/Security.java

Pulled SamplingProfiler fix from dalvik-dev branch
    git cherry-pick --no-commit f9dc3450e8f23cab91efc9df99bb860221ac3d6c
	dalvik/src/main/java/dalvik/system/SamplingProfiler.java

Bug: 2530852
Change-Id: I95e0c7ee6a2f66b6986b3a9da9583d1ae52f94dd
16 files changed