Switch to hpack & get rid of encoding
This commit is contained in:
parent
b6397f2348
commit
d5ad5ff785
4
.gitignore
vendored
4
.gitignore
vendored
@ -3,7 +3,11 @@
|
|||||||
**/.stack-work
|
**/.stack-work
|
||||||
**/dist
|
**/dist
|
||||||
|
|
||||||
|
cryptoids/cryptoids.cabal
|
||||||
cryptoids/cryptoids.nix
|
cryptoids/cryptoids.nix
|
||||||
|
cryptoids-types/cryptoids-types.cabal
|
||||||
cryptoids-types/cryptoids-types.nix
|
cryptoids-types/cryptoids-types.nix
|
||||||
|
filepath-crypto/filepath-crypto.cabal
|
||||||
filepath-crypto/filepath-crypto.nix
|
filepath-crypto/filepath-crypto.nix
|
||||||
|
uuid-crypto/uuid-crypto.cabal
|
||||||
uuid-crypto/uuid-crypto.nix
|
uuid-crypto/uuid-crypto.nix
|
||||||
|
|||||||
@ -1,30 +0,0 @@
|
|||||||
name: cryptoids-types
|
|
||||||
synopsis: Shared types for encrypting internal object identifiers before exposure
|
|
||||||
version: 0.0.0
|
|
||||||
license: BSD3
|
|
||||||
license-file: LICENSE
|
|
||||||
author: Gregor Kleen
|
|
||||||
maintainer: aethoago@141.li
|
|
||||||
category: Web
|
|
||||||
build-type: Simple
|
|
||||||
cabal-version: >=1.10
|
|
||||||
extra-source-files: changes.md
|
|
||||||
source-repository head
|
|
||||||
type: git
|
|
||||||
location: https://git.rheperire.org/cryptoids
|
|
||||||
subdir: cryptoids-types
|
|
||||||
|
|
||||||
library
|
|
||||||
exposed-modules: Data.CryptoID
|
|
||||||
default-extensions: KindSignatures
|
|
||||||
, DataKinds
|
|
||||||
, GeneralizedNewtypeDeriving
|
|
||||||
, DeriveGeneric
|
|
||||||
, DeriveDataTypeable
|
|
||||||
build-depends: base >=4.9 && <4.11
|
|
||||||
, binary >=0.8.3.0 && <0.9
|
|
||||||
, path-pieces >=0.2.1 && <0.3
|
|
||||||
, http-api-data >=0.3.7.1 && <0.4
|
|
||||||
hs-source-dirs: src
|
|
||||||
default-language: Haskell2010
|
|
||||||
ghc-options: -Wall -fno-warn-name-shadowing
|
|
||||||
33
cryptoids-types/package.yaml
Normal file
33
cryptoids-types/package.yaml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
name: cryptoids-types
|
||||||
|
synopsis: Shared types for encrypting internal object identifiers before exposure
|
||||||
|
version: 0.0.0
|
||||||
|
license: BSD3
|
||||||
|
license-file: LICENSE
|
||||||
|
author: Gregor Kleen <aethoago@141.li>
|
||||||
|
maintainer: Gregor Kleen <aethoago@141.li>
|
||||||
|
category: Web
|
||||||
|
extra-doc-files:
|
||||||
|
- changes.md
|
||||||
|
git: https://git.rheperire.org/cryptoids/cryptoids-types
|
||||||
|
|
||||||
|
default-extensions:
|
||||||
|
- KindSignatures
|
||||||
|
- DataKinds
|
||||||
|
- GeneralizedNewtypeDeriving
|
||||||
|
- DeriveGeneric
|
||||||
|
- DeriveDataTypeable
|
||||||
|
|
||||||
|
ghc-options:
|
||||||
|
- -Wall
|
||||||
|
- -fno-warn-name-shadowing
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- base
|
||||||
|
- binary
|
||||||
|
- path-pieces
|
||||||
|
- http-api-data
|
||||||
|
|
||||||
|
library:
|
||||||
|
source-dirs: src
|
||||||
|
exposed-modules:
|
||||||
|
- Data.CryptoID
|
||||||
@ -1,37 +0,0 @@
|
|||||||
name: cryptoids
|
|
||||||
version: 0.4.0.0
|
|
||||||
synopsis: Reversable and secure encoding of object ids as a bytestring
|
|
||||||
license: BSD3
|
|
||||||
license-file: LICENSE
|
|
||||||
author: Gregor Kleen
|
|
||||||
maintainer: aethoago@141.li
|
|
||||||
category: cryptography
|
|
||||||
build-type: Simple
|
|
||||||
cabal-version: >=1.10
|
|
||||||
extra-source-files: changes.md
|
|
||||||
source-repository head
|
|
||||||
type: git
|
|
||||||
location: https://git.rheperire.org/cryptoids
|
|
||||||
subdir: cryptoids
|
|
||||||
|
|
||||||
library
|
|
||||||
exposed-modules: Data.CryptoID.Poly
|
|
||||||
, Data.CryptoID.ByteString
|
|
||||||
default-extensions: RankNTypes
|
|
||||||
, DataKinds
|
|
||||||
, GeneralizedNewtypeDeriving
|
|
||||||
, ViewPatterns
|
|
||||||
, RecordWildCards
|
|
||||||
, FlexibleContexts
|
|
||||||
build-depends: base >=4.9.1.0 && <4.11
|
|
||||||
, cryptoids-types ==0.0.0
|
|
||||||
, cryptonite >=0.23 && <0.25
|
|
||||||
, bytestring >=0.10.8.1 && <0.11
|
|
||||||
, binary >=0.8.3.0 && <0.9
|
|
||||||
, memory >=0.14.6 && <0.15
|
|
||||||
, exceptions >=0.8.3 && <0.9
|
|
||||||
, filepath >=1.4.1.1 && <1.5
|
|
||||||
, directory >=1.3.0.0 && <1.4
|
|
||||||
hs-source-dirs: src
|
|
||||||
default-language: Haskell2010
|
|
||||||
ghc-options: -Wall -fno-warn-name-shadowing
|
|
||||||
37
cryptoids/package.yaml
Normal file
37
cryptoids/package.yaml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
name: cryptoids
|
||||||
|
version: 0.4.0.0
|
||||||
|
synopsis: Reversable and secure encoding of object ids as a bytestring
|
||||||
|
category: cryptography
|
||||||
|
author: Gregor Kleen <aethoago@141.li>
|
||||||
|
maintainer: Gregor Kleen <aethoago@141.li>
|
||||||
|
license: BSD3
|
||||||
|
git: https://git.rheperire.org/cryptoids/cryptoids
|
||||||
|
extra-doc-files:
|
||||||
|
- changes.md
|
||||||
|
|
||||||
|
default-extensions:
|
||||||
|
- RankNTypes
|
||||||
|
- DataKinds
|
||||||
|
- GeneralizedNewtypeDeriving
|
||||||
|
- ViewPatterns
|
||||||
|
- RecordWildCards
|
||||||
|
- FlexibleContexts
|
||||||
|
ghc-options:
|
||||||
|
- -Wall
|
||||||
|
- -fno-warn-name-shadowing
|
||||||
|
dependencies:
|
||||||
|
- base
|
||||||
|
- cryptoids-types
|
||||||
|
- cryptonite
|
||||||
|
- bytestring
|
||||||
|
- binary
|
||||||
|
- memory
|
||||||
|
- exceptions
|
||||||
|
- filepath
|
||||||
|
- directory
|
||||||
|
|
||||||
|
library:
|
||||||
|
source-dirs: src
|
||||||
|
exposed-modules:
|
||||||
|
- Data.CryptoID.Poly
|
||||||
|
- Data.CryptoID.ByteString
|
||||||
@ -1,3 +1,6 @@
|
|||||||
|
# 0.0.0.3
|
||||||
|
- Got rid of `encoding`
|
||||||
|
|
||||||
# 0.0.0.2
|
# 0.0.0.2
|
||||||
- Improved documentation
|
- Improved documentation
|
||||||
|
|
||||||
|
|||||||
@ -1,45 +0,0 @@
|
|||||||
name: filepath-crypto
|
|
||||||
version: 0.0.0.2
|
|
||||||
synopsis: Reversable and secure encoding of object ids as filepaths
|
|
||||||
license: BSD3
|
|
||||||
license-file: LICENSE
|
|
||||||
author: Gregor Kleen
|
|
||||||
maintainer: aethoago@141.li
|
|
||||||
category: cryptography
|
|
||||||
build-type: Simple
|
|
||||||
cabal-version: >=1.10
|
|
||||||
extra-source-files: changes.md
|
|
||||||
source-repository head
|
|
||||||
type: git
|
|
||||||
location: https://git.rheperire.org/cryptoids
|
|
||||||
subdir: filepath-crypto
|
|
||||||
|
|
||||||
library
|
|
||||||
exposed-modules: System.FilePath.Cryptographic
|
|
||||||
, Data.Binary.SerializationLength
|
|
||||||
, Data.Binary.SerializationLength.TH
|
|
||||||
other-modules: Data.Binary.SerializationLength.Class
|
|
||||||
default-extensions: KindSignatures
|
|
||||||
, ViewPatterns
|
|
||||||
, FlexibleContexts
|
|
||||||
, GeneralizedNewtypeDeriving
|
|
||||||
, PatternGuards
|
|
||||||
, RecordWildCards
|
|
||||||
, DataKinds
|
|
||||||
, DeriveDataTypeable
|
|
||||||
, DeriveGeneric
|
|
||||||
other-extensions: ScopedTypeVariables
|
|
||||||
build-depends: base >=4.9 && <4.11
|
|
||||||
, cryptoids-types ==0.0.0
|
|
||||||
, cryptoids ==0.4.0.*
|
|
||||||
, filepath >=1.4.1.1 && <1.5
|
|
||||||
, sandi >=0.4.1 && <0.5
|
|
||||||
, case-insensitive >=1.2.0.10 && <1.3
|
|
||||||
, binary >=0.8.3.0 && <0.9
|
|
||||||
, bytestring >=0.10.8.1 && <0.11
|
|
||||||
, exceptions >=0.8.3 && <0.9
|
|
||||||
, encoding >=0.8.2 && <0.9
|
|
||||||
, template-haskell >=2.11.0.0 && <2.13
|
|
||||||
hs-source-dirs: src
|
|
||||||
default-language: Haskell2010
|
|
||||||
ghc-options: -Wall -fno-warn-name-shadowing
|
|
||||||
44
filepath-crypto/package.yaml
Normal file
44
filepath-crypto/package.yaml
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
name: filepath-crypto
|
||||||
|
version: 0.0.0.3
|
||||||
|
synopsis: Reversable and secure encoding of object ids as filepaths
|
||||||
|
category: cryptography
|
||||||
|
author: Gregor Kleen <aethoago@141.li>
|
||||||
|
maintainer: Gregor Kleen <aethoago@141.li>
|
||||||
|
license: BSD3
|
||||||
|
git: https://git.rheperire.org/cryptoids/filepath-crypto
|
||||||
|
extra-doc-files:
|
||||||
|
- changes.md
|
||||||
|
|
||||||
|
default-extensions:
|
||||||
|
- KindSignatures
|
||||||
|
- ViewPatterns
|
||||||
|
- FlexibleContexts
|
||||||
|
- GeneralizedNewtypeDeriving
|
||||||
|
- PatternGuards
|
||||||
|
- RecordWildCards
|
||||||
|
- DataKinds
|
||||||
|
- DeriveDataTypeable
|
||||||
|
- DeriveGeneric
|
||||||
|
other-extensions:
|
||||||
|
- ScopedTypeVariables
|
||||||
|
ghc-options:
|
||||||
|
- -Wall
|
||||||
|
- -fno-warn-name-shadowing
|
||||||
|
dependencies:
|
||||||
|
- base
|
||||||
|
- cryptoids-types
|
||||||
|
- cryptoids
|
||||||
|
- filepath
|
||||||
|
- sandi
|
||||||
|
- case-insensitive
|
||||||
|
- binary
|
||||||
|
- bytestring
|
||||||
|
- exceptions
|
||||||
|
- template-haskell
|
||||||
|
|
||||||
|
library:
|
||||||
|
source-dirs: src
|
||||||
|
exposed-modules:
|
||||||
|
- System.FilePath.Cryptographic
|
||||||
|
- Data.Binary.SerializationLength
|
||||||
|
- Data.Binary.SerializationLength.TH
|
||||||
@ -47,14 +47,13 @@ import Data.CaseInsensitive (CI)
|
|||||||
import qualified Data.CaseInsensitive as CI
|
import qualified Data.CaseInsensitive as CI
|
||||||
import Data.Binary
|
import Data.Binary
|
||||||
import Data.Binary.SerializationLength
|
import Data.Binary.SerializationLength
|
||||||
import Data.Encoding.UTF8
|
|
||||||
import Data.Encoding (decodeStrictByteString, encodeStrictByteString)
|
|
||||||
import Data.Char (toUpper)
|
import Data.Char (toUpper)
|
||||||
|
|
||||||
import Data.Ratio ((%))
|
import Data.Ratio ((%))
|
||||||
import Data.List
|
import Data.List
|
||||||
|
|
||||||
import qualified Data.ByteString as ByteString
|
import qualified Data.ByteString as ByteString
|
||||||
|
import qualified Data.ByteString.Char8 as ByteString.Char8
|
||||||
|
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Control.Monad.Catch
|
import Control.Monad.Catch
|
||||||
@ -88,7 +87,7 @@ encrypt = Poly.encrypt determineLength $ return . encode
|
|||||||
unless (fromIntegral l == natVal (Proxy :: Proxy (SerializationLength a))) $
|
unless (fromIntegral l == natVal (Proxy :: Proxy (SerializationLength a))) $
|
||||||
throwM $ CiphertextConversionFailed str
|
throwM $ CiphertextConversionFailed str
|
||||||
return . Just $ paddedLength l
|
return . Just $ paddedLength l
|
||||||
encode str = CI.mk . dropWhileEnd (== '=') . decodeStrictByteString UTF8 $ Base32.encode str
|
encode str = CI.mk . dropWhileEnd (== '=') . ByteString.Char8.unpack $ Base32.encode str
|
||||||
|
|
||||||
|
|
||||||
-- | Decrypt an arbitrary serializable value
|
-- | Decrypt an arbitrary serializable value
|
||||||
@ -102,7 +101,7 @@ decrypt :: forall a m namespace.
|
|||||||
, MonadThrow m
|
, MonadThrow m
|
||||||
, HasFixedSerializationLength a
|
, HasFixedSerializationLength a
|
||||||
) => CryptoIDKey -> CryptoFileName namespace -> m a
|
) => CryptoIDKey -> CryptoFileName namespace -> m a
|
||||||
decrypt = Poly.decrypt $ (\str -> either (const . throwM $ CiphertextConversionFailed str) return $ Base32.decode str) . encodeStrictByteString UTF8 . padding (natVal (Proxy :: Proxy (SerializationLength a))) . map toUpper . CI.original
|
decrypt = Poly.decrypt $ (\str -> either (const . throwM $ CiphertextConversionFailed str) return $ Base32.decode str) . ByteString.Char8.pack . padding (natVal (Proxy :: Proxy (SerializationLength a))) . map toUpper . CI.original
|
||||||
where
|
where
|
||||||
padding l str = str ++ replicate (genericIndex paddingTable $ l' `mod` 5) '='
|
padding l str = str ++ replicate (genericIndex paddingTable $ l' `mod` 5) '='
|
||||||
where
|
where
|
||||||
|
|||||||
@ -1,2 +1,4 @@
|
|||||||
cabal2nix.gup:
|
cabal2nix.gup:
|
||||||
**/*.nix
|
**/*.nix
|
||||||
|
hpack.gup:
|
||||||
|
**/*.cabal
|
||||||
21
gup/cryptoids.nix.gup
Executable file
21
gup/cryptoids.nix.gup
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#! /usr/bin/env nix-shell
|
||||||
|
#! nix-shell -i zsh -p zsh
|
||||||
|
|
||||||
|
exec 1>${1}
|
||||||
|
|
||||||
|
gup -u \
|
||||||
|
./cryptoids-types/cryptoids-types.nix \
|
||||||
|
./uuid-crypto/uuid-crypto.nix \
|
||||||
|
./filepath-crypto/filepath-crypto.nix \
|
||||||
|
./cryptoids/cryptoids.nix
|
||||||
|
|
||||||
|
<<EOF
|
||||||
|
{ callPackage }:
|
||||||
|
|
||||||
|
rec {
|
||||||
|
cryptoids-types = callPackage ./cryptoids-types/cryptoids-types.nix {};
|
||||||
|
uuid-crypto = callPackage ./uuid-crypto/uuid-crypto.nix {};
|
||||||
|
filepath-crypto = callPackage ./filepath-crypto/filepath-crypto.nix {};
|
||||||
|
cryptoids = callPackage ./cryptoids/cryptoids.nix { inherit cryptoids-types; };
|
||||||
|
}
|
||||||
|
EOF
|
||||||
8
gup/hpack.gup
Executable file
8
gup/hpack.gup
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#! /usr/bin/env nix-shell
|
||||||
|
#! nix-shell -i zsh -p zsh haskellPackages.hpack
|
||||||
|
|
||||||
|
gup -u ${2:h}/package.yaml
|
||||||
|
|
||||||
|
cd ${2:h}
|
||||||
|
|
||||||
|
hpack . - >${1}
|
||||||
@ -15,7 +15,7 @@
|
|||||||
# resolver:
|
# resolver:
|
||||||
# name: custom-snapshot
|
# name: custom-snapshot
|
||||||
# location: "./custom-snapshot.yaml"
|
# location: "./custom-snapshot.yaml"
|
||||||
resolver: lts-9.9
|
resolver: lts-10.3
|
||||||
|
|
||||||
# User packages to be built.
|
# User packages to be built.
|
||||||
# Various formats can be used as shown in the example below.
|
# Various formats can be used as shown in the example below.
|
||||||
@ -44,7 +44,6 @@ packages:
|
|||||||
# (e.g., acme-missiles-0.3)
|
# (e.g., acme-missiles-0.3)
|
||||||
extra-deps:
|
extra-deps:
|
||||||
- regex-compat-0.93.1
|
- regex-compat-0.93.1
|
||||||
- encoding-0.8.2
|
|
||||||
|
|
||||||
# Override default flag values for local packages and extra-deps
|
# Override default flag values for local packages and extra-deps
|
||||||
flags: {}
|
flags: {}
|
||||||
|
|||||||
39
uuid-crypto/package.yaml
Normal file
39
uuid-crypto/package.yaml
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
name: uuid-crypto
|
||||||
|
version: 1.3.1.0
|
||||||
|
synopsis: Reversable and secure encoding of object ids as uuids
|
||||||
|
category: cryptography
|
||||||
|
author: Gregor Kleen <aethoago@141.li>
|
||||||
|
maintainer: Gregor Kleen <aethoago@141.li>
|
||||||
|
license: BSD3
|
||||||
|
git: https://git.rheperire.org/cryptoids/uuid-crypto
|
||||||
|
extra-doc-files:
|
||||||
|
- changes.md
|
||||||
|
|
||||||
|
default-extensions:
|
||||||
|
- KindSignatures
|
||||||
|
- ViewPatterns
|
||||||
|
- FlexibleContexts
|
||||||
|
- GeneralizedNewtypeDeriving
|
||||||
|
- PatternGuards
|
||||||
|
- RecordWildCards
|
||||||
|
- DataKinds
|
||||||
|
- DeriveDataTypeable
|
||||||
|
- DeriveGeneric
|
||||||
|
other-extensions:
|
||||||
|
- ScopedTypeVariables
|
||||||
|
ghc-options:
|
||||||
|
- -Wall
|
||||||
|
- -fno-warn-name-shadowing
|
||||||
|
dependencies:
|
||||||
|
- base
|
||||||
|
- cryptoids-types
|
||||||
|
- cryptoids
|
||||||
|
- uuid
|
||||||
|
- binary
|
||||||
|
- bytestring
|
||||||
|
- exceptions
|
||||||
|
|
||||||
|
library:
|
||||||
|
source-dirs: src
|
||||||
|
exposed-modules:
|
||||||
|
- Data.UUID.Cryptographic
|
||||||
@ -1,38 +0,0 @@
|
|||||||
name: uuid-crypto
|
|
||||||
version: 1.3.1.0
|
|
||||||
synopsis: Reversable and secure encoding of object ids as uuids
|
|
||||||
license: BSD3
|
|
||||||
license-file: LICENSE
|
|
||||||
author: Gregor Kleen
|
|
||||||
maintainer: aethoago@141.li
|
|
||||||
category: cryptography
|
|
||||||
build-type: Simple
|
|
||||||
cabal-version: >=1.10
|
|
||||||
extra-source-files: changes.md
|
|
||||||
source-repository head
|
|
||||||
type: git
|
|
||||||
location: https://git.rheperire.org/cryptoids
|
|
||||||
subdir: uuid-crypto
|
|
||||||
|
|
||||||
library
|
|
||||||
exposed-modules: Data.UUID.Cryptographic
|
|
||||||
default-extensions: KindSignatures
|
|
||||||
, ViewPatterns
|
|
||||||
, FlexibleContexts
|
|
||||||
, GeneralizedNewtypeDeriving
|
|
||||||
, PatternGuards
|
|
||||||
, RecordWildCards
|
|
||||||
, DataKinds
|
|
||||||
, DeriveDataTypeable
|
|
||||||
, DeriveGeneric
|
|
||||||
other-extensions: ScopedTypeVariables
|
|
||||||
build-depends: base >=4.9 && <4.11
|
|
||||||
, cryptoids-types ==0.0.0
|
|
||||||
, cryptoids ==0.4.0.*
|
|
||||||
, uuid >=1.3.13 && <1.4
|
|
||||||
, binary >=0.8.3.0 && <0.9
|
|
||||||
, bytestring >=0.10.8.1 && <0.11
|
|
||||||
, exceptions >=0.8.3 && <0.9
|
|
||||||
hs-source-dirs: src
|
|
||||||
default-language: Haskell2010
|
|
||||||
ghc-options: -Wall -fno-warn-name-shadowing
|
|
||||||
Loading…
Reference in New Issue
Block a user