use super::B;
use super::{Bytes, FnDescriptor, Int64, Str};
use super::{E, f, p};
use crate::stdlib::FnVolatility::Volatile;
pub(super) fn build() -> Vec<FnDescriptor> {
vec![
f(
"crypto",
"digest",
vec![p("data", Str), p("type", Str)],
Bytes,
B("digest"),
),
f(
"crypto",
"digest",
vec![p("data", Bytes), p("type", Str)],
Bytes,
B("digest"),
),
f(
"crypto",
"hmac",
vec![p("data", Str), p("key", Str), p("type", Str)],
Bytes,
B("hmac"),
),
f(
"crypto",
"hmac",
vec![p("data", Bytes), p("key", Bytes), p("type", Str)],
Bytes,
B("hmac"),
),
f("crypto", "gen_salt", vec![], Str, E("gen_salt('bf')")).vol(Volatile),
f("crypto", "gen_salt", vec![p("type", Str)], Str, B("gen_salt")).vol(Volatile),
f(
"crypto",
"gen_salt",
vec![p("type", Str), p("iter_count", Int64)],
Str,
E("gen_salt($1, $2::int4)"),
)
.vol(Volatile),
f(
"crypto",
"crypt",
vec![p("password", Str), p("salt", Str)],
Str,
B("crypt"),
),
]
}