jose-0.2.31.0: src/Crypto/JOSE/Classes.hs
-- Copyright (C) 2013, 2014 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 TypeFamilies #-}
{-|
Type classes for use with the JOSE modules.
-}
module Crypto.JOSE.Classes
(
module Crypto.Random
, Key(..)
) where
import qualified Data.ByteString as B
import Crypto.Random
import qualified Crypto.JOSE.JWA.JWS as JWA.JWS
import Crypto.JOSE.Error
-- | A Key that can sign messages and validate signatures according
-- to a given 'Alg'.
--
-- Can fail with 'AlgorithmMismatch'
--
class Key k where
type KeyGenParam k
type KeyContent k
gen :: CPRG g => KeyGenParam k -> g -> (k, g)
fromKeyContent :: KeyContent k -> k
sign
:: CPRG g
=> JWA.JWS.Alg
-> k
-> g
-> B.ByteString
-> (Either Error B.ByteString, g)
verify
:: JWA.JWS.Alg
-> k
-> B.ByteString
-> B.ByteString
-> Either Error Bool