From d1dd6fae23fc685a3813cbb4bdbdf6b1d681eb89 Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Sat, 11 Feb 2023 10:20:16 +0300 Subject: [PATCH] pep-02 updated --- docs/drafts/pep-02-acb.txt | 41 ++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/docs/drafts/pep-02-acb.txt b/docs/drafts/pep-02-acb.txt index 9c71a863..dbe0686f 100644 --- a/docs/drafts/pep-02-acb.txt +++ b/docs/drafts/pep-02-acb.txt @@ -31,17 +31,22 @@ Curve25519 (?), т.е ключевую пару асимметричного ш data family ACB e schema :: Type +data family AccessKey e schema :: Type + data ACBSchema = NaClAsymm data instance ACB e NaClAsymm = ACBNaClAsymm - { acbParent :: HashRef -- указатель на предыдущий ACB - , acbRoot :: PubKey 'Sign e -- корневой владелец - , acbOwners :: [PubKey 'Sign e] -- ключи владельцев - , acbRead :: [PubKey 'Encrypt e] -- ключи шифрования подписчиков - , acbWrite :: [PubKey 'Sign e] -- ключи подписи - } + { acbParent :: HashRef -- указатель на предыдущий ACB + , acbRoot :: PubKey 'Sign e -- корневой владелец + , acbOwners :: [PubKey 'Sign e] -- ключи владельцев + , acbRead :: [(PubKey 'Sign e, PubKey 'Encrypt e)] + -- при чтении нужно расшифровывать и идентифицировать ключ + + , acbWrite :: [(PubKey 'Sign e)] + -- при публикации нужно проверять подпись + } ``` @@ -53,6 +58,23 @@ data instance ACB e NaClAsymm = шифрования, что бы он мог расшифровать публикуемый контент. +``` + +-- EncryptedBox - обертка вокруг ключа ассиметричного шифрования +-- (KeyPAir) + +newtype instance AccessKey e NaClAsymm = + AccessKeyNaClAsymm + { permitted :: [(PubKey 'Sign e, EncryptedBox)] + } + +``` + +Список пар (ключ подписи пользователя, ключ шифрования). +Пара необходима, что бы пользователи за O(1) найти и +расшифровать свой ключ. + + Операции: - Добавить право на чтение @@ -61,5 +83,12 @@ data instance ACB e NaClAsymm = - Удалить право на публикацию - Добавить владельца - Удалить владельца + - Создать новый ключ публикации +### Создать новый ключ публикации + + - Получить ACB + - Для каждого подписчика на чтение добавить зашифрованный + ключ в permitted +