Checked crypto arithmetic and key agreement
Verze 2.955.1 si ponechává stávající API SHA3, SHAKE a výměny klíčů, přičemž v Delphi i Free Pascal jsou zapnuté kontroly celočíselného přetečení a rozsahu
SHA3-256, SHA3-384, SHA3-512 a SHAKE256 si uchovávají stávající výstupy napříč prázdnými vstupy, hranicemi rate, více bloky, streamovanými aktualizacemi i opakovanou SHAKE extrakcí
Výměny P-256, P-384 a P-521 používají explicitní low-word operace všude tam, kde implementace tělesa záměrně pracuje modulo 2^64; konstanty s vysokým bitem i Montgomery operace zůstávají použitelné v checked 32bit sestaveních
Přijímání Montgomery sdílených tajemství
HPDFX25519 a HPDFX448 kontrolují kompletní kanonické výstupní bajty a vyhodí EInvalidOpException, když je sdílené tajemství celé nulové, tedy i u slabých reprezentací tělesa s nenulovými vnitřními limbs
HPDFComputeKeyAgreementSecret tenhle odmít přeloží na False, prázdné SharedSecret a čerstvý Issue; následná platná operace zůstává použitelná
Nekanonické u-souřadnice dál řídí dekódování podle RFC 7748, včetně high-bit pravidla X25519; kontrola nulového tajemství se drží volitelné přijímací kontroly v sekci 6 RFC 7748
Akceptace
Šest skutečných nativních cílů prochází každý 360 nezávislých srovnání SHA3/SHAKE a 101 key-agreement case, tedy i plnošířkové NIST soukromé skaláry oběma směry, RFC vektory a 1 000 iterací, odmítání nízkého řádu, nekanonické vstupy i zotavení
Obě Delphi architektury navíc procházejí 11 nezměněných původních metod ladder a recipient-envelope konzumentů; skutečné compiler closures se auditují vůči aktuální skladbě releasu
Pro běžnou checked konzolovou akceptaci pusťte Tests/Linux/Run-CheckedCryptoAcceptance.py; Tests/Linux/CheckedCryptoAcceptance.en-us.md popisuje compiler příkazy a nezávislý generátor vektorů
Tyto kontroly zakládají zdokumentované chování vektorů a odmítání; nezakládají běh v konstantním čase ani certifikaci side-channel