<feed xmlns='http://www.w3.org/2005/Atom'>
<title>openssl/doc, branch master</title>
<subtitle>TLS/SSL and crypto library.</subtitle>
<id>http://git.bktus.com/gpgfrontend/openssl/atom?h=master</id>
<link rel='self' href='http://git.bktus.com/gpgfrontend/openssl/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/'/>
<updated>2026-10-23T15:19:37Z</updated>
<entry>
<title>s390x: Disable mod-expo offloading to a crypto card for small exponents</title>
<updated>2026-10-23T15:19:37Z</updated>
<author>
<name>Ingo Franzki</name>
<email>ifranzki@linux.ibm.com</email>
</author>
<published>2026-05-19T13:12:24Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=b8e2dba6bbaa1b1817f17097b57bc2598ecb3df3'/>
<id>urn:sha1:b8e2dba6bbaa1b1817f17097b57bc2598ecb3df3</id>
<content type='text'>
Add a new keyword 'cex_min_bits:&lt;bits&gt;' for the OPENSSL_s390xcap environment
variable to specify the minimum number of bits that the exponent must have
to offload the operation to the crypto card. Operations with smaller exponents
fall back to software calculation. Mod-expo operations with small exponents
are faster in software than via the crypto card.

The default minimum exponent size is 2048 bits, but this can be changed via
the OPENSSL_s390xcap environment variable.

For mod-expo operations the exponent is checked, and for RSA CRT operations
the modulus is checked to have the minimum bit size. RSA public key operations
usually have small exponents, so they are most likely always performed in
software.

Checking the bit size of a BIGNUM may or may not be constant-time, dependent
on the BN_FLG_CONSTTIME flag of the BIGNUM. For RSA CRT operations, the bit
size of the modulus is checked. The modulus is public information, so no
constant-time issue here. For mod-expo operations with the public exponent
it is also not a constant-time issue, because the public exponent is also
public information. For mod-expo operations with the private exponent, the
size of the private exponent is usually the same as the size of the modulus,
which is public information. For DH mod-expo operations with the private key,
the size of the private key is usually dependent on the DH group that is
used, and this is also public information. Nevertheless, private exponents
better have the BN_FLG_CONSTTIME flag set. For RSA this is the case, and for
DH it is also the case when flag DH_FLAG_CACHE_MONT_P is set, which is always
done (dh_init() sets the flag unconditionally). Furthermore, flag
BN_FLG_CONSTTIME is set for the private key in ossl_dh_generate_public_key().

Signed-off-by: Ingo Franzki &lt;ifranzki@linux.ibm.com&gt;

Reviewed-by: Dmitry Belyavskiy &lt;beldmit@gmail.com&gt;
Reviewed-by: Neil Horman &lt;nhorman@openssl.org&gt;
MergeDate: Fri Oct 23 15:20:45 2026
(Merged from https://github.com/openssl/openssl/pull/31630)
</content>
</entry>
<entry>
<title>doc: RAND(7): a restore from a saved image is not detected; reseed after it</title>
<updated>2026-10-23T12:51:41Z</updated>
<author>
<name>Yuxiang Ji</name>
<email>kurath0307@icloud.com</email>
</author>
<published>2026-10-20T15:10:35Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=f4ada04e0c795e3ff07aa24be79b7240cfbf3388'/>
<id>urn:sha1:f4ada04e0c795e3ff07aa24be79b7240cfbf3388</id>
<content type='text'>
The DRBGs reseed on a change of process ID, on the request count and on
the time interval, and have no way to notice that the process or the
machine was restored from a snapshot or a checkpoint: copies restored
from one image continue from the same state until their next scheduled
reseed. Say so in RAND(7) beside the paragraph on automatic reseeding,
and tell applications in such environments to reseed after their own
restore signal, with RAND_poll(3) as the call that does it.

Measured on 3.5.9 and master: two continuations of one QEMU or
Firecracker snapshot, or of one CRIU checkpoint, print identical
RAND_bytes output block for block (32 of 32, 14 of 14) until the primary
DRBG's interval expires; plain fork, _Fork and clone are distinct through
the pid check.

Assisted-by: Claude Code:claude-fable-5-1
Reviewed-by: Tomas Mraz &lt;tomas@openssl.foundation&gt;
Reviewed-by: Paul Dale &lt;paul.dale@oracle.com&gt;
Reviewed-by: Viktor Dukhovni &lt;viktor@openssl.org&gt;
Merge-date: Fri Oct 23 12:51:55 2026
Merged-from: https://github.com/openssl/openssl/pull/33285
</content>
</entry>
<entry>
<title>Document the OSSL_PARAM_merge() entry limit</title>
<updated>2026-10-23T12:47:43Z</updated>
<author>
<name>Martin Mirchev</name>
<email>mirchevmartin2203@gmail.com</email>
</author>
<published>2026-10-18T06:17:05Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=25bba416c07ca811f99d2602ca7e7e6fbd43c45a'/>
<id>urn:sha1:25bba416c07ca811f99d2602ca7e7e6fbd43c45a</id>
<content type='text'>
OSSL_PARAM_merge() only considers the first 128 entries of each input
array and silently ignores the rest. Mention this in the manual page.

Signed-off-by: Martin Mirchev &lt;mirchevmartin2203@gmail.com&gt;

Assisted-by: Claude Code:claude-opus-5-5
Reviewed-by: Tomas Mraz &lt;tomas@openssl.foundation&gt;
Reviewed-by: Paul Dale &lt;paul.dale@oracle.com&gt;
Reviewed-by: Shane Lontis &lt;shane.lontis@oracle.com&gt;
Merge-date: Fri Oct 23 12:47:50 2026
Merged-from: https://github.com/openssl/openssl/pull/33244
</content>
</entry>
<entry>
<title>doc: replace DES-EDE3-CBC with AES-256-CBC in PEM examples</title>
<updated>2026-10-23T12:44:46Z</updated>
<author>
<name>JWWTSL</name>
<email>167396168+JWWTSL@users.noreply.github.com</email>
</author>
<published>2026-10-16T03:35:07Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=1b02949afd9ddba89ef4f133ecb3c4e9de8c223d'/>
<id>urn:sha1:1b02949afd9ddba89ef4f133ecb3c4e9de8c223d</id>
<content type='text'>
The EXAMPLES section of PEM_read_bio_PrivateKey still showed
EVP_des_ede3_cbc() for encrypting private keys, but 3DES is
deprecated in OpenSSL 3.x. Replace with EVP_aes_256_cbc() to
show a modern cipher, consistent with other man pages.

The DEK-Info header in the file format example is left as-is
since it documents the actual PEM file structure.

Fixes #28665

CLA: trivial
Reviewed-by: Tomas Mraz &lt;tomas@openssl.foundation&gt;
Reviewed-by: Paul Dale &lt;paul.dale@oracle.com&gt;
Reviewed-by: Shane Lontis &lt;shane.lontis@oracle.com&gt;
Merge-date: Fri Oct 23 12:44:52 2026
Merged-from: https://github.com/openssl/openssl/pull/33228
</content>
</entry>
<entry>
<title>TLS: Generate the server random before processing ClientHello extensions</title>
<updated>2026-10-21T16:45:28Z</updated>
<author>
<name>Daniel Kubec</name>
<email>kubec@openssl.foundation</email>
</author>
<published>2026-10-08T11:56:29Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=ef27df134327a62ff40985c6f0c0438cbc802de2'/>
<id>urn:sha1:ef27df134327a62ff40985c6f0c0438cbc802de2</id>
<content type='text'>
The server random was only generated after all of the ClientHello extensions had
been processed. In (D)TLSv1.3 the PSK callbacks are invoked while the
pre_shared_key extension is being parsed, so a call to SSL_get_server_random()
from within them returned all zeros. The TLSv1.2 psk_server_callback runs during
ClientKeyExchange processing and so already observed the real value, making the
behaviour inconsistent between protocol versions.

Move the generation of the server random to immediately after the protocol
version has been selected  and before any of the remaining ClientHello
processing. As a result the server random is also visible from the other
callbacks invoked during ClientHello processing, such as the session ticket and
servername callbacks.

Fixes #26404

Assisted-by: Claude:claude-fable-5-1
Reviewed-by: Tomas Mraz &lt;tomas@openssl.foundation&gt;
Reviewed-by: Frederik Wedel-Heinen &lt;fwh.openssl@gmail.com&gt;
Merge-date: Wed Oct 21 16:45:34 2026
Merged-from: https://github.com/openssl/openssl/pull/33102
</content>
</entry>
<entry>
<title>Removes clean DES and RC2 as encryption methods for TLS ciphersuites and refactors the fetching of NULL cipher to be consistent.</title>
<updated>2026-10-21T16:22:53Z</updated>
<author>
<name>Frederik Wedel-Heinen</name>
<email>frederik.wedel-heinen@dencrypt.dk</email>
</author>
<published>2026-07-23T05:42:17Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=f8e81321519421dda2de315e6e7ab9653d809e4f'/>
<id>urn:sha1:f8e81321519421dda2de315e6e7ab9653d809e4f</id>
<content type='text'>
Reviewed-by: Mounir Idrassi &lt;mounir.idrassi@idrix.fr&gt;
Reviewed-by: Dmitry Belyavskiy &lt;beldmit@gmail.com&gt;
Merge-date: Wed Oct 21 16:22:59 2026
Merged-from: https://github.com/openssl/openssl/pull/32051
</content>
</entry>
<entry>
<title>CMS_get0_signers() returns only the signers that passed verification</title>
<updated>2026-10-21T15:38:13Z</updated>
<author>
<name>Igor Ustinov</name>
<email>igus@openssl.foundation</email>
</author>
<published>2026-10-20T10:39:47Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=d218dcf1bc23916db58c386c656c213da193e0f6'/>
<id>urn:sha1:d218dcf1bc23916db58c386c656c213da193e0f6</id>
<content type='text'>
With CMS_VERIFY_PARTIAL, CMS_verify() succeeds as long as at least
one SignerInfo verifies, but CMS_get0_signers() still returned the
certificate of every SignerInfo, defeating "signed by X" or
"signed by N signers" policies. The same applied to the certificates
written by "openssl cms -verify -verify_partial -signer".

This commit fixes CMS_get0_signers() behaviour returning only
certificates of signers that passed verification.
Nothing changes if CMS_VERIFY_PARTIAL isn't set.

Reported-by: Anthropic OSS scan id ANT-2026-GF4OIPVH

Assisted-by: Claude:claude-opus-5-5
Reviewed-by: Tomas Mraz &lt;tomas@openssl.foundation&gt;
Reviewed-by: Matt Caswell &lt;matt@openssl.foundation&gt;
Merge-date: Wed Oct 21 15:39:29 2026
Merged-from: https://github.com/openssl/openssl/pull/33279
</content>
</entry>
<entry>
<title>doc/man3/EC_GROUP_new.pod: document EC_GROUP_get_ecpkparameters function</title>
<updated>2026-10-18T15:25:49Z</updated>
<author>
<name>mkpark</name>
<email>minkyungp@unist.ac.kr</email>
</author>
<published>2026-09-05T09:19:08Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=f7b2254eeebdc68bd4e57a3147606590b8188ab1'/>
<id>urn:sha1:f7b2254eeebdc68bd4e57a3147606590b8188ab1</id>
<content type='text'>
Added EC_GROUP_get_ecpkparameters() function description and usage details.

Complements: 60b350a3ef96 "RT3676: Expose ECgroup i2d functions"
Reviewed-by: Jakub Zelenka &lt;jakub.zelenka@openssl.foundation&gt;
Reviewed-by: Frederik Wedel-Heinen &lt;fwh.openssl@gmail.com&gt;
Reviewed-by: Eugene Syromiatnikov &lt;esyr@openssl.org&gt;
Merge-date: Sun Oct 18 15:26:52 2026
Merged-from: https://github.com/openssl/openssl/pull/32169
</content>
</entry>
<entry>
<title>DTLS listener: make max_pending_conns a combined admission budget</title>
<updated>2026-10-14T10:51:10Z</updated>
<author>
<name>Mounir IDRASSI</name>
<email>mounir.idrassi@idrix.fr</email>
</author>
<published>2026-10-12T03:24:08Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=8628bb9f21365f3c448b3e08cef337992027587c'/>
<id>urn:sha1:8628bb9f21365f3c448b3e08cef337992027587c</id>
<content type='text'>
The pending-connection cap only applied to pending_conns, the table
of connections still doing their handshake: the moment a connection passed
cookie validation it was moved onto the accept queue (incoming_connections)
with no length check and no expiry. A reachable peer completing
the ordinary cookie exchange from many source endpoints could accumulate
an unbounded, unexpiring queue of listener-owned SSL objects.
This is the same missing admission bound as the QUIC listener admission
check fixed in [1]; the DTLS listener is new in 4.1 and not in any final
release.

Mirror the QUIC fix: enforce the bound at admission, in the packet
handler, before any per-connection state is allocated.
SSL_VALUE_DTLS_LISTENER_MAX_PENDING_CONNS is now a single admission budget
covering both listener-owned tables, pending plus accept queue,
so listener-owned connections are bounded at N in total, including
under SSL_LISTENER_FLAG_NO_VALIDATE. Moving a connection from one table
to the other leaves the total unchanged, so a validated connection
can always be queued: none is discarded, and no handshake work (cookie
exchange, server flight) is spent on an attempt that cannot be admitted.
A peer whose datagram is dropped while the budget is exhausted retransmits
its ClientHello and is admitted once the application drains the queue;
measured on real UDP, such a client completes its handshake about one
retransmit interval after the drain.

This also aligns the DTLS knob's meaning with the QUIC one ("not yet
accepted"), which it was modelled on in [2].

Accept-queue entries still do not expire; a full queue stays full until
the application drains it. With the budget, an attacker can pin at most N
accept-queue slots, and only after proving return routability - spoofed
ClientHellos can still occupy pending slots until the pending timeout
reaps them, as before this change - so what remains is a bounded
availability concern, not memory exhaustion.

[1] https://github.com/openssl/openssl/pull/32052
[2] https://github.com/openssl/openssl/pull/31980

Resolves: https://github.com/openssl/openssl/issues/33172
Assisted-by: Claude Code:moonshotai/kimi-k3
Reviewed-by: Tomas Mraz &lt;tomas@openssl.foundation&gt;
Reviewed-by: Ryan Hooper &lt;ryanh@openssl.foundation&gt;
Reviewed-by: Eugene Syromiatnikov &lt;esyr@openssl.org&gt;
Merge-date: Wed Oct 14 10:54:55 2026
Merged-from: https://github.com/openssl/openssl/pull/33197
</content>
</entry>
<entry>
<title>crypto/x509/x509_lu.c: avoid freeing X509_OBJECTs in X509_STORE_get0_objects()</title>
<updated>2026-10-13T13:45:08Z</updated>
<author>
<name>Eugene Syromiatnikov</name>
<email>esyr@openssl.org</email>
</author>
<published>2026-10-07T13:14:31Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=b86b1098fd7ec47e1c9d43a7566bf4e287b1d390'/>
<id>urn:sha1:b86b1098fd7ec47e1c9d43a7566bf4e287b1d390</id>
<content type='text'>
The implementation of hash table conversion in commit 04589b59ef50
"x509store: reduce lock contention in X509_STORE" introduced a potential
use-after-free condition when X509_STORE_get0_objects() is called during
X.509 verification.  Avoid that by re-using existing X509_OBJECTs
instead of duplicating them.

Resolves: https://github.com/openssl/openssl/issues/33063
Fixes: 04589b59ef50 "x509store: reduce lock contention in X509_STORE"
Signed-off-by: Eugene Syromiatnikov &lt;esyr@openssl.org&gt;
Reviewed-by: Mounir Idrassi &lt;mounir.idrassi@idrix.fr&gt;
Reviewed-by: Nikola Pajkovsky &lt;nikolap@openssl.org&gt;
Merge-date: Tue Oct 13 13:45:39 2026
Merged-from: https://github.com/openssl/openssl/pull/33147
</content>
</entry>
</feed>
