Skip to content

Commit 598cb89

Browse files
committed
remote: storeMetadata, add signature Serializer
1 parent 90984fd commit 598cb89

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

hnix-store-remote/src/System/Nix/Store/Remote/Serializer.hs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ import GHC.Generics (Generic)
8484

8585
import qualified Control.Monad
8686
import qualified Control.Monad.Reader
87+
import qualified Data.Attoparsec.Text
8788
import qualified Data.Bits
8889
import qualified Data.ByteString
8990
import qualified Data.HashSet
@@ -103,6 +104,7 @@ import System.Nix.ContentAddress (ContentAddress)
103104
import System.Nix.Derivation (Derivation(..), DerivationOutput(..))
104105
import System.Nix.DerivedPath (DerivedPath, ParseOutputsError)
105106
import System.Nix.Hash (HashAlgo)
107+
import System.Nix.Signature (NarSignature)
106108
import System.Nix.StorePath (HasStoreDir(..), InvalidPathError, StorePath, StorePathHashPart, StorePathName)
107109
import System.Nix.StorePath.Metadata (Metadata(..), StorePathTrust(..))
108110
import System.Nix.Store.Remote.Types
@@ -114,6 +116,7 @@ import qualified System.Nix.Base
114116
import qualified System.Nix.ContentAddress
115117
import qualified System.Nix.DerivedPath
116118
import qualified System.Nix.Hash
119+
import qualified System.Nix.Signature
117120
import qualified System.Nix.StorePath
118121

119122
-- | Transformer for @Serializer@
@@ -176,6 +179,7 @@ data PrimError
176179
| PrimError_NarHashMustBeSHA256
177180
| PrimError_NotYetImplemented String (ForPV ProtoVersion)
178181
| PrimError_Path InvalidPathError
182+
| PrimError_Signature String
179183
deriving (Eq, Ord, Generic, Show)
180184

181185
data ForPV a
@@ -441,12 +445,9 @@ pathMetadata = Serializer
441445
size -> Just size) <$> getS int
442446
trust <- getS storePathTrust
443447

444-
_sigStrings <- getS $ list text
448+
sigs <- getS $ set signature
445449
contentAddress <- getS maybeContentAddress
446450

447-
let
448-
-- XXX: signatures need pubkey from config
449-
sigs = mempty
450451
pure $ Metadata{..}
451452

452453
, putS = \Metadata{..} -> do
@@ -466,7 +467,7 @@ pathMetadata = Serializer
466467
putS time registrationTime
467468
putS int $ Prelude.maybe 0 id $ narBytes
468469
putS storePathTrust trust
469-
putS (hashSet text) mempty
470+
putS (set signature) sigs
470471
putS maybeContentAddress contentAddress
471472
}
472473
where
@@ -505,12 +506,23 @@ pathMetadata = Serializer
505506
putS text $ System.Nix.StorePath.storePathToText sd p
506507
}
507508

509+
storePathTrust
510+
:: NixSerializer r PrimError StorePathTrust
508511
storePathTrust =
509512
mapIsoSerializer
510513
(\case False -> BuiltElsewhere; True -> BuiltLocally)
511514
(\case BuiltElsewhere -> False; BuiltLocally -> True)
512515
bool
513516

517+
signature
518+
:: NixSerializer r PrimError NarSignature
519+
signature =
520+
mapPrismSerializer
521+
(Data.Bifunctor.first PrimError_Signature
522+
. Data.Attoparsec.Text.parseOnly
523+
System.Nix.Signature.signatureParser)
524+
(System.Nix.Signature.signatureToText)
525+
text
514526

515527
-- * Some HashAlgo
516528

hnix-store-remote/tests/NixSerializerSpec.hs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ spec = parallel $ do
112112
$ roundtripSReader @StoreDir pathMetadata sd
113113
. (\m -> m
114114
{ registrationTime = Data.Time.Clock.POSIX.posixSecondsToUTCTime 0
115-
, sigs = mempty
116115
})
117116

118117
prop "Some HashAlgo" $

0 commit comments

Comments
 (0)