diff --git a/src/Tahoe/Directory.hs b/src/Tahoe/Directory.hs index f661cded842dfaac0bc3968d9fb12899df079bf3..27451c23940ddcf8e1c63206664e06c528df115c 100644 --- a/src/Tahoe/Directory.hs +++ b/src/Tahoe/Directory.hs @@ -8,6 +8,7 @@ import Tahoe.Directory.Internal.Capability ( ConfidentialShowable (..), DirectoryCapability (..), pReadCHK, + pReadSDMF, pVerifyCHK, ) import Tahoe.Directory.Internal.Parsing (parse, serialize) diff --git a/src/Tahoe/Directory/Internal/Capability.hs b/src/Tahoe/Directory/Internal/Capability.hs index efdc0d30bf0c5ce793334178cd7ab2755d235663..87737f1b270cdcc33048c7bbbdf94dd79689d6a3 100644 --- a/src/Tahoe/Directory/Internal/Capability.hs +++ b/src/Tahoe/Directory/Internal/Capability.hs @@ -5,6 +5,8 @@ module Tahoe.Directory.Internal.Capability where import qualified Data.Text as T import Data.Void (Void) import qualified Tahoe.CHK.Capability as CHK +import qualified Tahoe.SDMF as SDMF + import Text.Megaparsec (Parsec, getInput, setInput) {- | Something which contains confidential information and can be rendered as @@ -19,7 +21,7 @@ class ConfidentialShowable s where {- | A wrapper around some other capability type which signals that the plaintext is an encoded list of files. -} -newtype DirectoryCapability a = DirectoryCapability a +newtype DirectoryCapability a = DirectoryCapability a deriving (Eq, Ord, Show) instance ConfidentialShowable (DirectoryCapability CHK.Verifier) where confidentiallyShow (DirectoryCapability a) = @@ -54,3 +56,10 @@ pReadCHK = do setInput $ T.replace "URI:DIR2-CHK:" "URI:CHK:" s v <- CHK.pReader pure $ DirectoryCapability v + +pReadSDMF :: Parser (DirectoryCapability SDMF.Reader) +pReadSDMF = do + s <- getInput + setInput $ T.replace "URI:DIR2-RO:" "URI:SSK-RO:" s + v <- SDMF.pReader + pure $ DirectoryCapability v