jose-0.9: JSON Object Signing and Encryption (JOSE) and JSON Web Token (JWT) library
Safe HaskellNone
LanguageHaskell2010

Crypto.JOSE.JWA.JWK

Description

Cryptographic Algorithms for Keys.

Synopsis

Type classes

class AsPublicKey k where Source #

Keys that may have have public material

Methods

asPublicKey :: Getter k (Maybe k) Source #

Get the public key

Instances

Instances details
AsPublicKey RSAKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

AsPublicKey ECKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

AsPublicKey KeyMaterial Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

asPublicKey :: Getter KeyMaterial (Maybe KeyMaterial) Source #

AsPublicKey OKPKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

AsPublicKey JWK Source # 
Instance details

Defined in Crypto.JOSE.JWK

Methods

asPublicKey :: Getter JWK (Maybe JWK) Source #

Parameters for Elliptic Curve Keys

data Crv Source #

"crv" (Curve) Parameter

Constructors

P_256 
P_384 
P_521 

Instances

Instances details
Eq Crv Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

(==) :: Crv -> Crv -> Bool

(/=) :: Crv -> Crv -> Bool

Ord Crv Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

compare :: Crv -> Crv -> Ordering

(<) :: Crv -> Crv -> Bool

(<=) :: Crv -> Crv -> Bool

(>) :: Crv -> Crv -> Bool

(>=) :: Crv -> Crv -> Bool

max :: Crv -> Crv -> Crv

min :: Crv -> Crv -> Crv

Show Crv Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

showsPrec :: Int -> Crv -> ShowS

show :: Crv -> String

showList :: [Crv] -> ShowS

FromJSON Crv Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

parseJSON :: Value -> Parser Crv

parseJSONList :: Value -> Parser [Crv]

ToJSON Crv Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

toJSON :: Crv -> Value

toEncoding :: Crv -> Encoding

toJSONList :: [Crv] -> Value

toEncodingList :: [Crv] -> Encoding

Arbitrary Crv Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

arbitrary :: Gen Crv

shrink :: Crv -> [Crv]

data ECKeyParameters Source #

Parameters for Elliptic Curve Keys

Instances

Instances details
Eq ECKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Show ECKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

showsPrec :: Int -> ECKeyParameters -> ShowS

show :: ECKeyParameters -> String

showList :: [ECKeyParameters] -> ShowS

FromJSON ECKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

parseJSON :: Value -> Parser ECKeyParameters

parseJSONList :: Value -> Parser [ECKeyParameters]

ToJSON ECKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

toJSON :: ECKeyParameters -> Value

toEncoding :: ECKeyParameters -> Encoding

toJSONList :: [ECKeyParameters] -> Value

toEncodingList :: [ECKeyParameters] -> Encoding

Arbitrary ECKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

AsPublicKey ECKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

curve :: Crv -> Curve Source #

ecPrivateKey :: (MonadError e m, AsError e) => ECKeyParameters -> m Integer Source #

Parameters for RSA Keys

data RSAPrivateKeyOthElem Source #

"oth" (Other Primes Info) Parameter

Instances

Instances details
Eq RSAPrivateKeyOthElem Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Show RSAPrivateKeyOthElem Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

showsPrec :: Int -> RSAPrivateKeyOthElem -> ShowS

show :: RSAPrivateKeyOthElem -> String

showList :: [RSAPrivateKeyOthElem] -> ShowS

FromJSON RSAPrivateKeyOthElem Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

parseJSON :: Value -> Parser RSAPrivateKeyOthElem

parseJSONList :: Value -> Parser [RSAPrivateKeyOthElem]

ToJSON RSAPrivateKeyOthElem Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Arbitrary RSAPrivateKeyOthElem Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

data RSAPrivateKeyOptionalParameters Source #

Optional parameters for RSA private keys

data RSAKeyParameters Source #

Parameters for RSA Keys

Instances

Instances details
Eq RSAKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Show RSAKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

showsPrec :: Int -> RSAKeyParameters -> ShowS

show :: RSAKeyParameters -> String

showList :: [RSAKeyParameters] -> ShowS

FromJSON RSAKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

parseJSON :: Value -> Parser RSAKeyParameters

parseJSONList :: Value -> Parser [RSAKeyParameters]

ToJSON RSAKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Arbitrary RSAKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

AsPublicKey RSAKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

genRSA :: MonadRandom m => Int -> m RSAKeyParameters Source #

Parameters for Symmetric Keys

newtype OctKeyParameters Source #

Symmetric key parameters data.

Instances

Instances details
Eq OctKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Show OctKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

showsPrec :: Int -> OctKeyParameters -> ShowS

show :: OctKeyParameters -> String

showList :: [OctKeyParameters] -> ShowS

FromJSON OctKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

parseJSON :: Value -> Parser OctKeyParameters

parseJSONList :: Value -> Parser [OctKeyParameters]

ToJSON OctKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Arbitrary OctKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Parameters for CFRG EC keys (RFC 8037)

data OKPKeyParameters Source #

Constructors

Ed25519Key PublicKey (Maybe SecretKey) 
X25519Key PublicKey (Maybe SecretKey) 

Instances

Instances details
Eq OKPKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Show OKPKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

showsPrec :: Int -> OKPKeyParameters -> ShowS

show :: OKPKeyParameters -> String

showList :: [OKPKeyParameters] -> ShowS

FromJSON OKPKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

parseJSON :: Value -> Parser OKPKeyParameters

parseJSONList :: Value -> Parser [OKPKeyParameters]

ToJSON OKPKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Arbitrary OKPKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

AsPublicKey OKPKeyParameters Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

data OKPCrv Source #

Constructors

Ed25519 
X25519 

Instances

Instances details
Eq OKPCrv Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

(==) :: OKPCrv -> OKPCrv -> Bool

(/=) :: OKPCrv -> OKPCrv -> Bool

Show OKPCrv Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

showsPrec :: Int -> OKPCrv -> ShowS

show :: OKPCrv -> String

showList :: [OKPCrv] -> ShowS

Arbitrary OKPCrv Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

arbitrary :: Gen OKPCrv

shrink :: OKPCrv -> [OKPCrv]

Key generation

data KeyMaterialGenParam Source #

Keygen parameters.

Constructors

ECGenParam Crv

Generate an EC key with specified curve.

RSAGenParam Int

Generate an RSA key with specified size in bytes.

OctGenParam Int

Generate a symmetric key with specified size in bytes.

OKPGenParam OKPCrv

Generate an EdDSA or Edwards ECDH key with specified curve.

Instances

Instances details
Eq KeyMaterialGenParam Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Show KeyMaterialGenParam Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

showsPrec :: Int -> KeyMaterialGenParam -> ShowS

show :: KeyMaterialGenParam -> String

showList :: [KeyMaterialGenParam] -> ShowS

Arbitrary KeyMaterialGenParam Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

data KeyMaterial Source #

Key material sum type.

Instances

Instances details
Eq KeyMaterial Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

(==) :: KeyMaterial -> KeyMaterial -> Bool

(/=) :: KeyMaterial -> KeyMaterial -> Bool

Show KeyMaterial Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

showsPrec :: Int -> KeyMaterial -> ShowS

show :: KeyMaterial -> String

showList :: [KeyMaterial] -> ShowS

FromJSON KeyMaterial Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

parseJSON :: Value -> Parser KeyMaterial

parseJSONList :: Value -> Parser [KeyMaterial]

ToJSON KeyMaterial Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

toJSON :: KeyMaterial -> Value

toEncoding :: KeyMaterial -> Encoding

toJSONList :: [KeyMaterial] -> Value

toEncodingList :: [KeyMaterial] -> Encoding

Arbitrary KeyMaterial Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

AsPublicKey KeyMaterial Source # 
Instance details

Defined in Crypto.JOSE.JWA.JWK

Methods

asPublicKey :: Getter KeyMaterial (Maybe KeyMaterial) Source #

Signing and verification

sign :: (MonadRandom m, MonadError e m, AsError e) => Alg -> KeyMaterial -> ByteString -> m ByteString Source #

verify :: (MonadError e m, AsError e) => Alg -> KeyMaterial -> ByteString -> ByteString -> m Bool Source #