From a69cd845e9daa95527b6c497dd7c75293bbeb917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 8 Nov 2026 15:40:59 +0100 Subject: Remove ByteArray constraints from internal crypto API --- src/crypto/crypton/Crypto.hs | 5 ++--- src/crypto/reflibs/Crypto/Cipher/ChaChaPoly1305.hs | 10 +++++----- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/crypto/crypton/Crypto.hs b/src/crypto/crypton/Crypto.hs index 015bdb2..c933b0a 100644 --- a/src/crypto/crypton/Crypto.hs +++ b/src/crypto/crypton/Crypto.hs @@ -39,7 +39,6 @@ import Crypto.PubKey.Ed25519 qualified as Ed import Crypto.Random import Crypto.Random.Entropy -import Data.ByteArray (ByteArray) import Data.ByteArray qualified as BA import Data.ByteString (ByteString) @@ -70,10 +69,10 @@ aeadAppendAAD = C.appendAAD aeadFinalizeAAD :: AeadState -> AeadState aeadFinalizeAAD = C.finalizeAAD -encrypt :: ByteArray ba => ba -> AeadState -> ( ba, AeadState ) +encrypt :: ByteString -> AeadState -> ( ByteString, AeadState ) encrypt = C.encrypt -decrypt :: ByteArray ba => ( ba, Auth ) -> AeadState -> Maybe ba +decrypt :: ( ByteString, Auth ) -> AeadState -> Maybe ByteString decrypt ( ctext, auth ) st = do let ( plain, st' ) = C.decrypt ctext st guard (C.finalize st' `BA.constEq` auth) diff --git a/src/crypto/reflibs/Crypto/Cipher/ChaChaPoly1305.hs b/src/crypto/reflibs/Crypto/Cipher/ChaChaPoly1305.hs index 7f0ef20..9071d9f 100644 --- a/src/crypto/reflibs/Crypto/Cipher/ChaChaPoly1305.hs +++ b/src/crypto/reflibs/Crypto/Cipher/ChaChaPoly1305.hs @@ -54,17 +54,17 @@ aeadAppendAAD aad st = st { stAAD = stAAD st ++ [ aad ] } aeadFinalizeAAD :: AeadState -> AeadState aeadFinalizeAAD = id -encrypt :: ByteArray ba => ba -> AeadState -> ( ba, AeadState ) +encrypt :: ByteString -> AeadState -> ( ByteString, AeadState ) encrypt ptext st = let Nonce nonce = stNonce st - ( ctext, mac ) = P.encrypt (B.concat $ stAAD st) (stKey st) nonce (convert ptext) - in ( convert ctext, st { stAuth = Just $ Auth mac } ) + ( ctext, mac ) = P.encrypt (B.concat $ stAAD st) (stKey st) nonce ptext + in ( ctext, st { stAuth = Just $ Auth mac } ) -decrypt :: ByteArray ba => ( ba, Auth ) -> AeadState -> Maybe ba +decrypt :: ( ByteString, Auth ) -> AeadState -> Maybe ByteString decrypt ( ctext, auth ) st = do let Nonce nonce = stNonce st Auth mac = auth - fmap convert $ P.decrypt (B.concat $ stAAD st) (stKey st) nonce ( convert ctext, mac ) + P.decrypt (B.concat $ stAAD st) (stKey st) nonce ( ctext, mac ) aeadFinalize :: AeadState -> Auth aeadFinalize st = case stAuth st of -- cgit v1.2.3