!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x yz{|}~ Portability :'Trevor Elliott <trevor@geekgateway.com>None Portability :'Trevor Elliott <trevor@geekgateway.com>None 7Check to see if an XRDS service description is usable. BGenerate a tag name predicate, that ignores prefix and namespace. 6Filter the attributes of an element by some predicate  Read, maybe Get the text of an element )Generate a predicate over Service Types.        Portability : 'Trevor Elliott <trevor@geekgateway.com>None Errors A valid OpenID identifier. An OpenID provider. !A way to resolve an HTTP request 6A realm of uris for a provider to inform a user about A return to path 2Parameter lists for communication with the server  An association with a provider. ,Session types for association establishment $Supported association types (Parse a provider )Show a provider *Modify the URI in a provider  !"#$%&'()* !"#$%&'()*$&% #"!()*' #"!$&%'()* Stability :None + Read, maybe. ,"Break up a string by a predicate. -KSpit a list into a pair, removing the element that caused the predicate to  succeed. .4Build an Integer out of a big-endian list of bytes. /0Turn an Integer into a big-endian list of bytes 0KPad out a list of bytes to represent a positive, big-endian list of bytes. 1The OpenID-2.0 namespace. 21Default modulus for Diffie-Hellman key exchange. 3"Read inside of an Exception monad 45Lookup parameters inside an exception handling monad 5 Read a field 6DMake an HTTP request, and run a function with a successful response +,-./0123456 +,-./0123456 +,-./0213456 +,-./0123456 Portability :'Trevor Elliott <trevor@geekgateway.com>None7,Manage pairs of Providers and Associations. 8Find an association. 9DAdd a new association, and set its expiration to be relative to the now  parameter passed in. :DExpire associations in the manager that are older than the supplied now  parameter. ;/Export all associations, and their expirations 789:;789:;789:;789:; Portability :'Trevor Elliott <trevor@geekgateway.com>None</A simple association manager based on Data.Map >An empty association map. <=><=><=><=>Portability : 'Trevor Elliott <trevor@geekgateway.com>None?*Normalize an identifier, discarding XRIs. @ENormalize the user supplied identifier, using a supplied function to  normalize an XRI. ?@?@?@?@ Portability :'Trevor Elliott <trevor@geekgateway.com>None APerform an http request. K If the Bool parameter is set to True, redirects from the server will be  followed. Follow a redirect :Get the port and hostname associated with an http request D0Turn a response body into a list of parameters. E+Format OpenID parameters as a query string F.Format OpenID parameters as a direct response G%Escape for the query string of a URI HAdd Parameters to a URI I,Parse OpenID parameters out of a url string ABCDEFGHI ABCDEFGHI ABCDEFGHI ABCDEFGHI  Portability :'Trevor Elliott <trevor@geekgateway.com>NoneJ<Attempt to resolve an OpenID endpoint, and user identifier. JAttempt a YADIS based discovery, given a valid identifier. The result is ? an OpenID endpoint, and the actual identifier for the user. EParse out an OpenID endpoint, and actual identifier from a YADIS xml  document. KAttempt to discover an OpenID endpoint, from an HTML document. The result H will be an endpoint on success, and the actual identifier of the user. CParse out an OpenID endpoint and an actual identifier from an HTML  document. /Filter out link tags from a list of html tags. *Split a string into strings of html tags. Split out values from a key=value like string, in a way that # is suitable for use with unfoldr. JJJ J NoneKUsed to store responses. L.Some common, useful Attribute Exchange specs. X,The simplest use case is to request the user's email. This would be 4 used to replace traditional verification emails. YDUse these functions to roll your own list of fields to request when  you send an auth request Z:specify the alias as well as the list of requested fields [ARetrieve the requested fields from the HTTP request params. Keep E | in mind the spec does not require that the OpenID Provider return C | any of our requested fields, even on a successful verification. KLMNOPQRSTUVWXY#params we want them to send in the  id_res mode verification Zalias. it doesn't really matter  what this is as long as we're  consistent params we require in the id_res  mode verification [KLMNOPQRSTUVWXYZ[LTSRQPONMKUVWXYZ[KLTSRQPONMUVWXYZ[  Stability :None\ Sha1 hashing ]Sha256 hashing 5General purpose digest function wrapper for OpenSSL. \]\]\] \] None_0Name of the SHA digest, used by getDigestByName `1Name of the SHA1 digest, used by getDigestByName a3Name of the SHA224 digest, used by getDigestByName b3Name of the SHA256 digest, used by getDigestByName c3Name of the SHA384 digest, used by getDigestByName d3Name of the SHA384 digest, used by getDigestByName e-Get the hex-string representation of an HMAC fWrapper/rendering function for hmac ^_`abcde the HMAC the hex-string representation fthe name of the digest  the HMAC key the data to be signed -the hex-representation of the resulting HMAC g ^_`abcdefg gfe^_`abcd ^_`abcdefg None/Figure out how many bytes are used by a BIGNUM &hijklmnopqrstuvwxhijklmnopqrstuvwxmnopqrhlkjistuwvxhlkjimnopqrstuvwxGHCStability : unstableNonez'formatOutput n mbLT str' formats str, splitting it  into lines of length n+. The optional value lets you control what E line terminator sequence to use; the default is CRLF (as per MIME.) yz{|}~yz{|}~{y|z~}yz{|}~Stability : NoneAssociation monad Association environment ?Check to see if an AssocType and SessionType pairing is valid. KGenerate parameters for Diffie-Hellman key exchange, based on the provided  SessionType.  Turn DHParams into a list of key/"value pairs that can be sent to a  Provider. +Give the hash algorithm for a session type HGet the mac key from a set of Diffie-Hellman parameters, and the public  key of the server. Associate with a provider. N By default, this tries to use DH-SHA256 and HMAC-SHA256, and falls back to B whatever the server recommends, if the Bool parameter is True. FAssociate with a provider, attempting to use the provided association L methods. The Bool specifies whether or not recovery should be attempted  upon a failed request. /Running a computation in the association monad 7Use the underlying monad to retrieve the current time. <Generate Diffie-Hellman parameters in the underlying monad. A pure@ version of association. It will run in whatever base monad is 4 provided, layering exception handling over that. /Attempt to recover from an association failure -Handle the response to an associate request. 789:;<=>  Portability :'Trevor Elliott <trevor@geekgateway.com>NoneGet the mac hash type )Parse a provider within the Result monad /Get the signed fields from a set of parameters ?Generate an authentication URL. The params field allows you to ; | specify any extensions, for example, AttributeExchange. 'Verify a signature on a set of params. Verify an assertion directly Verify with an association !Your pre-established assocations Use this if you want to try to  use OpenID's Immediate mode. Some  providers won't ever let this  mode succeed, whereas some won't  even prompt the user in Setup  mode and go straight for the ! redirect. It is safe to use the  Setup mode only. The OpenID provider's (e.g  Google or Yahoo) OpenID URI  The identity URI you are trying  to verify. Please note that a  number of providers no longer  encode their services' usernames  into the URI. After the user verifies that  they are indeed them with the  OpenID provider, where should  said provider redirect them? Additional params for OpenID ! extensions. You can use this to  verify a user's email using  Attribute Extensions.   Portability :'Trevor Elliott <trevor@geekgateway.com>None[ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[  !!"#$%&'())*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m j n k o p q r s t u v w x y y z { | } ~  9#    l  < = openid-0.2.0.2Network.OpenID.SSL Text.XRDSNetwork.OpenID.TypesNetwork.OpenID.Utils"Network.OpenID.Association.ManagerNetwork.OpenID.Association.MapNetwork.OpenID.NormalizationNetwork.OpenID.HTTPNetwork.OpenID.Discovery Network.OpenID.AttributeExchangeData.Digest.OpenSSL.SHA#Data.Digest.OpenSSL.AlternativeHMACCodec.Encryption.DHCodec.Binary.Base64Network.OpenID.AssociationNetwork.OpenID.AuthenticationNetwork.OpenID SSLHandle sslConnectService serviceTypesserviceMediaTypes serviceURIsserviceLocalIDsservicePriority serviceExtraXRDXRDSisUsablehasType parseXRDSError Identifier getIdentifierProvider providerURIResolverRealmReturnToParams AssociationassocExpiresIn assocHandle assocMacKey assocType SessionTypeDhSha256DhSha1 NoEncryption AssocType HmacSha256HmacSha1 assocString parseProvider showProvidermodifyProvider readMaybebreakssplitrollunrollbtwocopenidNSdefaultModulusreadM lookupParam readParam withResponseAssociationManagerfindAssociationaddAssociationexpireexportAssociationsAssociationMapAMemptyAssociationMapnormalizeIdentifiernormalizeIdentifier' makeRequest getRequest postRequestparseDirectResponse formatParamsformatDirectParams escapeParam addParams parseParamsdiscover AXFieldVal AXFieldTy AXNickname AXLastName AXLanguageAXGender AXFullName AXFirstNameAXEmail AXBirthdateaxNameaxSpec axTyFromNameaxEmailRequired axExtParams axExtParams' getAxFieldssha1sha256CryptoHashFunctionshasha224sha384sha512showHMAC unsafeHMAChmac DHParamErrorNotSuitableGeneratorUnableToCheckGenerator PNotSafePrime PNotPrimeDHParams dhPrivateKey dhPublicKey dhGenerator dhModulusModulus Generator newDHParams generateKey checkDHParams computeKeyencodeRawString formatOutput encodeRaw encodeRawPrimdecodeToStringdecode decodePrimAssocAssocEnv currentTime createParams associate associate'runAssoc associate_ CheckIdModeSetup ImmediateauthenticationURIverifyAuthenticationwrapwrapRead sslReadWhile$fStreamSSLHandletag findAttr'getTextparseXRD parseService$fReadSessionType$fShowSessionType"$fAssociationManagerAssociationMaphandleRedirect getAuthority discoverYADIS parseYADIS discoverHTML parseHTMLlinkTagshtmlTags splitAttrM defaultAlias extNamespaceextNamespacePrefixextMode_fetchRequestformatRequestFieldformatRequiredVal getAxFields' getAxAliashashWith EVP_MD_CTXEVP_MD c_EVP_sha256 c_EVP_sha1c_EVP_DigestFinal_exc_EVP_DigestUpdatec_EVP_DigestInit_exc_EVP_MD_CTX_destroyc_EVP_MD_CTX_createnumBytesBIGNUM c_BN_num_bits c_BN_free c_BN_bn2bin c_BN_bin2bn c_DH_free c_DH_size c_DH_checkc_DH_compute_keyc_DH_generate_keyc_DH_generate_parametersc_DH_newwithDH dhToDHParams codesToErrors withBIGNUMbin2bnbn2binencode3decoderdecode4toB64fromB64low6lowByte validPairingnewSessionTypeParamsdhPairshash decodeMacKeygetTime newParamsrecoverAssociationhandleAssociation$fReaderMAssocAssocEnv$fExceptionMAssocError $fMonadTAssocmacHashparseProvider'getSignedFields verifyDirectverifyWithAssociation$fReadCheckIdMode$fShowCheckIdMode