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
|
Symm.generateGroupKey @'HBS2Basic Nothing members
|
||||||
|
|
||||||
|
|
||||||
encryptBlock :: MonadUnliftIO m
|
encryptBlock :: (MonadUnliftIO m, Serialise t)
|
||||||
=> AnyStorage
|
=> AnyStorage
|
||||||
-> GroupKey 'Symm 'HBS2Basic
|
-> GroupKey 'Symm 'HBS2Basic
|
||||||
-> ByteString
|
-> t
|
||||||
-> m (SmallEncryptedBlock ByteString)
|
-> m (SmallEncryptedBlock t)
|
||||||
|
|
||||||
encryptBlock sto gk bs = do
|
encryptBlock sto gk x = do
|
||||||
gks <- runKeymanClient (extractGroupKeySecret gk)
|
gks <- runKeymanClient (extractGroupKeySecret gk)
|
||||||
>>= orThrowUser "can't extract group key secret"
|
>>= 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
|
=> AnyStorage
|
||||||
-> SmallEncryptedBlock ByteString
|
-> SmallEncryptedBlock t
|
||||||
-> m ByteString
|
-> m t
|
||||||
decryptBlock sto seb = do
|
decryptBlock sto seb = do
|
||||||
let find gk = runKeymanClient (extractGroupKeySecret gk)
|
let find gk = runKeymanClient (extractGroupKeySecret gk)
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ module HBS2.CLI.Run.Internal.Merkle where
|
||||||
import HBS2.CLI.Prelude
|
import HBS2.CLI.Prelude
|
||||||
import HBS2.Defaults
|
import HBS2.Defaults
|
||||||
import HBS2.CLI.Run.Internal
|
import HBS2.CLI.Run.Internal
|
||||||
import HBS2.CLI.Run.Internal.GroupKey
|
import HBS2.CLI.Run.Internal.GroupKey as G
|
||||||
|
|
||||||
import HBS2.Hash
|
import HBS2.Hash
|
||||||
import HBS2.Net.Auth.GroupKeySymm as Symm
|
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 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
|
runExceptT $ writeAsMerkle sto source <&> HashRef
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ module HBS2.CLI.Run.MetaData (metaDataEntries) where
|
||||||
|
|
||||||
import HBS2.CLI.Prelude
|
import HBS2.CLI.Prelude
|
||||||
import HBS2.CLI.Run.Internal
|
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.CLI.Run.Internal.Merkle
|
||||||
|
|
||||||
import HBS2.Data.Types.Refs
|
import HBS2.Data.Types.Refs
|
||||||
|
@ -79,13 +79,23 @@ metaDataEntries = do
|
||||||
MTreeAnn { _mtaMeta = ShortMetadata s } -> do
|
MTreeAnn { _mtaMeta = ShortMetadata s } -> do
|
||||||
pure $ mkStr s
|
pure $ mkStr s
|
||||||
|
|
||||||
MTreeAnn { _mtaMeta = AnnHashRef h } -> do
|
MTreeAnn { _mtaMeta = AnnHashRef h, _mtaCrypt = NullEncryption } -> do
|
||||||
getBlock sto h
|
getBlock sto h
|
||||||
>>= toMPlus
|
>>= toMPlus
|
||||||
<&> LBS.toStrict
|
<&> LBS.toStrict
|
||||||
<&> TE.decodeUtf8
|
<&> TE.decodeUtf8
|
||||||
<&> mkStr
|
<&> 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
|
_ -> mzero
|
||||||
|
|
||||||
case (how, r) of
|
case (how, r) of
|
||||||
|
|
Loading…
Reference in New Issue