set base64 lenient decoding

This commit is contained in:
Stefan Friese 2023-07-25 23:17:25 +02:00
parent 710d710730
commit 01509b35e9
3 changed files with 38 additions and 45 deletions

View File

@ -1,27 +1,5 @@
# Revision history for based # Revision history for based
## 0.1.0.0 -- 2022-05-17 ## 0.1.0.0 -- YYYY-mm-dd
* First version. Released on an unsuspecting world. * First version. Released on an unsuspecting world.
## 0.2.0.0 -- 2022-05-19
* Added the following bases and encodings
* Decimal to hex
* Hex to decmial
* Xxencoding
* UuEncoding
* YEncoding
* Quoted-Printable
## 0.3.0.0 -- 2022-05-22
* Added base62 and base58
## 0.4.0.0 -- 2022-05-22
* Added the following bases and encodings
* Base64 for url
* Octal to/from hex
* Binary to/from hex

13
Main.hs
View File

@ -16,6 +16,7 @@ import qualified Data.Either.Unwrap as U
import qualified Codec.Binary.Base91 as B91 import qualified Codec.Binary.Base91 as B91
import qualified Codec.Binary.Base85 as B85 import qualified Codec.Binary.Base85 as B85
import qualified Codec.Binary.Base64 as B64 import qualified Codec.Binary.Base64 as B64
import qualified Data.ByteString.Base64 as B64L
import qualified Codec.Binary.Base64Url as B64U import qualified Codec.Binary.Base64Url as B64U
import qualified Network.HTTP.Base as HB import qualified Network.HTTP.Base as HB
import qualified Data.Word.Base62 as B62 import qualified Data.Word.Base62 as B62
@ -85,7 +86,8 @@ dec91 = C.unpack . B91.decode
enc91 = B91.encode . BSU.fromString enc91 = B91.encode . BSU.fromString
dec85 = C.unpack . U.fromRight . B85.decode . BSU.fromString dec85 = C.unpack . U.fromRight . B85.decode . BSU.fromString
enc85 = C.unpack . B85.encode . BSU.fromString enc85 = C.unpack . B85.encode . BSU.fromString
dec64 = C.unpack . U.fromRight . B64.decode . BSU.fromString -- dec64 = C.unpack . U.fromRight . B64.decode . BSU.fromString
dec64 = C.unpack . B64L.decodeLenient . BSU.fromString
enc64 = C.unpack . B64.encode . BSU.fromString enc64 = C.unpack . B64.encode . BSU.fromString
dec64url = C.unpack . U.fromRight . B64U.decode . BSU.fromString dec64url = C.unpack . U.fromRight . B64U.decode . BSU.fromString
enc64url = C.unpack . B64U.encode . BSU.fromString enc64url = C.unpack . B64U.encode . BSU.fromString
@ -147,7 +149,8 @@ optionHandler Encode{xx=True} = encxx
optionHandler Decode{yenc=True} = decy optionHandler Decode{yenc=True} = decy
optionHandler Encode{yenc=True} = ency optionHandler Encode{yenc=True} = ency
decode_ = Decode { decodeMode :: Based
decodeMode = Decode {
b91 = def &= help "decode base91", b91 = def &= help "decode base91",
b85 = def &= help "decode base85", b85 = def &= help "decode base85",
b64 = def &= help "decode base64", b64 = def &= help "decode base64",
@ -166,7 +169,8 @@ decode_ = Decode {
yenc = def &= help "decode yEncode" yenc = def &= help "decode yEncode"
} &= help "Decode chosen base" &=auto } &= help "Decode chosen base" &=auto
encode_ = Encode { encodeMode :: Based
encodeMode = Encode {
b91 = def &= help "encode base91", b91 = def &= help "encode base91",
b85 = def &= help "encode base85", b85 = def &= help "encode base85",
b64 = def &= help "encode base64", b64 = def &= help "encode base64",
@ -185,4 +189,5 @@ encode_ = Encode {
yenc = def &= help "encode yEncode" yenc = def &= help "encode yEncode"
} &= help "Encode chosen base" } &= help "Encode chosen base"
main = cmdArgs (modes[decode_, encode_] &= help "Anybased, when Cyberchef simply doesn't cut it.\nTo see every parameter of every mode use --help=all" &= program "based" &= summary "based v0.4") >>= interact . optionHandler main :: IO()
main = cmdArgs (modes[decodeMode, encodeMode] &= help "Anybased, when Cyberchef simply doesn't cut it.\nTo see every parameter of every mode use --help=all" &= program "based" &= summary "based v0.4") >>= interact . optionHandler

View File

@ -1,32 +1,42 @@
cabal-version: 2.4 cabal-version: 2.4
-- Initial package description 'based.cabal' generated by 'cabal init'.
-- For further documentation, see http://haskell.org/cabal/users-guide/
name: based name: based
version: 0.4.1.0 version: 0.4.2.0
-- synopsis:
-- description:
-- bug-reports:
-- license:
license-file: LICENSE license-file: LICENSE
-- author:
-- maintainer:
-- copyright:
-- category:
extra-source-files: CHANGELOG.md extra-source-files: CHANGELOG.md
author: Stefan Friese
library library
exposed-modules: MyLib exposed-modules:
-- other-modules: MyLib
-- other-extensions other-modules:
build-depends: base ^>=4.13.0.0 -- Data.Bytes.Text.Ascii
build-depends:
base ^>= 4.13.0.0,
byteslice == 0.2.6.0,
-- hs-source-dirs: -- hs-source-dirs:
default-language: Haskell2010 default-language: Haskell2010
executable based executable based
main-is: Main.hs main-is: Main.hs
other-modules: MyLib other-modules: MyLib
-- other-extensions: build-depends:
build-depends: base ^>=4.13.0.0, based, cmdargs, sandi, base62, base91, utf8-string, bytestring, byteslice, either-unwrap, text-show, hxt,haskoin-core, text, bytes, cborg, text-latin1,HTTP base ^>= 4.13.0.0,
cmdargs,
sandi,
base62,
base91,
utf8-string,
bytestring,
byteslice == 0.2.6.0,
either-unwrap,
text-show,
hxt,
haskoin-core,
text,
bytes,
cborg,
text-latin1,
HTTP,
base64-bytestring
-- hs-source-dirs: -- hs-source-dirs:
default-language: Haskell2010 default-language: Haskell2010