!j bp1      !"#$%&'()*+,-./0  BSD-style!Sam Protas <sam.protas@gmail.com> experimentalunknownNone:123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij BSD-style!Sam Protas <sam.protas@gmail.com> experimentalunknownNoneklmnopqrstuvwx BSD-style!Sam Protas <sam.protas@gmail.com> experimentalunknownNoneP triplesecPossible decryption Failures  triplesecPossible encryption failures  triplesec'Possible cipher initialization failures triplesec"Exceptions thrown by this library. triplesec4TripleSec cipher used for encryption and decryption.hDealing with this type is only necessary if you wish to use the somewhat lower-level API consisting of encryptWithCipher and decryptWithCipher.You can create a  cipher with  newCipher or newCipherWithSalt. yz{|}~ BSD-style!Sam Protas <sam.protas@gmail.com> experimentalunknownNone> triplesec,Utility function to check that the provided " was built with the provided salt.This function does not9 confirm anything about the passphrase provided when the ] cipher was created or the passphrase used to encrypt a ciphertext where the salt came from. triplesecqUtility function to check that ciphertext is structurally valid and encrypted with a supported TripleSec version.[This function can be used for extracting the salt from a ciphertext to build a cipher with newCipherWithSalt. If you know you've encrypted many things with the same cipher this lets you decrypt them all without continually paying for the expensive key-derivation.MThe only potentially useful output as a consumer of this library is the salt. triplesec&Utility function to check salt length. triplesecSalt triplesec Ciphertext triplesec+(TripleSec prefix, Salt, encrypted payload) triplesecSalt  BSD-style!Sam Protas <sam.protas@gmail.com> experimentalunknownNone>= triplesecORepresents the action of encrypting and decrypting with the TripleSec protocol.sFully implemented with default functions. Any instances must provide a source of randomness and be an instance of . triplesec&Encrypt a plaintext with a passphrase.  encrypt passphrase plaintext triplesecEncrypt a plaintext with a  cipher.This function allows encrypting multiple plaintexts without continually paying for the expensive key-derivation process. Please consider your use case and any risks that come from repeated usage of the same salt for encrypting different pieces of information.&For a simpler alternative, please see . triplesec Create a new  cipher. triplesec@Represents the action of decrypting with the TripleSec protocol.hFully implemented with default functions. Any instances must provide a way to represent failure with a . triplesec'Decrypt a ciphertext with a passphrase.  decrypt passphrase ciphertext triplesecDecrypt a ciphertext with a  cipher.This function allows decrypting multiple ciphertexts without continually paying for the expensive key-derivation process. This function will only work if the given cipher's salt matches that of the ciphertext, otherwise it throws a .&For a simpler alternative, please see . triplesec Create a new  cipher with a provided salt.<Creating a cipher with a specific salt is useful if you know you have several ciphertexts to decrypt, all of which were encrypted with the same cipher (salt + passphrase). Creating the cipher once up front allows you to save time, cpu, and memory by avoiding the expensive key-derivation on subsequent decryptions. " newCipherWithSalt passphrase salt triplesec Passphrase triplesec Plaintext triplesec Ciphertext triplesec Plaintext triplesec Passphrase triplesec Passphrase triplesec Ciphertext triplesec Plaintext triplesec Ciphertext triplesec Passphrase triplesecSalt NoneMP5  triplesecMMonad transformer for decryption only with any non-IO based monad stack (See  TripleSecIOT for > based stacks as it's more powerful and just as easy to use). Use with &7. Useful as it does not require a source of randomness. triplesec;Monad that works "out of the box" for pure decrypting only. Use with '7. Useful as it does not require a source of randomness.  triplesecAMonad transformer for use with any non-IO based monad stack (See  TripleSecIOT for  based stacks). Use with " or #.  can be obtained with .! triplesecAMonad that works "out of the box" for pure encrypting/decrypting. Use with $ or %.  can be obtained with ." triplesec Evaluate a   computation."If you have no use for the output . See #.# triplesec Evaluate a   computation.Do NOT re-use the input  (very bad!). See " for an output  that's safe to use elsewhere.$ triplesec Evaluate a ! computation."If you have no use for the output . See %.% triplesec Evaluate a ! computation.Do NOT re-use the input  (very bad!). See $ for an output  that's safe to use elsewhere.& triplesec Evaluate a  computation.' triplesec Evaluate a  computation.  !"#$%&'NoneM_S ( triplesec8Monad transformer for use with any IO based monad stack.#Does not throw exceptions (returns Either TripleSecException a ). Use with *.) triplesec<Monad that works "out of the box" for encrypting/decrypting.#Does not throw exceptions (returns Either TripleSecException ba ). Use with *.* triplesec Evaluate a ( computation.+ triplesec specialized to  . Throws instead of returning a ., triplesec specialized to  . Throws instead of returning a .- triplesec specialized to  . Throws instead of returning a .. triplesec specialized to  . Throws instead of returning a ./ triplesec specialized to  . Throws instead of returning a .0 triplesec specialized to  . Throws instead of returning a .+ triplesec Passphrase triplesec Plaintext, triplesec Ciphertext- triplesec Passphrase. triplesec Passphrase triplesecSalt/ triplesec Passphrase triplesec Ciphertext0 triplesec Ciphertext ()*+,-./0 BSD-style!Sam Protas <sam.protas@gmail.com> experimentalunknownNone`1  !"#$%&'()*+,-./01 +/-.,0)(*! $%"#'& Nonebl   !"#$%&'()*+,-./0123456789:;<=>?=>@=>A=>B=>C=>D=EF=EF=GH=IJ=IK=IL=IM=IN=IO=IP=IQ=IR=IS=IT=IU=IV=IW=IX=IY=IZ=I[=I\=I]=I^=I_=I`=Ia=Ib=Ic=Id=Ie=If=Ig=Ih=ij=ik=il=im=no=np=nq=nr=ns=tu=tv=tw=tx=ty=tz=t{=t|=}~*,4(triplesec-0.2.2.0-HL1l51yg5o052iTcXaIPrpCrypto.TripleSecCrypto.TripleSec.InternalCrypto.TripleSec.ConstantsCrypto.TripleSec.TypesCrypto.TripleSec.UtilsCrypto.TripleSec.ClassCrypto.TripleSec.PureCrypto.TripleSec.IOCrypto.TripleSec.Tutorial%cryptonite-0.25-1VY3WdimbMoh8etp8TxXECrypto.Random.SystemDRG getSystemDRG SystemDRGDecryptionFailureInvalidCipherTextLengthInvalidMagicBytesInvalidVersionInvalidSha512HmacInvalidKeccakHmacMisMatchedCipherSaltEncryptionFailureZeroLengthPlaintextCipherInitFailureZeroLengthPasswordInvalidSaltLengthTripleSecExceptionCipherInitExceptionEncryptionExceptionDecryptionException TripleSec checkCipher checkPrefix checkSalt CanTripleSecencryptencryptWithCipher newCipherCanTripleSecDecryptdecryptdecryptWithCiphernewCipherWithSaltTripleSecDecryptTTripleSecDecryptM TripleSecT TripleSecM runTripleSecTevalTripleSecT runTripleSecMevalTripleSecMrunTripleSecDecryptTrunTripleSecDecryptM TripleSecIOT TripleSecIOMrunTripleSecIO encryptIOencryptWithCipherIO newCipherIOnewCipherWithSaltIO decryptIOdecryptWithCipherIO%memory-0.14.18-8LdYq1aaDAu34qW98bOKgtData.ByteArray.Types ByteArrayallocRetByteArrayAccesslength withByteArraycopyByteArrayToPtrData.ByteArray.MemViewMemViewData.ByteArray.ScrubbedBytes ScrubbedBytesData.ByteArray.MethodsalloccreateallocAndFreeze unsafeCreateemptynullpackunpackuncons singletonconssnocxorindexsplitAttakedropspanreverseconcatappendcopycopyRet copyAndFreeze replicatezeroeqconstEqanyallconvertData.ByteArray.ViewViewviewtakeViewdropViewData.ByteArray.MappingtoW64BEtoW64LE fromW64BE mapAsWord128 mapAsWord64Data.ByteArray.EncodingBaseBase16Base32Base64Base64URLUnpadded Base64OpenBSD convertToBaseconvertFromBaseData.ByteArray.BytesBytes magicBytespackedMagicBytes versionBytespackedVersionBytessaltLen macOutputLen macKeyLen cipherKeyLenivLen salsaIvLen totalIvLendkLenoverhead paramsScryptxSalsatwoFishaes hmacSHA512 hmacKeccak512 passwordSalttrustedCipherInit initXSalsa xSalsaCombine checkLengthcheckMagicBytescheckVersionBytes decryptCommonghc-prim GHC.TypesIOrunInIO