3742263c99
Note the use of fromString and toString from Data.ByteString.UTF8 dated back to commit9b93278e8a
. Back then it was using the dataenc package for base64, which operated on Word8 and String. But with the switch to sandi, it uses ByteString, and indeed fromB64' and toB64' were already using ByteString without that complication. So I think there is no risk of such an encoding related breakage. I also tested the case that9b93278e8a
fixed: git-annex metadata -s foo='a …' x git-annex metadata x metadata x foo=a … In Remote.Helper.Encryptable, it was avoiding using Utility.Base64 because of that UTF8 conversion. Since that's no longer done, it can just use it now.
25 lines
552 B
Haskell
25 lines
552 B
Haskell
{- Simple Base64 encoding
|
|
-
|
|
- Copyright 2011-2023 Joey Hess <id@joeyh.name>
|
|
-
|
|
- License: BSD-2-clause
|
|
-}
|
|
|
|
module Utility.Base64 where
|
|
|
|
import Utility.Exception
|
|
|
|
import Codec.Binary.Base64 as B64
|
|
import Data.Maybe
|
|
import qualified Data.ByteString as B
|
|
|
|
toB64 :: B.ByteString -> B.ByteString
|
|
toB64 = B64.encode
|
|
|
|
fromB64Maybe :: B.ByteString -> Maybe (B.ByteString)
|
|
fromB64Maybe = either (const Nothing) Just . B64.decode
|
|
|
|
fromB64 :: B.ByteString -> B.ByteString
|
|
fromB64 = fromMaybe bad . fromB64Maybe
|
|
where
|
|
bad = giveup "bad base64 encoded data"
|