packages feed

tls-1.9.0: tls.cabal

cabal-version:      >=1.10
name:               tls
version:            1.9.0
license:            BSD3
license-file:       LICENSE
copyright:          Vincent Hanquez <vincent@snarc.org>
maintainer:         Kazu Yamamoto <kazu@iij.ad.jp>
author:             Vincent Hanquez <vincent@snarc.org>
stability:          experimental
homepage:           https://github.com/haskell-tls/hs-tls
synopsis:           TLS/SSL protocol native implementation (Server and Client)
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 TLS1.0, TLS1.1, TLS1.2 and TLS 1.3 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/>.

category:           Network
build-type:         Simple
extra-source-files:
    Tests/*.hs
    CHANGELOG.md

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

flag compat
    description:
        Accept SSLv2 client hello for beginning SSLv3 / TLS handshake

flag network
    description: Use the base network library

flag hans
    description: Use the Haskell Network Stack (HaNS)
    default:     False

library
    exposed-modules:
        Network.TLS
        Network.TLS.Cipher
        Network.TLS.Compression
        Network.TLS.Internal
        Network.TLS.Extra
        Network.TLS.Extra.Cipher
        Network.TLS.Extra.FFDHE
        Network.TLS.QUIC

    other-modules:
        Network.TLS.Cap
        Network.TLS.Struct
        Network.TLS.Struct13
        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.IES
        Network.TLS.Crypto.Types
        Network.TLS.ErrT
        Network.TLS.Extension
        Network.TLS.Handshake
        Network.TLS.Handshake.Certificate
        Network.TLS.Handshake.Client
        Network.TLS.Handshake.Common
        Network.TLS.Handshake.Common13
        Network.TLS.Handshake.Control
        Network.TLS.Handshake.Key
        Network.TLS.Handshake.Process
        Network.TLS.Handshake.Random
        Network.TLS.Handshake.Server
        Network.TLS.Handshake.Signature
        Network.TLS.Handshake.State
        Network.TLS.Handshake.State13
        Network.TLS.Hooks
        Network.TLS.IO
        Network.TLS.Imports
        Network.TLS.KeySchedule
        Network.TLS.MAC
        Network.TLS.Measurement
        Network.TLS.Packet
        Network.TLS.Packet13
        Network.TLS.Parameters
        Network.TLS.PostHandshake
        Network.TLS.Record
        Network.TLS.Record.Disengage
        Network.TLS.Record.Engage
        Network.TLS.Record.Layer
        Network.TLS.Record.Reading
        Network.TLS.Record.Writing
        Network.TLS.Record.State
        Network.TLS.Record.Types
        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

    default-language: Haskell2010
    ghc-options:      -Wall
    build-depends:
        base >=4.9 && <5,
        mtl >=2.2.1,
        transformers,
        cereal >=0.5.3,
        bytestring,
        data-default-class,
        memory >=0.14.6,
        crypton,
        asn1-types >=0.2.0,
        asn1-encoding,
        crypton-x509 >=1.7.5,
        crypton-x509-store >=1.6,
        crypton-x509-validation >=1.6.5,
        async >=2.0,
        unix-time

    if flag(network)
        cpp-options:   -DINCLUDE_NETWORK
        build-depends: network >=2.4.0.0

    if flag(hans)
        cpp-options:   -DINCLUDE_HANS
        build-depends: hans

    if flag(compat)
        cpp-options: -DSSLV2_COMPATIBLE

test-suite test-tls
    type:             exitcode-stdio-1.0
    main-is:          Tests.hs
    hs-source-dirs:   Tests
    other-modules:
        Certificate
        Ciphers
        Connection
        Marshalling
        PipeChan
        PubKey

    default-language: Haskell2010
    ghc-options:      -Wall -fno-warn-unused-imports
    build-depends:
        base >=3 && <5,
        async >=2.0,
        data-default-class,
        tasty,
        tasty-quickcheck,
        tls,
        QuickCheck,
        crypton,
        bytestring,
        asn1-types,
        crypton-x509,
        crypton-x509-validation,
        hourglass

benchmark bench-tls
    type:             exitcode-stdio-1.0
    main-is:          Benchmarks.hs
    hs-source-dirs:   Benchmarks Tests
    other-modules:
        Certificate
        Connection
        PipeChan
        PubKey

    default-language: Haskell2010
    ghc-options:      -Wall -fno-warn-unused-imports
    build-depends:
        base >=4 && <5,
        tls,
        crypton-x509,
        crypton-x509-validation,
        data-default-class,
        crypton,
        gauge,
        bytestring,
        asn1-types,
        async >=2.0,
        hourglass,
        QuickCheck >=2,
        tasty-quickcheck,
        tls