Skip to content

Commit

Permalink
Validate authentication tag length
Browse files Browse the repository at this point in the history
  • Loading branch information
ocheron committed May 5, 2024
1 parent 4915cdc commit b86f140
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions src/Crypto/Store/CMS/Algorithms.hs
Original file line number Diff line number Diff line change
Expand Up @@ -1127,14 +1127,16 @@ authContentDecrypt key params paramsRaw aad bs expected =
Params_AUTH_ENC_128 p -> checkAuthKey 16 key >> authDecrypt p
Params_AUTH_ENC_256 p -> checkAuthKey 32 key >> authDecrypt p
Params_CHACHA20_POLY1305 iv -> ccpInit key iv aad >>= ccpDecrypt
ParamsCCM cipher iv m l -> getAEAD cipher key (AEAD_CCM msglen m l) iv >>= decrypt
ParamsGCM cipher iv _ -> getAEAD cipher key AEAD_GCM iv >>= decrypt
ParamsCCM cipher iv m l -> getAEAD cipher key (AEAD_CCM msglen m l) iv >>= decrypt (getM m)
ParamsGCM cipher iv len -> getAEAD cipher key AEAD_GCM iv >>= decrypt len
where
msglen = B.length bs
badMac = Left BadContentMAC

decrypt :: AEAD a -> Either StoreError ba
decrypt aead = maybe badMac Right (aeadSimpleDecrypt aead aad bs expected)
decrypt :: Int -> AEAD a -> Either StoreError ba
decrypt len aead
| B.length (unAuthTag expected) /= len = badMac
| otherwise = maybe badMac Right (aeadSimpleDecrypt aead aad bs expected)

ccpDecrypt :: ChaChaPoly1305.State -> Either StoreError ba
ccpDecrypt state
Expand Down

0 comments on commit b86f140

Please sign in to comment.