{-# LANGUAGE OverloadedStrings #-}
module Network.SSH.Algorithms where

import           Network.SSH.Name

data HostKeyAlgorithm
    = SshEd25519
    deriving (Eq, Show)

data KeyExchangeAlgorithm
    = Curve25519Sha256AtLibsshDotOrg
    deriving (Eq, Show)

data EncryptionAlgorithm
    = Chacha20Poly1305AtOpensshDotCom
    deriving (Eq, Show)

data CompressionAlgorithm
    = None
    deriving (Eq, Show)

instance HasName HostKeyAlgorithm where
    name SshEd25519 = Name "ssh-ed25519"

instance HasName KeyExchangeAlgorithm where
    name Curve25519Sha256AtLibsshDotOrg = Name "curve25519-sha256@libssh.org"

instance HasName EncryptionAlgorithm where
    name Chacha20Poly1305AtOpensshDotCom = Name "chacha20-poly1305@openssh.com"

instance HasName CompressionAlgorithm where
    name None = Name "none"