mORMot2 DailyLecture quotidienne des commits upstream

Windows CNG et PKCS#11 progressent tandis que des défauts JSON et socket sont corrigés

Cette édition largement consacrée à la cryptographie introduit un backend de certificats Windows CNG, complète le déchiffrement d’enveloppes RSA via CNG et PKCS#11 et répare une longue séquence d’import/signature PKCS#11. Elle corrige aussi une lecture JSON hors limites dans les logs, borne une boucle socket, fiabilise le cookie de session derrière proxy et sépare les timeouts HTTP de connexion, d’envoi et de réception.

En bref

  • Visez la build 2.4.17268 au commit 80bc2689df777dadbe1f8af745096eeb13205ef7.
  • Ajoutez mormot.crypt.win aux uses si le code référence TAesAbstractApi ou ses descendants CryptoAPI AES, déplacés depuis mormot.crypt.core.
  • Windows reçoit TCryptCertAlgoCng, ICryptCertCng et TCryptCertCng.LoadPkcs12 pour les stores, cartes/KSP et identités PFX transitoires.
  • PKCS#11 reçoit le déchiffrement RSA envelope et davantage de signatures, mais TPkcs11 n’est plus thread-safe ; protégez le catalogue avec TCryptCertAlgoPkcs11.Lock/UnLock.
  • Mettez à niveau pour la lecture hors limites de TJsonWriter.AddEscapeBuffer, la boucle infinie de TCrtSocket.TrySockRecv, les GPF CNG/PKCS#11 et les corrections ABI OpenSSL.
  • THttpClientSocket.SetTimeouts sépare les budgets connect, send et receive ; TRestHttpClientSocket applique les trois.

Conseil de mise à jour

Visez la build 2.4.17268. Mettez à niveau si la production logue du texte non fiable ou binaire, utilise des sockets blocking/TLS, IOCP Windows, l’auth REST derrière proxy, OpenSSL, Windows CNG ou PKCS#11. Ajoutez mormot.crypt.win aux uses concernés. Auditez le partage direct de TPkcs11 : il n’est plus verrouillé en interne, donc utilisez TCryptCertAlgoPkcs11.Lock/UnLock. Testez import de token, signatures PSS/ECC, shutdown pendant la découverte, RSA Open et les trois timeouts HTTP. Aucun superseded_by n’étaye une plage à éviter.

Build2.4.17208 → 2.4.17268
Commits60
Lignes+2851 -1493
Lecture10 min

56 sur 56 entrées · 60 commits upstream

Sujets
# Entrée Catégorie Unités
1 Critique L’échappement JSON cesse de lire après le buffer fourni TJsonWriter.AddEscapeBuffer corrige la comparaison MaxLen inversée : Len est tronqué s’il dépasse MaxLen au lieu d’être agrandi. Sécurité mormot.core.json c955c837+2-2

core: TJsonWriter.AddEscapeBuffer() did read beyond the input buffer

Impact

Logger du UTF-8 invalide ou du binaire ne copie plus des octets heap étrangers et ne provoque plus d’AV sous le lock de log.

API publique

  • TJsonWriter.AddEscapeBufferbehaviour-changed

Stefan Diestelmann · 18:17 UTC · voir le commit sur GitHub →

2 Élevée Le verrouillage PKCS#11 passe du moteur bas niveau au catalogue TPkcs11 passe de TObjectOSLock à TSynPersistent et retire ses locks internes. TCryptCertAlgoPkcs11 gagne un TOSLock réentrant et les méthodes publiques Lock/UnLock. Ruptures mormot.crypt.pkcs11+1 fdbd6e9f+197-220

crypt: simplified PKCS#11 threading model

Impact

Les instances TPkcs11 directes ne sont plus thread-safe. Les appels concurrents qui dépendaient de Engine.Safe ou de la sérialisation implicite peuvent entrer en race.

Migration nécessaire

Recherchez les TPkcs11 partagés et Engine.Safe. Sérialisez via TCryptCertAlgoPkcs11.Lock/UnLock ou utilisez un moteur par thread.

API publique

  • TPkcs11behaviour-changed
  • TCryptCertAlgoPkcs11.Lockadded
  • TCryptCertAlgoPkcs11.UnLockadded

Arnaud Bouchez · 15:50 UTC · PR #11 · voir le commit sur GitHub →

3 Élevée Les factories non prises en charge renvoient nil sans le déréférencer TCryptCertAlgo.New et FromHandle deviennent des defaults virtuels renvoyant nil ; Load, Generate, CreateSelfSignedCsr et GenerateFromCsr vérifient l’interface avant appel. CNG et PKCS#11 retirent leurs overrides redondants. Correctifs mormot.crypt.secure+2 11f136ba+31-61

crypt: fixed potential GPF in TCryptCertAlgo misuse

Impact

Les méthodes génériques sur les algorithmes de catalogue ne risquent plus un access violation. Les implémentations prises en charge restent inchangées.

API publique

  • TCryptCertAlgo.Newbehaviour-changed
  • TCryptCertAlgo.FromHandlebehaviour-changed

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

4 Élevée Le shutdown PKCS#11 attend la découverte en arrière-plan TCryptCertAlgoPkcs11 conserve son TLoggedWorkThread, l’attend avant de libérer le moteur et place la notification de fin dans finally sous lock. Correctifs mormot.crypt.pkcs11 d74a0234+48-42

crypt: fixed PKCS#11 background loading

Impact

Détruire le catalogue pendant une initialisation lente ne laisse plus le loader accéder à de la mémoire libérée et provoquer un GPF.

Arnaud Bouchez · 16:05 UTC · PR #11 · voir le commit sur GitHub →

5 Élevée L’import PKCS#11 renvoie le certificat stocké et annule les échecs Import valide l’ID hexa, crée certificat et clé, recharge le certificat réel, l’ajoute au catalogue et détruit les objets partiels en ordre inverse si nécessaire. Correctifs mormot.crypt.pkcs11 f4ba19f2+55-29

crypt: fixed TCryptCertAlgoPkcs11.Import() method

Impact

Les imports réussis sont immédiatement utilisables et les échecs ne laissent plus d’objets orphelins.

API publique

  • TCryptCertAlgoPkcs11.Importbehaviour-changed

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

6 Élevée La signature RSA-PSS PKCS#11 fournit les paramètres requis Pkcs11SetPssParams construit CK_RSA_PKCS_PSS_PARAMS avec hash, MGF1 et salt length ; SignDigest envoie le digest brut pour PSS au lieu d’un DigestInfo PKCS#1. Correctifs mormot.crypt.pkcs11+1 639e45ff+75-5

crypt: fixed PSS support in TCryptPrivateKeyPkcs11.SignDigest

Impact

Les tokens peuvent produire des signatures PS256/384/512 valides au lieu de rejeter ou mal encoder l’opération.

API publique

  • Pkcs11SetPssParamsadded

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

7 Élevée Les clés publiques PKCS#11 sont reconstruites depuis leurs attributs Pkcs11PublicKey essaie CKA_PUBLIC_KEY_INFO puis reconstruit RSA, EC et Ed25519 depuis leurs attributs. TCryptCertPkcs11.Create ne traite plus CKA_VALUE comme clé publique. Correctifs mormot.crypt.pkcs11 4be9e812+65-10

crypt: fixed TCryptCertPkcs11.Create() key import

Impact

Les identités sans CKO_CERTIFICATE ou CKA_VALUE lisible exposent la bonne clé publique au lieu d’un faux X.509 inutilisable.

API publique

  • Pkcs11PublicKeyadded

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

8 Élevée Les clés privées Ed25519 PKCS#8 suivent l’imbrication RFC 8410 SeqToEccPrivKey parse Ed25519 PKCS#8 comme id-Ed25519 suivi d’un OCTET STRING externe contenant l’OCTET STRING RFC 8410 interne, tout en gardant RFC 5915 pour EC. Correctifs mormot.crypt.secure 80bc2689+34-36

crypt: fixed ckaEdDSA private key extraction

Impact

L’extraction Ed25519 renvoie les 32 octets réels au lieu d’échouer ou de lire une mauvaise forme ASN.1, permettant l’import PKCS#11 correct.

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

9 Élevée L’énumération PKCS#11 finalise toujours sa recherche TPkcs11.GetObjects enveloppe FindObjects dans try/finally, appelle toujours C_FindObjectsFinal et vérifie son statut après nettoyage. Correctifs mormot.lib.pkcs11 4f5f3b32+35-29

lib: fixed TPkcs11.GetObjects error handling

Impact

Un échec d’énumération ne laisse plus une opération find active qui casse les appels suivants.

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

10 Élevée Les certificats CNG transitoires ne déréférencent plus un owner absent TCryptCertCng stocke un TSynLogClass explicite, accepte un owner nil pour les PFX et déduit l’origine store de l’owner sans le déréférencer. Correctifs mormot.crypt.win+1 3736871b+22-33

crypt: fixed GPF in TCryptCertCng

Impact

TCryptCertCng.LoadPkcs12 ne risque plus un GPF lors de la construction ou du log.

Arnaud Bouchez · 11:55 UTC · voir le commit sur GitHub →

11 Élevée PKCS#11 UnLoad finalise seulement les bibliothèques initialisées TPkcs11.Load suit fInitialized après C_Initialize, nettoie chaque échec et UnLoad n’appelle C_Finalize qu’après une vraie initialisation. Correctifs mormot.lib.pkcs11 dfbd2889+28-20

lib: fixed TPkcs11.Load/UnLoad error handling

Impact

Un chargement échoué ne finalise plus une API non initialisée et ne fuit plus un handle partiel.

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

12 Élevée PKCS#11 rejette les algorithmes incompatibles avec la vraie clé SetAsymAlgo vérifie SubjectPublicKeyAlgorithm : RSA libre accepte RS/PSS, RSA-PSS reste PSS-only et ECC doit rester compatible avec sa courbe. Correctifs mormot.crypt.pkcs11 978ba78c+30-7

crypt: fixed TCryptCertPkcs11.SetAsymAlgo logic

Impact

Un changement d’algorithme ne peut plus autoriser un mécanisme invalide sur la seule base d’un mapping d’enum.

API publique

  • TCryptCertPkcs11.SetAsymAlgobehaviour-changed

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

13 Élevée L’authentification REST ignore les cookies du reverse proxy TRestClientAuthentication.ClientGetSessionKey ne lit Set-Cookie que pour les schémas HTTP et recherche le cookie Model.Root au lieu de prendre le premier cookie proxy. Correctifs mormot.rest.client 477811c6+26-9

rest: only use the session cookie for HTTP-based authentication

Impact

L’auth signed-URI derrière Azure App Proxy ne prend plus un faux session ID conduisant aux 403 suivants.

API publique

  • TRestClientAuthentication.ClientGetSessionKeybehaviour-changed

TobiasKnoke · 10:19 UTC · voir le commit sur GitHub →

14 Élevée La signature PKCS#11 envoie les données au size query et ferme toujours TPkcs11.Sign passe Data/Len au premier C_Sign au lieu de nil/zero. SignDigest trace les exceptions et ferme le moteur dans finally ; CAA_PSS centralise la famille PSS. Correctifs mormot.crypt.pkcs11+3 b7c75631+17-12

crypt: fixed PKCS#11 signing

Impact

Les tokens exigeant les vraies données pour calculer la taille fonctionnent, et un échec ne laisse plus de session ouverte.

API publique

  • CAA_PSSadded

Arnaud Bouchez · 16:39 UTC · PR #11 · voir le commit sur GitHub →

15 Élevée Les retries de réception respectent le timeout configuré TCrtSocket.TrySockRecv conserve nrRetry jusqu’à RecvPending/WaitFor, mesure le temps écoulé et ne passe que le TimeOut restant au lieu de boucler indéfiniment sur recv. Correctifs mormot.net.sock bb4110fa+14-3

net: fixed TCrtSocket.TrySockRecv endless recv() retry on nrRetry - now honors TimeOut

Impact

Les lectures blocking ou TLS qui renvoient retry ne peuvent plus dépasser indéfiniment le timeout appelant.

API publique

  • TCrtSocket.TrySockRecvbehaviour-changed

je · 10:50 UTC · voir le commit sur GitHub →

16 Élevée L’import PKCS#11 utilise le PIN utilisateur normal Import renomme SoPinCode en PinCode et ouvre une session read/write CKU_USER plutôt qu’une session Security Officer. Correctifs mormot.crypt.pkcs11 bb4dc3c1+9-8

fixed TCryptCertAlgoPkcs11.Import to use normal user PIN

Impact

Les HSM qui refusent la création sous le rôle SO peuvent importer avec les credentials utilisateur normaux.

API publique

  • TCryptCertAlgoPkcs11.Importbehaviour-changed

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

17 Élevée GenerateFromCsr délègue au certificat créé au lieu de récursiver TCryptCertAlgo.GenerateFromCsr appelle maintenant result.GenerateFromCsr sur l’instance New au lieu de rappeler récursivement la factory. Les commentaires précisent aussi les factories vides et CNG. Correctifs mormot.crypt.secure+2 1be7a731+8-7

crypt: several ICryptCert fixes and precisions

Impact

La génération certificat depuis CSR via la factory de base ne récursive plus indéfiniment. Les overrides valides gardent leur comportement.

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

18 Élevée PKCS#11 GetObject renvoie l’unique record correspondant TPkcs11.GetObject finalise puis vide la sortie, exige exactement un résultat et assigne ce record à Info avant la valeur optionnelle. Correctifs mormot.lib.pkcs11 15a2bdfd+7-5

lib: fixed TPkcs11.GetObject wrapper

Impact

Les appels d’import et lookup reçoivent des métadonnées initialisées au lieu d’un succès avec Info vide ou ancien.

API publique

  • TPkcs11.GetObjectbehaviour-changed

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

19 Élevée Les sockets IOCP AcceptEx héritent du listener avant shutdown GetNextAccept applique SO_UPDATE_ACCEPT_CONTEXT avec le socket d’écoute avant de libérer l’état accept et logue un warning en cas d’échec. Correctifs mormot.net.sock.windows 0c84326d+11-0

net: set SO_UPDATE_ACCEPT_CONTEXT on IOCP AcceptEx sockets so that shutdown() sends a FIN

Impact

Les fermetures IOCP serveur peuvent envoyer FIN au lieu d’échouer avec WSAENOTCONN et laisser le client attendre.

je · 10:50 UTC · voir le commit sur GitHub →

20 Élevée L’import certificat PKCS#11 utilise les bons flags et reconnaît P-521 AddSessionCertificate ne force plus posExtractable, fournit toujours CKA_SUBJECT et les valeurs requises. Pkcs11KeyAlgorithm reconnaît les coordonnées 528-bit de secp521r1. Correctifs mormot.crypt.pkcs11+1 7a3e2370+5-6

crypt: fixed CKO_CERTIFICATE import

Impact

Les tokens reçoivent un template CKO_CERTIFICATE valide et les clés P-521 sont correctement classées.

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

21 Élevée Les C long OpenSSL utilisent des types Pascal adaptés à la plateforme Des dizaines de déclarations et retours mormot.lib.openssl11 passent de integer/cardinal à clong ou PtrInt pour les C long, tailles, versions, modes et callbacks. Compilateur & plateforme mormot.lib.openssl11 c60c6b66+93-93

lib: fixed OpenSSL API clong usage

Impact

Les incompatibilités ABI POSIX 64-bit disparaissent. Les appelants bas niveau stockant les résultats en 32-bit peuvent nécessiter une conversion.

API publique

  • OpenSSL C API declarationssignature-changed

Arnaud Bouchez · 09:30 UTC · voir le commit sur GitHub →

22 Élevée Les masques d’options OpenSSL utilisent les tailles 1.1 et 3.x SSL_CTX_set_options/clear_options publient des masques QWord et appellent les signatures 32-bit OpenSSL 1.1 ou 64-bit OpenSSL 3 ; culong représente unsigned C long. Compilateur & plateforme mormot.lib.openssl11 bee62163+16-15

lib: fixed SSL_CTX_set_options/SSL_CTX_clear_options for OpenSSL

Impact

Les bits d’options OpenSSL 3 ne sont plus tronqués et OpenSSL 1.1 conserve son ABI.

API publique

  • SSL_CTX_set_optionssignature-changed
  • SSL_CTX_clear_optionssignature-changed

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

23 Élevée Le C long Windows reste 32-bit sous Win64 L’alias Windows clong passe de PtrInt à integer et timeval utilise clong, conformément à l’ABI LLP64 OpenSSL sous Win64. Compilateur & plateforme mormot.lib.openssl11 e7edab5c+6-6

lib: long is 32-bit on Windows even on Win64

Impact

Les appels OpenSSL Win64 n’échangent plus huit octets là où l’ABI C en attend quatre.

Arnaud Bouchez · 09:43 UTC · voir le commit sur GitHub →

24 Élevée Delphi Darwin ne lie plus un symbole C réservé à FPC L’alias externe mach_absolute_time nommé GetTickCount64 n’est déclaré que sous FPC/Darwin ; Delphi ne l’utilise pas mais tentait de résoudre la bibliothèque c. Compilateur & plateforme mormot.core.base 96914740+2-0

core: fixed Delphi Darwin linking

Impact

Les liens Delphi iOS et Simulator ne tombent plus sur « ld: file not found: c ». FPC Darwin reste inchangé.

Stefan Diestelmann · 10:27 UTC · voir le commit sur GitHub →

25 Moyenne Les classes AES CryptoAPI passent dans une unit dédiée TAesAbstractApi, TAesEcbApi, TAesCbcApi, TAesCfbApi et TAesOfbApi quittent mormot.crypt.core pour la nouvelle unit mormot.crypt.win, ajoutée au package Lazarus. Ruptures mormot.crypt.core+1 c2a321d8+315-238

crypt: new mormot.crypt.win.pas unit

Impact

Les projets qui nomment ces types sans importer mormot.crypt.win ne compilent plus ; le comportement AES ne change pas. La unit reste neutre hors Windows.

Migration nécessaire

Recherchez ces cinq classes TAes*Api et ajoutez mormot.crypt.win aux uses concernés.

API publique

  • mormot.crypt.winadded — La nouvelle unit contient les classes AES CryptoAPI publiques.

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

26 Moyenne La recherche X.509 accepte les thumbprints lisibles TX509.FingerPrintCompare devient insensible à la casse et InternalFind normalise les valeurs ccmSha1/ccmSha256 séparées par espaces ou deux-points. Correctifs mormot.crypt.x509+5 8f741a59+19-11

crypt: normalize X509 ccmSha1/ccmSha256 finding

Impact

Les recherches acceptent les formats de thumbprint courants au lieu de rater silencieusement le certificat.

API publique

  • TX509.FingerPrintComparebehaviour-changed

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

27 Moyenne La normalisation des thumbprints couvre tous les backends certificat TCryptCert.InternalFind, Compare et TX509.FingerPrintCompare utilisent HumanHexCompare pour SHA-1/SHA-256, centralisant séparateurs et casse. Correctifs mormot.crypt.secure+1 fd0b9854+7-14

crypt: global X.509 thumbprint normalization

Impact

La comparaison de digest formaté est cohérente pour X.509, CNG et PKCS#11.

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

28 Moyenne Les clés privées PKCS#11 valident algorithme et digest avant usage TCryptPrivateKeyPkcs11 initialise fKeyAlgo depuis X.509, rejette les algorithmes/digests incompatibles et déduit RSA du type de clé. Correctifs mormot.crypt.pkcs11+1 eb075586+14-6

crypt: some TCryptPrivateKeyPkcs11 fixes

Impact

Les combinaisons invalides échouent avant d’ouvrir une session ; les clés RSA-PSS restent utilisables pour Open si approprié.

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

29 Moyenne Les attributs de clé PKCS#11 suivent chaque algorithme X.509 CryptCertToPkcs11PrivKeyAttributes affine la conversion des attributs RSA/ECC et des flags d’usage lors de l’import token. Correctifs mormot.crypt.pkcs11 b47c9353+9-6

crypt: fixed X.509 attributes to PKCS#11 conversion

Impact

Les clés importées portent des attributs cohérents avec l’algorithme, améliorant l’acceptation HSM et les recherches.

Arnaud Bouchez · 16:27 UTC · PR #11 · voir le commit sur GitHub →

30 Moyenne Une mauvaise longueur de signature PKCS#11 renvoie false TPkcs11.Verify traite CKR_SIGNATURE_LEN_RANGE comme CKR_SIGNATURE_INVALID et renvoie false ; les autres erreurs restent fatales. Correctifs mormot.lib.pkcs11 4788f9a7+7-5

lib: fixed TPkcs11.Verify

Impact

Les signatures de mauvaise longueur deviennent un échec de vérification ordinaire, pas une exception HSM.

API publique

  • TPkcs11.Verifybehaviour-changed

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

31 Moyenne La validité OpenSSL conserve les offsets de début négatifs X509.SetValidity ne force plus ValidDays négatif à zéro car les versions prises en charge de X509_gmtime_adj acceptent ces offsets. Correctifs mormot.lib.openssl11 bae3c61c+3-4

lib: adjust X509.SetValidity() to the current OpenSSL state

Impact

Les certificats OpenSSL peuvent à nouveau commencer avant l’heure courante et préserver la tolérance de clock skew.

À regarder

Retestez notBefore si ValidDays est négatif.

API publique

  • X509.SetValiditybehaviour-changed

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

32 Moyenne La recherche de cookie REST reproduit le remplacement slash/underscore ClientGetSessionKey normalise Model.Root via StringReplaceChars('/', '_') avant de comparer le cookie, comme TRestUriContext.SetOutCookie. Correctifs mormot.rest.client 5f3c8069+3-2

rest: match the session cookie name as SetOutCookie() computes it

Impact

L’auth HTTP fonctionne pour les roots comme api/v1 dont le cookie réel est api_v1.

Stefan Diestelmann · 10:23 UTC · voir le commit sur GitHub →

33 Moyenne Les clients REST HTTP appliquent les trois timeouts TRestHttpClientSocket appelle SetTimeouts avec connect/send/receive juste après la création de THttpClientSocket. Correctifs mormot.rest.http.client 9013722a+3-2

rest: fixed #624 in TRestHttpClientSocket

Impact

Les timeouts REST send/receive configurés ne sont plus réduits au timeout connect du socket.

Arnaud Bouchez · 19:10 UTC · PR #624 · voir le commit sur GitHub →

34 Moyenne Les stores Windows exposent les identités adossées à CNG mormot.crypt.win ajoute TWinCertStoreLocations, ICryptCertCng, TCryptCertAlgoCng et TCryptCertCng pour énumérer les stores, rechercher les certificats et signer via les clés KSP CNG. Nouveautés mormot.core.os.security+2 51d635d7+653-5

crypt: High-Level Windows CNG Certificate Store Integration

Impact

Les backends Windows peuvent employer des identités de store, carte ou KSP sans exporter les clés privées. Les autres plateformes ne changent pas.

À regarder

Évaluez TCryptCertAlgoCng.Cert, Find ou FindOne là où les services Windows chargent des PFX exportables.

API publique

  • TCryptCertAlgoCngadded
  • ICryptCertCngadded
  • TWinCertStoreLocationsadded

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

35 Moyenne Le chargement PFX devient une factory de classe CNG LoadPkcs12 passe de TCryptCertAlgoCng à la class function TCryptCertCng.LoadPkcs12, accepte un log optionnel et crée une identité sans catalogue. Nouveautés mormot.crypt.win 274091d4+81-76

crypt: proper TCryptCertCng.LoadPkcs12 factory

Impact

Le chargement PFX ne nécessite plus de catalogue. Les utilisateurs de la méthode intermédiaire doivent appeler la class factory.

À regarder

Utilisez TCryptCertCng.LoadPkcs12(Pfx, Password, LogClass).

API publique

  • TCryptCertCng.LoadPkcs12added

Arnaud Bouchez · 11:42 UTC · voir le commit sur GitHub →

36 Moyenne L’ouverture d’enveloppe RSA peut déléguer l’opération privée mormot.crypt.rsa ajoute TRsaPkcs1Decrypt et RsaOpen pour valider l’enveloppe, déléguer le déchiffrement PKCS#1 v1.5 et effectuer AES ; TRsa.Open le réutilise. Nouveautés mormot.crypt.rsa+1 634a72ff+77-56

crypt: introducing RsaOpen() reusable wrapper

Impact

Les providers CNG et PKCS#11 peuvent ouvrir le format TRsa.Seal sans exporter la clé RSA.

À regarder

Utilisez RsaOpen avec un callback qui effectue l’unpadding RSAES-PKCS1-v1_5 et renvoie la clé éphémère.

API publique

  • RsaOpenadded
  • TRsaPkcs1Decryptadded

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

37 Moyenne CNG peut charger une identité PKCS#12 transitoire Un premier TCryptCertAlgoCng.LoadPkcs12 importe le PFX avec PKCS12_NO_PERSIST_KEY, trouve une clé CNG accessible et crée un ICryptCertCng en mode cached/silent. Nouveautés mormot.crypt.win+1 7741fdc4+88-41

crypt: new TCryptCertAlgoCng.LoadPkcs12() method

Impact

Windows peut utiliser une identité PFX sans persister sa clé. Un commit suivant déplace la factory finale vers TCryptCertCng.LoadPkcs12.

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

38 Moyenne Les clés privées CNG ouvrent les messages RSA du framework TCryptPrivateKeyCng.Open décode le cipher AES, calcule le modulus RSA et utilise RsaOpen avec TNCrypt.KeyDecryptPkcs1 ; acquisition et log sont partagés avec la signature. Nouveautés mormot.crypt.win+1 12e8ca5a+84-25

crypt: implemented TCryptPrivateKeyCng.Open()

Impact

ICryptCertCng.Open déchiffre les messages compatibles TRsa.Seal avec des clés de store ou hardware non exportables.

À regarder

Testez Open avec chaque cipher AES et provider CNG de l’application.

API publique

  • TCryptPrivateKeyCng.Openbehaviour-changed

Arnaud Bouchez · 13:39 UTC · voir le commit sur GitHub →

39 Moyenne Les sockets HTTP séparent les timeouts connect, send et receive THttpClientSocket ajoute trois champs et SetTimeouts. OpenBind applique temporairement connect, puis installe send/receive et restaure le timeout haut niveau. Nouveautés mormot.net.client 157ccf6f+69-30

net: introduce 3 explicit timeouts for THttpClientSocket

Impact

Les backends peuvent limiter la connexion tout en donnant des budgets différents à l’écriture et la lecture. L’ancien constructeur initialise les trois pareillement.

À regarder

Définissez des budgets distincts si les latences diffèrent, puis testez proxy CONNECT et retries.

API publique

  • THttpClientSocket.SetTimeoutsadded

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

40 Moyenne Les clés privées PKCS#11 ouvrent les enveloppes RSA TPkcs11.Decrypt encapsule C_DecryptInit/C_Decrypt et TCryptPrivateKeyPkcs11.Open utilise CKM_RSA_PKCS avec RsaOpen via la clé privée du token. Nouveautés mormot.crypt.pkcs11+1 64321f11+87-8

crypt: implement TCryptPrivateKeyPkcs11.Open() method

Impact

Les clés RSA de token peuvent déchiffrer ICryptPrivateKey.Open sans exporter de secret.

À regarder

Vérifiez que chaque token autorise CKM_RSA_PKCS decryption pour la clé choisie.

API publique

  • TPkcs11.Decryptadded
  • TCryptPrivateKeyPkcs11.Openbehaviour-changed

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

41 Moyenne Windows CNG déchiffre un bloc RSA PKCS#1 TNCrypt.KeyDecryptPkcs1 encapsule NCryptDecrypt avec padding PKCS#1, mode silent, une seule opération hardware, sortie bornée et nettoyage sur erreur. Nouveautés mormot.lib.sspi 894714e2+50-3

lib: new TNCrypt.KeyDecryptPkcs1() wrapper method

Impact

Les clés RSA CNG, y compris hardware KSP, obtiennent le primitive nécessaire au déchiffrement d’enveloppe sans requête de taille.

API publique

  • TNCrypt.KeyDecryptPkcs1added

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

42 Moyenne Un wrapper Windows importe les PFX en effaçant les mots de passe mormot.lib.sspi ajoute WinCertStoreImportPfx, convertit SpiUtf8 en UTF-16, appelle PFXImportCertStore, capture les erreurs et efface le buffer du mot de passe. Nouveautés mormot.lib.sspi 33e5e920+46-3

lib: new WinCertStoreImportPfx() wrapper function

Impact

Les consommateurs PFX Windows gagnent un chemin d’import avec code d’erreur et effacement explicite du mot de passe.

API publique

  • WinCertStoreImportPfxadded

Arnaud Bouchez · 09:41 UTC · voir le commit sur GitHub →

43 Moyenne PKCS#11 signe ES384, ES512 et ES256K au format DER SignDigest convertit la sortie r||s via SetSignatureSecurityRaw pour ES256/384/512/256K et renseigne le mechanism PSS. Nouveautés mormot.crypt.pkcs11 9c9a402a+8-7

crypt: ES384 ES512 ES256K support for PKCS#11

Impact

Les tokens avec clés EC plus grandes ou secp256k1 renvoient le format DER attendu par ICryptPrivateKey.

À regarder

Ajoutez des tests de signature token pour chaque algorithme ES activé.

Arnaud Bouchez · 15:18 UTC · PR #11 · voir le commit sur GitHub →

44 Moyenne Un second passage OpenSSL corrige les tailles de control et mode Les types Windows précèdent les déclarations OpenSSL, et les wrappers session-cache, mode, extra-chain et callback utilisent clong de façon cohérente ; timeval suit clong. Compilateur & plateforme mormot.lib.openssl11 cdec1b9d+33-33

lib: another pass to fix clong OpenSSL usage

Impact

Les wrappers OpenSSL correspondent désormais aux conventions C sur Delphi/FPC ; le code TLS haut niveau reste compatible.

API publique

  • SSL_CTX_set_modesignature-changed
  • SSL_get_modesignature-changed

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

45 Moyenne Les codes de la queue OpenSSL ont un type adapté à la plateforme TErrQueueCode alias culong ; ERR_get_error, ERR_error_string_n et OpenSSL_error l’utilisent, et EOpenSsl.LastError devient PtrInt. Compilateur & plateforme mormot.lib.openssl11 6b5cbea6+33-26

lib: introducing TErrQueueCode specific type

Impact

Les valeurs de queue POSIX 64-bit ne sont plus tronquées. Les signatures des helpers bas niveau changent.

À regarder

Recompilez le code appelant OpenSSL_error ou stockant EOpenSsl.LastError dans integer.

API publique

  • TErrQueueCodeadded
  • EOpenSsl.LastErrorsignature-changed

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

46 Moyenne Les derniers unsigned long OpenSSL sont corrigés mormot.lib.openssl11 corrige d’autres signatures culong et sépare les erreurs SSL integer des TErrQueueCode, tout en gardant cardinal pour les flags 32-bit. Compilateur & plateforme mormot.lib.openssl11 48dd6495+11-11

lib: minor OpenSSL API fixes

Impact

Le reporting d’erreurs et les wrappers d’options s’alignent sur leurs domaines C réels.

Arnaud Bouchez · 13:53 UTC · voir le commit sur GitHub →

47 Moyenne La construction CNG précise ownership et métadonnées de store La construction TCryptCertCng est réorganisée autour des contexts dupliqués, provider records et options de clé ; GetSystemStore indique l’origine system store. Sous le capot mormot.crypt.win 6b71ac9f+49-41

crypt: refined TCryptCertCng

Impact

Les nouvelles identités CNG ont un ownership et des métadonnées plus clairs. Il s’agit d’un raffinement de la nouvelle API.

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

48 Moyenne CNG distingue les identités de store des identités PFX transitoires TCryptCertCng sépare l’initialisation du context des métadonnées de store et GetSystemStore renvoie un booléen avec store et location. Sous le capot mormot.crypt.win 5c0c3dec+34-21

crypt: refined ICryptCertCng usage

Impact

Les appelants distinguent clairement un certificat CNG persistant d’un PFX en mémoire.

API publique

  • ICryptCertCng.GetSystemStoresignature-changed

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

49 Faible Les métadonnées du provider certificat Windows ont un wrapper dédié mormot.lib.sspi ajoute TWinCertKeyProviderInfo et WinCertCtxtKeyProvider pour décoder CERT_KEY_PROV_INFO_PROP_ID ; CNG utilise ce record ciblé plutôt que TWinCertInfo complet. Nouveautés mormot.lib.sspi+1 fe37aa9f+77-21

lib: new TWinCertKeyProviderInfo CNG API wrapper

Impact

Les appelants Windows gagnent une requête provider plus ciblée ; TWinCertInfo reste disponible et aucun changement applicatif n’est requis.

API publique

  • TWinCertKeyProviderInfoadded
  • WinCertCtxtKeyProvideradded

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

50 Faible L’en-tête d’enveloppe RSA a une définition partagée TRsaSealHeader et PRsaSealHeader passent dans mormot.core.os.security afin que RSA Pascal et OpenSSL partagent le même layout packed ; le callback RsaOpen devient const. Sous le capot mormot.core.os.security+3 e0f6cbb5+21-36

core: moved TRsaSealHeader to mormot.core.os.security

Impact

La compatibilité d’enveloppe est centralisée sans changer le wire format. Le type public se trouve dans mormot.core.os.security.

API publique

  • TRsaSealHeaderadded

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

51 Faible Les options d’acquisition CNG remplacent plusieurs booléens TWinCertCngKeyOption et TWinCertCngKeyOptions représentent silent, comparaison et cache ; TWinCertCngKey.Init et TCryptCertCng utilisent cet ensemble. Sous le capot mormot.lib.sspi+1 08e67973+26-13

lib: introducing TWinCertCngKeyOptions

Impact

Le nouveau code CNG combine explicitement les comportements d’acquisition. L’API est nouvelle dans cette même édition.

API publique

  • TWinCertCngKeyOptionsadded

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

52 Faible Le timing des retries socket utilise une seule échéance TrySockRecv calcule une échéance et le temps restant, sépare nrOk et RecvPending et garde AcceptEx sous le lock ; un initializer PKCS#11 redondant disparaît. Sous le capot mormot.net.sock+2 19ddf82e+15-19

net: minor simplification/cleanup of #622 PR

Impact

Les correctifs timeout et IOCP gardent leur comportement avec des invariants plus clairs et une finalisation atomique.

Arnaud Bouchez · 17:21 UTC · PR #622 · voir le commit sur GitHub →

53 Faible Le chargement PFX SChannel réutilise l’importeur Windows sécurisé TSChannelServerContext.LoadCertificate remplace son code PFXImportCertStore par WinCertStoreImportPfx, efface le mot de passe UTF-8 et vérifie l’erreur. Sous le capot mormot.net.sock.windows+2 18dca4de+8-22

net: simplified TSChannelServerContext.LoadCertificate

Impact

Le chargement de certificat serveur SChannel conserve son comportement avec une gestion centralisée du mot de passe et des erreurs.

Arnaud Bouchez · 09:52 UTC · voir le commit sur GitHub →

54 Faible L’initialisation du provider AES CryptoAPI est simplifiée mormot.crypt.win simplifie le contrôle d’état PROV_RSA_AES et le helper XOR final sans changer les classes publiques. Sous le capot mormot.crypt.win 7f601fcc+13-16

crypt: minor PROV_RSA_AES support refactoring on Windows

Impact

Aucun impact applicatif ; les mêmes modes AES et erreurs restent exposés.

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

55 Faible SChannel Receive a un défaut fatal explicite TLS Channel Receive initialise result à nrFatalError et simplifie les sorties pour éviter un warning Delphi 7. Sous le capot mormot.net.sock.windows 8df1fca0+6-10

net: refactored TLS Channel Receive() method

Impact

Le comportement reste fatal sur ces chemins ; Delphi 7 ne signale plus un résultat non initialisé.

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

56 Faible Les conditionnels ZIP évitent des hints FPC trompeurs mormot.core.zip réorganise les déclarations conditionnelles FPC pour supprimer des hints incorrects sans changer la logique exécutée. Entretien mormot.core.zip 507833b7+9-9

core: circumvent some weird FPC compiler hints

Impact

Les builds FPC sont plus propres ; comportement et API restent inchangés.

Arnaud Bouchez · 08:32 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