msgid ""
msgstr ""
"Project-Id-Version: English (Boost Beast Translation (zh_Hans))\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-06-06 22:38+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: English <https://insights.cppalliance.org/weblate/projects/"
"boost-beast-documentation-zh_Hans/doc-qbk-03-core-10-ssl-tls-shutdown-qbk/"
"en/>\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.5\n"

#. type: section title
#: 10
#, read-only
msgid "SSL/TLS Shutdown"
msgstr "SSL/TLS Shutdown"

#. type: paragraph
#: 13
#, read-only
msgid ""
"A secure SSL/TLS connection requires a proper shutdown process to securely "
"indicate the [@https://en.wikipedia.org/wiki/End-of-file ['EOF]] condition. "
"This process prevents a type of attack known as a [@https://en.wikipedia.org/"
"wiki/Transport_Layer_Security#Truncation_attack ['truncation attack]] in "
"which an attacker can close the underlying transport layer and control the "
"length of the last message in the SSL/TLS connection. A shutdown process "
"consists of exchanging `close_notify` message between two parties. In "
"__Asio__ these steps happen by calling `shutdown()` or `async_shutdown()` on "
"`ssl::stream` object."
msgstr ""
"A secure SSL/TLS connection requires a proper shutdown process to securely "
"indicate the [@https://en.wikipedia.org/wiki/End-of-file ['EOF]] condition. "
"This process prevents a type of attack known as a [@https://en.wikipedia.org/"
"wiki/Transport_Layer_Security#Truncation_attack ['truncation attack]] in "
"which an attacker can close the underlying transport layer and control the "
"length of the last message in the SSL/TLS connection. A shutdown process "
"consists of exchanging `close_notify` message between two parties. In "
"__Asio__ these steps happen by calling `shutdown()` or `async_shutdown()` on "
"`ssl::stream` object."

#. type: section title
#: 25
#, read-only
msgid "error::stream_truncated"
msgstr "error::stream_truncated"

#. type: paragraph
#: 27
#, read-only
msgid ""
"There are SSL/TLS implementations that don't perform a proper shutdown "
"process and simply close the underlying transport layer instead. As a "
"result, the EOF condition in these applications is not cryptographically "
"secure and should not be relied upon. However, there are scenarios where an "
"HTTPS client or server doesn't need EOF for determining the end of the last "
"message:"
msgstr ""
"There are SSL/TLS implementations that don't perform a proper shutdown "
"process and simply close the underlying transport layer instead. As a "
"result, the EOF condition in these applications is not cryptographically "
"secure and should not be relied upon. However, there are scenarios where an "
"HTTPS client or server doesn't need EOF for determining the end of the last "
"message:"

#. type: list
#: 33
#, read-only
msgid "* The HTTP message has a `Content-Length` header, and the body is fully"
msgstr "* The HTTP message has a `Content-Length` header, and the body is fully"

#. type: list
#: 36
#, read-only
msgid ""
"* The HTTP message uses chunked transfer encoding, and the final chunk is"
msgstr ""
"* The HTTP message uses chunked transfer encoding, and the final chunk is"

#. type: list
#: 39
#, read-only
msgid ""
"* The HTTP message doesn't contain a body, such as any response with a 1xx"
msgstr ""
"* The HTTP message doesn't contain a body, such as any response with a 1xx"

#. type: paragraph
#: 42
#, read-only
msgid ""
"In such scenarios, `http::read` or `http::async_read` operations succeed as "
"they don't need EOF to complete. However, the next operation on the stream "
"would fail with an [@boost:/doc/html/boost_asio/reference/"
"ssl__error__stream_errors.html `net::ssl::error::stream_truncated`] error."
msgstr ""
"In such scenarios, `http::read` or `http::async_read` operations succeed as "
"they don't need EOF to complete. However, the next operation on the stream "
"would fail with an [@boost:/doc/html/boost_asio/reference/"
"ssl__error__stream_errors.html `net::ssl::error::stream_truncated`] error."

#. type: paragraph
#: 48
#, read-only
msgid ""
"For example, let's assume we are using Beast for communicating with an HTTPS "
"server that doesn't perform a proper SSL/TLS shutdown:"
msgstr ""
"For example, let's assume we are using Beast for communicating with an HTTPS "
"server that doesn't perform a proper SSL/TLS shutdown:"

#. type: heading
#: 55
#, read-only
msgid "Non-Compliant Peers and Unknown Body Length"
msgstr "Non-Compliant Peers and Unknown Body Length"

#. type: paragraph
#: 57
#, read-only
msgid ""
"This is a rare case and indeed a security issue when HTTPS servers don't "
"perform a proper SSL/TLS shutdown procedure and send an HTTP response "
"message that relies on EOF to determine the end of the body. This is a "
"security concern because without an SSL/TLS shutdown procedure, the EOF is "
"not cryptographically secure, leaving the message body vulnerable to "
"truncation attacks."
msgstr ""
"This is a rare case and indeed a security issue when HTTPS servers don't "
"perform a proper SSL/TLS shutdown procedure and send an HTTP response "
"message that relies on EOF to determine the end of the body. This is a "
"security concern because without an SSL/TLS shutdown procedure, the EOF is "
"not cryptographically secure, leaving the message body vulnerable to "
"truncation attacks."

#. type: paragraph
#: 63
#, read-only
msgid ""
"The following is an example that can read an HTTP response from such a "
"server:"
msgstr ""
"The following is an example that can read an HTTP response from such a "
"server:"
