Опубликован выпуск проекта rPGP 0.10, развивающего реализацию стандарта OpenPGP (RFC-2440, RFC-4880) на языке Rust, предоставляющую полный набор функций, определённых в спецификации Autocrypt 1.1, для шифрования электронной почты. Наиболее известным проектом, использующим rPGP является мессенджер Delta Chat, использующий email в качестве транспорта. Код проекта распространяется под лицензиями MIT и Apache 2.0...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=58880
А зачем?
это библиотека
чтобы можно было использовать её функционал в других проектах
Зачем всё переписывать на Rust?
Когда ничего не можешь придумать, то приходится переписывать уже работающее
А если людям захотелось?
Потому что хочется. А хочется, потому что он классный.
> Зачем всё переписывать на Rust?Чтобы опеннетные комментаторы могли возмущенно пускать ветры в комментах, игнорируя неудобные факты в виде "переписывания" реализаций с Си на Си, с Си на Go, как и "наследие" реализации GPG ...
Чтобы снизить количество потенциальных ошибок, связанных с работой с памятью.
Осталось теперь сравнить производительность двух реализаций
Уверен, что это первое что сделают авторы. Причем возможно еще даже в процессе разработки.
Для секвои они уже есть, хотя ёё все еще пишут https://tests.sequoia-pgp.org/bench.html
Всё и не надо, это прежде всего для проектов на расте, которым нужна будет поддержка pgp без внешних библиотдк.
Ведь никто не спрашивает, зачем аналогичные библиотеки, скажем реализованы на golang, D, java, и даже js? Что бы приложения на этих языках могли использовать "нативную" реализацию, не завися от компонентов, установленных в системе. Точно также и здесь.
И не надо здесь про unix-way, т.к. все эти языки и их реализации библиотек крос-компиллируемые, и незачем тащить тот же opengpg здоровенной зависимостью к твоему приложению, если у него скажем цель банально проверить pgp-подпись.
"Здоровенной", ага. Аж целых 1.2 мегабайта, установленных по-умолчанию в большинстве систем.
Если у тебя утилита на 10-100кб, то тянутьб 1.2Мб то это слишком жирно
> Зачем всё переписывать на Rust?чтобы собирать софт могли только те, кто допущен к crates.io
Боишься что людоедов не пустят? А как развернуть свой crates они разобраться не смогут?
в cfrg были дискуссия, что надо мол все экзамплы в рфц делать на раст, фанатика послали лесом, сказав, что криптоалгоритмы редко и крайне мало работают с памятью, поэтому бенефиты раста нинужны, С во все поля
Если бы они были нужны всё бы уже давно было бы написано на расте, но как результат всё написано на Go.
Когда раст перепишут на Go?
Когда Go перепишут на Rust.
Кто во что GoRust.
> Если бы они были нужны всё бы уже давно было бы написано на расте, но как результат всё написано на Go.Сейчас вроде важное пишут на ассемблере,
иначе как гарантировать, что в расшифровка правильным и неправильным
ключом будет занимать приблизительно одинаковое количество времени (https://en.wikipedia.org/wiki/Timing_attack).А в C/Go/Rust фиг знает в какие инструкции компилятор транслирует твой код.
>фиг знает в какие инструкции компилятор транслирует твой код.Ну вот надо научить компилятор генерить нормальный код
>>иначе как гарантировать, что в расшифровка правильным и неправильнымключом будет занимать приблизительно одинаковое количество времени
Ты и на ассемблере этого не гарантируешь, потому что Intel -- это CISC, причём много слойный CISC. Сначала CISC разворачивается в RISC, а потом ещё этот RICS как-то интерпретируется/оптимизируется внутри-процессорными алгоритмами, работающими под какой-то осью, вроде Minix.
Быть может, на ARM не так?
>Ты и на ассемблере этого не гарантируешьНа разных поколениях цпу может и да, поэтому необходимы постоянные испытания на такого рода атак
Данные, которые эти криптоалгоритмы обрабатывают, хранятся видимо не в памяти...
На стеке или статически выделяется.
Как ты "на стеке" выделишь кусок памяти "нужного" размера, ведь ты заранее не знаешь, какого размера файл тебе нужно зашифровать? А "статика" -- это вообще нелепость какая-то, все те же проблемы, что и со стеком, только ещё и с мультитредовой синхронизацией проблемы.
Вы наверное не поверите, но можно читать файл по частям, тем-более, что шифрование тоже идёт блоками.
Ссылки как всегда не будет и надо тебе поверить на слово?
Есть же gpg, зачем нужен этот хеловорд?
Может быть, хоть это является основанием существования данного проекта:> поддерживается компиляция в промежуточный код WebAssembly для выполнения в браузерах и приложениях на базе платформы Node.js
Зачем когда уже есть openpgp.js?
чтобы код можно было закрывать.
Внутри wasm код не особо то и виден. Из javascript wasm получается на изи.
> Есть же gpg, зачем нужен этот хеловорд?https://www.opennet.ru/opennews/art.shtml?num=54489
> В опубликованном на прошлой неделе выпуске криптографической библиотеки Libgcrypt 1.9.0, которая используется в GnuPG, выявлена легко эксплуатируемая критическая уязвимость, позволяющая добиться переполнения буфера при попытке расшифровки специально оформленных данных
> Проблема вызвана ошибкой, приводящей к переполнению буфера. Проблема проявляется только в выпуске 1.9.0 и вызвана изменением в новой реализации хэш-функций, внесённым около двух лет назад.https://bugs.chromium.org/p/project-zero/issues/detail?id=2145
https://dev.gnupg.org/T5279#142665
Т.е., как все настоящие сишники, сделать CI c прогоном пары тестов с asan - считают ниже своего достоинства ...
Это выше их сил, вот свежее:=================================================================
==872786==ERROR: LeakSanitizer: detected memory leaksDirect leak of 6400 byte(s) in 10 object(s) allocated from:
#0 0x7eff35762d58 in __interceptor_realloc (/lib64/libasan.so.6+0xb4d58)
#1 0x7eff334380f0 in FcPatternObjectInsertElt (/lib64/libfontconfig.so.1+0x210f0)Indirect leak of 20544 byte(s) in 642 object(s) allocated from:
#0 0x7eff357629a7 in __interceptor_malloc (/lib64/libasan.so.6+0xb49a7)
#1 0x7eff334242cf in FcConfigValues (/lib64/libfontconfig.so.1+0xd2cf)Indirect leak of 10293 byte(s) in 752 object(s) allocated from:
#0 0x7eff35709ae7 in strdup (/lib64/libasan.so.6+0x5bae7)
#1 0x7eff33437914 in FcValueSave (/lib64/libfontconfig.so.1+0x20914)Indirect leak of 5856 byte(s) in 183 object(s) allocated from:
#0 0x7eff35762b77 in calloc (/lib64/libasan.so.6+0xb4b77)
#1 0x7eff3343869c in FcPatternObjectAddWithBinding (/lib64/libfontconfig.so.1+0x2169c)Indirect leak of 3872 byte(s) in 121 object(s) allocated from:
#0 0x7eff35762b77 in calloc (/lib64/libasan.so.6+0xb4b77)
#1 0x7eff33437bdc in FcValueListDuplicate (/lib64/libfontconfig.so.1+0x20bdc)Indirect leak of 960 byte(s) in 30 object(s) allocated from:
#0 0x7eff35762b77 in calloc (/lib64/libasan.so.6+0xb4b77)
#1 0x7eff33437a6e in FcValueListPrepend (/lib64/libfontconfig.so.1+0x20a6e)Indirect leak of 240 byte(s) in 5 object(s) allocated from:
#0 0x7eff357629a7 in __interceptor_malloc (/lib64/libasan.so.6+0xb49a7)
#1 0x7eff33431b41 in FcLangSetCreate (/lib64/libfontconfig.so.1+0x1ab41)SUMMARY: AddressSanitizer: 48165 byte(s) leaked in 1743 allocation(s).
Вот тут https://www.eevblog.com/forum/programming/fontconfig-2-14-2-.../ люди тоже столкнулись 13 марта 2023. Проблема не в языке С, а в ЧСВ сишников и их же рукожопии, асан жалуется с лёту на простеёшей сборке.
И потом они жалуются, что им борроу чекер сложно. Естественно сложно, если ты не приучен следить за памятью.
а потом будут с пеной у рта доказывать "все ошибаются", "это неправильный погромист", "это совсем не бекдор"
Святая наивность, что в расте как-то иначе. Взять тот же драйвер для m1, который в ядро пытаются протолкнуть,https://lore.kernel.org/all/20230224-rust-xarray-v2-1-4eeb01.../>void rust_helper_xa_init_flags(struct xarray *xa, gfp_t flags)
>{
> xa_init_flags(xa, flags);
>}
>// SAFETY: The XArray we have a reference to owns the C xarray object.
> Святая наивность, что в расте как-то иначе. Взять тот же драйвер для
> m1, который в ядро пытаются протолкнуть,https://lore.kernel.org/all/20230224-rust-xarray-v2-1-4eeb01.../
>>void rust_helper_xa_init_flags(struct xarray *xa, gfp_t flags)
>>{
>> xa_init_flags(xa, flags);
>>}
>>// SAFETY: The XArray we have a reference to owns the C xarray object.Сказать то что хотел или просто пустить ветры?
Классное у вас "программирование" на расте, говорю.
> <спрыгнул с темы, запостил сишный код>
> Классное у вас "программирование" на расте, говорю.Классная у вас, Военов Супротив Раста, "экспертиза"
> Классное у вас "программирование" на расте, говорю.да фик с этими биндингами - главное чтобы ничего не переписали на расте, иначе его уже не выкинуть просто так
Наоборот хорошо - один раз добавил зависимость и остальные существенно легче добавлять.
И так переписываешь-добавляешь пока от си одни биндинги не остануться. Красота!
> И так переписываешь-добавляешь пока от си одни биндинги не остануться. Красота!старый код в ядре никогда не удаляют пока в нём кто-то заинтересован хотя и без этого понятно что ты никогда ничего не исправлял и не добавлял.
Популизмом раста в ядре занимается банда клоунов - яблочный процессор реверсит девушка с мужским голосом, в ядро комитит анимешный виртуальный персонаж - хз сколько там педро под ним скрывается.
> старый код в ядре никогда не удаляютСтарый код в ядре заменяется на другой код в ядре.
Пока еще с сишички на сишечку, но посмотрим что будет дальше))Рабочий драйвер для того же м1 - это результат их работы.
И мне пофигу это клоун, анимешница, трап или педро. Show me your code.
Пусть там будет хоть кот сидит с той стороны монитора, мне главное чтобы у меня оно заработало на железе.
> Старый код в ядре заменяется на другой код в ядреесли новый код на расте не компилируется на половине поддерживаемых архитектур никто его не примет как замену, а яблочные GPU это вещь в себе ни с чем не совместмая
> Пусть там будет хоть кот сидит с той стороны монитора, мне главное чтобы у меня оно заработало на железе.
интересно что ты будешь делать с неподдерживаемым кодом когда все эти анонимные педры сдриснут по-тихому так же как появились
> яблочные GPU это вещь в себе ни с чем не совместмаяименно поэтому его можно легко добавлять и удалять никому не мешая
тоже самое про драйверы для конкретного железа - будет работать только на х64 или арм, кто-то захочет - пусть портирует на другие платформы сам> что ты будешь делать с неподдерживаемым кодом
Тоже самое что и с кодом на си.
Вспомните что было с NTFS драйвером, на который забили. Или с драйвером ФС.Или находятся те, кто захочет поддерживать, или выпиливается из ядра. В ядре достаточно много заброшенных кусков. И даже на сишечке, для которой вроде кодеров куча, желающие находятся не часто.
Ну, еще есть вариант оставить как есть, пока оно не будет мешать другим компонентам.
Для того же М1 это вполне нормальный вариант, само железо меняться уже не будет.
> Тоже самое что и с кодом на сикогда нужный поддерживаемый код на С переписывает анонимный клоун на нечитаемом раст и сбегает - что ты будешь делать ? я не про ненужное NTFS или Apple GPU говорю - с ними изначально всё ясно где их место в будущем.
> С переписывает анонимный клоунты ж только что ныл и вспоминал драйвер Asahi Lina - тут есть и имя, и адресс в рассылке, и даже фото наверное можно найти (если тебе это так важно)
и кстати над теми дровами работали несколько человек (Alyssa Rosenzweig, Dougall Johnson, и тд)> и сбегает
ну, пока никто не сбежал) но rust разработчиков уже не мало, и будет больше благодаря популяризации языка в ядре
пускай еще прошивку аппарата ивл на нем перепишут
перепишут, не сомневайся. Глюки критической аппаратуры должны быть максимально прекращены.
Глюков не будет, но память внезапно исчерпается.
> Глюков не будетдля начала нужен верифицированный компилятор а он есть только для С внезапно
> но память внезапно исчерпается
у меня тоже смех вызывает - пишут как раст офигенно упрощает жизнь при написании драйвера GPU в ядре а от утечек памяти он не помогает, а это там главный головняк
будет смешно если найдут какую-нибудь простую логическую ошибку ,хе-хе
Будет забавно если ошибку уже допустили, но не нашли. Потому что прочитать что-то в этой мешанине невозможно.
Какой же у тебя уровень, если тебе галимая императивщина - сложно? При чтении окамла или форта ты вообще лопнешь как хомячок?
От количества скобочек и мусорного синтаксиса в расте у любого вменяемого человека поедет крыша.
У вас в слове "lisp" ошибка.
(((Даже (((Лисп))) читаемый, иначе бы емаксеры не написали столько расширений к своему текстовому редактору, напоминающему ОС. Иначе бы не применяли (((Clojure))) в проде. А вы тут о каком-то Си-подобном Расте, который избавлен от перегруженности плюсов синонимическими конструкциями (14 видов инициализации! Printf & Cout! И куча других мелких приколов) и неясности Сишечки, в которой инт может быть объявлен на восемь байт, а может быть и больше, тут как повезёт. )))
#1=`(ну ,(`(,давай) (прочитай . #1)))
> 14 видов инициализации!Ты где-то слышал или сам перечислишь? На практике все гораздо проще, не надо тут байки травить.
Про 14 методов не скажу (я плохо знаком с Плюсами), но Гугл про методы инициализации точно что-то знает. Вот одна из ссылок: https://www.geeksforgeeks.org/different-ways-to-initialize-a.../
> я плохо знаком с ПлюсамиНу а может пора познакомиться и начать хотя бы что-то писать, прежде чем писать байки?
> но Гугл про методы инициализации точно что-то знает
Гугл что-то знаеи https://abseil.io/tips/88 Найдешь там 14 способов?
Вменяемые люди на синтаксис никакого внимания не обращают, если тебе в гикбрейнсе твоем не рассказали. Главное - семантика. Синтаксис при сильном желании DSL'ем пилится под задачу.
ну пиши на brainfuckе или вообще на whitespace тогда.
Дык люди пишут, есть интерпретатор лиспа на Malbolge, а он на порядки сложнее. Только это просто упражнения для ума по причине отсутствия вменяемой семантики - ну дык эзотерику и делают специально для таких квестов. А ты пока не научишься определять инструмент под задачу - так и будешь ныть как маленькая девочка, что буковки страшные. Ну ничего, зато на заводе всё легко, тебе там больше понравится.
У раст точно такая же задача сделать тоже самое на необоснованное сложном языке. Которые ещё и ничего не гарантирует.
Не, ты видимо не понимаешь о чем тебе толкуют. У эзотерики сложность в алгоритмах, а не в скобочках и пробелах. Например, используются шифрование, перестановки символов, случайные последовательности и прочие обфускации. Когда ты (ну не ты, конечно, а нормальные люди) учишь ЯП - учишь в первую очередь семантику, а не скобки и стрелки. Синтаксис - вторичен. И сложность (в математическом понимании слова) определяется именно семантикой. Впрочем, тебе нужно начинать с книжек, а не споров на опеннете, так ты только свою кашу в голове окончательно доваришь и сойдёшь с ума.
Просто загугли что такое когнитивная сложность и не пиши бред про семантику, тогда и за умного может быть сойдешь.
Тогда уж надо гуглить и "когнитивная тупость".
> И сложность (в математическом понимании слова) определяется именно семантикой.осталось доказать что эта семантика соответствует тому что исполняет процессор, для С пруфы есть. Как там у раста (где-то послышался хлопок) ?
> Только это просто упражнения для ума по причине отсутствия вменяемой семантики
> А ты пока не научишься определять инструмент под задачу - так и будешь ныть как маленькая девочка, что буковки страшные.Не связанные вещи. Задача в любом большой кодобазе - это легкость сопровождения, что раскрывается в легкость чтения и возможность найти людей. Поэтому лиспа почти нигде нет.
Функциональные языки - они и проще, и удобнее сколько-нибудь запутанной императивщины.
> При чтении окамла или форта ты вообще лопнешь как хомячок?И много ты софта на окамле пишешь или читаешь?
Галимая императивщина намного сложнее галимой функциональщины! Там же мутация на мутации, и nullptr погоняет.
Почему не на Zig?
Названием не вышел. Похож на немецкое слово, означавшее то, что Третьему Райху не светило, ибо систематически выдавали желаемое за действительное. Как вы яхту назовёте - так она и поплывёт.
Немецкое слово - sieg. И для западного уха различия в звучании между ними примерно как у нас "стопа" и "штопор".
Раст куда более худшее название.
Вот да.
А черный цвет ассоциируется с рабством?
Потому что технолуддиты не готовы принять современный Zig и продолжают писать на устаревшем Rust.
А в чём его современность?
Во всем. Считай что это более совершенный вариант Раста, в котором учтены его ошибки.
Зиг не предлагает ничего кардинально нового по сравнению с си.
Единственное преимущество - бесшовная интеграция с си, что никак не тянет на то, ради чего вообще стоит заморачиваться.
Только вот бред не надо писать Zig безопасный язык и гораздо безопаснее раста.
Зачем ты отмахиваешься от правды?
На оффсайте написано следущее:
Please note that Zig is not a fully safe language. For those interested in following Zig’s safety story, subscribe to these issues:
- enumerate all kinds of undefined behavior, even that which cannot be safety-checked
- make Debug and ReleaseSafe modes fully safe
При этом эти стори еще открытые и работы там до утра.
А тут аноним с опеннета утверждает что он безопасный язык.Интересно, кому верить - анону или оффсайту языка Zig?
Так у зига и релизной версии 1 ещё не было, а вот когда появится.
А вот когда появится - тогда и поговорим :)
>Zig is not a fully safe languageТак то же самое можно сказать и о Расте, полной безопасности он не гарантирует.
>Зиг не предлагает ничего кардинально нового по сравнению с си.Ну comptime там, ага... Ну, жс-френдли синтаксис для обезьянок...
>Единственное преимущество - бесшовная интеграция с сиКак раз это и является киллер-фичей Zig, которую невозможно переоценить.
Опять переписывают?
Раст отвратный язык созданный людьми без чувства прекрасного. Учитывая как его пропихивают в каждый проект с открытым кодом он стал оружием корпорастов чтобы руинить независимые проекты. Уродливость языка тут идет в плюс — нормальные люди его отторгают и покидают проект, после чего тот погибает. Подозреваю что занимается этим та же орава сжв-клоунов раньше пропихивающая КоК и всячески травившая независимых разрабов.Бесконечные переписывания существующих утилит подверждают эту теорию. Нормальные адепты нового языка спокойно писали бы свои проекты с нуля и заявляли о них когда те по функционалу или еще каким качествам не уступали мейнстриму, а растопоехи все делают наоборот — захватывают существующие проекты и без пруфов шеймят их оригинальный язык.
> Раст отвратный язык созданный людьми без чувства прекрасного.Хочу сверить своё чувство прекрасного. Как вам математика? Она прекрасна или отвратна?
> он стал оружием корпорастов чтобы руинить независимые проекты
Зачем разрушать то, на чём зарабатываешь? Взять тот же Линукс. Кто только на нём или с его помощью не гребёт бабло лопатами. Зачем его хоронить?
> нормальные люди его отторгают и покидают проект, после чего тот погибает
Можно примеры про нормальных людей и погибший по причине внедрения Rust проект? Или это просто пересказ приснившегося ужаса?
> травившая независимых разрабов
Если человек не умеет вести себя в обществе, его следует учить. Конечно, без перегибов не бывает, как и в любом другом деле.
> Бесконечные переписывания
Например, сколько раз?
> подверждают эту теорию
Какую именно? Про разрушение открытых проектов? Или про SJW? Или про "отвратный язык"? Вам бы с собственными мыслями разобраться для начала, потом уж начинать писать комментарии, если вы хотите, чтобы люди вас понимали.
> Нормальные адепты нового языка спокойно писали бы свои проекты с нуля
Некоторые проекты именно так и начинаются. Другие пользуются готовым, постепенно мигрируя на более безопасный код. Эволюционный подход.
О, настало время офигительных историй! (с)> в каждый проект с открытым кодом он стал оружием корпорастов
Сейчас практически весь успешный опенсорс - результат работы корпорастов))
Потому что внезапно разрабы хотят кушать и получать зп, а типичные_пользователи_опенсорса™ не в состоянии перевести хотя бы бакс на проекты которыми пользуются.
Поэтому мозила ходит с протянутой рукой за гуглом, а ~80+ % разрабов линукса на зарплате у разных корпов.
> а ~80+ % разрабов линукса на зарплате у разных корпов.Ага, которые пишут на с и не жужжат в отличие от анонимов, которые за всю жизнь написали меньше чем они за день.
Которые ревьювят добавление раст в ядро, а не пишут хейтерские простыни на опеннет.
> Которые ревьювят добавление раст в ядро, а не пишут хейтерские простыни на
> опеннет.Смешной. Ты комменты бы их почитал в духе "а зачем тут раст", "а кто все это будет ревьювить". Всем нормальным людям понятно, что внедрение раста - это проплаченная пиар акция для корпорастов. Там куча костылей, от невозможности раста работать без поддержки float до непонятного механизма версионирования языка.
Тоже самое говорили ассемблерщики и фортранщики, когда появился C++
Язык как язык, чем-то удобный, чем-то не очень. Что вас так от него бомбит-то?
Читать разучился? Комментатор явно высказал> его пропихивают в каждый проект с открытым кодом он стал оружием корпорастов чтобы руинить независимые проекты. Уродливость языка тут идет в плюс — нормальные люди его отторгают и покидают проект, после чего тот погибает
Он высказал шизоидный бред, который продуцирует воспалённое сознание в следствии бомбления при упоминании Rust. В чем настоящая причина этого бомбежа - остаётся загадкой. Всерьёз воспринимать такую аргументацию могут только серьёзно больные люди.
> Он высказал шизоидный бред, который продуцирует воспалённое сознание в следствии бомбления
> при упоминании Rust. В чем настоящая причина этого бомбежа - остаётся
> загадкой. Всерьёз воспринимать такую аргументацию могут только серьёзно больные люди.Почему такая эмоциональная реакция? Обычно это признак того, что вопрос задевает за что-то живое... Вполне рабочая гипотеза. Докажи обратное.
> его пропихивают в каждый проект с открытым кодомПрям в каждый? Очеидная ложь.
> он стал оружием корпорастов чтобы руинить независимые проекты.
Сколько и какие независимые проекты таким образом "заруинили"?
> Уродливость языка тут идет в плюс — нормальные люди его отторгают и покидают проект
Одним язык кажется уродливым, другим - нормальным или красивым. Те, кто его не отторгает, априори объявляются ненормальными людьми. Очевидно, что автор этих строк - типичный Д'Артаньян.
> после чего тот погибает
Сколько и какие проекты погибли из-за использования Rust?
Так rust устарел же уже: сейчас же смузи через chatGPT потягивать модно, а не ржавчину в стакан подсыпать.Лучше бы нормальный форк организовали (или показали где искать) с противоквантовыми МакЭлисами и стойкой битностью для симметричных шифров (~512бит мне бы хватило).
Ну так чего ж ты не организовал? Мы тут тебя ждём проект возглавить, заждались уже.