Так ли безопасен Tox, как его малюют?

    Tox Sux
    Всем привет!

    Мне нравится Tox, я уважаю участников этого проекта и их труд, который иногда даже удается использовать по назначению. В стремлении помочь сообществу, я заглянул в код, заметил потенциальные проблемы, которые могут привести людей в погонах к вам домой к весьма печальным последствиям.

    В последнее время наблюдается нездоровая тенденция переоценивать защищенность подобных систем только на основании того, что они P2P. Буду излагать объективные факты и дополнять их своими комментариями, чтобы не бросаться громкими фразами в пространство. Выводы предлагаю делать самостоятельно.

    Заранее отвечу на вопрос: мой pull request был принят.

    Факт №1. В master-ветку попадает код, который падает на тестах


    Всё началось со статей на хабре про установку ноды.
    В комментах люди жаловались на сложность сборки и установки на CentOS, поэтому я решил запилить сборку на CMake. После пары дней работы я был готов презентовать своё поделие Tox-сообществу на Freenode, но меня встретили непониманием:
    someone has contributed cmake initially, but other developers didn't know how to use it and couldn't make it build their code, so they switched to autotools (sic!), which they become to know better now.

    Параллельно я отметил, что в master-ветку попадает код, который не проходит тесты в Travis CI, но мне ответили: «мы понимаем, с тестами нужно что-то делать, но пусть пока будет так».

    Помогать так помогать, решил я и открыл код этого падающего надежды мессенджера.

    Факт №2. memset(ptr, 0, size) перед вызовом free


    Мой глаз зацепился за
    memset(c, 0, sizeof(Net_Crypto));
    free(c);
    

    Если вы помните из цикла статей PVS-Studio, memset может быть вырезан оптимизатором компилятора, если регион памяти в будущем не будет использоваться. Логика компилятора проста: «После free жизни нет, значит и обращений к памяти не будет, удалю-ка я этот бессмысленный memset».

    Как прилежный ученик, я заменил вызовы memset в подобных местах на sodium_memzero, и ТЕСТЫ УПАЛИ.

    Факт №3. Сравнение публичных ключей уязвимо к атакам по времени


    Для сравнений публичных ключей в toxcore есть специальная функция, и это хорошо:
    /* compare 2 public keys of length crypto_box_PUBLICKEYBYTES, not vulnerable to timing attacks.
       returns 0 if both mem locations of length are equal,
       return -1 if they are not. */
    int public_key_cmp(const uint8_t *pk1, const uint8_t *pk2)
    {
        return crypto_verify_32(pk1, pk2);
    }
    

    crypto_verify_32 — специальная функция из криптографических библиотек NaCL/Sodium, которая позволяет избежать атак по времени, т.к. работает за константное время, а не делает break при первом несовпадении байт. Использовать её следует при сравнении приватных данных: ключей, HMAC'ов и проч.

    Кодовая база проекта toxcore довольно обширна, поэтому родился вот такой уродец с уязвимостью:
    bool id_equal(const uint8_t *dest, const uint8_t *src)
    {
        return memcmp(dest, src, crypto_box_PUBLICKEYBYTES) == 0;
    }
    

    Но и это не всё. Имея на руках функции id_equal или public_key_cmp или crypto_verify_32, разработчики все равно предпочитают сравнивать ключи своим способом.
    Вот краткая выжимка из кода DHT, onion маршрутизации и других критичных подсистем:
    if (memcmp(ping->to_ping[i].public_key, public_key, crypto_box_PUBLICKEYBYTES) == 0) {
    if (memcmp(public_key, onion_c->friends_list[i].real_public_key, crypto_box_PUBLICKEYBYTES) == 0)
    if (memcmp(public_key, onion_c->path_nodes_bs[i].public_key, crypto_box_PUBLICKEYBYTES) == 0)
    if (memcmp(dht_public_key, dht_public_key_temp, crypto_box_PUBLICKEYBYTES) != 0)
    if (Local_ip(ip_port.ip) && memcmp(friend_con->dht_temp_pk, public_key, crypto_box_PUBLICKEYBYTES) == 0)
    

    Факт-домысел №4. Функция increment_nonce уязвима к атаке по времени


    /* Increment the given nonce by 1. */
    void increment_nonce(uint8_t *nonce)
    {
        uint32_t i;
    
        for (i = crypto_box_NONCEBYTES; i != 0; --i) {
            ++nonce[i - 1];
    
            if (nonce[i - 1] != 0)
                break;               // <=== sic!
        }
    }
    

    Функция не должна зависеть от секретных данных(кто хочет окунуться глубже, вот линка).
    Именно increment_nonce частенько используется сервером для генерации нового nonce. Для инкремента nonce у Sodium есть специальная функция:
    Документация sodium_increment() can be used to increment nonces in constant time.
    Код
    void
    sodium_increment(unsigned char *n, const size_t nlen)
    {
        size_t        i = 0U;
        uint_fast16_t c = 1U;
    
        for (; i < nlen; i++) {
            c += (uint_fast16_t) n[i];
            n[i] = (unsigned char) c;
            c >>= 8;
        }
    }

    Don't stop me now! Никаких break'ов, функция должна молотить байтики за константное время, даже если она уже проинкрементила своё и перенесла остаток!

    Ирония заключается в том, что функция increment_nonce лежит в файле, который начинается со слов:
    This code has to be perfect. We don't mess around with encryption.

    Давайте присмотримся к этому идеальному файлу пристальней.

    Факт №5. В стеке можно найти ключи и приватные данные


    Подозрительное место:
    /* Precomputes the shared key from their public_key and our secret_key.
     * This way we can avoid an expensive elliptic curve scalar multiply for each
     * encrypt/decrypt operation.
     * enc_key has to be crypto_box_BEFORENMBYTES bytes long.
     */
    void encrypt_precompute(const uint8_t *public_key, const uint8_t *secret_key, uint8_t *enc_key)
    {
        crypto_box_beforenm(enc_key, public_key, secret_key); // Nacl/Sodium function
    }
    
    /* Encrypts plain of length length to encrypted of length + 16 using the
     * public key(32 bytes) of the receiver and the secret key of the sender and a 24 byte nonce.
     *
     *  return -1 if there was a problem.
     *  return length of encrypted data if everything was fine.
     */
    int encrypt_data(const uint8_t *public_key, const uint8_t *secret_key, const uint8_t *nonce,
                      const uint8_t *plain, uint32_t length, uint8_t *encrypted)
    {
        uint8_t k[crypto_box_BEFORENMBYTES];
        encrypt_precompute(public_key, secret_key, k); // toxcore function
        return encrypt_data_symmetric(k, nonce, plain, length, encrypted); // toxcore function
    }
    


    encrypt_data_symmetric вызывает crypto_box_detached_afternm из Nacl/Sodium, код приводить не буду, вот ссылка для желающих проверить мои слова.

    Казалось бы, где можно накосячить в 4 строчках кода?

    Давайте заглянем в исходный код Sodium:
    
    int
    crypto_box_detached(unsigned char *c, unsigned char *mac,
                        const unsigned char *m, unsigned long long mlen,
                        const unsigned char *n, const unsigned char *pk,
                        const unsigned char *sk)
    {
        unsigned char k[crypto_box_BEFORENMBYTES];
        int           ret;
    
        (void) sizeof(int[crypto_box_BEFORENMBYTES >=
                          crypto_secretbox_KEYBYTES ? 1 : -1]);
        if (crypto_box_beforenm(k, pk, sk) != 0) {
            return -1;
        }
        ret = crypto_box_detached_afternm(c, mac, m, mlen, n, k);
        sodium_memzero(k, sizeof k);
    
        return ret;
    }
    


    Если вырезать все проверки, получится:

        unsigned char k[crypto_box_BEFORENMBYTES];
        int           ret;
    
        crypto_box_beforenm(k, pk, sk);
        ret = crypto_box_detached_afternm(c, mac, m, mlen, n, k);
        sodium_memzero(k, sizeof k);
    
        return ret;
    

    Ничего не напоминает? Да это же слегка измененный код функции encrypt_data из toxcore, только ребята забыли почистить за собой ключик на стеке функцией sodium_memzero… Таких мест полным-полно: handle_TCP_handshake, handle_handshake, возможно где-то еще, но я уже устал.

    Факт №6. Варнинги компилятора созданы для дураков!


    В проекте toxcore категорически отрицают необходимость включения всех предупреждений компилятора. Ну или они про них не знают. Я не берусь ответить на вопрос, какое из этих двух предположений хуже.

    Неиспользуемые функции (особенно радует срабатывание такого предупреждения в тестах):
    ../auto_tests/dht_test.c:351:12: warning: unused function 'test_addto_lists_ipv4' [-Wunused-function]
    START_TEST(test_addto_lists_ipv4)
               ^
    ../auto_tests/dht_test.c:360:12: warning: unused function 'test_addto_lists_ipv6' [-Wunused-function]
    START_TEST(test_addto_lists_ipv6)
               ^
    ../toxcore/TCP_server.c:1026:13: warning: unused function 'do_TCP_accept_new' [-Wunused-function]
    static void do_TCP_accept_new(TCP_Server *TCP_server)
                ^
    ../toxcore/TCP_server.c:1110:13: warning: unused function 'do_TCP_incomming' [-Wunused-function]
    static void do_TCP_incomming(TCP_Server *TCP_server)
                ^
    ../toxcore/TCP_server.c:1119:13: warning: unused function 'do_TCP_unconfirmed' [-Wunused-function]
    static void do_TCP_unconfirmed(TCP_Server *TCP_server)
                ^
    


    ../toxcore/Messenger.c:2040:28: warning: comparison of constant 256 with expression of type 'uint8_t' (aka 'unsigned char') is always false
          [-Wtautological-constant-out-of-range-compare]
                if (filenumber >= MAX_CONCURRENT_FILE_PIPES)
                    ~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~
    ../toxcore/Messenger.c:2095:28: warning: comparison of constant 256 with expression of type 'uint8_t' (aka 'unsigned char') is always false
          [-Wtautological-constant-out-of-range-compare]
                if (filenumber >= MAX_CONCURRENT_FILE_PIPES)
                    ~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~
    ../toxcore/Messenger.c:2110:28: warning: comparison of constant 256 with expression of type 'uint8_t' (aka 'unsigned char') is always false
          [-Wtautological-constant-out-of-range-compare]
                if (filenumber >= MAX_CONCURRENT_FILE_PIPES)
                    ~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~
    

    ../auto_tests/TCP_test.c:205:24: warning: unsequenced modification and access to 'len' [-Wunsequenced]
        ck_assert_msg((len = recv(con->sock, data, length, 0)) == length, "wrong len %i\n", len);
                           ^                                                                ~~~
    /usr/include/check.h:273:18: note: expanded from macro 'ck_assert_msg'
      _ck_assert_msg(expr, __FILE__, __LINE__,\
                     ^
    

    И еще несколько десятков разных варнингов про неиспользуемые переменные, сравнение знакового и беззнакового и проч.

    Мои выводы


    Цитата из репозитория:
    We want Tox to be as simple as possible while remaining as secure as possible.

    Если я, человек, несведущий в криптографии, смог найти такие ужасы за день, сколько сможет найти профессионал, который будет целенаправленно рыть в течение месяца?

    Этот проект представляет большую опасность для пользователей, которые полагаются на защищенность Tox. Когда-нибудь разработчики не глядя примут код, который помножит вашу приватность на ноль.

    Как быть?


    Можете присоединиться к нашему проекту 2tox, который мы потихоньку пилим с Halt на замену toxcore.
    Поделиться публикацией
    Комментарии 80
      +10
      Кстати, в обсуждении проекта 2tox, идет дискуссия на тему переписывания частей ядра на Rust. Мне кажется это отличная идея и отличное применение языка.

      Предлагаю желающим подключаться.
        +4
        Всё время при прочтении статьи думал о том, что если бы они писали Tox на Rust, не было бы таких проблем.
          +2
          Они могли бы обмазаться unsafe и получилось ровно тоже самое, увы.
            +5
            В этом смысле проще. Каждый unsafe в rust коде надо еще обосновать. Отсутствие обоснования — автоматический довод в пользу рефакторинга.

            Плюс к этому, все unsafe-ы легко ищутся по тексту.
              –1
              Тоже верно, но запутать код так, чтобы там расплодились логические бомбы rust не помешает.
                0
                Разумеется. Но так можно сказать про любой язык и любой проект, написанный с его помощью.
                  0
                  Было бы круто иметь вменяемые тесты, и ещё подробное описание протокола. Оно-то вроде бы есть?
        +7
        Что-то мне начинает казаться, что не безопаснее ли будет это всё переписать на rust'е? Он за очень многие вещи сразу по рукам даст.
          +11
          Ну что значит переписать? Нет документации, тестов, ожидаемого поведения, описания протокола. В процессе переписывания я расшифровываю их код, приходит понимание того, что они хотели сделать. Пишу юнит тесты так, чтобы можно было подсунуть им разную имплементацию: мою или toxcore. Таким образом есть ненулевая вероятность устроить безболезненный перевод гуя с одной библиотеки на другую.

          Вы можете начать переписывать с C++ на Rust с использованием моего набора тестов. Это будет куда проще, чем начинать с C.
            0
            А что об этом авторы toxcore говорят?

            Вообще, можно только некоторые самые опасные функции на rust перенести.
              +1
              «Самых опасных» функций у них нет. Они используют криптографические библиотеки и делегируют тестирование на другой проект. Проблема в том, что у них везде сумасшедшая и недокументированная адресная арифметика. Там надо переписывать 50% на Rust.
                +8
                Куча арифметики, раздолбайское отношение к коду в мастере, напрашивается вопрос, а сам протокол и алгоритмы то там адекватные?
          –5
          Открыл репозиторий kpp/2tox и что я вижу? Два файла (ридми и лицензия), закоммиченные месяц назад. Негусто. Когда что-то реальное в ствол будет сливаться из других (а там их штук пять) веток? Хотелось бы увидеть что-то более значимое, чем пустой репозиторий.
            +10
            В мастер попадет только после массового тестирования. А пока что наслаждайтесь веткой develop.
              0
              Если правки вносились бы в master по желанию левой пятки, то 2tox ничем бы тогда принципиально не отличался от toxcore.
              +4
              И ещё вопрос к автору: с одной стороны вы пишете, что не специалист по безопасности, с другой стороны замахнулись на собственную реализацию toxcore. Можно как экспы хапнуть, так и опозориться — не страшно было начинать? Что вообще двигало?
                +19
                Я не зря написал в заголовке статьи: они приняли мой PR, указанные выше проблемы являются установленными фактами и признанными проблемы безопасности. Из этого следует несколько возможных выводов:
                1. Я, не специалист, знаю больше, чем они, и значит могу писать свою реализацию
                2. Я не знаю больше, чем они, но написать хуже, чем они, просто невозможно


                Собственная реализация просто необходима, потому что иначе это будут заплатки в их коде, которые будут повышать доверие к проекту, но по факту, он как был дырявым, таковым и будет. Мне понадобился месяц в IRC канале, чтобы переубедить их, что надо использовать sodium_memzero, который имеется только в библиотеке Sodium, и, таким образом, полностью уйти от NaCl.

                Да и вообще, я написал эту статью, чтобы предостеречь людей от бездумного доверия Tox. Что с этим делать — решать лично вам.
                  0
                  Ну, совсем уходить от NaCl тоже как-то не ок, как мне кажется :(
                  +8
                  От себя добавлю следующее: даже не будучи специалистом по безопасности, можно помочь проекту эту самую безопасность повысить. Для начала, стоит поднять общее качество кода и снизить порог вхождения в него.

                  Как известно, хороший код отличается от плохого в том числе и метрикой «WTF per minute». Роман потратил огромное количество времени и сил чтобы разобраться в «хитросплетениях сюжета». Эта информация покоится либо в головах разработчиков, либо явно выражена в коде/комментариях.

                  Если код будет написан аккуратно, все основные моменты будут хорошо и прозрачно документированы, если все сложные и потенциально опасные места будут отмечены явно, то специалистам по безопасности (коими мы не являемся) будет гораздо проще увидеть проблемы.

                  Разумеется и желание их исправлять будет больше, если с кодом работать приятно и не приходится просеивать лапшу через дуршлаг.
                    +2
                    > WTF per minute

                    grep -Ri fuck /usr/src/linux
                      +2
                      Не забудьте поделить на количество строк во всем проекте и нормировать на суммарное время их прочтения.
                        +3
                        Прикольно, не знал раньше:
                        Факи..
                        /usr/src/linux/fs/notify/inotify/inotify_user.c: * fucked up somewhere.
                        /usr/src/linux/fs/xfs/xfs_btree.h: case XFS_BTNUM_MAX: ASSERT(0); /* fucking gcc */; break; \
                        /usr/src/linux/fs/xfs/xfs_btree.h: case XFS_BTNUM_MAX: ASSERT(0); /* fucking gcc */; break; \
                        /usr/src/linux/arch/sparc/kernel/head_32.S: /* XXX Fucking Cypress… */
                        /usr/src/linux/arch/parisc/kernel/sys_parisc.c:/* Fucking broken ABI */
                        /usr/src/linux/arch/m68k/include/asm/sun3ints.h:/* master list of VME vectors — don't fuck with this */
                        /usr/src/linux/arch/x86/kernel/cpu/cpufreq/powernow-k7.c: * Some Athlon laptops have really fucked PST tables.
                        /usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
                        /usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
                        /usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't try to access
                        /usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
                        /usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
                        /usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't try to access
                        /usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
                        /usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
                        /usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't try to access
                        /usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
                        /usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
                        /usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't try to access
                        /usr/src/linux/arch/mips/sgi-ip22/ip22-setup.c: * fucking with the memory controller because it needs to know the
                        /usr/src/linux/Documentation/DocBook/kernel-locking.tmpl: If you don't see why, please stay the fuck away from my code.
                        /usr/src/linux/net/ipv4/netfilter/nf_nat_snmp_basic.c: * (And this is the fucking 'basic' method).
                        /usr/src/linux/net/core/skbuff.c: /* Fuck, we are miserable poor guys… */
                        /usr/src/linux/lib/vsprintf.c: * Wirzenius wrote this portably, Torvalds fucked it up :-)
                        /usr/src/linux/drivers/media/video/bt819.c: BUG? Why does turning the chroma comb on fuck up color?
                        /usr/src/linux/drivers/mtd/mtd_blkdevs.c: registered, to prevent the link/init ordering from fucking
                        /usr/src/linux/drivers/ide/cmd640.c: * These chips are basically fucked by design, and getting this driver
                        /usr/src/linux/drivers/scsi/qlogicpti.h:/* Am I fucking pedantic or what? */
                        /usr/src/linux/drivers/net/sunhme.c:/* Only Sun can take such nice parts and fuck up the programming interface
                        /usr/src/linux/drivers/net/sunhme.c: /* This card is _fucking_ hot… */
                        /usr/src/linux/drivers/watchdog/shwdt.c: * brain-damage, it's managed to fuck things up one step further…

                    +5
                    Спасибо вам большое за эту статью. Не думал, что в токсе возникнет конкуренция, но это должно быть хорошо )
                      +5
                      Две совместимые реализации tox'а вместо одной — это же отлично!
                        +2
                        Что-то мне кажется, что это чудеса. В какой-то момент появится желание чуть чуть переделать протокол, ну например, чтобы наконец можно было с нескольких устройств юзать один id, или хотя бы чтобы можно было несколько id группировать в один контакт.
                        Я уж молчу про то, что уязвимости ещё бывает не из за деталей реализации, а by design.
                          0
                          Такое уже давно происходит, например в проекте isotoxin, когда базовая функциональность поддерживается всеми клиентами, но «близкие родственники» могут предоставлять еще и дополнительную нестандартную функциональность. Тем не менее, не ошибается только тот кто ничего не делает.
                            0
                            Просто я боюсь при таком раздолбайстве core группы как-бы не закончилось всё форком :)
                              0
                              Мне кажется, при таком подходе любой форк будет лучше ванильки. Не обязательно этот.
                                0
                                Главное, чтобы не получилось как с XEPами.
                                Надеюсь, вокруг проекта недостаточно бюрократов, чтобы выработать свой какой-нибудь TOXEP.
                              0
                              Согласен. Только у меня большое подозрение, что они не могут реализовать некоторые хотелки из-за запутанного кода. А отлавливать уязвимости by design будет проще в красивом и понятном коде, как высказался выше Halt.
                                –1
                                Звучит логично, но захотят ли они потом вашу либу делать референсной, вместо своей. Да и есть ли у проекта люди уровня Николая Дурова?
                                  0
                                  Тут уже пусть люди ногами голосуют. Если протокол будет-более менее совместим, остальное будет делом техники.

                                  Конечно, нарушение совместимости протокола — это самое серьезное что можно сделать, и в эту сторону надо смотреть очень осторожно.
                                0
                                А вот две несовместимые реализации — это уже печально. Если своё новое добавлять, то обычная реализация с новой должны работать настолько хорошо, насколько работают друг с другом две худшие реализации (то есть без деградации).
                            • НЛО прилетело и опубликовало эту надпись здесь
                                +2
                                В данном случае уместно использовать sodium_memzero, потому что библиотека Sodium уже влинковывается.
                                +4
                                Можете присоединиться к нашему проекту 2tox, который мы потихоньку пилим с Halt на замену toxcore.


                                Через два месяца (как с момента публикации статьи и ноде) появится новая статья на хабре от других кодеров, приблизительно в таком же стиле, но в конце будет:
                                Можете присоединиться к нашему проекту 3tox, который мы потихоньку пилим с username на замену toxcore и 2tox.


                                С одной стороны это замечательно, и это опенсорс. На этом плюсы кончились. Из минусов: сейчас tox таки начитает развиваться, и количество нод с декабря февраль выросло с 19 до 37.
                                Вместо запила второго, третьего и, вероятно, четвертого репозитария полезнее писать код вместе с разрабами, для связи есть #tox-dev и #tox.

                                Там адекватные ребята. Самый нервный — грейхантер, у него вечно бомбит на критику. Автор toxic'а (фригман) его противовес.
                                У них сейчас дилемма — с тем, что они задумали (хотя бы новые группы с правами) им придется свернуть со старого курса «простоты» и даже как-то хранить инфу на нодах, о чего они отплевывались 2 недели назад, или изобретать что-то более сложное для этого.
                                  0
                                  Прошу прощения, вы статью читали? Автор общается с разработчиками. Исправления описанных проблем уже влиты в оригинальный репозиторий, — это раз. Второе — сама структура оригинального проекта мешает рефакторингу внедрению новых изменений.
                                    +2
                                    Конечно прочитал. Так же я поднял логи IRC за месяц по каналам #tox-dev и #tox и не увидел grep'ом там ваших бесед (halt/humbug/kpp), а только упоминания 2tox самими разрабами токса и их ботом (который новости постит с гитхаба).

                                    Для меня все равно загадка, почему не поговорить с ними по душам и не сделать toxcore 2.0 совместно?
                                      +4
                                      Грепайте по LearnC.

                                      Для меня все равно загадка, почему не поговорить с ними по душам и не сделать toxcore 2.0 совместно?

                                      Я начал писать 2.0 и попытался обосновать свое решение данной статьей. Вы знаете, я не из тех людей, который переманивает разработчиков путём переговоров на IRC канале. Я не собираюсь заманивать их воздушными мечтами о том, что «вот сейчас-то наконец-то взлетит». Я тихо пилю код.
                                        +1
                                        А можно ссылочку на логи? Или вы постоянно находитесь в чате?
                                      +1
                                      Я не понимаю ваших претензий. Даже Столманн был бы мной доволен, я починил баги, отправил исправления в toxcore. Несмотря на то, что я решил создать свой репозитарий, я помогаю основному.

                                      2tox и 3tox. И пускай! Чем больше, тем лучше! Только если это будет обоснованное решение, а не веление мизинца левой ноги. Лично я не хочу форкаться от toxcore, потому что тогда код будет заражен их багами. Вы же не считаете, что я нашел все ошибки?)) Я продемонстрировал качество кода и общее отношение к подходу разработки.
                                      –9
                                      Вместо memset(c, 0, sizeof(Net_Crypto)); лучше использовать ZeroMemory

                                        +4
                                        windows only?
                                        +1
                                        В данном случае уместно использовать sodium_memzero, потому что библиотека Sodium уже влинковывается. Более того, это кроссплатформенно.
                                        –20
                                        Ещё с прошлой публикации покопался в исходника, поустанавливал клиенты. Ничего прорывного, классного не увидел. Те, кто действительно беспокоится о своей безопасности не станут использовать написанные не им самим приложения, да и вряд ли люди, которые нуждаются в секретности пересылают информацию в мессенджерах. Простые смертные будут писать в вк или использовать скайп.

                                        Открытый, опен-сорсный, ну ок. Век мессенджеров прошел. Теперь соц сети правят балом. Не понимаю почему это вызывает такой интерес.
                                          +5
                                          Факт №1. В master-ветку попадает код, который падает на тестах


                                          Время вопросов по статье, а именно по вашей стилистике. Я не С/C++ кодер, но открыв toxcore/jobs/105970831 я вижу:

                                          FAIL: onion_test
                                          ../auto_tests/onion_test.c:136:F:basic:test_basic:0: Onion failed initializing.
                                          ../auto_tests/onion_test.c:372:F:announce:test_announce:0: Failed to create onions. 0
                                          



                                          FAIL: TCP_test
                                          ../auto_tests/TCP_test.c:46:F:basic:test_basic:0: Failed to connect to TCP relay server
                                          ../auto_tests/TCP_test.c:143:F:some:test_some:0: Failed to connect to TCP relay server
                                          ../auto_tests/TCP_test.c:399:F:client:test_client:0: Wrong status. Expected: 5, is: 4
                                          ../auto_tests/TCP_test.c:589:F:tcp_connection:test_tcp_connection:0: could not send packet.
                                          ../auto_tests/TCP_test.c:686:F:tcp_connection2:test_tcp_connection2:0: could not send packet.
                                          



                                          FAIL: tox_test
                                          ../auto_tests/tox_test.c:927:F:many_clients_tcp:test_many_clients_tcp:0: add relay error
                                          ../auto_tests/tox_test.c:1022:F:many_clients_tcp_b:test_many_clients_tcp_b:0: add relay error
                                          



                                          FAIL: dht_autotest
                                          ../auto_tests/dht_test.c:595:E:DHT_test:test_DHT_test:0: (after this point) Test timeout expired
                                          



                                          Для меня это носит характер сетевых проблем на Тревисе (занятые порты или еще бох весть какие траблы). Проверяю у себя:

                                          make check
                                          make[3]: Leaving directory '/usr/tox20160205/toxcore-master/build'
                                          make  check-TESTS
                                          make[3]: Entering directory '/usr/tox20160205/toxcore-master/build'
                                          make[4]: Entering directory '/usr/tox20160205/toxcore-master/build'
                                          PASS: encryptsave_test
                                          PASS: messenger_autotest
                                          PASS: crypto_test
                                          PASS: network_test
                                          PASS: assoc_test
                                          PASS: onion_test
                                          PASS: TCP_test
                                          PASS: tox_test
                                          PASS: dht_autotest
                                          make[5]: Entering directory '/usr/tox20160205/toxcore-master/build'
                                          make[5]: Nothing to be done for 'all'.
                                          make[5]: Leaving directory '/usr/tox20160205/toxcore-master/build'
                                          ============================================================================
                                          Testsuite summary for tox 0.0.0
                                          ============================================================================
                                          # TOTAL: 9
                                          # PASS:  9
                                          # SKIP:  0
                                          # XFAIL: 0
                                          # FAIL:  0
                                          # XPASS: 0
                                          # ERROR: 0
                                          ============================================================================
                                          make[4]: Leaving directory '/usr/tox20160205/toxcore-master/build'
                                          make[3]: Leaving directory '/usr/tox20160205/toxcore-master/build'
                                          make[2]: Leaving directory '/usr/tox20160205/toxcore-master/build'
                                          make[2]: Entering directory '/usr/tox20160205/toxcore-master'
                                          make[2]: Leaving directory '/usr/tox20160205/toxcore-master'
                                          make[1]: Leaving directory '/usr/tox20160205/toxcore-master'
                                          root@l64tox1:/usr/tox20160205/toxcore-master#
                                          
                                          



                                          Все тесты пройдены. На последнем свежем мастере. Если же проводить тесты во время работающей ноды, то у меня они начали фейлить:

                                          make check
                                          make[3]: Leaving directory '/usr/tox20160205/toxcore-master/build'
                                          make  check-TESTS
                                          make[3]: Entering directory '/usr/tox20160205/toxcore-master/build'
                                          make[4]: Entering directory '/usr/tox20160205/toxcore-master/build'
                                          PASS: encryptsave_test
                                          PASS: messenger_autotest
                                          PASS: crypto_test
                                          PASS: network_test
                                          PASS: assoc_test
                                          PASS: onion_test
                                          FAIL: TCP_test
                                          FAIL: tox_test
                                          PASS: dht_autotest
                                          make[5]: Entering directory '/usr/tox20160205/toxcore-master/build'
                                          make[5]: Nothing to be done for 'all'.
                                          make[5]: Leaving directory '/usr/tox20160205/toxcore-master/build'
                                          ============================================================================
                                          Testsuite summary for tox 0.0.0
                                          ============================================================================
                                          # TOTAL: 9
                                          # PASS:  7
                                          # SKIP:  0
                                          # XFAIL: 0
                                          # FAIL:  2
                                          # XPASS: 0
                                          # ERROR: 0
                                          ============================================================================
                                          See build/test-suite.log
                                          ============================================================================
                                          Makefile:2642: recipe for target 'test-suite.log' failed
                                          make[4]: *** [test-suite.log] Error 1
                                          make[4]: Leaving directory '/usr/tox20160205/toxcore-master/build'
                                          Makefile:2748: recipe for target 'check-TESTS' failed
                                          make[3]: *** [check-TESTS] Error 2
                                          make[3]: Leaving directory '/usr/tox20160205/toxcore-master/build'
                                          Makefile:2891: recipe for target 'check-am' failed
                                          make[2]: *** [check-am] Error 2
                                          make[2]: Leaving directory '/usr/tox20160205/toxcore-master/build'
                                          Makefile:505: recipe for target 'check-recursive' failed
                                          make[1]: *** [check-recursive] Error 1
                                          make[1]: Leaving directory '/usr/tox20160205/toxcore-master'
                                          Makefile:794: recipe for target 'check' failed
                                          make: *** [check] Error 2
                                          



                                          Вот вывод cat build/test-suite.log

                                          test-suite.log
                                          =====================================
                                             tox 0.0.0: build/test-suite.log
                                          =====================================
                                          
                                          # TOTAL: 9
                                          # PASS:  7
                                          # SKIP:  0
                                          # XFAIL: 0
                                          # FAIL:  2
                                          # XPASS: 0
                                          # ERROR: 0
                                          
                                          .. contents:: :depth: 2
                                          
                                          FAIL: TCP_test
                                          ==============
                                          
                                          Running suite(s): TCP
                                          33%: Checks: 6, Failures: 4, Errors: 0
                                          ../auto_tests/TCP_test.c:37:F:basic:test_basic:0: Failed to bind to all ports
                                          ../auto_tests/TCP_test.c:219:F:some:test_some:0: Failed to bind to all ports
                                          ../auto_tests/TCP_test.c:385:F:client:test_client:0: Failed to bind to all ports
                                          ../auto_tests/TCP_test.c:589:F:tcp_connection:test_tcp_connection:0: could not send packet.
                                          
                                          FAIL: tox_test
                                          ==============
                                          
                                          Running suite(s): Tox
                                          Toxes are online, took 8 seconds
                                          tox clients connected took 2 seconds
                                          tox clients messaging succeeded
                                          3427
                                          Toxes are online again after reloading, took 8 seconds
                                          tox clients connected took 2 seconds
                                          Starting file transfer test.
                                          100MB file sent in 12 seconds
                                          Starting file streaming transfer test.
                                          Starting file 0 transfer test.
                                          test_few_clients succeeded, took 24 seconds
                                          test_many_clients succeeded, took 19 seconds
                                          test_many_clients_tcp succeeded, took 10 seconds
                                          test_many_clients_tcp_b succeeded, took 9 seconds
                                          friends connected, took 16 seconds
                                          83%: Checks: 6, Failures: 1, Errors: 0
                                          ../auto_tests/tox_test.c:1221:F:many_group:test_many_group:0: Bad number of group peers. expected: 32 got: 30, tox 30
                                          
                                          



                                          Поэтому не слишком ли вы громко без учета окружения написали, что «В master-ветку попадает код, который падает на тестах»?
                                            +5
                                            Нет, не слишком громко. Если тесты падают на CI — но их ремонт откладывается в неопределенное будущее, это означает, что тестам в принципе не уделяется достаточного внимания. А в таком случае уже не важно что тесты проходят на машине разработчика — с таким подходом там наверняка покрытие тестами недостаточное.
                                              –5
                                              У вас никнейм на humbug не похож, значит вы не автор статьи не можете за него ответить.

                                              Что до различия на клиенте:
                                              make check я такой же вызываю, а gcc (Debian 4.9.2-10) 4.9.2 и, опять таки, читайте что я написал про окружение, в котором проходит тест. И когда в моем случае он прошел, а когда зафейлил.
                                                +2
                                                Вот именно. Чтобы тесты стали нормальными — надо просто вынести их с веб-сервера. Раз это до сих пор не сделано — значит, на тесты всем наплевать.
                                              +6
                                              Если CI флапает в красный через раз — толку от таких тестов ноль. Их все просто игнорируют.
                                                +5
                                                Вы молодец, вас зря минусуют. Дайте мне время ответить на ваши вопросы.
                                                  0
                                                  Как дела с ответами?
                                                    0
                                                    Упс. Тесты упали не из-за моего коммита, они просто флоппируют. Встаем на ветку, удаляем коммиты(возникли из ребейза, ребята вмержили, получились конфликты)
                                                    405854e
                                                    b9ef248
                                                    bd62c6a
                                                    47c1e5f
                                                    c597f07
                                                    bf7a7ef
                                                    e4f86e2
                                                    61f8e65

                                                    Build log (сначала фейлится 2 теста, потом 1)
                                                      0
                                                      Но у меня то на день тестов они все нормально прошли. И фейл был только у сетевых из-за работающей паралельно ноды. При остановке ноды они все были пройдены. Нода обновлена и теперь работает свежая.
                                                        0
                                                        Все верно. На момент написания статьи у меня фейлилось, потом меня попросили ребейзнуться, сейчас этой баги нет.
                                                          0
                                                          Так а в чем проблема то была с сетевыми тестами?
                                                          Я же в тот самый день (5го февраля) тестил — и тесты прошли (лог в комменте).
                                                            0
                                                            Вы читали мое сообщение? Я же говорю, удалите коммиты(ревертните, ребейзнитесь или еще как). На момент написания статей их не было в мастере, тесты падали. Потом я отребейзился на мастер, какой-то из этих коммитов починил флоппирование теста.

                                                            Ой всё.
                                                0
                                                >>> Именно increment_nonce частенько используется сервером для генерации нового nonce.
                                                Извиняюсь за нубский вопрос, т.е. получается что токс все-таки имеет централизированый сервер? Или что имеется в виду под словом сервер?
                                                  +2
                                                  Есть DHT ноды. Нужно ведь кому-то анонсировать маршруты и как-то коммутировать клиентов. Аналог торрент-сервера из мира торрентов: данные не хранит, но знает, где их можно достать.
                                                    0
                                                    Странно, в Kad 15 летней давности уже умели обходиться без «коммутирующих» нод, зачем в Tox их добавили в архитектуру?
                                                      0
                                                      Предполагаю, чтобы уменьшить количество передаваемых данных внутри DHT, что актуально в то время (до введения TCP-relay) для телефонов было.
                                                  +4
                                                  Если ваши пулл-реквесты принимают, то почему бы не продолжить контрибьютить вместо того, чтобы пилить свой проект? Зачем распылять силы? Неужели это тот случай, когда проще переписать, чем отрефакторить? Или есть какие то фундаментальные разногласия с разработчиками?
                                                    +2
                                                    Насколько я понял потому что проблема системная, код ведь не сам такой стал, его таким сделали разработчики, которых такое состояние вроде как устраивает.
                                                      +4
                                                      Ну опять-таки поговорить с разработчиками, объяснить, предложить решения, ограничения какие-то или код ревью. Было ли что это из этого сделано, или заранее признано безрезультатным? Кроме ответа по поводу тестов, никакой реакции разработчиков на замечания в статье нет.

                                                      Конечно, Tox относительно небольшой проект и его возможно переписать с нуля. С другой стороны, именно из-за малого сообщество, хорошо бы было сконцентрировать все силы вместе.
                                                        +2
                                                        Помните историю, когда у них увели бабки и домен? Я, как дочь офицера, могу отметить неоднозначность этой ситуации.

                                                        Обсуждение WTF строчки кода:
                                                        <LearnC> Hi! onion_client.c: is_path_used  iterates over onion_paths but uses only the last of nodes. is it OK?
                                                        <linux-modder> that last  bit  made no sense are you asking if compiling that way is ok or  confirming that the .c  file is written right ?
                                                        <stal> LearnC: it's probably fine
                                                        <LearnC> it makes no sence to pass pointer to the whole array if you use only 1 value
                                                        <stal> i don't think there was a conscious decision to write it that way
                                                        <stal> maybe gentoo just did it that way when he factored that code out of random_path
                                                        

                                                        Единственная реакция — перед строчкой добавили комментарий.

                                                        Мы не слышали про ntohl и htonl:
                                                        /* Redefinitions of variables for safe transfer over wire. */
                                                        #define TOX_AF_INET 2
                                                        #define TOX_AF_INET6 10
                                                        #define TOX_TCP_INET 130
                                                        #define TOX_TCP_INET6 138
                                                        
                                                                if (data[len_processed] == TOX_AF_INET) {
                                                                    ipv6 = 0;
                                                                    host_family = AF_INET;
                                                                } else if (data[len_processed] == TOX_TCP_INET) {
                                                                    if (!tcp_enabled)
                                                                        return -1;
                                                        
                                                                    ipv6 = 0;
                                                                    host_family = TCP_INET;
                                                                } else if (data[len_processed] == TOX_AF_INET6) {
                                                                    ipv6 = 1;
                                                                    host_family = AF_INET6;
                                                                } else if (data[len_processed] == TOX_TCP_INET6) {
                                                                    if (!tcp_enabled)
                                                                        return -1;
                                                        
                                                                    ipv6 = 1;
                                                                    host_family = TCP_INET6;
                                                                } else {
                                                                    return -1;
                                                                }
                                                        


                                                        Мы экономим байтики(длина пакета меняется в зависимости от IP адреса ноды):
                                                                    uint32_t size = PACKED_NODE_SIZE_IP4;
                                                        
                                                                    if (packed_length + size > length)
                                                                        return -1;
                                                        
                                                                    data[packed_length] = net_family;
                                                                    memcpy(data + packed_length + 1, &nodes[i].ip_port.ip.ip4, SIZE_IP4);
                                                                    memcpy(data + packed_length + 1 + SIZE_IP4, &nodes[i].ip_port.port, sizeof(uint16_t));
                                                                    memcpy(data + packed_length + 1 + SIZE_IP4 + sizeof(uint16_t), nodes[i].public_key, crypto_box_PUBLICKEYBYTES);
                                                                    packed_length += size;
                                                                } else if (ipv6 == 1) {
                                                                    uint32_t size = PACKED_NODE_SIZE_IP6;
                                                        
                                                                    if (packed_length + size > length)
                                                                        return -1;
                                                        
                                                                    data[packed_length] = net_family;
                                                                    memcpy(data + packed_length + 1, &nodes[i].ip_port.ip.ip6, SIZE_IP6);
                                                                    memcpy(data + packed_length + 1 + SIZE_IP6, &nodes[i].ip_port.port, sizeof(uint16_t));
                                                                    memcpy(data + packed_length + 1 + SIZE_IP6 + sizeof(uint16_t), nodes[i].public_key, crypto_box_PUBLICKEYBYTES);
                                                                    packed_length += size;
                                                        


                                                        Ну и касательно моего личного отношения к обитателям их канала: мне их жаль.
                                                        <LearnC> grayhatter, hi
                                                        <LearnC> I have just answered your comment in my PR #1506
                                                        <LearnC> Can we communicate a little bit closely?
                                                        * Rowen_Stipe puffs on a pipe while wearing a bathrobe,"How closely you intend to get?"
                                                        <cisc_> you sure that's a pipe?
                                                        * cisc_ is now known as cisc
                                                        <danieli> it's something nasty in a pipe disguise
                                                        * Rowen_Stipe takes a large hit and holds it,"Yeah, It's a pipe alright" exhales a plume of smoke.
                                                        <LearnC> haha thats funny to joke on a non native englishspeaker
                                                        <danieli> english is my fourth language
                                                        <danieli> don't complain
                                                        <danieli> (was it sarcasm? I don't even know anymre)
                                                        <danieli> anymore*
                                                        <Rowen_Stipe> LearnC: Even if you wern't a nativ enlighs epeaker the joke would of been made.
                                                        


                                                        Randl, я люблю свои глаза, поэтому копаться в какулях не люблю. Переписывание кода начинается с тестов, а не с переписывания) Но к тестам у них особое отношение, следовательно…
                                                          +4
                                                          В любом более или менее крупном проекте в какой-то монет появляется неидеальный код, костыли, откровенный говнокод и т.д. Не знаю ни одного проекта, которому удалось этого избежать.
                                                          Ваше решение понятно — вам не хочется рыться в чужом говнокоде. С точки зрения сообщества, развития Tox я считаю ваше решение непродуктивным.
                                                          Это классика опенсорса — если нет людей которые работают над проектом за деньги, то каждый делает то, что ему нравится — а мало кому нравится вычитывать говнокод или фиксить баги. Само наличие такого кода — результат такого подхода.
                                                          Насчёт личного отношения — хорошие программисты редко бывают хорошими людьми. С тем же Линусом много кому неприятно работать…
                                                            +1
                                                            Не обижайтесь уж так на них, пацаны просто пошутили немного («closely» действительно звучит как будто вы хотите «сблизиться» с ним). Хотя грамматическая ошибка в последней строке («would of» вместо «would've»/«would have») намекает на что, что там сидят школьники. Я бы предпочел, если бы криптографией занимались люди более образованые (с ученой степенью в идеале).
                                                              +1
                                                              Хороший теоретик не всегда хороший практик. Теоретический Computer science ближе к математике, чем к программированию. Чтобы выявить уязвимости в коде существует аудит, который у Tox в планах.
                                                              Кроме того, неграмотный человек != плохой программист.
                                                              З. Ы. Бакалавр тоже ученая степень. Так что она хотя бы у части разработчиков наверняка есть
                                                                +3
                                                                намекает на что, что там сидят школьники.
                                                                Ой, да сколько людей путают your и you're.
                                                                  0
                                                                  А еще «there/their/they are», да. Но этого немного разного порядка ошибки. Впрочем, неважно. Слово «школьники» было употреблено в переносном смысле. Посыл был в том, что если человек делает такую ошибку, я бы предпочел не доверять ему писать код, от которого может зависеть моя безопасность. Криптографию программировать должны грамотные люди, а не студенты-второкурсники, которым море по колено :)
                                                                0
                                                                Вот, 16 строк до и после ника, для полноты картины. Вся техничка вырезана, ибо там ипшники и хабр не ест большие комменты (^.*?has left #tox.*?$, ^.*?is now known as.*?$, ^.*?has joined.*?$, ^.*?has quit.*?$). Если там какие-то диалоги между -- и -- бещ вас, это значит вы или вошли или вышли в этот момент.
                                                                grep -A 16 -B 16 LearnC irc.freenode.#tox.weechatlog >> LearnC.tox.txt
                                                                2016-01-24 15:45:28 t-ask If I remove someone from my contacts list, do I appear then as offline for that person?
                                                                2016-01-24 15:45:46 t-ask btw. are there any developments in bringing tox to ubuntu phones?
                                                                2016-01-24 15:46:32 Rowen_Stipe t-ask: Yes, that's what happens. They just see you going perminately offline, you're not removed from their friendlist.
                                                                2016-01-24 15:47:32 t-ask Rowen_Stipe: ok, fine. Btw. is qtox still the best choice for desktop usage?
                                                                2016-01-24 15:47:47 t-ask "best" in quotes ;)
                                                                2016-01-24 15:48:01 Rowen_Stipe It has the most features to it certainly.
                                                                2016-01-24 15:48:22 Rowen_Stipe But best is always a relative term with Tox clients
                                                                --
                                                                2016-01-24 19:31:03 cisc_ www.dailydot.com/politics/anonymity-homeland-security-erik-barnett
                                                                2016-01-24 19:31:26 cisc_ what a fucking moron that guy is, how he is even getting paid taxpayer dollars is beyond me
                                                                2016-01-24 19:33:37 Rowen_Stipe cisc_: Cause the people that aren't half dead are working in the privet sector.
                                                                2016-01-24 19:37:24 cisc_ maybe the American people should be able to see everything he does online, in real time
                                                                2016-01-24 19:38:04 @zero-one we're back at SCaLE again
                                                                2016-01-24 19:38:09 cisc_ oh wait.. when it comes to the congress & the senate they're immune to their own laws
                                                                2016-01-24 19:38:13 @zero-one join the groupchat via groupbot
                                                                2016-01-24 19:38:34 @zero-one password is "scale14x"
                                                                2016-01-24 19:38:53 @zero-one everyone is hungover and shit, so the floor is pretty empty right now
                                                                2016-01-24 19:39:17 Impyy lol
                                                                2016-01-24 19:39:28 Rowen_Stipe XD
                                                                2016-01-24 19:42:18 LearnC grayhatter, hi
                                                                2016-01-24 19:42:43 LearnC I have just answered your comment in my PR #1506
                                                                2016-01-24 19:43:45 LearnC Can we communicate a little bit closely?
                                                                2016-01-24 19:46:25 * Rowen_Stipe puffs on a pipe while wearing a bathrobe,"How closely you intend to get?"
                                                                2016-01-24 19:46:56 cisc_ you sure that's a pipe?
                                                                2016-01-24 19:47:33 danieli it's something nasty in a pipe disguise
                                                                2016-01-24 19:48:04 * Rowen_Stipe takes a large hit and holds it,"Yeah, It's a pipe alright" exhales a plume of smoke.
                                                                2016-01-24 19:48:09 LearnC haha thats funny to joke on a non native englishspeaker
                                                                2016-01-24 19:48:23 danieli english is my fourth language
                                                                2016-01-24 19:48:29 danieli don't complain
                                                                2016-01-24 19:48:42 danieli (was it sarcasm? I don't even know anymre)
                                                                2016-01-24 19:48:45 danieli anymore*
                                                                2016-01-24 19:49:10 Rowen_Stipe LearnC: Even if you wern't a nativ enlighs epeaker the joke would of been made.
                                                                2016-01-24 19:49:21 LearnC would have*
                                                                2016-01-24 19:50:31 danieli LearnC: it's not "illegal" to use "of" instead of "have" in british english, it's just a relaxation of pronounciation
                                                                2016-01-24 19:51:23 LearnC do you want to discuss a my intention of close communication or to discuss that you don't correctly zero memory?
                                                                2016-01-24 19:51:40 LearnC That is what I found and I created a pull request
                                                                2016-01-24 19:52:13 LearnC you cannot use memset before free memory and rely on that kind of code
                                                                2016-01-24 19:52:21 danieli >memset
                                                                2016-01-24 19:52:26 danieli >reliable
                                                                2016-01-24 19:52:33 LearnC no
                                                                2016-01-24 19:53:37 Impyy LearnC, do you think there's a way to keep nacl compatibility?
                                                                2016-01-24 19:54:04 LearnC If there is a function in NaCl to zero memory than yes
                                                                2016-01-24 19:55:13 Impyy I think that function is a libsodium feature, it doesn't exist in nacl
                                                                2016-01-24 19:55:19 LearnC Implementing such a function may lead to security problems, unless there are some good skilled cryptographers who are both know how compiler works
                                                                2016-01-24 19:55:33 LearnC Impyy, no, its not a feature. msdn.microsoft.com/en-us/library/windows/hardware/ff562768%28v=vs.85%29.aspx
                                                                2016-01-24 19:56:25 Impyy LearnC, consider me corrected
                                                                2016-01-24 19:56:45 Impyy anyways I've never really understood why it's important to have nacl compatibility
                                                                2016-01-24 19:56:58 Impyy solely depending on libsodium seems fine
                                                                2016-01-24 19:57:26 LearnC I understand there might be some backward compatibility you want to save
                                                                2016-01-24 19:57:36 @nurupo it's either we copy the function from libsodium sources and use that or drop nacl support
                                                                2016-01-24 19:57:52 @nurupo i'm not sure how important is nacl support
                                                                2016-01-24 19:58:11 LearnC And it's up to irungentoo to decide
                                                                2016-01-24 19:59:00 LearnC What about timing attacks on publick keys comparison?
                                                                2016-01-24 19:59:46 LearnC Do you agree we have to use crypto functions provided by NaCl/Sodium to cmp keys or any sensitive data instead of memcmp?
                                                                2016-01-24 20:01:59 LearnC danieli, or maybe you think >memcmp is >reliable ?
                                                                2016-01-24 20:03:39 LearnC Rowen_Stipe, or maybe memcmp is pronounced more relaxed in British English than sodium_memcmp?
                                                                2016-01-24 20:03:43 danieli LearnC: depends on the context, usually not
                                                                2016-01-24 20:04:05 @nurupo Impyy: nacl is written by a well known cryptographer and has hardware optimizations. at the time tox started, sodium was quite slow and didn't even build on windows, so it wasn
                                                                2016-01-24 20:04:25 @nurupo *so it wasn't ready for use yet
                                                                2016-01-24 20:04:33 LearnC nurupo, the aim of the project to be secure, right?
                                                                2016-01-24 20:04:46 @nurupo right now though, we might consider dropping nacl
                                                                2016-01-24 20:05:04 @nurupo LearnC: talk to irungentoo about this
                                                                2016-01-24 20:05:16 LearnC thats why I am here
                                                                2016-01-24 20:05:22 LearnC w8 4 him
                                                                2016-01-24 20:06:50 @nurupo he is usually not on irc during weekends
                                                                2016-01-24 20:06:51 cisc dropping nacl and switch to what?
                                                                2016-01-24 20:07:05 @nurupo cisc: sodium
                                                                2016-01-24 20:07:12 cisc ok
                                                                2016-01-24 20:14:22 leer10 zero-one: which group has the password scale14x?
                                                                2016-01-24 20:17:21 Rowen_Stipe leer10: message groupbot info
                                                                2016-01-24 20:17:42 leer10 Rowen_Stipe cool got it :)

                                                                2016-01-24 20:46:37 __init__ is here anybody who tested new groupchats?
                                                                2016-01-24 20:47:25 -- Mode #tox [+o SylvieLorxu] by ChanServ
                                                                2016-01-24 20:49:25 @grayhatter LearnC: yeah, what did you want to discuss?
                                                                2016-01-24 20:50:03 LearnC we have already discussed it with other people in this channel
                                                                2016-01-24 20:50:12 LearnC you may read logs
                                                                2016-01-24 20:50:50 __init__ grayhatter, update wiki.tox.chat/clients
                                                                2016-01-24 20:52:51 @grayhatter __init__: update what?
                                                                2016-01-24 20:53:00 @grayhatter LearnC: did you see my GH comment?
                                                                2016-01-24 20:53:07 __init__ info about utox
                                                                2016-01-24 20:53:37 @grayhatter it's seems updated
                                                                2016-01-24 20:53:45 @grayhatter what part did you think was outdated?
                                                                2016-01-24 20:54:09 __init__ do you have contact aliases and save file encryption?
                                                                2016-01-24 20:54:29 LearnC grayhatter, no. I have read it right now. grayhatter it would be zero secure for nacl
                                                                2016-01-24 20:58:37 @grayhatter __init__: done, thank you!
                                                                2016-01-24 20:59:06 @grayhatter LearnC: you want to add sodium_memzero correct?
                                                                2016-01-24 20:59:13 LearnC yes
                                                                2016-01-24 20:59:17 @grayhatter doing so would break NaCL?
                                                                2016-01-24 20:59:29 LearnC yes
                                                                2016-01-24 21:00:21 LearnC grayhatter, you may find a similar function in NaCl. If you find it, I will write a wrapper not to break NaCl dependency
                                                                2016-01-24 21:00:37 @grayhatter so instead of adding the feature for those who use libsodium, making them more secure. Intsead you're saying "if we don't force libsodium, and break NaCL I'm not going to add any code"
                                                                2016-01-24 21:00:39 __init__ i hope new groupchats with new group audio will be ready soon. looks like group audio doesn't work right now
                                                                2016-01-24 21:01:12 @grayhatter you said writing a custom wrapper, and using ifdef to make libsodium memzero would be insecure
                                                                2016-01-24 21:01:16 @zero-one i don't think the new groupchats implementation includes any changes to audio
                                                                2016-01-24 21:01:27 @grayhatter I don't understand how doing that would make toxcore LESS secure than it is now
                                                                2016-01-24 21:01:32 @zero-one grayhatter: can you confirm
                                                                2016-01-24 21:01:39 @grayhatter zero-one: new groupchats have NO audio support
                                                                2016-01-24 21:01:59 @grayhatter mannol agreed to add it after they get merged
                                                                2016-01-24 21:02:08 @zero-one oh
                                                                2016-01-24 21:02:11 __init__ and when it will happen?
                                                                2016-01-24 21:02:12 @zero-one i didn't even know that
                                                                2016-01-24 21:02:23 @grayhatter tux3 said he'd add groupchats to to qTox after they get audio
                                                                2016-01-24 21:02:44 @grayhatter irungentoo said he'd merge groupchats after qTox uTox and Toxic support them
                                                                2016-01-24 21:02:54 @grayhatter > we're never going to get new groupchats
                                                                2016-01-24 21:03:23 __init__ sounds bad. did you test it?
                                                                2016-01-24 21:03:35 @grayhatter __init__: test what?
                                                                2016-01-24 21:03:41 __init__ new groupchats
                                                                2016-01-24 21:03:46 @grayhatter yeah, they're awesome
                                                                2016-01-24 21:03:54 @grayhatter they work on uTox
                                                                2016-01-24 21:03:57 @grayhatter and toxic
                                                                2016-01-24 21:03:59 @grayhatter and antox
                                                                2016-01-24 21:04:09 @grayhatter and Antidote??
                                                                2016-01-24 21:04:17 @zero-one BlameAliens:
                                                                2016-01-24 21:04:39 Impyy LearnC, excuse my lack of knowledge on this topic, but could crypto_verify be what you're looking for?
                                                                2016-01-24 21:04:59 BlameAliens sup
                                                                2016-01-24 21:05:13 BlameAliens No groupchats for Antidote or objctox yet
                                                                2016-01-24 21:06:19 __init__ grayhatter, is it possible to share files using groupchats in utox right now?
                                                                2016-01-24 21:07:45 @grayhatter __init__: no file sharing in groups for any client
                                                                2016-01-24 21:07:50 @grayhatter (no core support)
                                                                2016-01-24 21:07:55 LearnC Impyy, crypto_verify ~ memcmp, we are looking for a function to zero bytes, not to compare them
                                                                2016-01-24 21:08:07 @grayhatter Jfreegman: agreed to add basic file system after groupchats get mereged
                                                                2016-01-24 21:08:13 @grayhatter support*
                                                                2016-01-24 21:08:30 @grayhatter LearnC: memset() && memcmp()
                                                                2016-01-24 21:08:52 @grayhatter (both so the the optimiser won't drop that command)
                                                                2016-01-24 21:09:07 Impyy LearnC, well that could replace the use of sodium_memcmp, correct?
                                                                2016-01-24 21:09:54 LearnC Impyy, you were right to use crypto_verify to cmp memory, it is both NaCl and Sodium function
                                                                2016-01-24 21:10:49 LearnC But I have not found such a function in NaCl to zero memory not to be dropped by optimizer
                                                                2016-01-24 21:11:33 Impyy right, me neither
                                                                2016-01-24 21:11:41 __init__ time to implement sound notifications and profile im/ex and after release of groupchats utox will be almost ready
                                                                2016-01-24 21:12:08 LearnC grayhatter, Intsead you're saying "if we don't force libsodium, and break NaCL I'm not going to add any code" | How are you going to explain users that their were deanonimized due to linkage of toxcore+nacl instead of using safe toxcore+sodium?))
                                                                2016-01-24 21:14:54 stal what's likely going to happen is we'll include the sodium functions in the repo
                                                                2016-01-24 21:15:48 @grayhatter LearnC: Right, I don't disagree that your way is objectivly better
                                                                2016-01-24 21:16:41 @grayhatter I'm asking, why would you say "too bad" to everyone who uses libsodium. Rather than improving libsodium users, and leaving NaCL users at the status quo?
                                                                2016-01-24 21:18:25 LearnC grayhatter, well, because the safity would be based on the opinion of package maintainer?
                                                                2016-01-24 21:19:36 LearnC the user may even don't care about NaCl vs Sodium. They want to be safe
                                                                2016-01-24 21:20:17 LearnC stal, maybe, maybe. But you have to be sure that no one is going to touch that function. And no one should "optimize" it
                                                                2016-01-24 21:20:21 Impyy I bet very few compile with nacl instead of libsodium
                                                                2016-01-24 21:20:45 Impyy very few people*
                                                                2016-01-24 21:21:18 LearnC Impyy, if there are few people, why should you care?
                                                                2016-01-24 21:22:00 Impyy I don't
                                                                2016-01-24 21:22:20 Impyy if dropping nacl is what it takes to make toxcore more secure, I'm all for it
                                                                2016-01-24 21:23:25 LearnC Right now it sounds like that. NaCl will not be dropped if we are going to ^C+^V code from sodium for functions like sodium_memzero
                                                                2016-01-24 21:23:34 Impyy not for me to decide, though
                                                                2016-01-24 21:24:06 @grayhatter LearnC: unfortunally none of us can really say
                                                                2016-01-24 21:24:12 @grayhatter irungentoo has to make that call
                                                                2016-01-24 21:24:25 @grayhatter and we're only guessing from what we've heard him say in the past
                                                                2016-01-24 21:25:06 @grayhatter zero-one: when are you going to push the new site?
                                                                2016-01-24 21:25:12 @grayhatter it's better than what we have now
                                                                2016-01-24 21:25:33 @grayhatter if you're waiting for everything to be perfect, you should get out of FOSS
                                                                2016-01-24 21:25:35 LearnC grayhatter, I understand. I will be waiting for comments here or on github tomorrow
                                                                2016-01-24 21:25:56 Impyy besides the trash can icon for the clients, the new site looks good to me
                                                                2016-01-24 21:25:56 @grayhatter LearnC: please don't take anything I've said to disuade you
                                                                2016-01-24 21:26:11 @grayhatter I think it's a good idea, and given the two options, I'd rather use yours
                                                                2016-01-24 21:26:30 @grayhatter I'm only suggesting the wrapper so we can maintain NaCL if we need to
                                                                2016-01-24 21:27:52 LearnC grayhatter, relax, I asked you to find such function because it could be my fault I had not found it. I would have written a wrapper if there were similar functions both in NaCl and Sodium
                                                                2016-01-24 21:28:58 LearnC I am not going to be disuaded with some subjective cases.
                                                                2016-01-24 21:34:00 LearnC Does someone wants to discuss why I have reimplemented increment_nonce like that?
                                                                2016-01-24 21:54:13 -- Mode #tox [+o SylvieLorxu] by ChanServ
                                                                --
                                                                2016-01-25 01:26:26 mrflibble ah, for some reason it's "-T" on ubuntu "don't trim"
                                                                2016-01-25 01:30:03 mrflibble wierd, with "don't trim", on hosts that don't resolve, I get a % and then a 9-char number afterwards
                                                                2016-01-25 01:30:43 stal lel
                                                                2016-01-25 01:30:44 mrflibble i wonder what that's all about, it changes every time i run netstat
                                                                2016-01-25 01:32:13 mrflibble i've got some .de, .ru and .ua s in my list
                                                                2016-01-25 01:34:25 * mrflibble is happy now he's being useful on the network
                                                                2016-01-25 01:35:29 mrflibble time to go, gnite all!
                                                                --
                                                                2016-01-25 10:45:24 -- Mode #tox [+o SylvieLorxu] by ChanServ
                                                                2016-01-25 11:02:47 nikitasius helloworld
                                                                2016-01-25 11:30:12 LearnC hai
                                                                --
                                                                2016-01-25 18:35:30 -- Mode #tox [+o SylvieLorxu] by ChanServ
                                                                2016-01-25 18:39:59 LearnC irungentoo is hiding
                                                                2016-01-25 19:02:04 stal he does that
                                                                --
                                                                2016-01-25 23:04:28 onla it might have been here in #tox where someone suggested something else instead of putty, for connecting to a remote shell from windows. I managed to forget it before testing, but would probably be interested to test
                                                                2016-01-25 23:06:30 mrflibble evenin all

                                                                --
                                                                2016-01-26 09:05:39 mrflibble grayhatter: i have 2 - a medium-sized one made by LG - PG60G that's 400 lumens, and is mains or battery powered
                                                                2016-01-26 09:07:18 mrflibble it's pretty good and will play some content from USB directly
                                                                2016-01-26 09:07:40 mrflibble the other one is an optoma pico, which it really small, but is only 10 lumens
                                                                2016-01-26 09:07:55 mrflibble u can only really use it at night or with all the curtains shut
                                                                2016-01-26 09:08:23 mrflibble it's pretty cool for the size though - it's about a big as a thick smartphone
                                                                2016-01-26 09:08:47 mrflibble that's battery and USB-powered
                                                                2016-01-26 09:09:34 mrflibble neither will do zoom tho, which is a bit restricting. to resize the image u just have to move them towards or away from the screen
                                                                --
                                                                2016-01-26 10:46:38 Rowen_Stipe So who here doesn;t subscribe to Tom Scott on Youtube?
                                                                2016-01-26 10:48:29 @zero-one who's that?
                                                                2016-01-26 10:48:40 @submarinegreen Tom Scott
                                                                2016-01-26 10:48:46 @submarinegreen the man the myth the legend
                                                                2016-01-26 10:49:14 Rowen_Stipe Wears a red shirt a lot.
                                                                2016-01-26 10:49:28 Rowen_Stipe www.youtube.com/watch?v=d10k3iiZ_xk
                                                                --
                                                                2016-01-26 14:35:19 benwaffle grayhatter: nope never did wayland
                                                                2016-01-26 14:36:24 benwaffle and there's no point since we have xwayland
                                                                2016-01-26 14:36:32 benwaffle you should work on UX
                                                                2016-01-26 14:53:28 -- Mode #tox [+o SylvieLorxu] by ChanServ
                                                                --
                                                                2016-01-26 23:15:17 @nurupo grayhatter: are you ready to travel from country to country in order to develop utox? :P
                                                                2016-01-26 23:15:28 @grayhatter that's stupid, they're not going to serve a subpoena to the coders, they going to go after the host.
                                                                2016-01-26 23:15:37 @grayhatter they don't give a shit, and will turn over everything
                                                                2016-01-26 23:15:53 @grayhatter nurupo: µTox is dead
                                                                2016-01-26 23:16:18 @grayhatter but if tox want's to pay for my living and travel expences... maybe I could do taht
                                                                2016-01-26 23:20:17 wedgie lol, i must have missed something. utox having legal trouble?
                                                                2016-01-26 23:21:03 @grayhatter wedgie: no, I'm just done sinking time into µTox if toxcore is dead
                                                                2016-01-26 23:21:36 @grayhatter I'm sitting on 2.5 half done refactors that would make µTox as easy to develop for as qTox if not way easier.
                                                                2016-01-26 23:21:53 @grayhatter But toxcore hasn't seen a good commit it weeks
                                                                2016-01-26 23:22:06 @grayhatter there's been some minor fixes and patches but that's about it
                                                                2016-01-26 23:23:26 @grayhatter groupchats have been idle for months, it was a bitch and a half to get ToxAV merged, and it needs a bit of fixing and mannol has disapeared to be a functioning member of society
                                                                2016-01-26 23:24:20 @grayhatter and the last time I tried to suggest something, I got so much flack from nearly everyone that it turned me off developing for Tox at all
                                                                2016-01-26 23:25:00 @grayhatter s/suggest something/suggest a new api or feature for toxcore/
                                                                2016-01-26 23:51:39 Guest19338 grayhatter: did u see my comments about projectors this morning?
                                                                2016-01-26 23:55:59 @grayhatter mrflibble: no, i'll read the back log
                                                                2016-01-26 23:56:10 @grayhatter thanks for lettnig me know!
                                                                2016-01-26 23:56:56 alec-b anyone with experience with hetzner dedicated servers (auction)? Would you recomend them / or advise to stay away? seems quite cheap... maybe too cheap.
                                                                2016-01-27 00:06:08 LearnC Hello. I am waiting any actions on my PR
                                                                2016-01-27 00:06:29 @grayhatter LearnC: on toxcore?
                                                                2016-01-27 00:06:35 fgro hi. running qtox on gentoo. is there a way I can test the audio testings (like an echo call on skype)?
                                                                2016-01-27 00:06:37 @grayhatter you're going to need to talk to irungentoo
                                                                2016-01-27 00:07:01 LearnC I am here almost everyday
                                                                2016-01-27 00:07:10 LearnC This PR contains security fixes
                                                                2016-01-27 00:07:34 @grayhatter LearnC: okay?
                                                                2016-01-27 00:07:35 LearnC I can't believe it longs so much time to be accepted or even discussed =(
                                                                2016-01-27 00:07:42 @grayhatter you still need to talk to irungentoo
                                                                2016-01-27 00:07:58 @grayhatter LearnC: dose it need a discussion?
                                                                2016-01-27 00:08:09 LearnC well, why not?
                                                                2016-01-27 00:08:15 @grayhatter everyone agrees with you?
                                                                2016-01-27 00:08:39 LearnC everyone must agree with me @_@
                                                                2016-01-27 00:08:40 @grayhatter no one thinks it's a bad idea
                                                                2016-01-27 00:08:53 @grayhatter we still need to wait for irungentoo
                                                                2016-01-27 00:08:54 LearnC grayhatter, if you meet him, shall you you give him my email in case I am offline?
                                                                2016-01-27 00:09:14 @grayhatter LearnC: I'm likely to forget
                                                                2016-01-27 00:09:27 LearnC anyone?)
                                                                2016-01-27 00:09:32 @grayhatter tag @irungentoo on github in your PR, ask his directly?
                                                                2016-01-27 00:09:39 LearnC I did
                                                                2016-01-27 00:10:24 @grayhatter LearnC: your PR is out of date
                                                                2016-01-27 00:10:41 @grayhatter can't be merged unless you merge master, or rebase
                                                                2016-01-27 00:11:32 LearnC Nice, did you fix tests in CI?
                                                                2016-01-27 00:11:42 @grayhatter nope
                                                                2016-01-27 00:11:53 @grayhatter nurupo: did a little maintance
                                                                2016-01-27 00:12:22 mrflibble np ;)
                                                                2016-01-27 00:12:31 Impyy -MemoServ- The memo has been successfully sent to irungentoo.
                                                                2016-01-27 00:12:37 Impyy maybe he reads those :p
                                                                2016-01-27 00:12:59 @submarinegreen hahahahaha
                                                                2016-01-27 00:13:00 @submarinegreen good one
                                                                2016-01-27 00:13:09 @nurupo LearnC: you can just email him
                                                                2016-01-27 00:13:19 LearnC Thank you all
                                                                2016-01-27 00:13:38 LearnC I feel like home
                                                                2016-01-27 00:13:54 @nurupo Impyy: yeah, he does, but his email is in every single commit
                                                                2016-01-27 00:15:03 Impyy we need a bot that tells him to 'get cracking' as soon as he gets on irc every day
                                                                2016-01-27 00:19:06 LearnC grayhatter, I rebased my PR
                                                                2016-01-27 00:20:12 LearnC You may run Travis even faster. addons: apt + local make install + ./configure --prefix=local_dir
                                                                2016-01-27 00:20:34 LearnC as soon as you don't need sudo at all
                                                                2016-01-27 00:20:57 LearnC + sudo switches off IPv6 if I am not mistaken
                                                                2016-01-27 00:24:39 LearnC Soooorry, I forgot about trusty+sudo required. Shame on me
                                                                2016-01-27 00:24:51 @submarinegreen BRING THE BELL OF SHAME
                                                                2016-01-27 00:24:56 * submarinegreen rings the shame bell
                                                                2016-01-27 00:24:57 @submarinegreen SHAME
                                                                2016-01-27 00:34:40 Chiitoo fgro: I do believe there is an echo-bot somewhere in the ether.
                                                                2016-01-27 00:37:28 Chiitoo fgro: echobot@toxme.io I've seen mentioned a few times. Never tried it myself though!
                                                                2016-01-27 00:39:09 fgro Chiitoo: ok. I'll have a look.
                                                                2016-01-27 00:39:29 Chiitoo Simply add that as a friend, they say. :]
                                                                2016-01-27 00:42:37 Chocolate_Chip installgen2, what's your tox address
                                                                2016-01-27 00:44:57 fgro Chiitoo: worked! awesome! thank you!
                                                                2016-01-27 00:45:44 Chiitoo fgro: Yay. ^^
                                                                2016-01-27 00:46:00 * fgro is impressed with tox and it's progress
                                                                2016-01-27 00:46:32 @submarinegreen feed me the flesh of intelligence agents
                                                                2016-01-27 00:46:35 fgro the days of proprietory skype are hopefully counted.
                                                                2016-01-27 00:49:29 installgen2 Chocolate_Chip: tox is terrible I don't use tox
                                                                2016-01-27 00:49:50 <-- submarinegreen has kicked installgen2 (then get out)
                                                                2016-01-27 01:02:04 LearnC submarinegreen, why did you kick him? frankly speaking I don't use tox either))
                                                                2016-01-27 01:02:32 @submarinegreen gen2 is our web site dev
                                                                2016-01-27 01:02:37 @submarinegreen we have a friendly relationship
                                                                2016-01-27 01:02:49 LearnC <3
                                                                2016-01-27 01:05:35 installgen2 dude
                                                                2016-01-27 01:05:42 installgen2 who here actually uses tox unironically
                                                                2016-01-27 01:06:28 alec-b I use qtox, serious hampered at the moment by the lack of a good solution for the mobile space
                                                                2016-01-27 01:07:04 @submarinegreen I use tox
                                                                2016-01-27 01:07:41 fo0 o/
                                                                2016-01-27 01:08:15 fo0 and include qtox in training for journalists
                                                                2016-01-27 01:10:14 installgen2 I bet you losers use linux OS too lmao
                                                                2016-01-27 01:11:30 fo0 how much ?
                                                                --

                                                                2016-01-27 02:13:39 @grayhatter submarinegreen: keep thinking
                                                                2016-01-27 02:13:43 @grayhatter you'll work that one out
                                                                2016-01-27 02:16:45 stal failure is problematic
                                                                2016-01-27 02:17:13 stal in order to keep things fair for everyone, there will no longer be pass or fail
                                                                2016-01-27 02:17:26 stal everyone will pass, you just need a certain percent to move on
                                                                2016-01-27 02:18:40 @grayhatter honestly, that's what education should be
                                                                2016-01-27 02:18:47 -- Mode #tox [+o irungentoo] by ChanServ
                                                                2016-01-27 02:32:36 @submarinegreen answer my question
                                                                2016-01-27 02:33:07 @grayhatter submarinegreen: how do computers work?
                                                                2016-01-27 02:33:36 @grayhatter how would you evaulate pass/fail in c code?
                                                                2016-01-27 02:36:13 @submarinegreen this is dumb
                                                                2016-01-27 02:36:18 @submarinegreen a proper cs course evaluates not only if your code works
                                                                2016-01-27 02:36:25 @submarinegreen but if is clean and extendable
                                                                2016-01-27 02:36:35 @submarinegreen there's no such thing as a black and white fail pass
                                                                2016-01-27 02:36:44 @submarinegreen you can have degrees of talent in everything
                                                                2016-01-27 02:36:50 @grayhatter joke killer
                                                                2016-01-27 02:36:51 @grayhatter also
                                                                2016-01-27 02:36:54 @grayhatter I dissagree
                                                                2016-01-27 02:37:00 @grayhatter in a proper CS course yes
                                                                2016-01-27 02:37:04 @grayhatter but not cs 101
                                                                2016-01-27 02:37:25 @grayhatter cs 101 is about starting to think about and interact with computers they way a computer scientist would
                                                                2016-01-27 02:37:39 @grayhatter that's binary, either you can make a computer do what you want, or you cant
                                                                2016-01-27 02:37:50 @grayhatter if you can, next level, do it better
                                                                --
                                                                --
                                                                2016-01-27 10:26:51 @zero-one wiiaam: there is a $10 node listing fee
                                                                2016-01-27 10:27:01 @zero-one i can't add your node to the list until you pay the fee, or file a fee waiver
                                                                2016-01-27 10:31:22 @zero-one wiiaam: your mail server is broken
                                                                2016-01-27 10:32:48 wiiaam yep
                                                                2016-01-27 10:32:53 wiiaam i just restarted it lol
                                                                2016-01-27 10:33:03 wiiaam dont tell me you got in on the 10 second downtime
                                                                2016-01-27 10:33:12 @zero-one no idea
                                                                --
                                                                2016-01-28 14:50:47 installgen2 shilling tox hard irl rn
                                                                2016-01-28 14:50:58 installgen2 I am trying my hardest to surpess my autism
                                                                2016-01-28 14:51:06 installgen2 but the guy I must shill to uses a tiling wm so I should be ok
                                                                2016-01-28 14:51:20 installgen2 then he will shill to the thousands of people which are asking him about a privacy respecting messaging application
                                                                2016-01-28 14:51:37 installgen2 waiting to talk to him right now, wish me luck
                                                                2016-01-28 14:54:02 installgen2 will need friends tho, pls add EC996816F74AE707CDA62E6B2648FD9FDB20CFCCE90B0A732E9F403B3BD2E3682ABD3ECCF923
                                                                --
                                                                2016-01-28 19:57:27 danieli get libtool firegurafiku
                                                                2016-01-28 19:58:42 firegurafiku danieli, simply installing libtool made it working O_O
                                                                2016-01-28 20:00:00 firegurafiku Thank you!
                                                                2016-01-28 20:09:48 danieli firegurafiku: no problem :)
                                                                --
                                                                2016-01-29 14:28:09 LearnC Hi
                                                                2016-01-29 14:28:51 LearnC I did tell you but in my PR I found a strange bug. After I replaced memset to sodium_memzero some tests started to fail
                                                                2016-01-29 14:29:03 LearnC ooops)
                                                                --
                                                                2016-01-29 18:39:38 @grayhatter LearnC: which tests?
                                                                2016-01-29 18:40:12 LearnC w8...
                                                                2016-01-29 18:45:35 LearnC grayhatter, tox_test
                                                                2016-01-29 18:45:57 LearnC grayhatter, use git bisect
                                                                2016-01-29 19:11:58 @grayhatter wow zetok is thick isn't he...
                                                                2016-01-29 20:32:02 -- Mode #tox [+o irungentoo] by ChanServ
                                                                --

                                                          –1
                                                          Можно понять разработчиков — появился х*р с горы и начал критиковать их код. Не имея особого авторитета у разработчиков, на что можно рассчитывать? Что они сразу кинутся мержить ваши PR? Очень врядле. Вместо того чтобы разобраться в ситуации почему так сложилось и какие есть пути выхода из нее — вы просто решили «взять и переписать». Зачастую (если не всегда) судьба opensource продуктов зависит не от умения писать код, а от умения налаживать взаимодействие команды.
                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                              +3
                                                              Никто не предлагает нарушать совместимость реализаций. toxcore предоставляет сишный интерфейс. Если выставлять наружу его же, то любая совместимая реализация может быть прозрачно использована. Речь только о качестве кода внутри.

                                                              Если уж тут говорят о Rust, то надо не забывать, что он совершенно прозрачно интегрируется с C. На странице документации по сырым указателям можно посмотреть пример вызова оригинального malloc.
                                                              –3
                                                              Неплохо, не плохо, можт можно и поучаствовать.

                                                              Главное введите возможность подключение центрального сервера для синхронизации и запоминания истории.
                                                                0
                                                                Вообщем то в этой ветке вся основная мысля — https://habrahabr.ru/post/272937/#comment_8734719
                                                                0
                                                                > kpp/2tox
                                                                > Latest commit 8e55d7a on 9 Feb 2016

                                                                А как с безопасностью в токсе сейчас?
                                                                  +1
                                                                  tox-rs/tox
                                                                  Latest commit 9113d04 7 hours ago

                                                                  Мы над этим работаем.

                                                                    0
                                                                    О, живой кто-то, круто! А вы не могли бы немножко просветить меня по поводу общего статуса экосистемы здесь, если не сложно? Спасибо!

                                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                Самое читаемое