Нильс Мёллер
Мен төмөнкү деңгээлдеги криптографиялык китепкана болгон GNU Nettleдин жаңы чоң чыгарылышын жарыялоого кубанычтамын. Бул чыгарылышта бир нече API өзгөрүүлөрү камтылган, алардын айрымдары абдан маанилүү, ошондой эле эскирген функцияларды алып салуу каралган. Белгилей кетүүчү жаңы функциялардын бири - SLH-DSA кол тамгаларын (статуту жок хэшке негизделген санариптик кол тамга алгоритми) колдоо.
Бул чоң жаңы чыгарылыш. Ал SLH-DSA колдоосун камтыйт. Nettle API'сине бир нече өзгөртүүлөр киргизилди жана эскирген функциялар алынып салынды. Мындан тышкары, ABI жакшыртылып, API дээрлик өзгөрүүсүз калды. Тактап айтканда, бир нече алгоритмдер үчүн контексттик структуралар кыскартылды.
Өзгөртүүлөр:
- Хэш алгоритмдеринин, MAC жана AEADдын _digest функциялары мындан ары каалаган дайджест өлчөмүн аргумент катары кабыл албайт; анын ордуна, алар ар дайым толук өлчөмдөгү дайджестти кайтарышат. nettle_hash_digest_func тиби ошого жараша өзгөртүлдү.
- CCM AES аркылуу толук билдирүүлөрдү иштетүү функциялары эми биринчи аргумент катары туруктуу шифрлөө контекстин кабыл алышат. Мисалы, ccm_aes128_encrypt_message функциясынын биринчи аргументи эми туруктуу aes128_ctx* түзүмү болуп саналат. Мурда бул ccm_aes128_ctx* түзүмү болгон, ал негизги шифрлөө контекстинен башкасынын баарын этибарга алган эмес.
- SHA3 функциялары эми бардык хэш варианттары үчүн бирдей sha3_ctx түзүмүн, ошондой эле бирдей sha3_init функциясын колдонот. sha3_256_ctx жана sha3_256_init сыяктуу эски аттар артка шайкештик үчүн препроцессордун каймана аттары катары аныкталат.
- base16_decode_update жана base64_decode_update функцияларынын dst_length аргументи эми киргизүү жана чыгаруу аргументи болуп саналат. Киргизүү катары колдонулганда, ал максаттуу буфердин өлчөмүн камтышы керек; эгер бул өлчөм жетишсиз болсо, декоддоо ишке ашпайт. Мурда dst_length чыгаруу аргументи гана болгон, ал максаттуу буфердин көрсөтүлгөн src_length узундугунун каалаган киргизүү мааниси үчүн жетиштүү чоң болушун талап кылган.
Source: linux.org.ru
