-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | An implementation of the OpenID-2.0 spec. -- -- An implementation of the OpenID-2.0 spec. @package openid @version 0.2.1.0 module Text.XRDS type XRDS = [XRD] type XRD = [Service] data Service Service :: [String] -> [String] -> [String] -> [String] -> Maybe Int -> [Element] -> Service [serviceTypes] :: Service -> [String] [serviceMediaTypes] :: Service -> [String] [serviceURIs] :: Service -> [String] [serviceLocalIDs] :: Service -> [String] [servicePriority] :: Service -> Maybe Int [serviceExtra] :: Service -> [Element] -- | Check to see if an XRDS service description is usable. isUsable :: XRDS -> Bool -- | Generate a predicate over Service Types. hasType :: String -> Service -> Bool parseXRDS :: String -> Maybe XRDS instance GHC.Show.Show Text.XRDS.Service module Network.OpenID.Types -- | Supported association types data AssocType HmacSha1 :: AssocType HmacSha256 :: AssocType -- | Session types for association establishment data SessionType NoEncryption :: SessionType DhSha1 :: SessionType DhSha256 :: SessionType -- | An association with a provider. data Association Association :: Int -> String -> [Word8] -> AssocType -> Association [assocExpiresIn] :: Association -> Int [assocHandle] :: Association -> String [assocMacKey] :: Association -> [Word8] [assocType] :: Association -> AssocType -- | Parameter lists for communication with the server type Params = [(String, String)] -- | A return to path type ReturnTo = String -- | A realm of uris for a provider to inform a user about type Realm = String -- | A way to resolve an HTTP request type Resolver m = Request String -> m (Either ConnError (Response String)) -- | An OpenID provider. data Provider -- | Parse a provider parseProvider :: String -> Maybe Provider -- | Show a provider showProvider :: Provider -> String providerURI :: Provider -> URI -- | Modify the URI in a provider modifyProvider :: (URI -> URI) -> Provider -> Provider -- | A valid OpenID identifier. newtype Identifier Identifier :: String -> Identifier [getIdentifier] :: Identifier -> String -- | Errors newtype Error Error :: String -> Error assocString :: AssocType -> String instance GHC.Show.Show Network.OpenID.Types.Error instance GHC.Read.Read Network.OpenID.Types.Identifier instance GHC.Show.Show Network.OpenID.Types.Identifier instance GHC.Classes.Eq Network.OpenID.Types.Identifier instance GHC.Show.Show Network.OpenID.Types.Provider instance GHC.Classes.Eq Network.OpenID.Types.Provider instance GHC.Read.Read Network.OpenID.Types.Association instance GHC.Show.Show Network.OpenID.Types.Association instance GHC.Show.Show Network.OpenID.Types.AssocType instance GHC.Read.Read Network.OpenID.Types.AssocType instance GHC.Show.Show Network.OpenID.Types.SessionType instance GHC.Read.Read Network.OpenID.Types.SessionType module Network.OpenID.Utils -- | Read, maybe. readMaybe :: Read a => String -> Maybe a -- | Break up a string by a predicate. breaks :: (a -> Bool) -> [a] -> [[a]] -- | Spit a list into a pair, removing the element that caused the -- predicate to succeed. split :: (a -> Bool) -> [a] -> ([a], [a]) -- | Build an Integer out of a big-endian list of bytes. roll :: [Word8] -> Integer -- | Turn an Integer into a big-endian list of bytes unroll :: Integer -> [Word8] -- | Pad out a list of bytes to represent a positive, big-endian list of -- bytes. btwoc :: [Word8] -> [Word8] -- | Default modulus for Diffie-Hellman key exchange. defaultModulus :: Integer -- | The OpenID-2.0 namespace. openidNS :: String -- | Read inside of an Exception monad readM :: (ExceptionM m e, Read a) => e -> String -> m a -- | Lookup parameters inside an exception handling monad lookupParam :: ExceptionM m Error => String -> Params -> m String -- | Read a field readParam :: (Read a, ExceptionM m Error) => String -> Params -> m a -- | Make an HTTP request, and run a function with a successful response withResponse :: ExceptionM m Error => Either ConnError (Response String) -> (Response String -> m a) -> m a module Network.OpenID.SSL data SSLHandle sslConnect :: Socket -> IO (Maybe SSLHandle) instance Network.Stream.Stream Network.OpenID.SSL.SSLHandle module Network.OpenID.Normalization -- | Normalize an identifier, discarding XRIs. normalizeIdentifier :: Identifier -> Maybe Identifier -- | Normalize the user supplied identifier, using a supplied function to -- normalize an XRI. normalizeIdentifier' :: (String -> Maybe String) -> Identifier -> Maybe Identifier module Network.OpenID.HTTP -- | Perform an http request. If the Bool parameter is set to True, -- redirects from the server will be followed. makeRequest :: Bool -> Resolver IO getRequest :: URI -> Request String postRequest :: URI -> String -> Request String -- | Turn a response body into a list of parameters. parseDirectResponse :: String -> Params -- | Format OpenID parameters as a query string formatParams :: Params -> String -- | Format OpenID parameters as a direct response formatDirectParams :: Params -> String -- | Escape for the query string of a URI escapeParam :: String -> String -- | Add Parameters to a URI addParams :: Params -> URI -> URI -- | Parse OpenID parameters out of a url string parseParams :: String -> Params module Network.OpenID.Discovery -- | Attempt to resolve an OpenID endpoint, and user identifier. discover :: Monad m => Resolver m -> Identifier -> m (Either Error (Provider, Identifier)) module Network.OpenID.AttributeExchange -- | Some common, useful Attribute Exchange specs. data AXFieldTy AXBirthdate :: AXFieldTy AXEmail :: AXFieldTy AXFirstName :: AXFieldTy AXFullName :: AXFieldTy AXGender :: AXFieldTy AXLanguage :: AXFieldTy AXLastName :: AXFieldTy AXNickname :: AXFieldTy -- | Used to store responses. type AXFieldVal = (AXFieldTy, String) axName :: AXFieldTy -> String axSpec :: AXFieldTy -> String axTyFromName :: String -> Maybe AXFieldTy -- | The simplest use case is to request the user's email. This would be -- used to replace traditional verification emails. axEmailRequired :: Params -- | Use these functions to roll your own list of fields to request when -- you send an auth request axExtParams :: [AXFieldTy] -> Params -- | specify the alias as well as the list of requested fields axExtParams' :: String -> [AXFieldTy] -> Params -- | Retrieve the requested fields from the HTTP request params. Keep | in -- mind the spec does not require that the OpenID Provider return | any -- of our requested fields, even on a successful verification. getAxFields :: Params -> [AXFieldVal] instance GHC.Read.Read Network.OpenID.AttributeExchange.AXFieldTy instance GHC.Classes.Ord Network.OpenID.AttributeExchange.AXFieldTy instance GHC.Show.Show Network.OpenID.AttributeExchange.AXFieldTy instance GHC.Classes.Eq Network.OpenID.AttributeExchange.AXFieldTy module Network.OpenID.Association.Manager -- | Manage pairs of Providers and Associations. class AssociationManager am -- | Find an association. findAssociation :: AssociationManager am => am -> Provider -> Maybe Association -- | Add a new association, and set its expiration to be relative to the -- "now" parameter passed in. addAssociation :: AssociationManager am => am -> UTCTime -> Provider -> Association -> am -- | Expire associations in the manager that are older than the supplied -- "now" parameter. expire :: AssociationManager am => am -> UTCTime -> am -- | Export all associations, and their expirations exportAssociations :: AssociationManager am => am -> [(String, UTCTime, Association)] module Network.OpenID.Association.Map -- | A simple association manager based on Data.Map newtype AssociationMap AM :: (Map String (UTCTime, Association)) -> AssociationMap -- | An empty association map. emptyAssociationMap :: AssociationMap instance GHC.Read.Read Network.OpenID.Association.Map.AssociationMap instance GHC.Show.Show Network.OpenID.Association.Map.AssociationMap instance Network.OpenID.Association.Manager.AssociationManager Network.OpenID.Association.Map.AssociationMap module Data.Digest.OpenSSL.SHA -- | Sha1 hashing sha1 :: [Word8] -> [Word8] -- | Sha256 hashing sha256 :: [Word8] -> [Word8] module Data.Digest.OpenSSL.AlternativeHMAC hmac :: CryptoHashFunction -> ByteString -> ByteString -> IO String -- | Wrapper/rendering function for hmac unsafeHMAC :: CryptoHashFunction -> ByteString -> ByteString -> String -- | Get the hex-string representation of an HMAC showHMAC :: ByteString -> String data CryptoHashFunction -- | Name of the SHA digest, used by getDigestByName sha :: CryptoHashFunction -- | Name of the SHA1 digest, used by getDigestByName sha1 :: CryptoHashFunction -- | Name of the SHA224 digest, used by getDigestByName sha224 :: CryptoHashFunction -- | Name of the SHA256 digest, used by getDigestByName sha256 :: CryptoHashFunction -- | Name of the SHA384 digest, used by getDigestByName sha384 :: CryptoHashFunction -- | Name of the SHA384 digest, used by getDigestByName sha512 :: CryptoHashFunction module Codec.Encryption.DH data DHParams DHParams :: [Word8] -> [Word8] -> Generator -> Modulus -> DHParams [dhPrivateKey] :: DHParams -> [Word8] [dhPublicKey] :: DHParams -> [Word8] [dhGenerator] :: DHParams -> Generator [dhModulus] :: DHParams -> Modulus data DHParamError PNotPrime :: DHParamError PNotSafePrime :: DHParamError UnableToCheckGenerator :: DHParamError NotSuitableGenerator :: DHParamError type Modulus = Integer type Generator = Int newDHParams :: Int -> Generator -> IO (Maybe DHParams) checkDHParams :: DHParams -> IO [DHParamError] generateKey :: Modulus -> Generator -> IO (Maybe DHParams) computeKey :: [Word8] -> DHParams -> [Word8] instance GHC.Show.Show Codec.Encryption.DH.DHParamError instance GHC.Show.Show Codec.Encryption.DH.DHParams -- | Base64 decoding and encoding routines. -- -- Note: This module was taken from the mime package released by Galois, -- Inc. The original author is unknown. module Codec.Binary.Base64 encodeRaw :: Bool -> [Word8] -> String encodeRawString :: Bool -> String -> String encodeRawPrim :: Bool -> Char -> Char -> [Word8] -> String -- | 'formatOutput n mbLT str' formats str, splitting it into -- lines of length n. The optional value lets you control what -- line terminator sequence to use; the default is CRLF (as per MIME.) formatOutput :: Int -> Maybe String -> String -> String decode :: String -> [Word8] decodeToString :: String -> String decodePrim :: Char -> Char -> String -> [Word8] module Network.OpenID.Association -- | Associate with a provider. By default, this tries to use DH-SHA256 and -- HMAC-SHA256, and falls back to whatever the server recommends, if the -- Bool parameter is True. associate :: AssociationManager am => am -> Bool -> Resolver IO -> Provider -> IO (Either Error am) -- | Associate with a provider, attempting to use the provided association -- methods. The Bool specifies whether or not recovery should be -- attempted upon a failed request. associate' :: AssociationManager am => am -> Bool -> Resolver IO -> Provider -> AssocType -> SessionType -> IO (Either Error am) -- | Association monad data Assoc m a -- | Running a computation in the association monad runAssoc :: (Monad m, BaseM m m) => AssocEnv m -> Assoc m a -> m (Either Error a) -- | Association environment data AssocEnv m AssocEnv :: m UTCTime -> (SessionType -> m (Maybe DHParams)) -> AssocEnv m [currentTime] :: AssocEnv m -> m UTCTime [createParams] :: AssocEnv m -> SessionType -> m (Maybe DHParams) -- | A "pure" version of association. It will run in whatever base monad is -- provided, layering exception handling over that. associate_ :: (Monad m, AssociationManager am) => am -> Bool -> Resolver m -> Provider -> AssocType -> SessionType -> Assoc m am instance GHC.Base.Monad m => GHC.Base.Monad (Network.OpenID.Association.Assoc m) instance GHC.Base.Monad m => GHC.Base.Applicative (Network.OpenID.Association.Assoc m) instance GHC.Base.Monad m => GHC.Base.Functor (Network.OpenID.Association.Assoc m) instance MonadLib.MonadT Network.OpenID.Association.Assoc instance GHC.Base.Monad m => MonadLib.ExceptionM (Network.OpenID.Association.Assoc m) Network.OpenID.Types.Error instance GHC.Base.Monad m => MonadLib.ReaderM (Network.OpenID.Association.Assoc m) (Network.OpenID.Association.AssocEnv m) module Network.OpenID.Authentication data CheckIdMode Immediate :: CheckIdMode Setup :: CheckIdMode -- | Generate an authentication URL. The params field allows you to | -- specify any extensions, for example, AttributeExchange. authenticationURI :: AssociationManager am => am -> CheckIdMode -> Provider -> Identifier -> ReturnTo -> Maybe Params -> Maybe Realm -> URI -- | Verify a signature on a set of params. verifyAuthentication :: (Monad m, AssociationManager am) => am -> Params -> ReturnTo -> Resolver m -> m (Either Error ()) instance GHC.Show.Show Network.OpenID.Authentication.CheckIdMode instance GHC.Read.Read Network.OpenID.Authentication.CheckIdMode module Network.OpenID