Требует действийможет затронуть работающую системуПроверены все 19 non-merge commits от 2.4.17190 до 2.4.17208: 1176 добавлений и 372 удаления в 11 non-version files. Version-only mormot.commit.inc и mormot.commit-num.inc игнорировались. В raw нет superseded_by, поэтому avoid и still_moving пусты; final upstream head совпадает с payload.
SChannel включает TLS 1.3, а поддержка Windows CNG складывается в целое
Эта Windows-серия меняет протокольную политику SChannel по умолчанию, разделяет server credentials между принятыми HTTPS-соединениями и добавляет крупную поддержку CNG, certificate store и msLAPS. Финальные commits также чинят Delphi 7/13, обходят CNG-заглушки Wine и исправляют ownership закрытых ключей.
Коротко
- Переходите на build 2.4.17208 в 18e7d88c0083b279402c59019c030abdfe39e3e1.
- SChannelEnableTls13 теперь по умолчанию true на Windows 11 и Windows Server 2022 или новее; задайте false до инициализации, если такое включение не планировалось.
- HTTPS-серверы на SChannel получают один общий server credential и держат его до освобождения последнего принятого TLS context.
- TNetTlsContext передаёт SChannel PCCERT_CONTEXT или защищённый паролем PFX, а ReleaseBuffers освобождает неактивные SChannel buffers.
- Новые TNCrypt, TWinCertStore и TWinCertCngKey открывают CNG keys, certificate stores, signing, unprotect secrets и расшифровку msLAPS.
- Wine обходит свои CNG-заглушки, а Delphi 7 и Delphi 13 получают явные исправления компиляции.
Рекомендации по обновлению
Пользователям Windows SChannel следует взять выпуск целиком до build 2.4.17208 и проверить TLS 1.3, certificate/PFX loading и concurrent shutdown. Задавайте SChannelEnableTls13=false до TLS только если новый default неприемлем. Delphi 7, Delphi 13 и Wine должны включать финальные compatibility fixes.
19 из 19 записей · 19 коммитов в апстриме
1
Высокий
TLS 1.3 становится default для SChannel на актуальной Windows
Public global SChannelEnableTls13 меняет default с false на true; применяется только на Windows 11/Server 2022+ и остаётся opt-out.
Несовместимые изменения
mormot.net.sock
f479106f+6-5
net: now SChannelEnableTls13 default is true
Влияние
Подходящие SChannel clients/servers могут начать согласовывать TLS 1.3 без изменения кода, то есть protocol behavior меняется после rebuild.
Стоит взглянуть
Проверьте handshakes, cipher policy и peers; задайте SChannelEnableTls13 := false до TLS initialization, если rollout откладывается.
Публичный API
SChannelEnableTls13behaviour-changed — Default теперь true на поддерживаемых версиях Windows.
Модули
2
Высокий
Layouts certificate records исправлены после расширения Crypt32
Типы Crypt32 перенесены в mormot.core.os.security; pointer, blob и record declarations исправлены для компиляции mormot.lib.sspi.
Исправления
mormot.core.os.security+1
d73d5445+14-8
lib: fixed mormot.lib.sspi compilation
Влияние
Исправлен непосредственно предыдущий Windows binding change; Delphi/FPC не следует брать раннюю промежуточную revision отдельно.
Рекомендуется обновиться
Берите вместе с предыдущим Crypt32 commit либо используйте финальный head выпуска.
3
Высокий
Ownership ключей сертификата SChannel исправлен на PRISM
TSChannelNetTls.AfterBind убирает CRYPT_ACQUIRE_CACHE_FLAG, инициализирует ownership outputs для каждого certificate и освобождает CAPI/CNG handles, принадлежащие caller.
Исправления
mormot.core.os.security+1
86828b99+12-3
net: fixed TSChannelNetTls.AfterBind on PRISM
Влияние
SChannel server setup избегает stale output state и утечек private-key handles, включая PRISM; source migration не нужна.
Рекомендуется обновиться
Обновите Windows SChannel servers с certificate private keys и проверьте shutdown/rebind.
4
Высокий
Logging serialization и SChannel accept снова компилируются после новых flags
Serialization TWindowsSpecs расширена с byte до word после wsWeakCng; SChannel accept сохраняет shared context в local TObject перед cast.
Исправления
mormot.core.log+1
37405644+9-6
core: fixed compilation after previous commits
Влияние
Закрыты compilation issues от Windows-spec и shared-context changes; application source менять не нужно.
Рекомендуется обновиться
Берите Wine flag и shared SChannel context вместе с этим compiler follow-up.
5
Высокий
SChannel принимает certificate contexts и защищённые паролем PFX
SChannel backend реализует TNetTlsContext.CertificateRaw, PrivatePassword и OnPrivatePassword для server certificates, ReleaseBuffers, проверяет private keys и явно отклоняет unsupported ClientCertificateAuthentication.
Новые возможности
mormot.lib.sspi+2
3f0914a0+76-31
net: enhanced SChannel TLS layer
Влияние
Windows servers могут передать PCCERT_CONTEXT или protected PFX без OpenSSL; запрос SChannel client-certificate authentication теперь явно завершается ошибкой.
Стоит взглянуть
Проверьте certificate import, password callbacks и buffer release; не включайте ClientCertificateAuthentication на SChannel.
Публичный API
TNetTlsContext.CertificateRawbehaviour-changed — SChannel server теперь принимает PCCERT_CONTEXT.TNetTlsContext.PrivatePasswordbehaviour-changed — Используется как пароль импорта PFX SChannel.TNetTlsContext.OnPrivatePasswordbehaviour-changed — Может переопределить пароль PFX SChannel.INetTls.ReleaseBuffersbehaviour-changed — SChannel теперь освобождает idle read/write buffers.
6
Высокий
Wrapper certificate-to-CNG-key централизует ownership checks
TWinCertCngKey получает private key сертификата, требует CNG handle, опционально сравнивает public key и освобождает по ownership CryptAcquireCertificatePrivateKey; constants перенесены в core security.
Новые возможности
mormot.core.os+3
73dc5e6a+87-20
lib: new TWinCertCngKey wrapper
Влияние
SChannel и другие Windows backends получают checked lifetime boundary для certificate-backed CNG keys, уменьшая leaks и ошибочное использование CAPI handles.
Стоит взглянуть
Используйте Init/Done парой и CompareKey, если mismatch certificate/key недопустим.
Публичный API
TWinCertCngKeyadded — Short-lived checked wrapper для CNG private key сертификата.
7
Высокий
SChannel HTTPS servers разделяют один credential между соединениями
TSChannelNetTls.AfterBind создаёт reference-counted TSChannelServerContext с server CredHandle; accepted connections разделяют его и освобождают после своих security contexts.
Производительность
mormot.net.sock.windows
73798d46+193-140
net: shared credentials for the HTTPS server using SChannel
Влияние
Нагруженные Windows HTTPS servers избегают AcquireCredentialsHandleW на каждое соединение и получают явный lifetime ordering; wire protocol и API не меняются.
Рекомендуется обновиться
Нагрузочно проверьте SChannel accept/shutdown и освобождение credential handles после последнего connection.
Модули
8
Высокий
Объявление TLS factory снова совместимо с Delphi 7
mormot.net.sock добавляет public function type TNewNetTls для NewNetTls и переносит char constant в module scope для Delphi 7.
Компилятор и платформы
mormot.net.sock
a51ffadf+11-7
net: fixed Delphi 7 compilation
Влияние
Delphi 7 снова компилируется после TLS changes; остальные compilers получают named type для factory variable.
Рекомендуется обновиться
Пользователям Delphi 7 следует взять fix вместе со всей SChannel-серией.
Публичный API
TNewNetTlsadded — Public function type для NewNetTls.
Модули
9
Высокий
Финальный SChannel certificate path компилируется на Delphi 13
mormot.net.sock.windows убирает явный PCCERT_CONTEXT cast для Context.CertificateRaw при вызове CertDuplicateCertificateContext, соответствуя Delphi 13 type checking.
Компилятор и платформы
mormot.net.sock.windows
18e7d88c+3-4
net: fixed Dlephi 13 compilation
Влияние
Delphi 13 projects с новым SChannel CertificateRaw компилируются на final head; runtime behavior не меняется.
Рекомендуется обновиться
Пользователям Delphi 13 следует взять финальный commit, а не раннюю точку SChannel-серии.
Модули
10
Средний
Certificate metadata и детали CNG signing усилены
TWinCertInfo хранит provider type, flags и key spec; добавлены certificate enumeration bindings, имя NTE_BAD_PUBLIC_KEY и nil initialization PKCS#1 pointer для ECDSA.
Исправления
mormot.core.os+2
6e9ef943+44-15
core: enhanced Windows SSPI/CNG API wrappers
Влияние
Certificate consumers получают данные для выбора CAPI/CNG, а ECDSA signing больше не передаёт uninitialized padding metadata.
Рекомендуется обновиться
Обновите пользователей нового CNG signing path и проверьте RSA/ECDSA certificates каждого provider.
Публичный API
TWinCertInfo.KeyProviderTypeadded — Открывает тип key provider.TWinCertInfo.KeyProviderFlagsadded — Открывает provider acquisition flags.TWinCertInfo.KeySpecadded — Открывает спецификацию ключа сертификата.
11
Средний
CNG wrapper получает полный набор property, signing и decrypt helpers
TNCrypt добавляет typed handles, hash/sign modes, raw OpenKey/GetProperty/SignHash/Decrypt и high-level GetCardinal, GetBuffer, KeyBits, KeyUsage, KeySign.
Новые возможности
mormot.lib.sspi
6a4f0636+250-24
lib: completed CNG API wrapper
Влияние
Windows backends могут работать с CNG private keys, включая RSA PKCS#1/PSS и ECDSA signing, через checked wrappers с ENCrypt.
Стоит взглянуть
Явно выбирайте TNcryptSignMode, проверяйте key usage и signatures независимым verifier.
Публичный API
TNcryptHashAlgoadded — Public hash selector для CNG signing.TNcryptSignModeadded — Public selector режима RSA/ECDSA.TNCrypt.KeySignadded — Проверенный high-level helper для CNG signing.
Модули
12
Средний
Windows certificate stores получают owning iterator и PEM export
mormot.core.os.security добавляет TWinCertStore, TWinCertStoreLocation, Create/Next/Duplicate/ToPem и WinCryptBinaryAppendAsText; существующий PEM collection переведён на wrapper.
Новые возможности
mormot.core.os.security+1
4211be31+155-48
core: new TWinCertStore wrapper and associated raw API
Влияние
Windows backends могут безопасно перечислять stores, дублировать долгоживущие contexts и экспортировать PEM; object владеет store и current context.
Стоит взглянуть
Вызывайте Duplicate перед сохранением Context за пределами следующего Next и освобождайте TWinCertStore.
Публичный API
TWinCertStoreLocationadded — Public selector расположения certificate store.TWinCertStoreadded — Owning iterator Windows certificate store.WinCryptBinaryAppendAsTextadded — Добавляет Windows binary как PEM/base64 text.
13
Средний
В public API появляется late-bound слой Windows CNG key storage
mormot.lib.sspi добавляет ENCrypt, TNCrypt и factory NCrypt с динамической загрузкой provider, key creation, property, finalize, delete и free.
Новые возможности
mormot.core.os+1
373f69f3+133-3
lib: introducing Windows Cryptography API: Next Generation (CNG) API
Влияние
Windows backends могут использовать CNG без статической зависимости ncrypt.dll; XP не поддерживается, нужно учитывать runtime availability.
Стоит взглянуть
Проверяйте доступность NCrypt и cleanup provider/key на каждой поддерживаемой Windows.
Публичный API
ENCryptadded — Public exception для ошибок NCrypt/CNG.TNCryptadded — Late-bound wrapper CNG key storage.NCryptadded — Глобальная factory для CNG wrapper.
14
Средний
NCrypt умеет unprotect secrets и декодировать encrypted msLAPS values
TNCrypt получает Unprotect и LapsDecrypt поверх optional Windows 8+ APIs; LapsDecrypt принимает TLdapAttribute.GetRaw binary и обнуляет временный cleartext buffer.
Новые возможности
mormot.lib.sspi
622071a5+108-13
lib: new NCrypt.LapsDecrypt method
Влияние
Windows directory backends могут расшифровать msLAPS-EncryptedPassword в процессе; unsupported systems и bad data вызывают ENCrypt.
Стоит взглянуть
Используйте raw binary LDAP attribute, обрабатывайте ENCrypt и минимизируйте lifetime возвращённого password.
Публичный API
TNCrypt.Unprotectadded — Unprotect data через Windows NCrypt APIs.TNCrypt.LapsDecryptadded — Декодирует msLAPS encrypted-password attribute.
Модули
15
Средний
Bindings Crypt32 получают примитивы создания self-signed certificates
mormot.lib.sspi объявляет CertStrToNameW и CertCreateSelfSignCertificate, а mormot.core.os добавляет читаемое имя CRYPT_E_NOT_FOUND.
Новые возможности
mormot.core.os+1
d6d52bf0+20-7
lib: enhanced crypt32.dll WinAPI support
Влияние
Windows backends могут создавать names и self-signed certificate contexts через raw Crypt32 API; существующий код не меняется.
Публичный API
CertStrToNameWadded — Raw declaration преобразования имени Crypt32.CertCreateSelfSignCertificateadded — Raw declaration Crypt32 для self-signed certificate.
16
Средний
Wine помечается как небезопасный для CNG calls
TWindowsSpec получает wsWeakCng; Wine выставляет его, а InitializeNCrypt пропускает ncrypt.dll из-за stubs, сообщающих success без реализации.
Компилятор и платформы
mormot.core.os+1
1d60fd28+15-13
lib: don't try to use CNG on Wine
Влияние
Приложения под Wine больше не выполняют ненадёжные CNG operations; native Windows не меняется.
Рекомендуется обновиться
Wine deployments с CNG-функциями должны обработать недоступность NCrypt и иметь fallback.
Публичный API
TWindowsSpec.wsWeakCngadded — Отмечает среды с unusable CNG APIs.
17
Низкий
LocalFree опубликован с удобной для pointer сигнатурой
mormot.core.os добавляет public LocalFree(pointer): pointer, а Windows security code убирает внутренние HLOCAL casts.
Новые возможности
mormot.core.os+1
79a03b23+8-5
core: new LocalFree() public function for Windows
Влияние
Windows code может освобождать результаты LocalAlloc без HLOCAL casts; существующий Delphi/FPC код совместим.
Публичный API
LocalFreeadded — Public Windows declaration с pointer.
18
Низкий
Коды Windows CNG получают читаемые имена ошибок
WinErrorShort и OSErrorShort распознают NTE_* от CNG; core tests получают соответствующее покрытие.
Компилятор и платформы
mormot.core.os+1
3c49fdbf+19-5
core: recognize NTE_* errors as returned by CNG Windows API
Влияние
Ошибки CNG получают diagnostic names вместо чисел; прочее application behavior не меняется.
Модули
19
Низкий
Helper расшифровки msLAPS упрощён без изменения контракта
TNCrypt.LapsDecrypt убирает лишнее local state, использует длину header напрямую и исправляет текст LDAPS/msLAPS.
Внутреннее устройство
mormot.lib.sspi
32e7d9b3+13-15
lib: NCrypt.LapsDecrypt() cleanup
Влияние
Влияния на application code нет; public signature и результат не меняются.