This commit is contained in:
Dmitry Zuikov 2024-04-13 08:03:09 +03:00
parent e405142b8c
commit d30207f838
6 changed files with 24 additions and 8 deletions

View File

@ -43,7 +43,7 @@ findFilesBy fp = liftIO do
findKeyRing :: forall s m . ( MonadUnliftIO m
, SerialisedCredentials s
, For'HBS2Basic s
, ForHBS2Basic s
)
=> [FilePattern]
-> PubKey 'Sign s
@ -68,7 +68,7 @@ findKeyRing fp kr = do
findKeyRingEntries :: forall s m . ( MonadUnliftIO m
, SerialisedCredentials s
, Hashable (PubKey 'Encrypt s)
-- , For'HBS2Basic s
-- , ForHBS2Basic s
)
=> [FilePattern]
-> [PubKey 'Encrypt s]

View File

@ -23,6 +23,9 @@ newtype HashRef = HashRef { fromHashRef :: Hash HbSync }
deriving newtype (Eq,Ord,IsString,Pretty,Hashable,Hashed HbSync)
deriving stock (Data,Generic,Show)
newtype TaggedHashRef t = TaggedHashRef { fromTaggedHashRef :: HashRef }
deriving newtype (Eq,Ord,IsString,Pretty,Hashable,Hashed HbSync)
deriving stock (Data,Generic,Show)
instance Pretty (AsBase58 HashRef) where
pretty (AsBase58 x) = pretty x
@ -65,6 +68,7 @@ data SequentialRef =
instance Serialise AnnotatedHashRef
instance Serialise SequentialRef
instance Serialise HashRef
instance Serialise (TaggedHashRef e)
type IsRefPubKey s = ( Eq (PubKey 'Sign s)

View File

@ -90,7 +90,7 @@ data PeerCredentials s =
makeLenses 'KeyringEntry
makeLenses 'PeerCredentials
type For'HBS2Basic s = ( Signatures s
type ForHBS2Basic s = ( Signatures s
, PrivKey 'Sign s ~ Sign.SecretKey
, PubKey 'Sign s ~ Sign.PublicKey
, Eq (PubKey 'Encrypt 'HBS2Basic)
@ -147,7 +147,7 @@ addKeyPair txt cred = do
pure $ cred & over peerKeyring (List.nub . (<> [kp]))
delKeyPair :: forall e m . ( MonadIO m
, For'HBS2Basic e
, ForHBS2Basic e
)
=> AsBase58 String -> PeerCredentials e -> m (PeerCredentials e)
delKeyPair (AsBase58 pks) cred = do
@ -157,7 +157,7 @@ delKeyPair (AsBase58 pks) cred = do
pure $ cred & set peerKeyring rest
parseCredentials :: forall s . ( -- For'HBS2Basic s
parseCredentials :: forall s . ( -- ForHBS2Basic s
SerialisedCredentials s
)
=> AsCredFile ByteString -> Maybe (PeerCredentials s)

View File

@ -217,7 +217,7 @@ pSendRepoNotify :: GitPerks m => Parser (GitCLI m ())
pSendRepoNotify = do
notifyChan <- argument pRefChanId (metavar "CHANNEL-KEY")
pure do
notice "JOPA"
notice "wip"
pure ()
main :: IO ()

View File

@ -87,6 +87,14 @@ data RefChanActionRequest =
instance Serialise RefChanActionRequest
type DisclosedCredentials e = PeerCredentials (Encryption e)
data RefChanHeadExt e =
RefChanDisclosedCredentials (TaggedHashRef (DisclosedCredentials e))
deriving stock (Generic)
instance SerialisedCredentials (Encryption e) => Serialise (RefChanHeadExt e)
data RefChanNotify e =
Notify (RefChanId e) (SignedBox ByteString (Encryption e)) -- подписано ключом автора
-- довольно уместно будет добавить эти команды сюда -
@ -97,6 +105,7 @@ data RefChanNotify e =
instance ForRefChans e => Serialise (RefChanNotify e)
newtype instance EventKey e (RefChanNotify e) =
RefChanNotifyEventKey (RefChanId e)
@ -117,6 +126,7 @@ instance Expires (EventKey e (RefChanNotify e)) where
type ForRefChans e = ( Serialise (PubKey 'Sign (Encryption e))
, Serialise (PrivKey 'Sign (Encryption e))
, Pretty (AsBase58 (PubKey 'Sign (Encryption e)))
, FromStringMaybe (PubKey 'Sign (Encryption e))
, FromStringMaybe (PubKey 'Encrypt (Encryption e))
@ -261,6 +271,7 @@ instance ForRefChans e => FromStringMaybe (RefChanHeadBlock e) where
| (ListVal [SymbolVal "notifier", LitStrVal s] ) <- parsed
]
instance (ForRefChans e
, Pretty (AsBase58 (PubKey 'Sign (Encryption e)))
, Pretty (AsBase58 (PubKey 'Encrypt (Encryption e)))
@ -284,6 +295,7 @@ instance (ForRefChans e
author p = parens ("author" <+> dquotes (pretty (AsBase58 p)))
reader p = parens ("reader" <+> dquotes (pretty (AsBase58 p)))
notifier p = parens ("notifier" <+> dquotes (pretty (AsBase58 p)))
-- disclosed p =
lstOf f e | null e = mempty
| otherwise = vcat (fmap f e) <> line

View File

@ -183,7 +183,7 @@ runHash opts _ = do
withBinaryFile (hashFp opts) ReadMode $ \h -> do
LBS.hGetContents h >>= print . pretty . hashObject @HbSync
runCat :: forall s . For'HBS2Basic s => CatOpts -> SimpleStorage HbSync -> IO ()
runCat :: forall s . ForHBS2Basic s => CatOpts -> SimpleStorage HbSync -> IO ()
runCat opts ss | catRaw opts == Just True = do