h$%N"z      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY  Safe-InferredZ[\]^_`a1Cryptographically secure pseudo random generator.(c) Piyush P Kurur, 2016Apache-2.0 OR BSD-3-Clause!Piyush P Kurur  experimentalNone#$9> raaz(Elements that can be randomly generated. raaz Subclass of b which can be randomly generated. It might appear that all instances of the class b should be be instances of this class, after all we know the size of the element, why not write that many random bytes. In fact, this module provides an  which does that. However, we do not give a blanket definition for all storables because for certain refinements of a given type, like for example, Word8's modulo 10,  introduces unacceptable skews. raaz7Fill the buffer with so many random elements of type a.raaz?Fill the given generalised pointer buffer with random elements.raaz-Execute an action that takes the CSPRG state.raazExecute an action that takes a memory element and random state such that all the memory allocated for both of them is locked.raaz/Randomise the contents of an accessible memory.raazRun a memory action which is passed a memory cell whose contents are randomised with cryptographically secure pseudo-random bytes.raaz Similar to  but all memory allocation is locked. Use this when the randomised content is to be protected from swapping.raazThis is a helper function that has been exported to simplify the definition of a   instance for b types. However, there is a reason why we do not give a blanket instance for all instances of the b class and why this function is unsafe. This function generates a random element of type a by generating n random bytes where n! is the size of the elements of a&. For instances that range the entire n byte space this is fine. However, if the type is actually a refinement of such a type, (consider a c modulo 10 for example) this function might generate unacceptable skew in the distribution. Hence this function is prefixed unsafe.raazGenerate a random byteString. raaznumber of elements to fillraazThe buffer to fillraaz%The action that requires csprg state.raaz%The action that requires random stateraaz memory actionraaz memory action    None ; defghijklmMessage authentication(c) Piyush P Kurur, 2016Apache-2.0 OR BSD-3-Clause!Piyush P Kurur  experimentalNoneU=raazThe authentication context for incremental computation of auth tag.>raazThe type of authentication tag.?raaz7Compute the authenticator of a pure byte source like,   .@raaz%Compute the authenticator for a file.Araaz6Compute the authenticator of an arbitrary byte source.BraazPrepare the context to (re)start a session of incremental processing.CraazAdd some more data into the context, in this case the entirety of the byte source src.Draaz/Finalise the context to get hold of the digest.?raazMessage@raazFile to be authedBraazThe key to be used=>?@ABCD>?@A=BCD (c) Piyush P Kurur, 2016Apache-2.0 OR BSD-3-Clause!Piyush P Kurur  experimentalNoneHraaz Similar to lockWith but an explicit nounce is taken as input. Reusing the key-nounce pair will compromise the security and hence using this function is unsafe. The user needs to ensure the freshness of the key, nounce pair through some other means.Some protocols have a predefined way to pick nounces and this is the reason, we provide such an interface. If that is not a concern, we recommend the use of lockWith instead.IraazLocks a given message but needs an explicit nounce. Reusing the key-nounce pair will compromise the security and hence using this function is unsafe. The user needs to ensure the freshness of the key, nounce pair through some other means.Some protocols have a predefined way to pick nounces and this is the reason we provide such an interface. If that is not a concern, we recommend the use of lock instead.Jraaz/Get the cipher text part of the Locked message.Kraaz3Get the authentication token of the Locked message.LraazConstruct the locked message out of the nounce, cipher text, and the authentication tag.IraazThe keyraaz The nounceraazThe object to be locked.Lraaz(The nounce used for locking this messageraazThe cipher textraazthe Authentication tagEFGHIJKL (c) Piyush P Kurur, 2016Apache-2.0 OR BSD-3-Clause!Piyush P Kurur  experimentalNoneMraazThis function locks a plain text message together with and additional authenticated data to produce an AEAD token. A peer who has the right key and the additional authenticated data can recover the unencrypted object using the N function.Unlike H, this function does not require a nounce as internally a random nounce is generated and used each time. As a result we do not put any restriction on the key used; it is safe to use the same key multiple times.NraazUnlock an encrypted authenticated version of the data given the additional data, key, and nounce. An attempt to unlock the element can result in n$ if either of the following is true. 4The key/nounce used to encrypt the data is different#The Authenticated additional data (aad) is incorrect7The cipher text is of the wrong type and hence the o failed:The Locked message has been tampered with by the adversaryThe interface provided does not indicate which of the above failures had happened. This is a deliberate design as revealing the nature of the failure can leak information to a potential attacker.OraazGenerate a locked version of an unencrypted object. You will need the exact same key to P the object. Unlike  unsafelock, this function does not require a nounce as internally a random nounce is generated and used each time. Because of this, it is safe to use the same key multiple times.PraazUnlock the locked version of an object. You will need the exact same key that was used to lock the object.Mraaz"the authenticated additional data.raazThe keyraazthe unencrypted objectNraaz"the authenticated additional data.raazThe key for the stream cipherraazThe message to unlockOraazThe keyraazThe object to be locked.PraazThe keyraaz"Locked object that needs unlockingFGMNOPAuthenticated encryption(c) Piyush P Kurur, 2016Apache-2.0 OR BSD-3-Clause!Piyush P Kurur  experimentalNoneFGMNOPOPMNGF(c) Piyush P Kurur, 2016Apache-2.0 OR BSD-3-Clause!Piyush P Kurur  experimentalNone;EFGHIJKLGIHFEJKL Noneh pqrstuvwxyMessage digest.(c) Piyush P Kurur, 2016Apache-2.0 OR BSD-3-Clause!Piyush P Kurur  experimentalNone!HQraazThe context type used for incremental processing of input. Incremental processing first collects data into the context and when the context buffer is full, processes it in one go using the digest compression routine. parameter n measures how many blocks of data can be held in the context till the compression routine is invoked.RraazThe digest type.Sraaz.Compute the digest of a pure byte source like   .TraazCompute the digest of file.Uraaz/Compute the digest of an arbitrary byte source.VraazPrepare the context to (re)start a session of incremental processing.WraazAdd some more data into the context, in this case the entirety of the byte source src.Xraaz/Finalise the context to get hold of the digest.SraazMessageTraazFile to be digestedQRSTUVWXRSTUQVWX,High level, type safe, cryptographic library(c) Piyush P Kurur, 2016Apache-2.0 OR BSD-3-Clause!Piyush P Kurur  experimentalNone"-YraazRaaz library version number.?@ABCDFGMNOPQRSTUVWXYY !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\Z[]Z[^ _ ` a b c d e f ghijklmnoppqrstuvwxyzx{|}[T}[U}[V}[~}[Y}[}[W}[X}[S}[Rx[~[j[k[l[o[[m[n[i[h!raaz-0.3.2-AvEi7ZhQdU64DPMN73Hf8xRaaz Raaz.Random Raaz.AuthRaaz.AuthEncrypt.UnsafeRaaz.AuthEncrypt Raaz.Digest Paths_raaz Raaz.V1.AuthB ByteStringRaaz.V1.AuthEncrypt.UnsafeRaaz.V1.AuthEncryptRaaz.V1.Digest&raaz-0.3.2-AvEi7ZhQdU64DPMN73Hf8x-coreRaaz.Core.Memory withMemorywithSecureMemoryRaaz.Core.PrimitiveKeyNounce0raaz-0.3.2-AvEi7ZhQdU64DPMN73Hf8x-implementationEntropy entropySourceraaz-0.3.2-AvEi7ZhQdU64DPMN73Hf8x-random-api+FtTGPuiTWuD8edcmIZCOV3 PRGeneratorcsprgDescription csprgNamefillRandomBytesreseed RandomStateRandomrandomRandomStorablefillRandomElements fillRandomwithRandomStatewithSecureRandomStaterandomiseMemorywithRandomisedMemorywithSecureRandomisedMemoryunsafeFillRandomElementsrandomByteString$fRandomStorableTuple$fRandomStorableBE$fRandomStorableLE$fRandomStorableR$fRandomStorableNounce$fRandomStorableKey$fRandomStorableNounce0$fRandomStorableKey0$fRandomStorableInt$fRandomStorableInt64$fRandomStorableInt32$fRandomStorableInt16$fRandomStorableInt8$fRandomStorableWord$fRandomStorableWord64$fRandomStorableWord32$fRandomStorableWord16$fRandomStorableWord8 $fRandomTuple $fRandomBE $fRandomLE $fRandomR $fRandomKey$fRandomNounce $fRandomKey0$fRandomNounce0 $fRandomKey1 $fRandomInt64 $fRandomInt32 $fRandomInt16 $fRandomInt8$fRandomWord64$fRandomWord32$fRandomWord16 $fRandomWord8$fRandom(,,,,) $fRandom(,,,) $fRandom(,,) $fRandom(,)AuthCxtAuthauthauthFile authSource startAuth updateAuth finaliseAuthraaz-0.3.2-AvEi7ZhQdU64DPMN73Hf8x-aead-api+6v9nudSRVlN4BiL1Hzn0QK InterfaceAuthTagCipherLockedunsafeLockWith unsafeLockunsafeToCipherTextunsafeToAuthTag unsafeLockedlockWith unlockWithlockunlock DigestCxtDigestdigest digestFile digestSource startDigest updateDigestfinaliseDigestversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamebaseForeign.StorableStorableGHC.WordWord8raaz-0.3.2-AvEi7ZhQdU64DPMN73Hf8x-auth-api+DMqzyauYsrMCc3a0vYiyq2 descriptionname GHC.MaybeNothingRaaz.Core.Encode.InternalfromByteStringraaz-0.3.2-AvEi7ZhQdU64DPMN73Hf8x-digest-api+iRyyYqLN3S6sEBz4qOplDRaaz.Core.Encodedecodeencode translate unsafeDecodeRaaz.Core.Encode.Base16 fromBase16 showBase16Base16Raaz.Core.Encode.Base64Base64 Encodable toByteStringunsafeFromByteStringFormat decodeFormatencodeByteString