{-# LANGUAGE OverloadedStrings #-} ---------------------------------------------------------------- -- | -- Module : Crypto.Noise.HandshakePatterns -- Maintainer : John Galt -- Stability : experimental -- Portability : POSIX -- -- This module contains all of the handshake patterns specified in sections -- 8.2 and 8.3 as well as unspecified patterns found in previous drafts of -- the protocol. module Crypto.Noise.HandshakePatterns ( -- * Types HandshakePattern -- * Functions , noiseNN , noiseKN , noiseNK , noiseKK , noiseNX , noiseKX , noiseXN , noiseIN , noiseXK , noiseIK , noiseXX , noiseIX , noiseN , noiseK , noiseX , noiseXXfallback ) where import Crypto.Noise.Internal.HandshakePattern -- | @Noise_NN(): -- -> e -- <- e, ee@ noiseNN :: HandshakePattern noiseNN = HandshakePattern "NN" $ do initiator e responder $ do e ee -- | @Noise_KN(s): -- -> s -- ... -- -> e -- <- e, ee, se@ noiseKN :: HandshakePattern noiseKN = HandshakePattern "KN" $ do preInitiator s initiator e responder $ do e ee se -- | @Noise_NK(rs): -- <- s -- ... -- -> e, es -- <- e, ee@ noiseNK :: HandshakePattern noiseNK = HandshakePattern "NK" $ do preResponder s initiator $ do e es responder $ do e ee -- | @Noise_KK(s, rs): -- -> s -- <- s -- ... -- -> e, es, ss -- <- e, ee, se@ noiseKK :: HandshakePattern noiseKK = HandshakePattern "KK" $ do preInitiator s preResponder s initiator $ do e es ss responder $ do e ee se -- | @Noise_NX(rs): -- -> e -- <- e, ee, s, es@ noiseNX :: HandshakePattern noiseNX = HandshakePattern "NX" $ do initiator e responder $ do e ee s es -- | @Noise_KX(s, rs): -- -> s -- ... -- -> e -- <- e, ee, se, s, es@ noiseKX :: HandshakePattern noiseKX = HandshakePattern "KX" $ do preInitiator s initiator e responder $ do e ee se s es -- | @Noise_XN(s): -- -> e -- <- e, ee -- -> s, se@ noiseXN :: HandshakePattern noiseXN = HandshakePattern "XN" $ do initiator e responder $ do e ee initiator $ do s se -- | @Noise_IN(s): -- -> e, s -- <- e, ee, se@ noiseIN :: HandshakePattern noiseIN = HandshakePattern "IN" $ do initiator $ do e s responder $ do e ee se -- | @Noise_XK(s, rs): -- <- s -- ... -- -> e, es -- <- e, ee -- -> s, se@ noiseXK :: HandshakePattern noiseXK = HandshakePattern "XK" $ do preResponder s initiator $ do e es responder $ do e ee initiator $ do s se -- | @Noise_IK(s, rs): -- <- s -- ... -- -> e, es, s, ss -- <- e, ee, se@ noiseIK :: HandshakePattern noiseIK = HandshakePattern "IK" $ do preResponder s initiator $ do e es s ss responder $ do e ee se -- | @Noise_XX(s, rs): -- -> e -- <- e, ee, s, es -- -> s, se@ noiseXX :: HandshakePattern noiseXX = HandshakePattern "XX" $ do initiator e responder $ do e ee s es initiator $ do s se -- | @Noise_IX(s, rs): -- -> e, s -- <- e, ee, se, s, es@ noiseIX :: HandshakePattern noiseIX = HandshakePattern "IX" $ do initiator $ do e s responder $ do e ee se s es -- | @Noise_N(rs): -- <- s -- ... -- -> e, es@ noiseN :: HandshakePattern noiseN = HandshakePattern "N" $ do preResponder s initiator $ do e es -- | @Noise_K(s, rs): -- -> s -- <- s -- ... -- -> e, es, ss@ noiseK :: HandshakePattern noiseK = HandshakePattern "K" $ do preInitiator s preResponder s initiator $ do e es ss -- | @Noise_X(s, rs): -- <- s -- ... -- -> e, es, s, ss@ noiseX :: HandshakePattern noiseX = HandshakePattern "X" $ do preResponder s initiator $ do e es s ss -- | @Noise_XXfallback(s, rs, re): -- <- e -- ... -- -> e, ee, s, se -- <- s, es noiseXXfallback :: HandshakePattern noiseXXfallback = HandshakePattern "XXfallback" $ do preResponder e initiator $ do e ee s se responder $ do s es