libcrash -- cryptographic hash (and other) functions

Discussing libraries simplifying applications development
  • Почему не LGPL, если не секрет?
    В любом случае, использование данной библиотеки требует кода программ под лицензией GPLv3. Не уверен насчет лицензии библиотек, которые "поставляются" с C--, что может вызвать определенные проблемы.
  • Всё просто: если я делюсь с человеком, то хочу, чтобы и он со мной поделился в ответ. А если человек изначально не намерен делиться со мной, то почему я должен делиться с ним? Иными словами, как вы ко мне, так и я к вам.

    Насколько я понял из этой картинки, использование других LGPL библиотек допустимо. В частности libs-dev (libini, libimg, ...) распространяются под LGPL2.1+.
  • Я не знаю, насколько хорошо отнесутся авторы библиотек к обновлению лизцензии с GPLv2 до GPLv3. В остальном мне твой подход нравится :)
  • Если ты линкуешь программу П с библиотеками Б1(LGPL*) и Б2(GPL3+), то единственное условие -- GPL3+ для П.

    Менять лицензию libs-dev не нужно, они ведь под LGPL, а не GPL. Проблемы только с GPLv2 only.
  • Добавил хэши sha3 (keccak).

    Пример crashtest.asm с svn, вычисляющий всевозможные хэши самого себя:
    Image
  • Супер, поздравляю, молодец!
  • Спасибо. Но там ещё много работы: скорости бы добавить. Начиная с sha384 идёт работа с 64-битными числами, и на ней мой код даже с mmx в разы сливает 64-битному сишному, у которого в распоряжении 64-разрядные регистры общего назначения с нативными rol, например, и прибавлением регистра к памяти.
  • Куча "cld" ни одного "std"
    #
    and eax, edi ; ( state[i*8+k] & (1<<(7-j) )
    #
    cmp eax, 0 ; if ((state[i*8+k] & (1<<(7-j))) != 0) v ^= A[k*8+j] ???
    #
    jz .next_ji
    #
    jb .next_j
    #
    jmp .next_ki
    #
    align 4
    #
    .next_ki:
    #
    jb .next_i
    #
    jmp .end
    #
    .end:
    ну и т.п.

    Вывод: "нинужно", любой вменяемый компилятор сделает лучше.
  • A quite big update has arrived in #9216.

    Current state:
    • hashes: crc32 (still here), md4, md5, sha1, sha2 (224, 256, 384, 512), sha3 (224, 256, 384, 512).
    • macs: poly1305, hmac (sha2_256, sha2_512).
    • ciphers: chacha20, aes256ctr, aes256cbc (with and without pkcs#5 padding).
    • A relatively high-level and more low-level APIs (there are some comments in libcrash.asm).
    • Now it's GPL2+, not GPL3+ (who cares but still).
    As always, there are still a lot of things to improve (not mentioning speed, haha), but functionally it should be correct.
  • Who is online

    Users browsing this forum: No registered users and 3 guests