db/schema/010_hashed_text.sql
2023-06-10 11:44:32 -05:00

28 lines
551 B
PL/PgSQL

create type hashed_text as (hashed text);
create function hashed_text_string(hashed hashed_text)
returns text
language sql
immutable
as 'select (hashed.hashed);';
create function hash_text(plain text)
returns hashed_text
language plpgsql
immutable
as $$
begin
return row(crypt(plain, gen_salt('bf')));
end;
$$;
create function hashed_text_matches(plain text, hashed hashed_text)
returns boolean
language plpgsql
immutable
as $$
begin
return hashed_text_string(hashed) = crypt(plain, hashed_text_string(hashed));
end;
$$;