Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

Initial implementation of X509Certificates, HttpClient, and SslStream for macOS #16445

Merged
merged 8 commits into from Mar 1, 2017

Commits on Feb 24, 2017

  1. Initial implementation of X509Certificates, HttpClient, and SslStream…

    … for macOS
    
    Broken by this change:
    * A lot of TLS CipherSuites have no metadata defined.
    * macOS does not support version skipping in TLS.  So `Tls | Tls12` is an invalid choice.
    
    In this change:
    General:
    * All OSStatus related exceptions now look up the error message.
    
    X509Certificates:
    * X509Certificate moves to using SecCertificateRef from OpenSSL's X509.
    * X509 metadata comes from a managed reader after being loaded by Security.framework,
    due to the significant amount of data that has no public export in Apple's libraries.
    * Significant code was factored out to be shared by OpenSSL and Apple implementations for X500DistinguishedName and X509Certficate2Collection.Find.
    * Loading a PFX (or, rather, the private keys from a PFX) via Apple's platform
    requires importing into a Keychain, and a Keychain requires a file on disk.
    A temporary keychain is created during cert loading and erased when safe.
    Like the perphemeral key load on Windows this can leak files due to
    abnormal program termination.
    * The X.509 My store for CurrentUser and LocalMachine are the default (user) and System keychains.
    * The X.509 Root store is an interpretation of the Apple SecTrustSettings data.
    * The X.509 Disallowed store hasn't been implemented yet, but should be a very small change.
    * Other X.509 stores cannot be created due to keychain complexity.
    
    HttpClient:
    * Initialization no longer wakes up OpenSSL
    
    SslStream:
    * New implementation based on Apple SecureTransport.
    * Currently has support for SNI (for AuthenticateAsClient)
    bartonjs committed Feb 24, 2017
    Copy the full SHA
    c9f3760 View commit details
    Browse the repository at this point in the history
  2. Copy the full SHA
    24ec96f View commit details
    Browse the repository at this point in the history

Commits on Feb 27, 2017

  1. Copy the full SHA
    e7bd43c View commit details
    Browse the repository at this point in the history

Commits on Feb 28, 2017

  1. Simply HasTag

    bartonjs committed Feb 28, 2017
    Copy the full SHA
    9edcf76 View commit details
    Browse the repository at this point in the history
  2. Simplify test constraints

    bartonjs committed Feb 28, 2017
    Copy the full SHA
    46e5a71 View commit details
    Browse the repository at this point in the history
  3. Copy the full SHA
    bb8c869 View commit details
    Browse the repository at this point in the history
  4. Copy the full SHA
    dc56700 View commit details
    Browse the repository at this point in the history
  5. Copy the full SHA
    a0be45a View commit details
    Browse the repository at this point in the history