diff --git a/docs/todo/zero-block-reading-issue.txt b/docs/todo/zero-block-reading-issue.txt new file mode 100644 index 00000000..fe0d3c1e --- /dev/null +++ b/docs/todo/zero-block-reading-issue.txt @@ -0,0 +1,4 @@ +FIXME: zero-block-reading + похоже, что при чтении ИЛИ попытки расшифровки + блока размера 0 возникает ошибка. + Написать тест на чтение / шифрование такого блока. diff --git a/hbs2-core/lib/HBS2/Net/Auth/GroupKeySymm.hs b/hbs2-core/lib/HBS2/Net/Auth/GroupKeySymm.hs index 90fd2a49..3380cbbb 100644 --- a/hbs2-core/lib/HBS2/Net/Auth/GroupKeySymm.hs +++ b/hbs2-core/lib/HBS2/Net/Auth/GroupKeySymm.hs @@ -219,6 +219,25 @@ instance ( MonadIO m let key0 = HKDF.expand prk nonceS typicalKeyLength & Saltine.decode & fromJust + -- NOTE: new-format-and-compatibility + -- мы можем: + -- 1. поменять схему и схему вычисления нонсов + -- сделать зависимой от схемы. Вот мы пишем + -- её внизу, это ок. + -- Минусы: сложнее код, менее локальный + -- Плюсы: надёжнее + -- Совместимость: обратная? старая версия + -- не будет читать новые блоки. + -- + -- 2. сериализовать блок с параметрами + -- при чтении: пытаемся десереализовать, + -- как блок (читать голову). если не удаётся + -- --- читаем, как байтстроку. + -- минусы: будет медленнее --- лишняя проверка/попытка + -- десереализации на каждый блок. + -- плюсы: более локальные изменения + -- + hashes' <- liftIO $ toEncryptData source & S.zip (S.enumFrom (1 :: Word64) ) & S.mapM ( \(i,bs) -> do