Idris2Doc : Text.Crypt

Text.Crypt

(source)

Reexports

importpublic Data.DPair

Definitions

dataSaltQuality : Type
  Quality of a salt/setting string to be used for hashing
a passphrase. This can also be the prefix of an already
encrypted string. `Legacy` means that the settings are
no longer considered to be strong enough and their usage
is discouraged.

Totality: total
Visibility: public export
Constructors:
OK : SaltQuality
Invalid : SaltQuality
Legacy : SaltQuality

Hints:
EqSaltQuality
ShowSaltQuality
dataCryptMethod : Type
Totality: total
Visibility: public export
Constructors:
YesCrypt : CryptMethod
GhostYesCrypt : CryptMethod
SCrypt : CryptMethod
BCrypt : CryptMethod
SHA512Crypt : CryptMethod
SHA256Crypt : CryptMethod

Hints:
EqCryptMethod
ShowCryptMethod
cryptPrefix : CryptMethod->String
Totality: total
Visibility: export
MinCost : CryptMethod->Bits32
  Minimal computational cost to specify when using
the given hashing method. The `cost` parameter
in the `gensalt` method should be in the range
`[MinCost c, MaxCost c]`, where `c` is the hashing method
(`CryptMethod`) to be used.

Totality: total
Visibility: public export
MaxCost : CryptMethod->Bits32
  Maximal computational cost to specify when using
the given hashing method. The `cost` parameter
in the `gensalt` method should be in the range
`[MinCost c, MaxCost c]`, where `c` is the hashing method
(`CryptMethod`) to be used.

Totality: total
Visibility: public export
0InRange : CryptMethod->Bits32->Type
  Proof that the given computational cost is a valid
value for the given hashing method

Totality: total
Visibility: public export
checkphrase : String->Bool
  Check if the given passphrase is of the correct size
to be used in the hashing functions. (Passphrases are limited
to a length of 512 bytes, including the terminal zero character)

Totality: total
Visibility: export
0Passphrase : Type
  A refined string which has been shown to be a valid
passphrase.

Totality: total
Visibility: public export
refinePassphrase : String->MaybePassphrase
  Checks a string to be a valid passphrase for hashing and
wraps it together with the resulting proof of validity.

Totality: total
Visibility: export
checksalt : String->SaltQuality
  Validates the given string for having a correctly formatted
prefix consisting of the hashing method, computational cost,
and salt to use when encrypting a passphrase. Both, already
hashed passphrases and the string returned from `gensalt`
should have valid prefixes, and should therefore be usable
for hashing passphrases.

Totality: total
Visibility: export
0Salt : Type
  A refined string which has been shown to be a valid
salt.

Totality: total
Visibility: public export
0Hash : Type
  Alias for `Salt`

Totality: total
Visibility: public export
refineSalt : String->MaybeSalt
  Checks a string to be a valid salt for hashing and
wraps it together with the resulting proof of validity.

Totality: total
Visibility: export
refineHash : String->MaybeHash
  Alias for `refineSalt`

Totality: total
Visibility: export
gensalt : (cm : CryptMethod) -> (cost : Bits32) -> {auto0_ : InRangecmcost} ->IOString
  Generate a random salt for usage as the `settings` argument
in the hashing functions.

Implementation note: This fails on rare occasions for as of yet
unknown reasons. Rerunning seems to fix it, though.

Totality: total
Visibility: export
cryptWithSalt : Salt->Passphrase->String
  Hash the given passphrase with the given salt.
Usually, it is best to generate a new salt when hashing
a passphrase for the first time, so consider using
`crypt` instead.

Totality: total
Visibility: export
crypt : (cm : CryptMethod) -> (cost : Bits32) ->Passphrase-> {auto0_ : InRangecmcost} ->IOString
  Hash a passphrase with the given method and computational
cost. This will first generate a new random salt, therefore,
this runs in `IO`.

Totality: total
Visibility: export
cryptMaybe : (cm : CryptMethod) -> (cost : Bits32) ->String-> {auto0_ : InRangecmcost} ->IO (MaybeHash)
  Hash a passphrase with the given method and computational
cost. This returns `Nothing` if the passphrase is invalid
(i.e. longer than 512 bytes), or the hashing procedure itself
fails to generate a valid salt (which is a highly unlikely thing
to happen).

Totality: total
Visibility: export
cryptcheck : Hash->String->Bool
  Check a clear-text passphrase against a hashed passphrase.
If the hash is prefixed with a valid salt (as verified with
`checksalt hash`), the hashing method, computational cost, and
salt to be used will be extracted from the `hash`.

Totality: total
Visibility: export