packages feed

acme-not-a-joke-wai-0.1.0.0: acme-not-a-joke-wai.cabal

cabal-version:      2.4
name:               acme-not-a-joke-wai
version:            0.1.0.0

-- A short (one-line) description of the package.
synopsis: ACME http-01 and tls-alpn-01 challenges and live certificates for wai/warp

-- A longer description of the package.
description: a wai middleware and a step handler to validate HTTP-01 challenges (rfc-8555) with the acme-not-a-joke library, so that a wai/warp application can get its own TLS certificates, and TLS settings answering TLS-ALPN-01 challenges (rfc-8737) from a running warp-tls server, without port 80. Also has a certificate store read by warp-tls at each handshake, so that new certificates are served without restarting.

-- The license under which the package is released.
license: BSD-3-Clause
license-file: LICENSE
homepage: https://lucasdicioccio.github.io/acme-not-a-joke/
bug-reports: https://github.com/lucasdicioccio/acme-not-a-joke/issues
author:             Lucas DiCioccio
maintainer:         lucas@dicioccio.fr

-- A copyright notice.
copyright: Lucas DiCioccio 2023-2026
category: Security
tested-with: GHC == 9.8.2 || == 9.10.3
extra-doc-files: CHANGELOG.md README.md

source-repository head
    type: git
    location: https://github.com/lucasdicioccio/acme-not-a-joke.git
    subdir: acme-not-a-joke-wai

flag example
    description: build the example program (a warp server getting its own certificate)
    default: False
    manual: True

library
    hs-source-dirs: src
    ghc-options: -Wall
    default-language: Haskell2010
    default-extensions: OverloadedStrings OverloadedRecordDot
    exposed-modules:
      Acme.NotAJoke.Wai.Http01
      Acme.NotAJoke.Wai.TlsAlpn01
      Acme.NotAJoke.Wai.WarpTLS
    build-depends:
      acme-not-a-joke >= 0.2 && < 0.3,
      base >= 4.19.1 && < 5,
      bytestring >= 0.12.1 && < 0.13,
      containers >= 0.6.8 && < 0.8,
      text >= 2.1.1 && < 2.2,
      time >= 1.12.2 && < 1.13,
      http-types >= 0.12.4 && < 0.13,
      wai >= 3.2.4 && < 3.3,
      crypton >= 1.0 && < 1.1,
      crypton-x509 >= 1.8 && < 1.9,
      tls >= 2.1.3 && < 2.5,
      warp-tls >= 3.4.13 && < 3.5,

executable acme-not-a-joke-wai-example
    if !flag(example)
      buildable: False
    hs-source-dirs: example
    main-is: Main.hs
    ghc-options: -Wall -threaded
    default-language: Haskell2010
    default-extensions: OverloadedStrings
    build-depends:
      acme-not-a-joke,
      acme-not-a-joke-wai,
      base,
      directory >= 1.3.8 && < 1.4,
      filepath >= 1.4.200 && < 1.6,
      http-types,
      text,
      wai,
      warp >= 3.4 && < 3.5,
      warp-tls,

test-suite http01
    type: exitcode-stdio-1.0
    hs-source-dirs: test
    main-is: Main.hs
    ghc-options: -Wall
    default-language: Haskell2010
    default-extensions: OverloadedStrings
    build-depends:
      acme-not-a-joke,
      acme-not-a-joke-wai,
      base,
      bytestring,
      http-types,
      wai,

test-suite warp-tls
    type: exitcode-stdio-1.0
    hs-source-dirs: test
    main-is: WarpTLS.hs
    ghc-options: -Wall -threaded
    default-language: Haskell2010
    default-extensions: OverloadedStrings
    build-depends:
      acme-not-a-joke,
      acme-not-a-joke-wai,
      base,
      crypton,
      crypton-asn1-types,
      crypton-x509,
      http-types,
      network,
      time-hourglass,
      tls,
      wai,
      warp,
      warp-tls,

test-suite tls-alpn-01
    type: exitcode-stdio-1.0
    hs-source-dirs: test
    main-is: TlsAlpn01.hs
    ghc-options: -Wall -threaded
    default-language: Haskell2010
    default-extensions: OverloadedStrings
    build-depends:
      acme-not-a-joke,
      acme-not-a-joke-wai,
      base,
      bytestring,
      crypton,
      crypton-asn1-encoding,
      crypton-asn1-types,
      crypton-x509,
      crypton-x509-validation,
      http-types,
      network,
      time-hourglass,
      tls,
      wai,
      warp,
      warp-tls,