diff --git a/fetch.bs b/fetch.bs index a46852e0a..800a7ceb7 100755 --- a/fetch.bs +++ b/fetch.bs @@ -2248,6 +2248,19 @@ Unless stated otherwise, it is false.

This flag is for exclusive use by HTML's render-blocking mechanism. [[!HTML]] +

A request has an associated WebTransport-hash list (a +WebTransport-hash list). Unless stated otherwise it is « ». + +

A WebTransport-hash list is a list of zero or more +WebTransport-hashes. + +

A WebTransport-hash is a tuple +consisting of an algorithm (a string) and a +value (a byte sequence). + +

This list is for exclusive use by {{WebTransport/WebTransport(url, options)}} when +options contains {{WebTransportOptions/serverCertificateHashes}}. +


A request has an associated @@ -3003,16 +3016,19 @@ steps:

To obtain a connection, given a network partition key key, URL url, boolean credentials, an optional new connection setting new (default -"no"), and an optional boolean -requireUnreliable (default false), run these -steps: - +"no"), an optional boolean +requireUnreliable (default false), and an +optional WebTransport-hash list +webTransportHashes (default « »): +

  1. -

    If new is "no", then: +

    If new is "no":

      +
    1. Assert: webTransportHashes is empty. +

    2. Let connections be a set of connections in the user agent's connection pool whose key is key, origin is url's origin, and @@ -3060,10 +3076,11 @@ steps:

      Let connection be the result of running this step: run create a connection given key, url's origin, credentials, proxy, an implementation-defined host from hosts, - timingInfo, and requireUnreliable an implementation-defined number - of times, in parallel from each other, and wait for at least 1 to return a value. In an - implementation-defined manner, select a value to return from the returned values and - return it. Any other returned values that are connections may be closed. + timingInfo, requireUnreliable, and webTransportHashes an + implementation-defined number of times, in parallel from each other, and wait for + at least 1 to return a value. In an implementation-defined manner, select a value to + return from the returned values and return it. Any other returned values that are + connections may be closed.

      Essentially this allows an implementation to pick one or more IP addresses from the return value of resolve an origin (assuming @@ -3094,8 +3111,9 @@ reused across connections whose credentials are fal

      To create a connection, given a network partition key key, origin origin, boolean credentials, string proxy, -host host, connection timing info timingInfo, and -boolean requireUnreliable, run these steps: +host host, connection timing info timingInfo, +boolean requireUnreliable, and a WebTransport-hash list +webTransportHashes:

      1. Set timingInfo's connection start time to the @@ -3122,6 +3140,12 @@ boolean requireUnreliable, run these steps:

      2. If credentials is false, then do not send a TLS client certificate. +

      3. If webTransportHashes [=list/is not empty=], instead of using the default + certificate verification algorithm, consider the server certificate valid if it meets the + [=custom certificate requirements=] and if + [=verify a certificate hash|verifying the certificate hash=] against |webTransportHashes| returns + true. If either condition is not met, then return failure. +

      4. If establishing a connection does not succeed (e.g., a UDP, TCP, or TLS error), then return failure.