mirror of https://github.com/voidlizard/hbs2
wip, encrypted metadata
This commit is contained in:
parent
87cc11138e
commit
794ea341a9
|
@ -26,22 +26,22 @@ groupKeyFromKeyList ks = do
|
|||
Symm.generateGroupKey @'HBS2Basic Nothing members
|
||||
|
||||
|
||||
encryptBlock :: MonadUnliftIO m
|
||||
encryptBlock :: (MonadUnliftIO m, Serialise t)
|
||||
=> AnyStorage
|
||||
-> GroupKey 'Symm 'HBS2Basic
|
||||
-> ByteString
|
||||
-> m (SmallEncryptedBlock ByteString)
|
||||
-> t
|
||||
-> m (SmallEncryptedBlock t)
|
||||
|
||||
encryptBlock sto gk bs = do
|
||||
encryptBlock sto gk x = do
|
||||
gks <- runKeymanClient (extractGroupKeySecret gk)
|
||||
>>= orThrowUser "can't extract group key secret"
|
||||
|
||||
Symm.encryptBlock sto gks (Right gk) Nothing bs
|
||||
Symm.encryptBlock sto gks (Right gk) Nothing x
|
||||
|
||||
decryptBlock :: MonadUnliftIO m
|
||||
decryptBlock :: (MonadUnliftIO m, Serialise t)
|
||||
=> AnyStorage
|
||||
-> SmallEncryptedBlock ByteString
|
||||
-> m ByteString
|
||||
-> SmallEncryptedBlock t
|
||||
-> m t
|
||||
decryptBlock sto seb = do
|
||||
let find gk = runKeymanClient (extractGroupKeySecret gk)
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ module HBS2.CLI.Run.Internal.Merkle where
|
|||
import HBS2.CLI.Prelude
|
||||
import HBS2.Defaults
|
||||
import HBS2.CLI.Run.Internal
|
||||
import HBS2.CLI.Run.Internal.GroupKey
|
||||
import HBS2.CLI.Run.Internal.GroupKey as G
|
||||
|
||||
import HBS2.Hash
|
||||
import HBS2.Net.Auth.GroupKeySymm as Symm
|
||||
|
@ -80,7 +80,12 @@ createTreeWithMetadata sto mgk meta lbs = do -- flip runContT pure do
|
|||
--
|
||||
let segments = readChunkedBS lbs defBlockSize
|
||||
|
||||
let source = ToEncryptSymmBS gks (Right gk) nonce segments (ShortMetadata mt) Nothing
|
||||
seb <- G.encryptBlock sto gk (ShortMetadata mt)
|
||||
|
||||
hmeta <- putBlock sto (serialise seb)
|
||||
>>= orThrowUser "can't put block"
|
||||
|
||||
let source = ToEncryptSymmBS gks (Right gk) nonce segments (AnnHashRef hmeta) Nothing
|
||||
|
||||
runExceptT $ writeAsMerkle sto source <&> HashRef
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ module HBS2.CLI.Run.MetaData (metaDataEntries) where
|
|||
|
||||
import HBS2.CLI.Prelude
|
||||
import HBS2.CLI.Run.Internal
|
||||
import HBS2.CLI.Run.Internal.GroupKey
|
||||
import HBS2.CLI.Run.Internal.GroupKey as G
|
||||
import HBS2.CLI.Run.Internal.Merkle
|
||||
|
||||
import HBS2.Data.Types.Refs
|
||||
|
@ -79,13 +79,23 @@ metaDataEntries = do
|
|||
MTreeAnn { _mtaMeta = ShortMetadata s } -> do
|
||||
pure $ mkStr s
|
||||
|
||||
MTreeAnn { _mtaMeta = AnnHashRef h } -> do
|
||||
MTreeAnn { _mtaMeta = AnnHashRef h, _mtaCrypt = NullEncryption } -> do
|
||||
getBlock sto h
|
||||
>>= toMPlus
|
||||
<&> LBS.toStrict
|
||||
<&> TE.decodeUtf8
|
||||
<&> mkStr
|
||||
|
||||
MTreeAnn { _mtaMeta = AnnHashRef h } -> do
|
||||
getBlock sto h
|
||||
>>= toMPlus
|
||||
<&> deserialiseOrFail @(SmallEncryptedBlock AnnMetaData)
|
||||
>>= toMPlus
|
||||
>>= lift . G.decryptBlock sto
|
||||
<&> \case
|
||||
ShortMetadata s -> mkStr s
|
||||
_ -> nil
|
||||
|
||||
_ -> mzero
|
||||
|
||||
case (how, r) of
|
||||
|
|
Loading…
Reference in New Issue