From a535a3665067ef63be6e9788e0e8889b2eac97b7 Mon Sep 17 00:00:00 2001
From: Jean-Paul Calderone <exarkun@twistedmatrix.com>
Date: Mon, 12 Jun 2023 09:01:08 -0400
Subject: [PATCH] Ord for StorageIndex, Verifier, Reader, Writer

---
 src/Tahoe/SDMF/Internal/Capability.hs | 9 +++++++++
 src/Tahoe/SDMF/Internal/Keys.hs       | 2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/Tahoe/SDMF/Internal/Capability.hs b/src/Tahoe/SDMF/Internal/Capability.hs
index 0e6249b..cf6bf7c 100644
--- a/src/Tahoe/SDMF/Internal/Capability.hs
+++ b/src/Tahoe/SDMF/Internal/Capability.hs
@@ -53,6 +53,9 @@ data Verifier = Verifier
     }
     deriving (Eq, Show)
 
+instance Ord Verifier where
+    a <= b = (verifierStorageIndex a <= verifierStorageIndex b)
+
 instance ConfidentialShowable Verifier where
     confidentiallyShow = dangerRealShow . SDMFVerifier
 
@@ -63,6 +66,9 @@ data Reader = Reader
     }
     deriving (Eq, Show)
 
+instance Ord Reader where
+    a <= b = (readerVerifier a <= readerVerifier b)
+
 instance ConfidentialShowable Reader where
     confidentiallyShow = dangerRealShow . SDMFReader
 
@@ -73,6 +79,9 @@ data Writer = Writer
     }
     deriving (Eq, Show)
 
+instance Ord Writer where
+    a <= b = (writerReader a <= writerReader b)
+
 instance ConfidentialShowable Writer where
     confidentiallyShow = dangerRealShow . SDMFWriter
 
diff --git a/src/Tahoe/SDMF/Internal/Keys.hs b/src/Tahoe/SDMF/Internal/Keys.hs
index fbe3068..db8d71d 100644
--- a/src/Tahoe/SDMF/Internal/Keys.hs
+++ b/src/Tahoe/SDMF/Internal/Keys.hs
@@ -86,7 +86,7 @@ instance Binary Read where
         let (CryptoPassed unRead) = cipherInit readKeyBytes
         pure Read{..}
 
-newtype StorageIndex = StorageIndex {unStorageIndex :: B.ByteString} deriving newtype (Eq)
+newtype StorageIndex = StorageIndex {unStorageIndex :: B.ByteString} deriving newtype (Eq, Ord)
 
 instance Show StorageIndex where
     show (StorageIndex si) =
-- 
GitLab