diff options
author | Baylac-Jacqué Félix <felix@alternativebit.fr> | 2017-08-17 16:11:33 +0200 |
---|---|---|
committer | Baylac-Jacqué Félix <felix@alternativebit.fr> | 2017-09-16 17:10:35 +0200 |
commit | e36a4cf345fede7f8b9f6a57ac842bf48fd9c068 (patch) | |
tree | 052c4f45baf7edd5e7e574da246b3740bdf85358 /src/Network/WireGuard/Internal/Data/Types.hs | |
parent | Implement and test RPC show Peer feature. (diff) | |
download | wireguard-hs-e36a4cf345fede7f8b9f6a57ac842bf48fd9c068.tar.xz wireguard-hs-e36a4cf345fede7f8b9f6a57ac842bf48fd9c068.zip |
Extracted RPC types to proper module.
Diffstat (limited to 'src/Network/WireGuard/Internal/Data/Types.hs')
-rw-r--r-- | src/Network/WireGuard/Internal/Data/Types.hs | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/Network/WireGuard/Internal/Data/Types.hs b/src/Network/WireGuard/Internal/Data/Types.hs new file mode 100644 index 0000000..53c3cea --- /dev/null +++ b/src/Network/WireGuard/Internal/Data/Types.hs @@ -0,0 +1,78 @@ +module Network.WireGuard.Internal.Data.Types + ( Index + , Counter + , PeerId + , PublicKey + , PrivateKey + , KeyPair + , PresharedKey + , Time + , UdpPacket + , TunPacket + , EncryptedPayload + , AuthTag + , TAI64n + , SessionKey(..) + , WireGuardError(..) + , getPeerId + , farFuture + ) where + +import Control.Exception (Exception, SomeException) +import qualified Crypto.Noise.DH as DH +import Crypto.Noise.DH.Curve25519 (Curve25519) +import Data.ByteArray (ScrubbedBytes) +import qualified Data.ByteArray as BA +import qualified Data.ByteString as BS +import Foreign.C.Types (CTime (..)) +import Network.Socket (SockAddr) +import System.Posix.Types (EpochTime) + +import Data.Word + +type Index = Word32 +type Counter = Word64 +type PeerId = BS.ByteString + +type PublicKey = DH.PublicKey Curve25519 +type PrivateKey = DH.SecretKey Curve25519 +type KeyPair = DH.KeyPair Curve25519 +type PresharedKey = ScrubbedBytes + +type Time = EpochTime + +type UdpPacket = (BS.ByteString, SockAddr) +type TunPacket = ScrubbedBytes + +type EncryptedPayload = BS.ByteString +type AuthTag = BS.ByteString +type TAI64n = BS.ByteString + +data SessionKey = SessionKey + { sendKey :: !ScrubbedBytes + , recvKey :: !ScrubbedBytes + } + +data WireGuardError + = DecryptFailureError + | DestinationNotReachableError + | DeviceNotReadyError + | EndPointUnknownError + | HandshakeInitiationReplayError + | InvalidIPPacketError + | InvalidWGPacketError String + | NoiseError SomeException + | NonceReuseError + | OutdatedPacketError + | RemotePeerNotFoundError + | SourceAddrBlockedError + | UnknownIndexError + deriving (Show) + +instance Exception WireGuardError + +getPeerId :: PublicKey -> PeerId +getPeerId = BA.convert . DH.dhPubToBytes + +farFuture :: Time +farFuture = CTime maxBound |