úÎ"Ì!À     portableStable%Michael Snoyman <michael@snoyman.com>=The initialization vector used by AES. Should be exactly 16  bytes long. =The keys used to store the cookies. We have an AES key used ? to encrypt the cookie and a Skein-MAC-512-256 key used verify @ the authencity and integrity of the cookie. The AES key needs = to have exactly 32 bytes (256 bits) while Skein-MAC-512-256 " should have 64 bytes (512 bits).  See also  and  . AES key with 32 bytes. +Skein-MAC key. Instead of storing the key - data, we store a partially applied function  for calculating the MAC (see ). *Construct an initialization vector from a .  Fails if there isn't exactly 16 bytes. 7Randomly construct a fresh initialization vector. You   should not reuse initialization vectors. The default key file.  Simply calls   . $Get a key from the given text file. =If the file does not exist or is corrupted a random key will ' be generated and stored in that file. File name where key is stored. The actual key. +Generate the given number of random bytes. Generate a random . Besides the , the   ByteString passed to   is returned so that it can be  saved for later use. Initializes a  from a random  . Fails if  there isn'2t exactly 96 bytes (256 bits for AES and 512 bits  for Skein-MAC-512-512). Same as  !, however randomly generates the  initialization vector for you. 7Encrypt (AES-CTR), sign (Skein-MAC-512-256) and encode > (Base64) the given cookie data. The returned byte string is ( ready to be used in a response header. Key of the server. 'New, random initialization vector (see ). Serialized cookie data. #Encoded cookie data to be given to  the client browser. 7Decode (Base64), verify the integrity and authenticity = (Skein-MAC-512-256) and decrypt (AES-CTR) the given encoded < cookie data. Returns the original serialized cookie data. ! Fails if the data is corrupted. Key of the server. *Encoded cookie data given by the browser. Serialized cookie data. Dummy  instance.          clientsession-0.7.3Web.ClientSessionIVKeyaesKeymacKeymkIVrandomIVdefaultKeyFile getDefaultKeygetKeyinitKey encryptIOencryptdecrypt skein-0.1 Crypto.Skein skeinMAC'bytestring-0.9.2.0Data.ByteString.Internal ByteString randomBytes randomKey $fShowKeybaseGHC.ShowShow