{"push_id":2901564422,"size":11,"distinct_size":1,"ref":"refs/heads/get_server_certificates_extensions","head":"492eb901d3149e6e2a0f897633c74ce67ff33107","before":"0a0cc7ec8bdd679a899f27d6675ea7d91a41c9ff","commits":[{"sha":"4effe1dbf383fc0c13b351f6ffc6d4784733fea6","author":{"name":"David Cooper","email":"7dbfdd6041b2c15406b5ab98120e2bf016dab18a@nist.gov"},"message":"Deprecated elliptic curves\n\nMost of the curves that were defined for the supported_groups extension in RFC 4492 have been deprecated in RFC 8422 and RFC 8446. Appendix B.3.1.4 of RFC 8446 says that these deprecated values \"are used in previous versions of TLS and MUST NOT be offered or negotiated by TLS 1.3 implementations.\"\r\n\r\nAccording to a recent discussion on the TLS mail list (see, for example, https://www.ietf.org/mail-archive/web/tls/current/msg26974.html and https://www.ietf.org/mail-archive/web/tls/current/msg26980.html) a TLS 1.3 server implementation may choose to reject a TLS 1.3 ClientHello simply because the ClientHello offers one or more of the deprecated curves.\r\n\r\nThis PR address this issue by no longer offering the deprecated curves in TLS 1.3 ClientHello messages. This only affects run_pfs(), since socksend_tls_clienthello() already does not offer the deprecated curves in TLS 1.3 ClientHello messages.\r\n\r\nThe change in this PR has no affect on the testing of servers that do not support TLS 1.3. For those that do support TLS 1.3, only the 5 non-deprecated curves are tested with TLS 1.3, but all 30 curves are tested with TLS 1.2.","distinct":false,"url":"https://api.github.com/repos/dcooper16/testssl.sh/commits/4effe1dbf383fc0c13b351f6ffc6d4784733fea6"},{"sha":"9b9f4350597f3c9fff2bd921a4f09abbc9e62dba","author":{"name":"David Cooper","email":"7dbfdd6041b2c15406b5ab98120e2bf016dab18a@nist.gov"},"message":"Fix #1118\n\nThis PR is an attempt to fix the problem identified in #1118.\r\n\r\nCurrently, get_cipher() and get_protocol() attempt the extract the cipher and protocol from the SSL-Session information printed by OpenSSL s_client. This does not always work for TLSv1.3, however, since OpenSSL 1.1.1 will only print SSL-Session information for a TLSv1.3 connection if the server sends New Session Ticket. If the server doesn't, then get_cipher() and get_protocol() return empty strings.\r\n\r\nFor TLSv1.3 connections in which the server does not send a New Session Ticket, there seems to be only one other source for this information. A line of the form:\r\n\r\n        New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384\r\n\r\n[Note that \"New\" would be \"Reused\" if the connection were created via session resumption.]\r\n\r\nThe use of this line seems to be okay for extracting the negotiated cipher, but it cannot be used in general to extract the negotiated protocol. The reason is that this line is created as follows:\r\n\r\n    c = SSL_get_current_cipher(s);\r\n    BIO_printf(bio, \"%s, Cipher is %s\\n\",\r\n               SSL_CIPHER_get_version(c), SSL_CIPHER_get_name(c));\r\n\r\nWhile the cipher that is printed seems to be the negotiated cipher, the protocol that is printed is \"the SSL/TLS protocol version that first defined the cipher.\" Since TLS 1.3 ciphers may only be used with TLS 1.3, protocol version printed on this line may be accepted as the negotiated protocol if and only if it is \"TLSv1.3.\"\r\n\r\nThis PR addresses the problem by modifying get_cipher() and get_protocol() to check the \"New, ..., Cipher is ...\" line if lines from SSL-Session (\"Cipher    : ...\", \"Protocol  : ...\") cannot be found. In the case of get_protocol() the protocol on the \"New, ..., Cipher is ...\" will be accepted only if the protocol is \"TLSv1.3\" and the cipher is a TLSv1.3 cipher.\r\n\r\nThis PR also adds a check for the \"New, ..., Cipher is ...\" to sclient_connect_successful(). If this line is present, and the protocol and cipher are not \"(NONE)\", then this is accepted as an indication that the connection was successful even if the \"Master-Key\" line does not appear. It is not clear whether this extra test is needed, however, as sclient_connect_successful() will not even look at the text in the output of OpenSSL s_client if function's return value is 0, and OpenSSL s_client should return 0 if the connection was successful.","distinct":false,"url":"https://api.github.com/repos/dcooper16/testssl.sh/commits/9b9f4350597f3c9fff2bd921a4f09abbc9e62dba"},{"sha":"41c7e74823d9d61cf8e8acf5aa91b86ef29b925f","author":{"name":"David Cooper","email":"7dbfdd6041b2c15406b5ab98120e2bf016dab18a@nist.gov"},"message":"Avoid unnecessary '0a' characters in ClientHello\n\nAs noted in #1130, the current implementation of socksend_tls_clienthello() results in packets being fragmented wherever a '0a' character appears in the message. This cannot be avoided, but there are a few places where a '0a' character appears in which the character could easily be replaced:\r\n\r\n* In the session_id for a TLSv1.3 ClientHello.\r\n* In the 32-byte client random value\r\n* In any public key sent in the key_share extension\r\n\r\nThis PR removes those uses of the '0a' character. While this does not do much to address the problem, it does result in a slight reduction in the amount of fragmentation of messages.","distinct":false,"url":"https://api.github.com/repos/dcooper16/testssl.sh/commits/41c7e74823d9d61cf8e8acf5aa91b86ef29b925f"},{"sha":"2b46664a83293251bd3d7352ec090df8f76dc7fe","author":{"name":"David Cooper","email":"7dbfdd6041b2c15406b5ab98120e2bf016dab18a@nist.gov"},"message":"Remove '0a' character from public keys\n\nThis commit removes the '0a' character from public keys used in the key_share extension. New key pairs were created by repeatedly generating new keys until one was found that had no '0a' characters in the public key.","distinct":false,"url":"https://api.github.com/repos/dcooper16/testssl.sh/commits/2b46664a83293251bd3d7352ec090df8f76dc7fe"},{"sha":"7b9a673b6e7e18e023fab22a3b6fdbe09bd93c87","author":{"name":"Dirk Wetter","email":"a00b27378a09822d5638cdfb8c2e7ccc36d74c56@testssl.sh"},"message":"Merge pull request #1131 from dcooper16/avoid_oa\n\nAvoid unnecessary '0a' characters in ClientHello","distinct":false,"url":"https://api.github.com/repos/dcooper16/testssl.sh/commits/7b9a673b6e7e18e023fab22a3b6fdbe09bd93c87"},{"sha":"0727a304560e129efebf88d323ba576aad4737d9","author":{"name":"Dirk Wetter","email":"a00b27378a09822d5638cdfb8c2e7ccc36d74c56@testssl.sh"},"message":"Merge pull request #1129 from dcooper16/fix_1118\n\nFix #1118","distinct":false,"url":"https://api.github.com/repos/dcooper16/testssl.sh/commits/0727a304560e129efebf88d323ba576aad4737d9"},{"sha":"11d74d2f6e66e665111469440ed9afe3a7df2baf","author":{"name":"Dirk","email":"a00b27378a09822d5638cdfb8c2e7ccc36d74c56@testssl.sh"},"message":"Remove the cat in get_cipher() and get_protocol()\n\nSee #1129","distinct":false,"url":"https://api.github.com/repos/dcooper16/testssl.sh/commits/11d74d2f6e66e665111469440ed9afe3a7df2baf"},{"sha":"dd3657eb23c8234147cb9c8be8059213f856be9e","author":{"name":"Dirk","email":"a00b27378a09822d5638cdfb8c2e7ccc36d74c56@testssl.sh"},"message":"Fix TCP fragmentation\n\nAs @tomato42 pointed out in #1113 '\\x0a' causes the printf buffer\nto flush before all data was sent. As a result any '\\x0a' in\na ClientHello causes a new TCP fragment.\n\nThis commit changes all TCP sockets write to use an external\nprintf if available which doesn't show this behaviour, see #1130.\nIt was checked against wireshark.\n\nThe external printf was available for Linux, FreeBSD 9 and OpenBSD,\nso I do not expect any problems with MacOS X either.\n\nThere might be further solutions like 'stdbuf' or 'dd' which\nare shown in #1130.","distinct":false,"url":"https://api.github.com/repos/dcooper16/testssl.sh/commits/dd3657eb23c8234147cb9c8be8059213f856be9e"},{"sha":"39822d89e9d60e5085fbb6d72327672cf80b0148","author":{"name":"Dirk","email":"a00b27378a09822d5638cdfb8c2e7ccc36d74c56@testssl.sh"},"message":"Merge branch '2.9dev' of github.com:drwetter/testssl.sh into 2.9dev","distinct":false,"url":"https://api.github.com/repos/dcooper16/testssl.sh/commits/39822d89e9d60e5085fbb6d72327672cf80b0148"},{"sha":"441f14ae90bdb3eaca30dc541abf1005e281c04f","author":{"name":"Dirk Wetter","email":"a00b27378a09822d5638cdfb8c2e7ccc36d74c56@testssl.sh"},"message":"Merge pull request #1124 from dcooper16/deprecated_curves\n\nDeprecated elliptic curves","distinct":false,"url":"https://api.github.com/repos/dcooper16/testssl.sh/commits/441f14ae90bdb3eaca30dc541abf1005e281c04f"},{"sha":"492eb901d3149e6e2a0f897633c74ce67ff33107","author":{"name":"David Cooper","email":"2388ab39fb72c677f52d03cac80a644cb935035f@gmail.com"},"message":"Remove extra call to s_client\n\nThis PR removes an extra call to `$OPENSSL s_client` in `get_server_certificates()` and it also changes `get_server_certificates()` to not collect extensions when SNI is not being provided.","distinct":true,"url":"https://api.github.com/repos/dcooper16/testssl.sh/commits/492eb901d3149e6e2a0f897633c74ce67ff33107"}]}
{"actor":{"display_login":"dcooper16"}}