hwormhole-0.1.0.0: src/Transit.hs
-- |
-- Description : A Magic Wormhole library that supports file and directory transfer.
--
-- Magic Wormhole is a technology for getting things from one computer to another, safely.
--
-- To use it, you must use the MagicWormhole library to first establish an encrypted connection:
--
-- 1. Start a 'Rendezvous.Session' with the Rendezvous server, to allow peers to find each other ('Rendezvous.runClient')
-- 2. Negotiate a shared 'Messages.Nameplate' so peers can find each other on the server ('Rendezvous.allocate', 'Rendezvous.list')
-- 3. Use the shared 'Messages.Nameplate' to 'Rendezvous.open' a shared 'Messages.Mailbox'
-- 4. Use a secret password shared between peers to establish an encrypted connection ('Peer.withEncryptedConnection')
--
-- Once you've done this, you can communicate with your peer via 'Transit.send' and 'Transit.receive'.
-- Once can send and receive either Text messages or Files.
--
-- The password is never sent over the wire.
-- Rather, it is used to negotiate a session key using SPAKE2,
-- and that key itself is used to derive many per-message keys,
-- so that each message is encrypted using NaCl SecretBox.
--
module Transit
( App.Env(..)
, App.prepareAppEnv
, App.app
, App.runApp
, Conf.Options(..)
, Conf.Command(..)
, Errors.Error(..)
, FileTransfer.MessageType(..)
, MagicWormhole.parseWebSocketEndpoint
, Network.parseTransitRelayUri
)
where
import qualified Transit.Internal.FileTransfer as FileTransfer
import qualified Transit.Internal.Network as Network
import qualified Transit.Internal.Errors as Errors
import qualified Transit.Internal.Conf as Conf
import qualified Transit.Internal.App as App
import qualified MagicWormhole