-- Deploy camper:redsys_encrypt to pg
-- requires: roles
-- requires: schema_camper
-- requires: zero_pad
-- requires: redsys
-- requires: extension_pgcrypto

begin;

set search_path to camper, public;

create or replace function redsys_encrypt(company_id integer, data bytea) returns bytea as
$$
	select public.encrypt_iv(zero_pad(data, 8), encrypt_key, '\x0000000000000000'::bytea, '3des-cbc/pad:none')
	from redsys
	where redsys.company_id = redsys_encrypt.company_id;
$$
	language sql
	stable
	security definer
	set search_path = camper, pg_temp;
;

revoke execute on function redsys_encrypt(integer, bytea) from public;
grant execute on function redsys_encrypt(integer, bytea) to guest;
grant execute on function redsys_encrypt(integer, bytea) to employee;
grant execute on function redsys_encrypt(integer, bytea) to admin;

commit;
