ssl: Correct handling of certificate_types in Certificate Requests

FROM TLS 1.2 RFC:
   The interaction of the certificate_types and
   supported_signature_algorithms fields is somewhat complicated.
   certificate_types has been present in TLS since SSLv3, but was
   somewhat underspecified.  Much of its functionality is superseded by
   supported_signature_algorithms.  The following rules apply:

   -  Any certificates provided by the client MUST be signed using a
      hash/signature algorithm pair found in
      supported_signature_algorithms.

   -  The end-entity certificate provided by the client MUST contain a
      key that is compatible with certificate_types.  If the key is a
      signature key, it MUST be usable with some hash/signature
      algorithm pair in supported_signature_algorithms.

   -  For historical reasons, the names of some client certificate types
      include the algorithm used to sign the certificate.  For example,
      in earlier versions of TLS, rsa_fixed_dh meant a certificate
      signed with RSA and containing a static DH key.  In TLS 1.2, this
      functionality has been obsoleted by the
      supported_signature_algorithms, and the certificate type no longer
      restricts the algorithm used to sign the certificate.  For
      example, if the server sends dss_fixed_dh certificate type and
      {{sha1, dsa}, {sha1, rsa}} signature types, the client MAY reply
      with a certificate containing a static DH key, signed with RSA-
      SHA1.
public_key: Correct ASN-1 spec
public_key: Correct ASN1-type EcpkParameters in PEM handling
ssl: Test ECDSA and improve test suite maintainability

Use generated certs instead of hard coded
ssl: Make sure the correct ROOT-cert is used

When dealing with older certificates that does not indicate its signer
with a certificate extension, we must search the database for the issure.
Finding the issuer is not enough, we need to verify the signature
with the key in the found issuer cert.
public_key: Updated User Guide with ECC records
Merge branch 'ia/ssl/certificate_types/certificate_requests/OTP-12026' into maint

* ia/ssl/certificate_types/certificate_requests/OTP-12026:
  public_key: Updated User Guide with ECC records
  ssl: Make sure the correct ROOT-cert is used
  ssl: Test ECDSA and improve test suite maintainability
  public_key: Correct ASN1-type EcpkParameters in PEM handling
  public_key: Correct ASN-1 spec
  ssl: Correct handling of certificate_types in Certificate Requests
ssh: Add testcases for max_sessions option

Now checks that if we have max_session sessions we could close one session and open a new one.  That is checked both for parallel and non-parallel logins.
Merge branch 'hans/ssh/new_test_case' into maint

* hans/ssh/new_test_case:
  ssh: Add testcases for max_sessions option
Accept inet:ip_address() in net_adm:names/1

This change also simplifies the code avoiding a double (conditional)
call to inet:gethostbyname/1 (in net_adm:names/1 and then
erl_epmd:names/1).
Refactor erl_epmd:names/1

Simplify erl_epmd:names/1, keeping the same functionalities, relying
on inet:gethostbyname/1 being able to handle both atoms and strings.
Fix +swct doc
Merge branch 'rickard/+swct/OTP-12102' into maint

* rickard/+swct/OTP-12102:
  Fix +swct doc
dialyzer: fix a -Wunderspecs bug

Sometimes bogus warnings were generated for parametrized types.

Thanks to Krzesimir Sarnecki for pointing the bug out.

Also corrected warnings where the structure of opaque types were
exposed (thanks to Kostis for pointing the bug out).
Merge branch 'hb/dialyzer/bugfix/OTP-12111' into maint

* hb/dialyzer/bugfix/OTP-12111:
  dialyzer: fix a -Wunderspecs bug
dialyzer, hipe: Fix a bug concerning is_record/2,3

Also fixed some cases where Dialyzer could crash due to reaching
system limits.
Merge branch 'hb/dialyzer/bugfixes/OTP-12018' into maint

* hb/dialyzer/bugfixes/OTP-12018:
  dialyzer, hipe: Fix a bug concerning is_record/2,3
Merge branch 'lucafavatella/accept-ip-in-net_adm-names' into maint

* lucafavatella/accept-ip-in-net_adm-names:
  Refactor erl_epmd:names/1
  Accept inet:ip_address() in net_adm:names/1