packages feed

cryptoids 0.5.0.0 → 0.5.1.0

raw patch · 3 files changed

+63/−38 lines, 3 filesdep ~binarydep ~cryptoids-typesdep ~cryptonitePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: binary, cryptoids-types, cryptonite, memory

API changes (from Hackage documentation)

+ Data.CryptoID.ByteString: CiphertextIsWrongLength :: ByteString -> CryptoIDError
+ Data.CryptoID.ByteString: class MonadCrypto m => HasCryptoID (namespace :: Symbol) ciphertext plaintext (m :: * -> *)
+ Data.CryptoID.ByteString: class MonadThrow m => MonadCrypto (m :: * -> *) where {
+ Data.CryptoID.ByteString: cryptoIDKey :: MonadCrypto m => MonadCryptoKey m -> m a -> m a
+ Data.CryptoID.ByteString: type family MonadCryptoKey (m :: * -> *) :: *;
+ Data.CryptoID.ByteString: }
+ Data.CryptoID.ByteString.ImplicitNamespace: AlgorithmError :: CryptoError -> CryptoIDError
+ Data.CryptoID.ByteString.ImplicitNamespace: CiphertextConversionFailed :: ByteString -> CryptoIDError
+ Data.CryptoID.ByteString.ImplicitNamespace: CiphertextIsWrongLength :: ByteString -> CryptoIDError
+ Data.CryptoID.ByteString.ImplicitNamespace: DeserializationError :: CryptoIDError
+ Data.CryptoID.ByteString.ImplicitNamespace: InvalidNamespaceDetected :: CryptoIDError
+ Data.CryptoID.ByteString.ImplicitNamespace: NamespaceHashIsWrongLength :: ByteString -> CryptoIDError
+ Data.CryptoID.ByteString.ImplicitNamespace: PlaintextIsWrongLength :: Int -> CryptoIDError
+ Data.CryptoID.ByteString.ImplicitNamespace: cipherBlockSize :: Int
+ Data.CryptoID.ByteString.ImplicitNamespace: ciphertext :: CryptoID namespace a -> a
+ Data.CryptoID.ByteString.ImplicitNamespace: class MonadThrow m => MonadCrypto (m :: * -> *) where {
+ Data.CryptoID.ByteString.ImplicitNamespace: cryptoIDKey :: MonadCrypto m => MonadCryptoKey m -> m a -> m a
+ Data.CryptoID.ByteString.ImplicitNamespace: data CryptoIDError
+ Data.CryptoID.ByteString.ImplicitNamespace: data CryptoIDKey
+ Data.CryptoID.ByteString.ImplicitNamespace: genKey :: MonadIO m => m CryptoIDKey
+ Data.CryptoID.ByteString.ImplicitNamespace: readKeyFile :: MonadIO m => FilePath -> m CryptoIDKey
+ Data.CryptoID.ByteString.ImplicitNamespace: type CryptoCipher = Blowfish
+ Data.CryptoID.ByteString.ImplicitNamespace: type CryptoHash = SHAKE128 64
+ Data.CryptoID.ByteString.ImplicitNamespace: type family MonadCryptoKey (m :: * -> *) :: *;
+ Data.CryptoID.ByteString.ImplicitNamespace: }
+ Data.CryptoID.Poly: AlgorithmError :: CryptoError -> CryptoIDError
+ Data.CryptoID.Poly: CiphertextConversionFailed :: ByteString -> CryptoIDError
+ Data.CryptoID.Poly: CiphertextIsWrongLength :: ByteString -> CryptoIDError
+ Data.CryptoID.Poly: CryptoID :: a -> CryptoID a
+ Data.CryptoID.Poly: DeserializationError :: CryptoIDError
+ Data.CryptoID.Poly: InvalidNamespaceDetected :: CryptoIDError
+ Data.CryptoID.Poly: NamespaceHashIsWrongLength :: ByteString -> CryptoIDError
+ Data.CryptoID.Poly: PlaintextIsWrongLength :: Int -> CryptoIDError
+ Data.CryptoID.Poly: [ciphertext] :: CryptoID a -> a
+ Data.CryptoID.Poly: cipherBlockSize :: Int
+ Data.CryptoID.Poly: class MonadCrypto m => HasCryptoID (namespace :: Symbol) ciphertext plaintext (m :: * -> *)
+ Data.CryptoID.Poly: class MonadThrow m => MonadCrypto (m :: * -> *) where {
+ Data.CryptoID.Poly: cryptoIDKey :: MonadCrypto m => MonadCryptoKey m -> m a -> m a
+ Data.CryptoID.Poly: data CryptoIDError
+ Data.CryptoID.Poly: data CryptoIDKey
+ Data.CryptoID.Poly: genKey :: MonadIO m => m CryptoIDKey
+ Data.CryptoID.Poly: newtype CryptoID (namespace :: Symbol) a
+ Data.CryptoID.Poly: readKeyFile :: MonadIO m => FilePath -> m CryptoIDKey
+ Data.CryptoID.Poly: type CryptoByteString (namespace :: Symbol) = CryptoID namespace ByteString
+ Data.CryptoID.Poly: type CryptoCipher = Blowfish
+ Data.CryptoID.Poly: type CryptoHash = SHAKE128 64
+ Data.CryptoID.Poly: type HasCryptoByteString (namespace :: Symbol) = HasCryptoID namespace ByteString
+ Data.CryptoID.Poly: type family MonadCryptoKey (m :: * -> *) :: *;
+ Data.CryptoID.Poly: }
+ Data.CryptoID.Poly.ImplicitNamespace: AlgorithmError :: CryptoError -> CryptoIDError
+ Data.CryptoID.Poly.ImplicitNamespace: CiphertextConversionFailed :: ByteString -> CryptoIDError
+ Data.CryptoID.Poly.ImplicitNamespace: CiphertextIsWrongLength :: ByteString -> CryptoIDError
+ Data.CryptoID.Poly.ImplicitNamespace: DeserializationError :: CryptoIDError
+ Data.CryptoID.Poly.ImplicitNamespace: InvalidNamespaceDetected :: CryptoIDError
+ Data.CryptoID.Poly.ImplicitNamespace: NamespaceHashIsWrongLength :: ByteString -> CryptoIDError
+ Data.CryptoID.Poly.ImplicitNamespace: PlaintextIsWrongLength :: Int -> CryptoIDError
+ Data.CryptoID.Poly.ImplicitNamespace: cipherBlockSize :: Int
+ Data.CryptoID.Poly.ImplicitNamespace: ciphertext :: CryptoID namespace a -> a
+ Data.CryptoID.Poly.ImplicitNamespace: class MonadThrow m => MonadCrypto (m :: * -> *) where {
+ Data.CryptoID.Poly.ImplicitNamespace: cryptoIDKey :: MonadCrypto m => MonadCryptoKey m -> m a -> m a
+ Data.CryptoID.Poly.ImplicitNamespace: data CryptoIDError
+ Data.CryptoID.Poly.ImplicitNamespace: data CryptoIDKey
+ Data.CryptoID.Poly.ImplicitNamespace: genKey :: MonadIO m => m CryptoIDKey
+ Data.CryptoID.Poly.ImplicitNamespace: readKeyFile :: MonadIO m => FilePath -> m CryptoIDKey
+ Data.CryptoID.Poly.ImplicitNamespace: type CryptoByteString (namespace :: Symbol) = CryptoID namespace ByteString
+ Data.CryptoID.Poly.ImplicitNamespace: type CryptoCipher = Blowfish
+ Data.CryptoID.Poly.ImplicitNamespace: type CryptoHash = SHAKE128 64
+ Data.CryptoID.Poly.ImplicitNamespace: type HasCryptoByteString (namespace :: Symbol) = HasCryptoID namespace ByteString
+ Data.CryptoID.Poly.ImplicitNamespace: type family MonadCryptoKey (m :: * -> *) :: *;
+ Data.CryptoID.Poly.ImplicitNamespace: }

Files

changes.md view
@@ -1,22 +1,33 @@+# 0.5.1.0++    - Add 'CiphertextIsWrongLength'+    - Bump version bound on 'cryptonite'+ # 0.5.0.0+     - Add support for 'cryptoids-class'  # 0.4.0.0+     - Expose 'cipherBlockSize'     - Adjust 'Data.CryptoID.Poly' to allow for more dynamic padding  # 0.3.0.0+     - Better exception type (does no longer leak private information)     - 'Data.CryptoID.Poly' now supports padding the plaintext to a certain length before encryption  # 0.2.0.0+     - Rename 'Data.CryptoID.Poly' to 'Data.CryptoID.ByteString'     - Introduce 'Data.CryptoID.Poly' doing actual serialization  # 0.1.0.1+     - Correct mistakes in the documentation  # 0.1.0+     - Switch to using 'MonadThrow' instead of 'MonadError'     - Introduce 'readKeyFile' 
cryptoids.cabal view
@@ -1,43 +1,47 @@-name: cryptoids-version: 0.5.0.0-cabal-version: >=1.10-build-type: Simple-license: BSD3-license-file: LICENSE-maintainer: Gregor Kleen <aethoago@141.li>-synopsis: Reversable and secure encoding of object ids as a bytestring-category: cryptography-author: Gregor Kleen <aethoago@141.li>+-- This file has been generated from package.yaml by hpack version 0.28.2.+--+-- see: https://github.com/sol/hpack+--+-- hash: 2089e71d5c8505cf30f7eb17988883c373302227642b65199d4544ddf18541ab++name:           cryptoids+version:        0.5.1.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+license-file:   LICENSE+build-type:     Simple+cabal-version:  >= 1.10 extra-source-files:     changes.md  source-repository head-    type: git-    location: https://git.rheperire.org/cryptoids/cryptoids+  type: git+  location: https://git.rheperire.org/cryptoids/cryptoids  library-    exposed-modules:-        Data.CryptoID.Poly-        Data.CryptoID.Poly.ImplicitNamespace-        Data.CryptoID.ByteString-        Data.CryptoID.ByteString.ImplicitNamespace-    build-depends:-        base >=4.10.1.0 && <4.11,-        binary >=0.8.5.1 && <0.9,-        bytestring >=0.10.8.2 && <0.11,-        cryptoids-class >=0.0.0 && <0.1,-        cryptoids-types >=0.0.0 && <0.1,-        cryptonite ==0.24.*,-        directory >=1.3.0.2 && <1.4,-        exceptions >=0.8.3 && <0.9,-        filepath >=1.4.1.2 && <1.5,-        memory >=0.14.11 && <0.15-    default-language: Haskell2010-    default-extensions: RankNTypes DataKinds GeneralizedNewtypeDeriving-                        ViewPatterns RecordWildCards FlexibleContexts FlexibleInstances-                        MultiParamTypeClasses TypeFamilies ConstraintKinds-    hs-source-dirs: src-    other-modules:-        Paths_cryptoids-    ghc-options: -Wall -fno-warn-name-shadowing-+  exposed-modules:+      Data.CryptoID.Poly+      Data.CryptoID.Poly.ImplicitNamespace+      Data.CryptoID.ByteString+      Data.CryptoID.ByteString.ImplicitNamespace+  other-modules:+      Paths_cryptoids+  hs-source-dirs:+      src+  default-extensions: RankNTypes DataKinds GeneralizedNewtypeDeriving ViewPatterns RecordWildCards FlexibleContexts FlexibleInstances MultiParamTypeClasses TypeFamilies ConstraintKinds+  ghc-options: -Wall -fno-warn-name-shadowing+  build-depends:+      base >=4.9 && <5+    , binary >=0.8.3 && <0.9+    , bytestring >=0.10.8 && <0.11+    , cryptoids-class >=0.0 && <0.1+    , cryptoids-types >=0.0 && <0.1+    , cryptonite >=0.23 && <0.26+    , directory >=1.3.0 && <1.4+    , exceptions >=0.8.3 && <0.11+    , filepath >=1.4.1 && <1.5+    , memory >=0.14.6 && <0.15+  default-language: Haskell2010
src/Data/CryptoID/ByteString.hs view
@@ -123,6 +123,11 @@     --   'CryptoCipher'     --     -- The length of the offending plaintext is included.+  | CiphertextIsWrongLength ByteString+    -- ^ The length of the ciphertext is not a multiple of the block size of+    --   'CryptoCipher'+    --+    -- The offending ciphertext is included.   | NamespaceHashIsWrongLength ByteString     -- ^ The length of the digest produced by 'CryptoHash' does     --   not match the block size of 'CryptoCipher'.@@ -222,11 +227,16 @@ decrypt (keyMaterial -> key) CryptoID{..} = do   cipher <- cryptoFailable (cipherInit key :: CryptoFailable CryptoCipher)   namespace <- namespace' (Proxy :: Proxy namespace)+  when (ByteString.length ciphertext `mod` blockSize cipher /= 0) $+    throwM $ CiphertextIsWrongLength ciphertext   return $ cbcDecrypt cipher namespace ciphertext --- | This instance is somewhat improper in that it works only for plaintexts whose length is a multiple of 'cipherBlockSize'+-- | This instance is somewhat improper in that it works only for plain- and+--   ciphertexts whose length is a multiple of 'cipherBlockSize' -- -- Improper plaintext lengths throw 'PlaintextIsWrongLength'+--+-- Improper ciphertext lengths throw 'CiphertextIsWrongLength' instance ( MonadCrypto m          , MonadCryptoKey m ~ CryptoIDKey          , KnownSymbol namespace