mORMot2 DailyLecture quotidienne des commits upstream

SChannel active TLS 1.3 tandis que le support Windows CNG se consolide

Cette série centrée sur Windows modifie la politique protocolaire SChannel par défaut, partage les credentials serveur entre connexions HTTPS acceptées et ajoute un support important de CNG, des certificate stores et de msLAPS. Les derniers commits corrigent aussi les compilations Delphi 7 et Delphi 13, évitent les stubs CNG de Wine et réparent l’ownership des clés privées.

En bref

  • Visez la build 2.4.17208 au commit 18e7d88c0083b279402c59019c030abdfe39e3e1.
  • SChannelEnableTls13 vaut désormais true par défaut sur Windows 11 et Windows Server 2022 ou plus récent ; passez-le à false avant l’initialisation si ce déploiement n’est pas voulu.
  • Les serveurs HTTPS SChannel acquièrent un credential serveur partagé, conservé jusqu’à la libération du dernier contexte TLS accepté.
  • TNetTlsContext peut fournir à SChannel un PCCERT_CONTEXT ou un PFX protégé, et ReleaseBuffers libère maintenant les buffers SChannel inactifs.
  • Les wrappers TNCrypt, TWinCertStore et TWinCertCngKey exposent clés CNG, certificate stores, signature, unprotection de secrets et déchiffrement msLAPS.
  • Wine évite sa couche CNG incomplète, tandis que Delphi 7 et Delphi 13 reçoivent des correctifs de compilation explicites.

Conseil de mise à jour

Les utilisateurs SChannel Windows doivent prendre toute l’édition jusqu’à 2.4.17208, puis tester TLS 1.3, le chargement certificat/PFX et l’arrêt serveur concurrent. Positionnez SChannelEnableTls13 à false avant TLS seulement si le nouveau défaut n’est pas acceptable. Delphi 7, Delphi 13 et Wine doivent inclure les correctifs finaux.

Build2.4.17189 → 2.4.17208
Commits19
Lignes+1176 -372
Lecture4 min

19 sur 19 entrées · 19 commits upstream

Sujets
# Entrée Catégorie Unités
1 Élevée TLS 1.3 devient le défaut SChannel sur Windows actuel La globale publique SChannelEnableTls13 passe par défaut de false à true. Elle ne s’applique qu’à Windows 11 et Windows Server 2022 ou plus récent et reste désactivable. Ruptures mormot.net.sock f479106f+6-5

net: now SChannelEnableTls13 default is true

Impact

Les clients et serveurs SChannel éligibles peuvent négocier TLS 1.3 sans changement applicatif ; le comportement protocolaire peut donc changer silencieusement après recompilation.

À regarder

Testez handshakes, cipher policy et compatibilité peer ; passez SChannelEnableTls13 à false avant l’initialisation si nécessaire.

API publique

  • SChannelEnableTls13behaviour-changed — La valeur par défaut est true sur les versions Windows prises en charge.

Arnaud Bouchez · 10:32 UTC · voir le commit sur GitHub →

2 Élevée Les layouts de certificats sont corrigés après l’extension Crypt32 Les types Crypt32 passent dans mormot.core.os.security et leurs déclarations pointer, blob et record sont corrigées pour compiler mormot.lib.sspi. Correctifs mormot.core.os.security+1 d73d5445+14-8

lib: fixed mormot.lib.sspi compilation

Impact

Ce correctif répare le changement Windows immédiatement précédent. Les projets Delphi et FPC ne doivent pas prendre seule la révision intermédiaire.

Arnaud Bouchez · 08:15 UTC · voir le commit sur GitHub →

3 Élevée L’ownership des clés de certificat SChannel est corrigé sous PRISM TSChannelNetTls.AfterBind retire CRYPT_ACQUIRE_CACHE_FLAG, initialise les sorties d’ownership pour chaque certificat et libère les handles CAPI ou CNG appartenant à l’appelant. Correctifs mormot.core.os.security+1 86828b99+12-3

net: fixed TSChannelNetTls.AfterBind on PRISM

Impact

Le setup serveur SChannel évite les états de sortie périmés et les fuites de handles de clé privée, y compris sur PRISM. Aucune migration source.

Arnaud Bouchez · 10:31 UTC · voir le commit sur GitHub →

4 Élevée Logging serialization et acceptation SChannel recompilent après les nouveaux flags La sérialisation TWindowsSpecs passe de byte à word après wsWeakCng, et le chemin accept SChannel stocke le contexte partagé dans un local TObject avant cast. Correctifs mormot.core.log+1 37405644+9-6

core: fixed compilation after previous commits

Impact

Ce commit ferme des problèmes de compilation introduits par les changements Windows-spec et shared context. Aucun changement source applicatif.

Arnaud Bouchez · 17:08 UTC · voir le commit sur GitHub →

5 Élevée SChannel accepte les contextes certificat et les PFX protégés Le backend SChannel implémente CertificateRaw, PrivatePassword et OnPrivatePassword de TNetTlsContext pour les certificats serveur, implémente ReleaseBuffers, valide les clés privées et rejette explicitement ClientCertificateAuthentication non pris en charge. Nouveautés mormot.lib.sspi+2 3f0914a0+76-31

net: enhanced SChannel TLS layer

Impact

Windows servers peuvent fournir un PCCERT_CONTEXT existant ou un PFX protégé sans OpenSSL. Les configurations demandant l’authentification client SChannel échouent maintenant explicitement.

À regarder

Testez import certificat, callbacks mot de passe et libération des buffers ; n’activez pas ClientCertificateAuthentication sous SChannel.

API publique

  • TNetTlsContext.CertificateRawbehaviour-changed — Le serveur SChannel consomme maintenant un PCCERT_CONTEXT.
  • TNetTlsContext.PrivatePasswordbehaviour-changed — Utilisé comme mot de passe import PFX SChannel.
  • TNetTlsContext.OnPrivatePasswordbehaviour-changed — Peut remplacer le mot de passe PFX SChannel.
  • INetTls.ReleaseBuffersbehaviour-changed — SChannel libère maintenant les buffers read/write inactifs.

Arnaud Bouchez · 14:40 UTC · voir le commit sur GitHub →

6 Élevée Un wrapper certificat-vers-clé CNG centralise les contrôles d’ownership TWinCertCngKey acquiert la clé privée d’un certificat, exige un handle CNG, compare optionnellement la clé publique et libère selon l’ownership CryptAcquireCertificatePrivateKey. Les constantes associées passent dans core security. Nouveautés mormot.core.os+3 73dc5e6a+87-20

lib: new TWinCertCngKey wrapper

Impact

SChannel et les autres backends Windows obtiennent une frontière de lifetime vérifiée pour les clés CNG de certificat, réduisant fuites et confusion CAPI.

À regarder

Utilisez Init/Done ensemble et activez CompareKey si un mismatch certificat/clé doit être rejeté.

API publique

  • TWinCertCngKeyadded — Wrapper vérifié à courte durée pour une clé privée CNG.

Arnaud Bouchez · 19:29 UTC · voir le commit sur GitHub →

7 Élevée Les serveurs HTTPS SChannel partagent un credential entre connexions TSChannelNetTls.AfterBind crée un TSChannelServerContext reference-counted contenant le CredHandle serveur. Les connexions l’utilisent en commun et le libèrent après leurs propres contextes sécurité. Performance mormot.net.sock.windows 73798d46+193-140

net: shared credentials for the HTTPS server using SChannel

Impact

Les serveurs HTTPS Windows chargés évitent AcquireCredentialsHandleW par connexion et obtiennent un ordre de lifetime explicite. Protocole et API applicative inchangés.

Arnaud Bouchez · 14:21 UTC · voir le commit sur GitHub →

8 Élevée La déclaration de factory TLS devient compatible Delphi 7 mormot.net.sock introduit le type public TNewNetTls pour NewNetTls et déplace une constante caractère au niveau module pour Delphi 7. Compilateur & plateforme mormot.net.sock a51ffadf+11-7

net: fixed Delphi 7 compilation

Impact

Les projets Delphi 7 recompilent après les changements TLS. Les autres compilateurs voient un type nommé pour la variable factory existante.

API publique

  • TNewNetTlsadded — Type fonction public utilisé par NewNetTls.

Arnaud Bouchez · 14:19 UTC · voir le commit sur GitHub →

9 Élevée Le chemin certificat SChannel final compile sous Delphi 13 mormot.net.sock.windows retire un cast PCCERT_CONTEXT explicite autour de Context.CertificateRaw pour respecter le typage Delphi 13. Compilateur & plateforme mormot.net.sock.windows 18e7d88c+3-4

net: fixed Dlephi 13 compilation

Impact

Les projets Delphi 13 utilisant le nouveau chemin SChannel CertificateRaw compilent à la tête finale. Le comportement runtime ne change pas.

Arnaud Bouchez · 19:35 UTC · voir le commit sur GitHub →

10 Moyenne Les métadonnées certificat et la signature CNG sont renforcées TWinCertInfo enregistre provider type, flags et key spec ; les bindings d’énumération sont ajoutés ; NTE_BAD_PUBLIC_KEY est nommé ; et le chemin ECDSA initialise le pointeur algorithme PKCS#1 à nil. Correctifs mormot.core.os+2 6e9ef943+44-15

core: enhanced Windows SSPI/CNG API wrappers

Impact

Les consommateurs disposent des informations provider pour choisir CAPI ou CNG, et la signature ECDSA ne transmet plus de padding non initialisé.

API publique

  • TWinCertInfo.KeyProviderTypeadded — Expose le type de provider de clé.
  • TWinCertInfo.KeyProviderFlagsadded — Expose les flags d’acquisition provider.
  • TWinCertInfo.KeySpecadded — Expose la key specification du certificat.

Arnaud Bouchez · 17:51 UTC · voir le commit sur GitHub →

11 Moyenne Le wrapper CNG gagne les helpers complets de property, signature et decrypt TNCrypt ajoute handles typés, modes hash/signature, opérations brutes OpenKey/GetProperty/SignHash/Decrypt et helpers GetCardinal, GetBuffer, KeyBits, KeyUsage et KeySign. Nouveautés mormot.lib.sspi 6a4f0636+250-24

lib: completed CNG API wrapper

Impact

Windows backends peuvent inspecter et utiliser les clés privées CNG, dont les signatures RSA PKCS#1/PSS et ECDSA, via des wrappers vérifiés levant ENCrypt.

À regarder

Choisissez TNcryptSignMode explicitement, vérifiez key usage et testez les signatures avec un vérificateur indépendant.

API publique

  • TNcryptHashAlgoadded — Sélecteur hash public pour la signature CNG.
  • TNcryptSignModeadded — Sélecteur public de mode RSA/ECDSA.
  • TNCrypt.KeySignadded — Helper de signature CNG vérifié.

Arnaud Bouchez · 17:08 UTC · voir le commit sur GitHub →

12 Moyenne Les certificate stores Windows gagnent un itérateur propriétaire et l’export PEM mormot.core.os.security introduit TWinCertStore et TWinCertStoreLocation avec Create, Next, Duplicate et ToPem, ainsi que WinCryptBinaryAppendAsText. La collecte PEM existante est refactorée dessus. Nouveautés mormot.core.os.security+1 4211be31+155-48

core: new TWinCertStore wrapper and associated raw API

Impact

Windows backends peuvent énumérer les stores, dupliquer les contextes durables et exporter en PEM. L’objet possède son store et son contexte courant.

À regarder

Appelez Duplicate avant de conserver Context au-delà du prochain Next et libérez chaque TWinCertStore.

API publique

  • TWinCertStoreLocationadded — Sélecteur public de location du certificate store.
  • TWinCertStoreadded — Itérateur propriétaire de certificate store Windows.
  • WinCryptBinaryAppendAsTextadded — Ajoute des données Windows sous forme PEM/base64.

Arnaud Bouchez · 19:12 UTC · voir le commit sur GitHub →

13 Moyenne Une couche publique CNG key storage chargée tardivement apparaît mormot.lib.sspi introduit ENCrypt, TNCrypt et la factory NCrypt avec chargement dynamique des opérations provider, création, property, finalize, delete et free. Nouveautés mormot.core.os+1 373f69f3+133-3

lib: introducing Windows Cryptography API: Next Generation (CNG) API

Impact

Windows backends peuvent utiliser CNG sans dépendance statique à ncrypt.dll. XP reste sans CNG et les appelants doivent respecter la disponibilité runtime.

À regarder

Conditionnez CNG à la disponibilité de NCrypt et testez le cleanup provider/key sur chaque Windows pris en charge.

API publique

  • ENCryptadded — Exception publique pour les échecs NCrypt/CNG.
  • TNCryptadded — Wrapper CNG key storage chargé tardivement.
  • NCryptadded — Factory globale du wrapper CNG.

Arnaud Bouchez · 10:31 UTC · voir le commit sur GitHub →

14 Moyenne NCrypt peut unprotect les secrets et décoder les valeurs msLAPS chiffrées TNCrypt gagne Unprotect et LapsDecrypt sur les API de protection optionnelles Windows 8+. LapsDecrypt accepte le binaire TLdapAttribute.GetRaw et efface le buffer cleartext temporaire. Nouveautés mormot.lib.sspi 622071a5+108-13

lib: new NCrypt.LapsDecrypt method

Impact

Windows directory backends peuvent déchiffrer msLAPS-EncryptedPassword en processus. Un système non pris en charge ou des données invalides lèvent ENCrypt.

À regarder

Utilisez uniquement l’attribut LDAP binaire brut, gérez ENCrypt et minimisez la durée de vie du mot de passe retourné.

API publique

  • TNCrypt.Unprotectadded — Unprotect via les API Windows NCrypt.
  • TNCrypt.LapsDecryptadded — Décode un attribut mot de passe chiffré msLAPS.

Arnaud Bouchez · 12:35 UTC · voir le commit sur GitHub →

15 Moyenne Les bindings Crypt32 gagnent la création de certificats auto-signés mormot.lib.sspi déclare CertStrToNameW et CertCreateSelfSignCertificate, et mormot.core.os donne un nom lisible à CRYPT_E_NOT_FOUND. Nouveautés mormot.core.os+1 d6d52bf0+20-7

lib: enhanced crypt32.dll WinAPI support

Impact

Windows backends peuvent créer des noms et contextes auto-signés via l’API Crypt32 brute ; le code applicatif existant ne change pas.

API publique

  • CertStrToNameWadded — Déclaration brute de conversion de nom Crypt32.
  • CertCreateSelfSignCertificateadded — Déclaration brute Crypt32 de certificat auto-signé.

Arnaud Bouchez · 07:01 UTC · voir le commit sur GitHub →

16 Moyenne Wine est marqué comme non fiable pour les appels CNG TWindowsSpec gagne wsWeakCng ; Wine le positionne et InitializeNCrypt ignore ncrypt.dll car ses stubs annoncent un succès sans effectuer l’opération. Compilateur & plateforme mormot.core.os+1 1d60fd28+15-13

lib: don't try to use CNG on Wine

Impact

Les applications mORMot2 sous Wine n’essaient plus des opérations CNG non fiables. Le comportement Windows natif ne change pas.

API publique

  • TWindowsSpec.wsWeakCngadded — Marque les environnements aux API CNG inutilisables.

Arnaud Bouchez · 16:58 UTC · voir le commit sur GitHub →

17 Faible LocalFree est exposé avec une signature adaptée aux pointers mormot.core.os ajoute LocalFree(pointer): pointer au public et le code Windows security retire les casts HLOCAL internes. Nouveautés mormot.core.os+1 79a03b23+8-5

core: new LocalFree() public function for Windows

Impact

Le code Windows peut libérer les résultats LocalAlloc sans cast HLOCAL. Le code Delphi/FPC existant reste compatible.

API publique

  • LocalFreeadded — Déclaration Windows publique en pointer.

Arnaud Bouchez · 12:35 UTC · voir le commit sur GitHub →

18 Faible Les codes d’état Windows CNG reçoivent des noms lisibles WinErrorShort et OSErrorShort reconnaissent la plage NTE_* renvoyée par CNG, avec couverture ajoutée aux tests core. Compilateur & plateforme mormot.core.os+1 3c49fdbf+19-5

core: recognize NTE_* errors as returned by CNG Windows API

Impact

Les échecs CNG affichent des noms diagnostiques plutôt que des codes numériques. Le comportement applicatif ne change pas.

Arnaud Bouchez · 16:59 UTC · voir le commit sur GitHub →

19 Faible Le helper de déchiffrement msLAPS est simplifié sans changer son contrat TNCrypt.LapsDecrypt retire un état local redondant, utilise directement la longueur du header et corrige un libellé LDAPS/msLAPS. Sous le capot mormot.lib.sspi 32e7d9b3+13-15

lib: NCrypt.LapsDecrypt() cleanup

Impact

Aucun impact applicatif attendu ; la signature publique et le résultat déchiffré ne changent pas.

Arnaud Bouchez · 14:19 UTC · voir le commit sur GitHub →

Activité upstream commits par jour · 60 derniers jours
Commits977
Jours actifs44/60
Plus chargé2026-09-30
Pic60
2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 26 commits2026-08-28: 11 commits2026-08-29: 10 commits2026-08-30: 1 commit2026-08-31: 23 commits2026-09-01: 0 commits2026-09-02: 20 commits2026-09-03: 29 commits2026-09-04: 35 commits2026-09-05: 13 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 23 commits2026-09-09: 10 commits2026-09-10: 17 commits2026-09-11: 23 commits2026-09-12: 14 commits2026-09-13: 9 commits2026-09-14: 7 commits2026-09-15: 4 commits2026-09-16: 24 commits2026-09-17: 26 commits2026-09-18: 21 commits2026-09-19: 59 commits2026-09-20: 13 commits2026-09-21: 5 commits2026-09-22: 34 commits2026-09-23: 17 commits2026-09-24: 57 commits2026-09-25: 22 commits2026-09-26: 26 commits2026-09-27: 0 commits2026-09-28: 2 commits2026-09-29: 19 commits2026-09-30: 60 commits2026-10-01: 26 commits2026-10-02: 30 commits2026-10-03: 32 commits2026-10-04: 15 commits2026-10-05: 1 commit2026-10-06: 26 commits2026-10-07: 37 commits2026-10-08: 27 commits2026-10-09: 35 commits2026-10-10: 33 commits2026-10-11: 9 commits2026-10-12: 11 commits2026-10-13: 35 commits
2026-08-152026-10-13