diff options
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 198 |
1 files changed, 198 insertions, 0 deletions
@@ -28,6 +28,204 @@ history is also available from Git. | |||
28 | 28 | ||
29 | LibreSSL Portable Release Notes: | 29 | LibreSSL Portable Release Notes: |
30 | 30 | ||
31 | 3.7.0 - Development release | ||
32 | |||
33 | * Internal improvements | ||
34 | - Remove dependency on system timegm() and gmtime() by replacing | ||
35 | traditional Julian date conversion with POSIX epoch-seconds date | ||
36 | conversion from BoringSSL. | ||
37 | - Clean old and unused BN code dealing with primes. | ||
38 | - Start rewriting name constraints code using CBS. | ||
39 | - Remove support for the HMAC PRIVATE KEY. | ||
40 | - Rework DSA signing and verifying internals. | ||
41 | - First few passes on cleaning up the BN code. | ||
42 | - Internal headers coming from OpenSSL are all called *_local.h now. | ||
43 | - Rewrite TLSv1.2 key exporter. | ||
44 | - Cleaned up and refactored various aspects of the legacy TLS stack. | ||
45 | * Compatibility changes | ||
46 | - BIO_read() and BIO_write() now behave more closely to OpenSSL 3 in | ||
47 | various corner cases. More work is needed here. | ||
48 | * Bug fixes | ||
49 | - Add EVP_chacha20_poly1305() to the list of all ciphers. | ||
50 | - Fix potential leaks of EVP_PKEY in various printing functions | ||
51 | - Fix potential leak in OBJ_NAME_add(). | ||
52 | - Avoid signed overflow in i2c_ASN1_BIT_STRING(). | ||
53 | - Clean up EVP_PKEY_ASN1_METHOD related tables and code. | ||
54 | - Fix long standing bugs BN_GF2m_poly2arr() and BN_GF2m_mod(). | ||
55 | - Fix segfaults in BN_{dec,hex}2bn(). | ||
56 | - Fix NULL dereference in x509_constraints_uri_host() reachable only | ||
57 | in the process of generating certificates. | ||
58 | - Fixed a variety of memory corruption issues in BIO chains coming | ||
59 | from poor old and new API: BIO_push(), BIO_pop(), BIO_set_next(). | ||
60 | - Avoid potential divide by zero in BIO_dump_indent_cb() | ||
61 | * Documentation improvements | ||
62 | - Numerous improvements and additions for ASN.1, BIO, BN, and X.509. | ||
63 | - The BN documentation is now considered to be complete. | ||
64 | * Testing and Proactive Security | ||
65 | - As always, new test coverage is added as bugs are fixed and | ||
66 | subsystems are cleaned up. | ||
67 | - Many old tests rewritten, cleaned up and extended. | ||
68 | * New features | ||
69 | - Added Ed25519 support both as a primitive and via OpenSSL's EVP | ||
70 | interfaces. | ||
71 | - X25519 is now also supported via EVP. | ||
72 | - The OpenSSL 1.1 raw public and private key API is available with | ||
73 | support for EVP_PKEY_ED25519, EVP_PKEY_HMAC and EVP_PKEY_X25519. | ||
74 | Poly1305 is not currently supported via this interface. | ||
75 | |||
76 | 3.6.1 - Stable release | ||
77 | |||
78 | * Bug fixes | ||
79 | - Custom verification callbacks could cause the X.509 verifier to | ||
80 | fail to store errors resulting from leaf certificate verification. | ||
81 | Reported by Ilya Shipitsin. | ||
82 | - Unbreak ASN.1 indefinite length encoding. | ||
83 | Reported by Niklas Hallqvist. | ||
84 | |||
85 | 3.6.0 - Development release | ||
86 | |||
87 | * Internal improvements | ||
88 | - Avoid expensive RFC 3779 checks during cert verification. | ||
89 | - The templated ASN.1 decoder has been cleaned up, refactored, | ||
90 | modernized with parts rewritten using CBB and CBS. | ||
91 | - The ASN.1 time parser has been rewritten. | ||
92 | - Rewrite and fix ASN1_STRING_to_UTF8(). | ||
93 | - Use asn1_abs_set_unused_bits() rather than inlining it. | ||
94 | - Simplify ec_asn1_group2curve(). | ||
95 | - First pass at a clean up of ASN1_item_sign_ctx() | ||
96 | - ssl_txt.c was cleaned up. | ||
97 | - Internal function arguments and struct member have been changed | ||
98 | to size_t. | ||
99 | - Lots of missing error checks of EVP API were added. | ||
100 | - Clean up and clarify BN_kronecker(). | ||
101 | - Simplify ASN1_INTEGER_cmp() | ||
102 | - Rewrite ASN1_INTEGER_{get,set}() using CBS and CBB and reuse | ||
103 | the ASN1_INTEGER functions for ASN1_ENUMERATED. | ||
104 | - Use ASN1_INTEGER to parse and build {Z,}LONG_it | ||
105 | - Refactored and cleaned up group (elliptic curve) handling in | ||
106 | t1_lib.c. | ||
107 | - Simplify certificate list handling code in the legacy server. | ||
108 | - Make CBB_finish() fail if *out_data is not NULL. | ||
109 | - Remove tls_buffer_set_data() and remove/revise callers. | ||
110 | - Rewrite SSL{_CTX,}_set_alpn_protos() using CBS. | ||
111 | - Simplify tlsext_supported_groups_server_parse(). | ||
112 | - Remove redundant length checks in tlsext parse functions. | ||
113 | - Simplify tls13_server_encrypted_extensions_recv(). | ||
114 | - Add read and write support to tls_buffer. | ||
115 | - Convert TLS transcript from BUF_MEM to tls_buffer. | ||
116 | - Clear key on exit in PKCS12_gen_mac(). | ||
117 | - Minor fixes in PKCS12_parse(). | ||
118 | - Provide and use a primitive clear function for BIGNUM_it. | ||
119 | - Use ASN1_INTEGER to encode/decode BIGNUM_it. | ||
120 | - Add stack frames to AES-NI x86_64 assembly. | ||
121 | - Use named initialisers for BIGNUMs. | ||
122 | - Tidy up some of BN_nist_mod_*. | ||
123 | - Expand BLOCK_CIPHER_* and related macros. | ||
124 | - Avoid shadowing the cbs function parameter in | ||
125 | tlsext_alpn_server_parse() | ||
126 | - Deduplicate peer certificate chain processing code. | ||
127 | - Make it possible to signal an error from an i2c_* function. | ||
128 | - Rewrite i2c_ASN1_INTEGER() using CBB/CBS. | ||
129 | - Remove UINT32_MAX limitation on ChaCha() and CRYPTO_chacha_20(). | ||
130 | - Remove bogus length checks from EVP_aead_chacha20_poly1305(). | ||
131 | - Reworked DSA_size() and ECDSA_size(). | ||
132 | - Stop using CBIGNUM_it internal to libcrypto. | ||
133 | - Provide c2i_ASN1_ENUMERATED_cbs() and call it from | ||
134 | asn1_c2i_primitive(). | ||
135 | - Ensure ASN.1 types are appropriately encoded. | ||
136 | - Avoid recycling ASN1_STRINGs when decoding ASN.1. | ||
137 | - Tidy up asn1_c2i_primitive() slightly. | ||
138 | - Mechanically expand IMPLEMENT_BLOCK_CIPHER, IMPLEMENT_CFBR, | ||
139 | BLOCK_CIPHER and the looney M_do_cipher macros. | ||
140 | - Use correct length for EVP CFB mode ciphers. | ||
141 | - Provide a version of ssl_msg_callback() that takes a CBS. | ||
142 | - Use CBS to parse TLS alerts in the legacy stack. | ||
143 | - Increment the input and output position for EVP AES CFB1. | ||
144 | - Ensure there is no trailing data for a CCS received by the | ||
145 | TLSv1.3 stack. | ||
146 | - Use CBS when procesing a CCS message in the legacy stack. | ||
147 | - Be stricter with middlebox compatibility mode in the TLSv1.3 | ||
148 | server. | ||
149 | * Compatibility changes | ||
150 | - The ASN.1 time parser has been refactored and rewritten using CBS. | ||
151 | It has been made stricter in that it now enforces the rules from | ||
152 | RFC 5280. | ||
153 | - ASN1_AFLG_BROKEN was removed. | ||
154 | - Error check tls_session_secret_cb() like OpenSSL. | ||
155 | - Added ASN1_INTEGER_{get,set}_{u,}int64() | ||
156 | - Move leaf certificate checks to the last thing after chain | ||
157 | validation. | ||
158 | - Added -s option to openssl(1) ciphers that only shows the ciphers | ||
159 | supported by the specified protocol. | ||
160 | - Use TLS_client_method() instead of TLSv1_client_method() in | ||
161 | the openssl(1) ciphers command. | ||
162 | - Validate the protocols in SSL{_CTX,}_set_alpn_protos(). | ||
163 | - Made TS and PKCS12 opaque. | ||
164 | - Per RFC 7292, safeContentsBag is a SEQUENCE OF, not a SET OF. | ||
165 | - Align PKCS12_key_gen_uni() with OpenSSL | ||
166 | - Various PKCS12 and TS accessors were added. In particular, the | ||
167 | TS_RESP_CTX_set_time_cb() function was added back. | ||
168 | - Allow a NULL header in PEM_write{,_bio}() | ||
169 | - Allow empty attribute sets in CSRs. | ||
170 | - Adjust signatures of BIO_ctrl functions. | ||
171 | - Provide additional defines for EVP AEAD. | ||
172 | - Provide OPENSSL_cleanup(). | ||
173 | - Make BIO_info_cb() identical to bio_info_cb(). | ||
174 | * Bug fixes | ||
175 | - Avoid use of uninitialized in BN_mod_exp_recp(). | ||
176 | - Fix X509_get_extension_flags() by ensuring that EXFLAG_INVALID is | ||
177 | set on X509_get_purpose() failure. | ||
178 | - Fix HMAC() with NULL key. | ||
179 | - Add ERR_load_{COMP,CT,KDF}_strings() to ERR_load_crypto_strings(). | ||
180 | - Avoid strict aliasing violations in BN_nist_mod_*(). | ||
181 | - Do not return X509_V_ERR_UNSPECIFIED from X509_check_ca(). | ||
182 | No return value of X509_check_ca() indicates failure. Application | ||
183 | code should therefore issue a checked call to X509_check_purpose() | ||
184 | before calling X509_check_ca(). | ||
185 | - Rewrite and fix X509v3_asid_subset() to avoid segfaults on some | ||
186 | valid input. | ||
187 | - Call the ASN1_OP_D2I_PRE callback after ASN1_item_ex_new(). | ||
188 | - Fix d2i_ASN1_OBJECT to advance the *der_in pointer correctly. | ||
189 | - Avoid use of uninitialized in ASN1_STRING_to_UTF8(). | ||
190 | - Do not pass uninitialized pointer to ASN1_STRING_to_UTF8(). | ||
191 | - Do not refuse valid IPv6 addresses in nc(1)'s HTTP CONNECT proxy. | ||
192 | - Do not reject primes in trial divisions. | ||
193 | - Error out on negative shifts in BN_{r,l}shift() instead of | ||
194 | accessing arrays out of bounds. | ||
195 | - Fix URI name constraints, allow for URI's with no host part. | ||
196 | - Fix the legacy verifier callback behaviour for untrusted certs. | ||
197 | - Correct serfver-side handling of TLSv1.3 key updates. | ||
198 | - Plug leak in PKCS12_setup_mac(). | ||
199 | - Plug leak in X509V3_add1_i2d(). | ||
200 | - Only print X.509 versions we know about. | ||
201 | - Avoid signed integer overflow due to unary negation | ||
202 | - Initialize readbytes in BIO_gets(). | ||
203 | - Plug memory leak in CMS_add_simple_smimecap(). | ||
204 | - Plug memory leak in X509_REQ_print_ex(). | ||
205 | - Check HMAC() return value to avoid a later use of uninitialized. | ||
206 | - Avoid potential NULL dereference in ssl_set_pkey(). | ||
207 | - Check return values in ssl_print_tmp_key(). | ||
208 | - Switch loop bounds from size_t to int in check_hosts(). | ||
209 | - Avoid division by zero if no connection was made in s_time.c. | ||
210 | - Check sk_SSL_CIPHER_push() return value | ||
211 | - Avoid out-of-bounds read in ssl_cipher_process_rulestr(). | ||
212 | - Use LONG_MAX as the limit for ciphers with long based APIs. | ||
213 | * New features | ||
214 | - EVP API for HKDF ported from OpenSSL and subsequently cleaned up. | ||
215 | - The security level API (SSL_{,CTX}_{get,set}_security_level()) is | ||
216 | now available. Callbacks and ex_data are not supported. Sane | ||
217 | software will not be using this. | ||
218 | - Experimental support for the BoringSSL QUIC API. | ||
219 | - Add initial support for TS ESSCertIDv2 verification. | ||
220 | - LibreSSL now uses the Baillie-PSW primality test instead of | ||
221 | Miller-Rabin . | ||
222 | |||
223 | 3.5.3 - Reliability fix | ||
224 | |||
225 | * Fix d2i_ASN1_OBJECT(). A confusion of two CBS resulted in advancing | ||
226 | the passed *der_in pointer incorrectly. Thanks to Aram Sargsyan for | ||
227 | reporting the issue and testing the fix. | ||
228 | |||
31 | 3.5.2 - Stable release | 229 | 3.5.2 - Stable release |
32 | 230 | ||
33 | * Bug fixes | 231 | * Bug fixes |