packages feed

shomei-jwt-0.2.0.0: shomei-jwt.cabal

cabal-version:   3.0
name:            shomei-jwt
version:         0.2.0.0
synopsis:        JWT access-token signing/verification and JWKS publishing
description:
  Interprets Shōmei's signing-key effects with jose. Signs and verifies ES256
  (or, configurably, RS256) access tokens and OpenID Connect ID tokens,
  publishes the JWKS document that relying services fetch to verify those
  tokens offline, and implements key rotation with an overlap window so a
  retired key keeps verifying outstanding tokens until they expire. Depends
  only on shomei-core, so it can be used without Shōmei's HTTP or PostgreSQL
  layers.

homepage:        https://github.com/shinzui/shomei
bug-reports:     https://github.com/shinzui/shomei/issues
license:         MIT
license-file:    LICENSE
author:          Nadeem Bitar
maintainer:      nadeem@gmail.com
copyright:       2026 Nadeem Bitar
category:        Web, Security
tested-with:     GHC ==9.12.4
extra-doc-files: CHANGELOG.md

source-repository head
  type:     git
  location: https://github.com/shinzui/shomei.git

common warnings
  ghc-options:
    -Wall -Wcompat -Widentities -Wincomplete-record-updates
    -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints

common shared
  default-language:   GHC2024
  default-extensions:
    BlockArguments
    DeriveAnyClass
    DuplicateRecordFields
    MultilineStrings
    OverloadedLabels
    OverloadedRecordDot
    OverloadedStrings
    QualifiedDo
    TemplateHaskell

library
  import:          warnings, shared
  hs-source-dirs:  src
  exposed-modules:
    Shomei.SigningKey.Jwks.Jwt
    Shomei.SigningKey.Key.Jwt
    Shomei.SigningKey.Protection.Jwt
    Shomei.SigningKey.Rotation.Jwt
    Shomei.SigningKey.Sign.Jwt
    Shomei.SigningKey.Verify.Jwt

  build-depends:
    , aeson              >=2.1      && <2.3
    , base               >=4.18     && <5
    , base64-bytestring  >=1.2      && <1.3
    , bytestring         >=0.11     && <0.13
    , containers         >=0.6      && <0.9
    , crypton            >=1.1.0    && <1.2
    , effectful          >=2.5      && <2.8
    , effectful-core     >=2.5      && <2.8
    , jose               >=0.13     && <0.14
    , lens               >=5.2      && <5.4
    , monad-time         >=0.4      && <0.5
    , mtl                >=2.3      && <2.4
    , ram                >=0.22     && <0.23
    , shomei-core        ^>=0.2.0.0
    , text               >=2.0      && <2.2
    , time               >=1.12     && <1.15

test-suite shomei-jwt-test
  import:         warnings, shared
  type:           exitcode-stdio-1.0
  hs-source-dirs: test
  main-is:        Main.hs
  other-modules:
    Shomei.SigningKey.Interpreter.JwtSpec
    Shomei.SigningKey.Jwks.JwtSpec
    Shomei.SigningKey.Key.JwtSpec
    Shomei.SigningKey.Protection.JwtSpec
    Shomei.SigningKey.Rotation.JwtSpec
    Shomei.SigningKey.Sign.IdTokenSpec
    Shomei.SigningKey.Sign.JwtSpec
    Shomei.SigningKey.Sign.RsaCustomClaimSpec
    Shomei.SigningKey.TestSupport
    Shomei.SigningKey.Verify.JwtSpec

  build-depends:
    , aeson        >=2.1      && <2.3
    , base         >=4.18     && <5
    , bytestring   >=0.11     && <0.13
    , containers   >=0.6      && <0.9
    , effectful    >=2.5      && <2.8
    , jose         >=0.13     && <0.14
    , lens         >=5.2      && <5.4
    , ram          >=0.22     && <0.23
    , shomei-core  ^>=0.2.0.0
    , shomei-jwt   ^>=0.2.0.0
    , tasty        >=1.4      && <1.6
    , tasty-hunit  >=0.10     && <0.11
    , text         >=2.0      && <2.2
    , time         >=1.12     && <1.15