From b0374700a5a7e6b0bd5abe3568c50223369de5f5 Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Wed, 5 Nov 2025 07:24:18 +0100 Subject: use hex-encoding for tokens --- lambda-calcul/haskell/minilang.cabal | 4 ++-- lambda-calcul/haskell/src/Minilang/App.hs | 4 ++-- lambda-calcul/haskell/test/Minilang/ServerSpec.hs | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lambda-calcul/haskell/minilang.cabal b/lambda-calcul/haskell/minilang.cabal index a809a8f..dd8553b 100644 --- a/lambda-calcul/haskell/minilang.cabal +++ b/lambda-calcul/haskell/minilang.cabal @@ -60,7 +60,7 @@ library aeson , async , base - , base64-bytestring + , base16-bytestring , bytestring , cereal , containers @@ -119,7 +119,7 @@ test-suite minilang-test , aeson , async , base - , base64-bytestring + , base16-bytestring , bytestring , containers , data-default diff --git a/lambda-calcul/haskell/src/Minilang/App.hs b/lambda-calcul/haskell/src/Minilang/App.hs index 52a7352..175edcb 100644 --- a/lambda-calcul/haskell/src/Minilang/App.hs +++ b/lambda-calcul/haskell/src/Minilang/App.hs @@ -11,7 +11,7 @@ import Control.Monad.Catch (MonadThrow (throwM)) import Control.Monad.Except (ExceptT (..)) import Control.Monad.IO.Class (MonadIO, liftIO) import Control.Monad.Reader (MonadReader, ReaderT, ask, asks, runReaderT) -import qualified Data.ByteString.Base64 as Base64 +import qualified Data.ByteString.Base16 as Hex import qualified Data.ByteString.Lazy as LBS import Data.Map (Map) import qualified Data.Map as Map @@ -86,7 +86,7 @@ generateToken = genVal <- readTVar tvar let (tokenBytes, newGen) = newToken genVal writeTVar tvar newGen - pure $ Token $ decodeUtf8 $ Base64.encode $ LBS.toStrict tokenBytes + pure $ Token $ decodeUtf8 $ Hex.encode $ LBS.toStrict tokenBytes getLeaderboard :: (MonadIO m, MonadReader Env m) => m [Score] getLeaderboard = do diff --git a/lambda-calcul/haskell/test/Minilang/ServerSpec.hs b/lambda-calcul/haskell/test/Minilang/ServerSpec.hs index c7c45b3..fdf1389 100644 --- a/lambda-calcul/haskell/test/Minilang/ServerSpec.hs +++ b/lambda-calcul/haskell/test/Minilang/ServerSpec.hs @@ -8,7 +8,7 @@ import Data.Aeson (FromJSON, eitherDecode, encode) import Data.Bifunctor (first) import Data.ByteString (isInfixOf, toStrict) import qualified Data.ByteString as BS -import qualified Data.ByteString.Base64.Lazy as Base64 +import qualified Data.ByteString.Base16.Lazy as Hex import Data.ByteString.Lazy (ByteString) import qualified Data.ByteString.Lazy as LBS import Data.Data (Proxy (..)) @@ -27,7 +27,7 @@ import Test.Hspec.Wai.Matcher (MatchBody (..)) spec :: Spec spec = with (app testSeed) $ do - let (token, gen) = first Base64.encode (newToken testSeed) + let (token, gen) = first Hex.encode (newToken testSeed) alice = encode $ User "alice" it "GET / returns 'index.html'" $ do @@ -98,7 +98,7 @@ spec = with (app testSeed) $ do it "POST /api/challenge returns 400 given wrong token" $ do let response = "\"x\"" - otherToken = Base64.encode $ fst $ newToken gen + otherToken = Hex.encode $ fst $ newToken gen postJSON ("/api/challenge?token=" <> LBS.toStrict otherToken) response `shouldRespondWith` 400 -- cgit v1.3.1