úÎaļZ91      !"#$%&'()*+,-./0  BSD-style!Sam Protas <sam.protas@gmail.com> experimentalunknownNonePossible decryption Failures Possible encryption failures 'Possible cipher initialization failures"Exceptions thrown by this library.4TripleSec 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. 12345678 1234567   12345678 BSD-style!Sam Protas <sam.protas@gmail.com> experimentalunknownNone89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop BSD-style!Sam Protas <sam.protas@gmail.com> experimentalunknownNoneqrstuvwxyz{|}~qrstuvwxyz{|}~qrstuvwxyz{|}~ BSD-style!Sam Protas <sam.protas@gmail.com> experimentalunknownNone:,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.qUtility 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.&Utility function to check salt length. €Salt Ciphertext+(TripleSec prefix, Salt, encrypted payload)Salt‚ƒ„ €‚ƒ„ €‚ƒ„ BSD-style!Sam Protas <sam.protas@gmail.com> experimentalunknownNone:ORepresents 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 .&Encrypt a plaintext with a passphrase.  encrypt passphrase plaintextEncrypt 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 . Create a new  cipher.@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 .'Decrypt a ciphertext with a passphrase.  decrypt passphrase ciphertextDecrypt 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 . 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 … ……NoneI 8Monad transformer for use with any IO based monad stack.#Does not throw exceptions (returns Either TripleSecException a ). Use with  .<Monad that works "out of the box" for encrypting/decrypting.#Does not throw exceptions (returns Either TripleSecException ba ). Use with  .  Evaluate a  computation.! specialized to † . Throws instead of returning a ." specialized to † . Throws instead of returning a .# specialized to † . Throws instead of returning a .$ specialized to † . Throws instead of returning a .% specialized to † . Throws instead of returning a .& specialized to † . Throws instead of returning a .‡ ˆ! Passphrase Plaintext" Ciphertext# Passphrase$ PassphraseSalt% Passphrase Ciphertext& Ciphertext‰Š‹ ‡ ˆ!"#$%& ‡ ˆ!"#$%&‰Š‹NoneI 'MMonad 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.(;Monad that works "out of the box" for pure decrypting only. Use with 07. Useful as it does not require a source of randomness.)AMonad transformer for use with any non-IO based monad stack (See  TripleSecIOT for † based stacks). Use with + or ,.  can be obtained with .*AMonad that works "out of the box" for pure encrypting/decrypting. Use with - or ..  can be obtained with .+ Evaluate a ) computation."If you have no use for the output . See ,., Evaluate a ) computation.Do NOT re-use the input  (very bad!). See + for an output  that's safe to use elsewhere.- Evaluate a * computation."If you have no use for the output . See ... Evaluate a * computation.Do NOT re-use the input  (very bad!). See - for an output  that's safe to use elsewhere./ Evaluate a ' computation.0 Evaluate a ( computation.'Œ()*+,-./0Ž‘’ 'Œ()*+,-./0'Œ()*+,-./0Ž‘’ BSD-style!Sam Protas <sam.protas@gmail.com> experimentalunknownNone1  !"#$%&'()*+,-./01 !%#$"& *)-.+,('0/ None“   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFDEGDEHDEIDEJDKLDMNDMODMPDMQDMRDMSDMTDMUDMVDMWDMXDMYDMZDM[DM\DM]DM^DM_DM`DMaDMbDMcDMdDMeDMfDMgDMhDMiDMjDMkDlmDlnDloDlpDqrDqrDstDsuDsvDswDsxDyzDy{Dy|Dy}Dy~DyDy€DyD‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›*œžŸ35 ĄĒĢĪĨ(triplesec-0.1.2.0-2xn3N22ekbdIml2LWQcJJsCrypto.TripleSecCrypto.TripleSec.TypesCrypto.TripleSec.InternalCrypto.TripleSec.ConstantsCrypto.TripleSec.UtilsCrypto.TripleSec.ClassCrypto.TripleSec.IOCrypto.TripleSec.PureCrypto.TripleSec.Tutorial&cryptonite-0.23-L7zg09DMHNOHYETuRkFXokCrypto.Random.SystemDRG getSystemDRG SystemDRGDecryptionFailureInvalidCipherTextLengthInvalidMagicBytesInvalidVersionInvalidSha512HmacInvalidKeccakHmacMisMatchedCipherSaltEncryptionFailureZeroLengthPlaintextCipherInitFailureZeroLengthPasswordInvalidSaltLengthTripleSecExceptionCipherInitExceptionEncryptionExceptionDecryptionException TripleSec checkCipher checkPrefix checkSalt CanTripleSecencryptencryptWithCipher newCipherCanTripleSecDecryptdecryptdecryptWithCiphernewCipherWithSalt TripleSecIOT TripleSecIOMrunTripleSecIO encryptIOencryptWithCipherIO newCipherIOnewCipherWithSaltIO decryptIOdecryptWithCipherIOTripleSecDecryptTTripleSecDecryptM TripleSecT TripleSecM runTripleSecTevalTripleSecT runTripleSecMevalTripleSecMrunTripleSecDecryptTrunTripleSecDecryptM passwordSalt hmacKeccak512 hmacSHA512aestwoFishxSalsa$fExceptionTripleSecException$memory-0.14.5-AInA4gy2yjW63P70DXGsWRData.ByteArray.Types ByteArrayallocRetByteArrayAccesslength withByteArrayData.ByteArray.ScrubbedBytes ScrubbedBytesData.ByteArray.MethodsalloccreateallocAndFreeze unsafeCreateemptynullpackunpackuncons singletonconssnocxorindexsplitAttakedropspanconcatappendcopycopyRet copyAndFreeze replicatezeroeqconstEqanyallconvertData.ByteArray.ViewViewviewtakeViewdropViewData.ByteArray.MemViewMemViewData.ByteArray.MappingtoW64BEtoW64LE fromW64BE mapAsWord128 mapAsWord64Data.ByteArray.EncodingBaseBase16Base32Base64Base64URLUnpadded Base64OpenBSD convertToBaseconvertFromBaseData.ByteArray.BytesBytes magicBytespackedMagicBytes versionBytespackedVersionBytessaltLen macOutputLen macKeyLen cipherKeyLenivLen salsaIvLen totalIvLendkLenoverhead paramsScrypttrustedCipherInit initXSalsa xSalsaCombine checkLengthcheckMagicBytescheckVersionBytes decryptCommonghc-prim GHC.TypesIOrunInIO$fCanTripleSecTripleSecIOT!$fCanTripleSecDecryptTripleSecIOT$fMonadRandomTripleSecIOT&$fCanTripleSecDecryptTripleSecDecryptT$fMonadTransTripleSecT$fCanTripleSecTripleSecT$fCanTripleSecDecryptTripleSecT$fMonadRandomTripleSecT