jose-0.6.0.0: src/Crypto/JOSE/JWK/Store.hs
-- Copyright (C) 2013, 2014, 2015, 2016 Fraser Tweedale
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
{-# LANGUAGE RankNTypes #-}
{-|
A 'JWKStore' provides JWK enumeration and lookup.
-}
module Crypto.JOSE.JWK.Store
(
JWKStore(..)
) where
import Control.Lens (Fold, folding)
import Crypto.JOSE.Header
import Crypto.JOSE.JWK (JWK, JWKSet(..), KeyOp)
class JWKStore a where
-- | Enumerate keys
keys :: Fold a JWK
-- | Look up key by JWS/JWE header
keysFor
:: ( HasAlg h, HasJku h, HasJwk h, HasKid h
, HasX5u h, HasX5c h, HasX5t h, HasX5tS256 h
, HasTyp h, HasCty h )
=> KeyOp
-> h p
-> Fold a JWK
keysFor _ _ = keys
instance JWKStore JWK where
keys = id
instance JWKStore JWKSet where
keys = folding (\(JWKSet xs) -> xs)