GNU Nettle 4.0

Nils Möller

Ich freue mich, eine neue, umfangreiche Version von GNU Nettle, einer Low-Level-Kryptografiebibliothek, bekanntzugeben. Diese Version enthält mehrere API-Änderungen, darunter einige bedeutende, sowie die Entfernung veralteter Funktionen. Eine bemerkenswerte Neuerung ist die Unterstützung für SLH-DSA-Signaturen (ein zustandsloser, hashbasierter digitaler Signaturalgorithmus).
Dies ist eine wichtige neue Version. Sie beinhaltet Unterstützung für SLH-DSA. Die Nettle-API wurde in mehreren Punkten überarbeitet und veraltete Funktionen wurden entfernt. Darüber hinaus wurde die ABI verbessert, die API selbst blieb jedoch weitgehend unverändert. Insbesondere wurden die Kontextstrukturen für einige Algorithmen reduziert.

Änderungen:

  • Die _digest-Funktionen der Hash-Algorithmen MAC und AEAD akzeptieren die gewünschte Digest-Größe nicht mehr als Argument; stattdessen geben sie immer einen Digest in voller Größe zurück. Der Typ nettle_hash_digest_func wurde entsprechend angepasst.
  • Funktionen zur Verarbeitung vollständiger Nachrichten mit CCM AES akzeptieren nun einen konstanten Verschlüsselungskontext als erstes Argument. Beispielsweise ist das erste Argument der Funktion `ccm_aes128_encrypt_message` jetzt die konstante Struktur `aes128_ctx*`. Zuvor war dies die Struktur `ccm_aes128_ctx*`, die alles außer dem zugrunde liegenden Verschlüsselungskontext ignorierte.
  • SHA3-Funktionen verwenden nun für alle Hash-Varianten dieselbe sha3_ctx-Struktur sowie dieselbe sha3_init-Funktion. Alte Namen wie sha3_256_ctx und sha3_256_init sind aus Gründen der Abwärtskompatibilität als Präprozessor-Aliase definiert.
  • Das Argument `dst_length` der Funktionen `base16_decode_update` und `base64_decode_update` kann nun sowohl als Eingabe- als auch als Ausgabeargument verwendet werden. Bei Verwendung als Eingabe muss es die Größe des Zielpuffers enthalten; andernfalls schlägt die Dekodierung fehl. Zuvor war `dst_length` ausschließlich ein Ausgabeargument und erforderte, dass der Zielpuffer groß genug für jeden Eingabewert der angegebenen Länge `src_length` sein musste.

Source: linux.org.ru

Kommentar hinzufügen