packages feed

jose-0.11: jose.cabal

cabal-version:       2.2
name:                jose
version:             0.11
synopsis:
  JSON Object Signing and Encryption (JOSE) and JSON Web Token (JWT) library
description:
  .
  Implementation of JSON Object Signing and Encryption
  (JOSE) and JSON Web Token (JWT; RFC 7519).
  .
  The JSON Web Signature (JWS; RFC 7515) implementation is complete.
  .
  EdDSA signatures (RFC 8037) and secp256k1 (RFC 8812) are supported.
  .
  JWK Thumbprint (RFC 7638) is supported.
  .
  JSON Web Encryption (JWE; RFC 7516) is not yet implemented.
  .
  The __ECDSA implementation is vulnerable to timing attacks__ and
  should only be used for verification.

homepage:            https://github.com/frasertweedale/hs-jose
bug-reports:         https://github.com/frasertweedale/hs-jose/issues
license:             Apache-2.0
license-file:        LICENSE
extra-source-files:
  CHANGELOG.md
  README.md
  test/data/fido.jwt
author:              Fraser Tweedale
maintainer:          frase@frase.id.au
copyright:           Copyright (C) 2013-2021  Fraser Tweedale
category:            Cryptography
build-type:          Simple
tested-with:
  GHC ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.7 || ==9.4.7 || ==9.6.3 || == 9.8.1

flag demos
  description: Build demonstration programs
  default: False

common common
  default-language: Haskell2010
  ghc-options:
    -Wall
    -Widentities
    -Wincomplete-record-updates
    -Wincomplete-uni-patterns
    -Werror=missing-methods
  if impl(ghc >= 8.0)
    ghc-options:
      -Wcompat
      -Wnoncanonical-monad-instances
      -Wredundant-constraints
  if impl(ghc >= 8.2)
    ghc-options:
      -fhide-source-paths
  if impl(ghc >= 8.4)
    ghc-options:
      -Wmissing-export-lists
      -Wpartial-fields
  if impl(ghc >= 8.10)
    ghc-options:
      -Wunused-packages
  if impl(ghc >= 9.0)
    ghc-options:
      -Winvalid-haddock
      -Werror=unicode-bidirectional-format-characters
  if impl(ghc >= 9.2)
    ghc-options:
      -Wimplicit-lift
      -Woperator-whitespace
      -Wredundant-bang-patterns
  if impl(ghc >= 9.4)
    ghc-options:
      -Wredundant-strictness-flags

  build-depends:
    base >= 4.13 && < 5
    , bytestring >= 0.10 && < 0.13
    , lens >= 4.16
    , mtl >= 2.2.1

library
  import: common

  exposed-modules:
    Crypto.JOSE
    Crypto.JOSE.Compact
    Crypto.JOSE.Error
    Crypto.JOSE.Header
    Crypto.JOSE.JWE
    Crypto.JOSE.JWK
    Crypto.JOSE.JWK.Store
    Crypto.JOSE.JWS
    Crypto.JOSE.Types
    Crypto.JWT
    Crypto.JOSE.AESKW
    Crypto.JOSE.JWA.JWK
    Crypto.JOSE.JWA.JWS
    Crypto.JOSE.JWA.JWE
    Crypto.JOSE.JWA.JWE.Alg

  other-modules:
    Crypto.JOSE.TH
    Crypto.JOSE.Types.Internal
    Crypto.JOSE.Types.URI

  build-depends:
    , aeson >= 2.0.1.0 && < 3
    , base64-bytestring >= 1.2.1.0 && < 1.3
    , concise >= 0.1
    , containers >= 0.5
    , crypton >= 0.31
    , memory >= 0.7
    , monad-time >= 0.3
    , template-haskell >= 2.11
    , text >= 1.1
    , time >= 1.5
    , network-uri >= 2.6
    , crypton-x509 >= 1.7.6

  hs-source-dirs: src

source-repository head
  type: git
  location: https://github.com/frasertweedale/hs-jose.git

test-suite tests
  import: common
  type:           exitcode-stdio-1.0
  hs-source-dirs: test
  main-is:        Test.hs
  other-modules:
    AESKW
    Examples
    JWK
    JWS
    JWT
    Properties
    Types

  build-depends:
    , aeson
    , base64-bytestring
    , containers
    , crypton
    , time
    , network-uri
    , crypton-x509
    , pem

    , concise
    , jose

    , tasty
    , tasty-hedgehog >= 1.2
    , tasty-hspec >= 1.0
    , hedgehog
    , hspec

test-suite perf
  import: common
  type:           exitcode-stdio-1.0
  hs-source-dirs: test
  main-is:        Perf.hs
  build-depends:
    jose

executable jose-example
  import: common
  if !flag(demos)
    buildable: False
  hs-source-dirs: example
  main-is:  Main.hs
  other-modules:
    KeyDB
    JWS

  build-depends:
    aeson
    , text
    , unix
    , jose