libjwt-typed-0.1: test/Interop/JWTHelpers.hs
module Interop.JWTHelpers
( mkSigner
, mkJWTAlgorithm
)
where
import Web.Libjwt ( Alg(..)
, RsaKeyPair(..)
, Secret(..)
)
import Data.Maybe ( fromMaybe )
import qualified Web.JWT as JWT
mkSigner :: Alg -> Maybe JWT.Signer
mkSigner (HS256 secret) = Just $ JWT.HMACSecret $ reveal secret
mkSigner (RS256 pem ) = Just $ mkRSAPrivateKey pem
mkSigner None = Nothing
mkSigner _ = error "Unsupported alg"
mkRSAPrivateKey :: RsaKeyPair -> JWT.Signer
mkRSAPrivateKey pem =
JWT.RSAPrivateKey
$ fromMaybe (error $ "JWT.readRsaSecret on\n" ++ show pem)
$ JWT.readRsaSecret
$ privKey pem
mkJWTAlgorithm :: Alg -> Maybe JWT.Algorithm
mkJWTAlgorithm None = Nothing
mkJWTAlgorithm (HS256 _) = Just JWT.HS256
mkJWTAlgorithm (RS256 _) = Just JWT.RS256
mkJWTAlgorithm _ = error "Unsupported algorithm"