diff --git a/build.Dockerfile b/build.Dockerfile index c8cf42928..a7d670e25 100644 --- a/build.Dockerfile +++ b/build.Dockerfile @@ -4,16 +4,14 @@ FROM ubuntu:focal AS build ### Build stage # Install curl and git and smp-related dependencies -RUN apt-get update && apt-get install -y curl git build-essential libgmp3-dev zlib1g-dev +RUN apt-get update && apt-get install -y curl git build-essential libgmp3-dev zlib1g-dev llvm llvm-dev libnuma-dev # Install ghcup -RUN curl https://downloads.haskell.org/~ghcup/x86_64-linux-ghcup -o /usr/bin/ghcup && \ - chmod +x /usr/bin/ghcup +RUN curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_GHC_VERSION=8.10.7 BOOTSTRAP_HASKELL_CABAL_VERSION=3.6.2.0 sh + +# Adjust PATH +ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:$PATH" -# Install ghc -RUN ghcup install ghc 8.10.7 -# Install cabal -RUN ghcup install cabal # Set both as default RUN ghcup set ghc 8.10.7 && \ ghcup set cabal @@ -21,9 +19,6 @@ RUN ghcup set ghc 8.10.7 && \ COPY . /project WORKDIR /project -# Adjust PATH -ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:$PATH" - # Compile smp-server RUN cabal update RUN cabal install @@ -33,7 +28,7 @@ RUN cabal install FROM final # Install OpenSSL dependency -RUN apt-get update && apt-get install -y openssl +RUN apt-get update && apt-get install -y openssl libnuma-dev # Copy compiled smp-server from build stage COPY --from=build /root/.cabal/bin/smp-server /usr/bin/smp-server diff --git a/src/Simplex/Messaging/Crypto.hs b/src/Simplex/Messaging/Crypto.hs index dcc8d595a..1d66a3824 100644 --- a/src/Simplex/Messaging/Crypto.hs +++ b/src/Simplex/Messaging/Crypto.hs @@ -127,8 +127,9 @@ module Simplex.Messaging.Crypto -- * pseudo-random bytes pseudoRandomBytes, - -- * hash + -- * digests sha256Hash, + sha512Hash, -- * Message padding / un-padding pad, @@ -154,7 +155,7 @@ import Crypto.Cipher.AES (AES256) import qualified Crypto.Cipher.Types as AES import qualified Crypto.Cipher.XSalsa as XSalsa import qualified Crypto.Error as CE -import Crypto.Hash (Digest, SHA256, hash) +import Crypto.Hash (Digest, SHA256, SHA512, hash) import qualified Crypto.MAC.Poly1305 as Poly1305 import qualified Crypto.PubKey.Curve25519 as X25519 import qualified Crypto.PubKey.Curve448 as X448 @@ -809,6 +810,10 @@ instance FromField KeyHash where fromField = blobFieldDecoder $ parseAll strP sha256Hash :: ByteString -> ByteString sha256Hash = BA.convert . (hash :: ByteString -> Digest SHA256) +-- | SHA512 digest. +sha512Hash :: ByteString -> ByteString +sha512Hash = BA.convert . (hash :: ByteString -> Digest SHA512) + -- | AEAD-GCM encryption with associated data. -- -- Used as part of double ratchet encryption.