CiphertextIsWrongLength & minor formatting

This commit is contained in:
Gregor Kleen 2018-07-23 11:52:04 +02:00
parent f3d5a5e77d
commit a8f157642e
6 changed files with 38 additions and 4 deletions

View File

@ -1,22 +1,33 @@
# 0.5.1.0
- Add 'CiphertextIsWrongLength'
- Bump version bound on 'cryptonite'
# 0.5.0.0 # 0.5.0.0
- Add support for 'cryptoids-class' - Add support for 'cryptoids-class'
# 0.4.0.0 # 0.4.0.0
- Expose 'cipherBlockSize' - Expose 'cipherBlockSize'
- Adjust 'Data.CryptoID.Poly' to allow for more dynamic padding - Adjust 'Data.CryptoID.Poly' to allow for more dynamic padding
# 0.3.0.0 # 0.3.0.0
- Better exception type (does no longer leak private information) - Better exception type (does no longer leak private information)
- 'Data.CryptoID.Poly' now supports padding the plaintext to a certain length before encryption - 'Data.CryptoID.Poly' now supports padding the plaintext to a certain length before encryption
# 0.2.0.0 # 0.2.0.0
- Rename 'Data.CryptoID.Poly' to 'Data.CryptoID.ByteString' - Rename 'Data.CryptoID.Poly' to 'Data.CryptoID.ByteString'
- Introduce 'Data.CryptoID.Poly' doing actual serialization - Introduce 'Data.CryptoID.Poly' doing actual serialization
# 0.1.0.1 # 0.1.0.1
- Correct mistakes in the documentation - Correct mistakes in the documentation
# 0.1.0 # 0.1.0
- Switch to using 'MonadThrow' instead of 'MonadError' - Switch to using 'MonadThrow' instead of 'MonadError'
- Introduce 'readKeyFile' - Introduce 'readKeyFile'

View File

@ -1,5 +1,5 @@
name: cryptoids name: cryptoids
version: 0.5.0.0 version: 0.5.1.0
synopsis: Reversable and secure encoding of object ids as a bytestring synopsis: Reversable and secure encoding of object ids as a bytestring
category: cryptography category: cryptography
author: Gregor Kleen <aethoago@141.li> author: Gregor Kleen <aethoago@141.li>
@ -27,7 +27,7 @@ dependencies:
- base >=4.9 && <5 - base >=4.9 && <5
- cryptoids-types >=0.0 && <0.1 - cryptoids-types >=0.0 && <0.1
- cryptoids-class >=0.0 && <0.1 - cryptoids-class >=0.0 && <0.1
- cryptonite >=0.23 && <0.25 - cryptonite >=0.23 && <0.26
- bytestring >=0.10.8 && <0.11 - bytestring >=0.10.8 && <0.11
- binary >=0.8.3 && <0.9 - binary >=0.8.3 && <0.9
- memory >=0.14.6 && <0.15 - memory >=0.14.6 && <0.15

View File

@ -123,6 +123,11 @@ data CryptoIDError
-- 'CryptoCipher' -- 'CryptoCipher'
-- --
-- The length of the offending plaintext is included. -- 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 | NamespaceHashIsWrongLength ByteString
-- ^ The length of the digest produced by 'CryptoHash' does -- ^ The length of the digest produced by 'CryptoHash' does
-- not match the block size of 'CryptoCipher'. -- not match the block size of 'CryptoCipher'.
@ -222,11 +227,16 @@ decrypt :: forall m namespace.
decrypt (keyMaterial -> key) CryptoID{..} = do decrypt (keyMaterial -> key) CryptoID{..} = do
cipher <- cryptoFailable (cipherInit key :: CryptoFailable CryptoCipher) cipher <- cryptoFailable (cipherInit key :: CryptoFailable CryptoCipher)
namespace <- namespace' (Proxy :: Proxy namespace) namespace <- namespace' (Proxy :: Proxy namespace)
when (ByteString.length ciphertext `mod` blockSize cipher /= 0) $
throwM $ CiphertextIsWrongLength ciphertext
return $ cbcDecrypt cipher namespace 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 plaintext lengths throw 'PlaintextIsWrongLength'
--
-- Improper ciphertext lengths throw 'CiphertextIsWrongLength'
instance ( MonadCrypto m instance ( MonadCrypto m
, MonadCryptoKey m ~ CryptoIDKey , MonadCryptoKey m ~ CryptoIDKey
, KnownSymbol namespace , KnownSymbol namespace

View File

@ -1,13 +1,17 @@
# 0.1.0.0 # 0.1.0.0
- Add support for 'cryptoids-class' - Add support for 'cryptoids-class'
# 0.0.0.3 # 0.0.0.3
- Got rid of `encoding` - Got rid of `encoding`
# 0.0.0.2 # 0.0.0.2
- Improved documentation - Improved documentation
# 0.0.0.1 # 0.0.0.1
- Improved documentation - Improved documentation
# 0.0.0.0 # 0.0.0.0

View File

@ -15,7 +15,8 @@
# resolver: # resolver:
# name: custom-snapshot # name: custom-snapshot
# location: "./custom-snapshot.yaml" # location: "./custom-snapshot.yaml"
resolver: lts-10.5 resolver: lts-12.2
#resolver: nightly-2018-02-24
# 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.

View File

@ -1,26 +1,34 @@
# 1.4.0.0 # 1.4.0.0
- Add support for 'cryptoids-class' - Add support for 'cryptoids-class'
# 1.3.1.0 # 1.3.1.0
- Fix documentation mistake - Fix documentation mistake
- Bump @cryptoids@ to @0.4.0.*@ - Bump @cryptoids@ to @0.4.0.*@
# 1.3.0.1 # 1.3.0.1
- Fix documentation typo - Fix documentation typo
# 1.3.0.0 # 1.3.0.0
- Fix decryption - Fix decryption
# 1.2.0.0 # 1.2.0.0
- Pad plaintext before encryption, allowing encryption of payloads shorter than 128 bits - Pad plaintext before encryption, allowing encryption of payloads shorter than 128 bits
# 1.1.1.0 # 1.1.1.0
- Switch to using the new 'Data.CryptoID.Poly' - Switch to using the new 'Data.CryptoID.Poly'
# 1.1.0.1 # 1.1.0.1
- Update version constraint on @cryptoids@ - Update version constraint on @cryptoids@
# 1.1.0 # 1.1.0
- Switch to using 'MonadThrow' instead of 'MonadError' - Switch to using 'MonadThrow' instead of 'MonadError'
# 1.0.0 # 1.0.0