Name:                tls
Version:             1.3.3
Description:
   Native Haskell TLS and SSL protocol implementation for server and client.
   .
   This provides a high-level implementation of a sensitive security protocol,
   eliminating a common set of security issues through the use of the advanced
   type system, high level constructions and common Haskell features.
   .
   Currently implement the SSL3.0, TLS1.0, TLS1.1 and TLS1.2 protocol,
   and support RSA and Ephemeral (Elliptic curve and regular) Diffie Hellman key exchanges,
   and many extensions.
   .
   Some debug tools linked with tls, are available through the
   <http://hackage.haskell.org/package/tls-debug/>.
License:             BSD3
License-file:        LICENSE
Copyright:           Vincent Hanquez <vincent@snarc.org>
Author:              Vincent Hanquez <vincent@snarc.org>
Maintainer:          Vincent Hanquez <vincent@snarc.org>
Synopsis:            TLS/SSL protocol native implementation (Server and Client)
Build-Type:          Simple
Category:            Network
stability:           experimental
Cabal-Version:       >=1.8
Homepage:            http://github.com/vincenthz/hs-tls
extra-source-files:  Tests/*.hs
                     CHANGELOG.md

Flag compat
  Description:       Accept SSLv2 compatible handshake
  Default:           True

Flag network
  Description:       Use the base network library
  Default:           True

Flag hans
  Description:       Use the Haskell Network Stack (HaNS)
  Default:           False

Library
  Build-Depends:     base >= 3 && < 5
                   , mtl
                   , transformers
                   , cereal >= 0.4
                   , bytestring
                   , data-default-class
                   -- crypto related
                   , memory
                   , cryptonite >= 0.7
                   -- certificate related
                   , asn1-types >= 0.2.0
                   , asn1-encoding
                   , x509 >= 1.6.2 && < 1.7.0
                   , x509-store >= 1.6
                   , x509-validation >= 1.6.3 && < 1.7.0
                   , async
  if flag(network)
    Build-Depends:   network
    cpp-options:     -DINCLUDE_NETWORK
  if flag(hans)
    Build-Depends:   hans
    cpp-options:     -DINCLUDE_HANS
  Exposed-modules:   Network.TLS
                     Network.TLS.Cipher
                     Network.TLS.Compression
                     Network.TLS.Internal
                     Network.TLS.Extra
                     Network.TLS.Extra.Cipher
  other-modules:     Network.TLS.Cap
                     Network.TLS.Struct
                     Network.TLS.Core
                     Network.TLS.Context
                     Network.TLS.Context.Internal
                     Network.TLS.Credentials
                     Network.TLS.Backend
                     Network.TLS.Crypto
                     Network.TLS.Crypto.DH
                     Network.TLS.Crypto.ECDH
                     Network.TLS.ErrT
                     Network.TLS.Extension
                     Network.TLS.Extension.EC
                     Network.TLS.Handshake
                     Network.TLS.Handshake.Common
                     Network.TLS.Handshake.Certificate
                     Network.TLS.Handshake.Key
                     Network.TLS.Handshake.Client
                     Network.TLS.Handshake.Server
                     Network.TLS.Handshake.Process
                     Network.TLS.Handshake.Signature
                     Network.TLS.Handshake.State
                     Network.TLS.Hooks
                     Network.TLS.IO
                     Network.TLS.MAC
                     Network.TLS.Measurement
                     Network.TLS.Packet
                     Network.TLS.Parameters
                     Network.TLS.Record
                     Network.TLS.Record.Types
                     Network.TLS.Record.Engage
                     Network.TLS.Record.Disengage
                     Network.TLS.Record.State
                     Network.TLS.RNG
                     Network.TLS.State
                     Network.TLS.Session
                     Network.TLS.Sending
                     Network.TLS.Receiving
                     Network.TLS.Util
                     Network.TLS.Util.ASN1
                     Network.TLS.Util.Serialization
                     Network.TLS.Types
                     Network.TLS.Wire
                     Network.TLS.X509
  ghc-options:       -Wall -fwarn-tabs
  if flag(compat)
    cpp-options:     -DSSLV2_COMPATIBLE

Test-Suite test-tls
  type:              exitcode-stdio-1.0
  hs-source-dirs:    Tests
  Main-is:           Tests.hs
  Build-Depends:     base >= 3 && < 5
                   , mtl
                   , cereal >= 0.3
                   , data-default-class
                   , tasty
                   , tasty-quickcheck
                   , QuickCheck
                   , cryptonite
                   , bytestring
                   , x509
                   , x509-validation
                   , tls
                   , hourglass
  ghc-options:       -Wall -fno-warn-orphans -fno-warn-missing-signatures -fwarn-tabs

Benchmark bench-tls
  hs-source-dirs:    Benchmarks Tests
  Main-Is:           Benchmarks.hs
  type:              exitcode-stdio-1.0
  Build-depends:     base >= 4 && < 5
                   , tls
                   , x509
                   , x509-validation
                   , data-default-class
                   , cryptonite
                   , criterion
                   , mtl
                   , bytestring
                   , hourglass
                   , QuickCheck >= 2

source-repository head
  type: git
  location: git://github.com/vincenthz/hs-tls
  subdir: core
