Skip to content

Commit ef6a453

Browse files
authored
Merge pull request #98 from cipherstash/schemify-eql
Wrap EQL into a PostgreSQL schema
2 parents a5b6c7f + a996a21 commit ef6a453

26 files changed

+1210
-1264
lines changed

sql/001-ore.sql

+106-106
Large diffs are not rendered by default.

sql/002-ore-cllw.sql

+106-106
Large diffs are not rendered by default.

sql/003-ste-vec.sql

+112-116
Large diffs are not rendered by default.

sql/010-core-domain-types.sql

+36-36
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
DROP DOMAIN IF EXISTS cs_match_index_v1;
2-
CREATE DOMAIN cs_match_index_v1 AS smallint[];
1+
DROP DOMAIN IF EXISTS eql_v1.match_index;
2+
CREATE DOMAIN eql_v1.match_index AS smallint[];
33

4-
DROP DOMAIN IF EXISTS cs_unique_index_v1;
5-
CREATE DOMAIN cs_unique_index_v1 AS text;
4+
DROP DOMAIN IF EXISTS eql_v1.unique_index;
5+
CREATE DOMAIN eql_v1.unique_index AS text;
66

77

8-
-- cs_encrypted_v1 is a column type and cannot be dropped if in use
8+
-- eql_v1_encrypted is a column type and cannot be dropped if in use
99
DO $$
1010
BEGIN
11-
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'cs_encrypted_v1') THEN
12-
CREATE DOMAIN cs_encrypted_v1 AS JSONB;
11+
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'eql_v1_encrypted') THEN
12+
CREATE DOMAIN eql_v1_encrypted AS JSONB;
1313
END IF;
1414
END
1515
$$;
1616

1717

1818
-- Should include a kind field
19-
DROP FUNCTION IF EXISTS _cs_encrypted_check_k(jsonb);
20-
CREATE FUNCTION _cs_encrypted_check_k(val jsonb)
19+
DROP FUNCTION IF EXISTS eql_v1._encrypted_check_k(jsonb);
20+
CREATE FUNCTION eql_v1._encrypted_check_k(val jsonb)
2121
RETURNS boolean
2222
AS $$
2323
BEGIN
@@ -32,8 +32,8 @@ $$ LANGUAGE plpgsql;
3232
--
3333
-- CT payload should include a c field
3434
--
35-
DROP FUNCTION IF EXISTS _cs_encrypted_check_k_ct(jsonb);
36-
CREATE FUNCTION _cs_encrypted_check_k_ct(val jsonb)
35+
DROP FUNCTION IF EXISTS eql_v1._encrypted_check_k_ct(jsonb);
36+
CREATE FUNCTION eql_v1._encrypted_check_k_ct(val jsonb)
3737
RETURNS boolean
3838
AS $$
3939
BEGIN
@@ -51,8 +51,8 @@ $$ LANGUAGE plpgsql;
5151
--
5252
-- SV payload should include an sv field
5353
--
54-
DROP FUNCTION IF EXISTS _cs_encrypted_check_k_sv(jsonb);
55-
CREATE FUNCTION _cs_encrypted_check_k_sv(val jsonb)
54+
DROP FUNCTION IF EXISTS eql_v1._encrypted_check_k_sv(jsonb);
55+
CREATE FUNCTION eql_v1._encrypted_check_k_sv(val jsonb)
5656
RETURNS boolean
5757
AS $$
5858
BEGIN
@@ -68,8 +68,8 @@ $$ LANGUAGE plpgsql;
6868

6969

7070
-- Plaintext field should never be present in an encrypted column
71-
DROP FUNCTION IF EXISTS _cs_encrypted_check_p(jsonb);
72-
CREATE FUNCTION _cs_encrypted_check_p(val jsonb)
71+
DROP FUNCTION IF EXISTS eql_v1._encrypted_check_p(jsonb);
72+
CREATE FUNCTION eql_v1._encrypted_check_p(val jsonb)
7373
RETURNS boolean
7474
AS $$
7575
BEGIN
@@ -81,8 +81,8 @@ AS $$
8181
$$ LANGUAGE plpgsql;
8282

8383
-- Should include an ident field
84-
DROP FUNCTION IF EXISTS _cs_encrypted_check_i(jsonb);
85-
CREATE FUNCTION _cs_encrypted_check_i(val jsonb)
84+
DROP FUNCTION IF EXISTS eql_v1._encrypted_check_i(jsonb);
85+
CREATE FUNCTION eql_v1._encrypted_check_i(val jsonb)
8686
RETURNS boolean
8787
AS $$
8888
BEGIN
@@ -94,8 +94,8 @@ AS $$
9494
$$ LANGUAGE plpgsql;
9595

9696
-- Query field should never be present in an encrypted column
97-
DROP FUNCTION IF EXISTS _cs_encrypted_check_q(jsonb);
98-
CREATE FUNCTION _cs_encrypted_check_q(val jsonb)
97+
DROP FUNCTION IF EXISTS eql_v1._encrypted_check_q(jsonb);
98+
CREATE FUNCTION eql_v1._encrypted_check_q(val jsonb)
9999
RETURNS boolean
100100
AS $$
101101
BEGIN
@@ -107,8 +107,8 @@ AS $$
107107
$$ LANGUAGE plpgsql;
108108

109109
-- Ident field should include table and column
110-
DROP FUNCTION IF EXISTS _cs_encrypted_check_i_ct(jsonb);
111-
CREATE FUNCTION _cs_encrypted_check_i_ct(val jsonb)
110+
DROP FUNCTION IF EXISTS eql_v1._encrypted_check_i_ct(jsonb);
111+
CREATE FUNCTION eql_v1._encrypted_check_i_ct(val jsonb)
112112
RETURNS boolean
113113
AS $$
114114
BEGIN
@@ -120,8 +120,8 @@ AS $$
120120
$$ LANGUAGE plpgsql;
121121

122122
-- Should include a version field
123-
DROP FUNCTION IF EXISTS _cs_encrypted_check_v(jsonb);
124-
CREATE FUNCTION _cs_encrypted_check_v(val jsonb)
123+
DROP FUNCTION IF EXISTS eql_v1._encrypted_check_v(jsonb);
124+
CREATE FUNCTION eql_v1._encrypted_check_v(val jsonb)
125125
RETURNS boolean
126126
AS $$
127127
BEGIN
@@ -133,27 +133,27 @@ AS $$
133133
$$ LANGUAGE plpgsql;
134134

135135

136-
DROP FUNCTION IF EXISTS cs_check_encrypted_v1(val jsonb);
136+
DROP FUNCTION IF EXISTS eql_v1.check_encrypted(val jsonb);
137137

138-
CREATE FUNCTION cs_check_encrypted_v1(val jsonb)
138+
CREATE FUNCTION eql_v1.check_encrypted(val jsonb)
139139
RETURNS BOOLEAN
140140
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
141141
BEGIN ATOMIC
142142
RETURN (
143-
_cs_encrypted_check_v(val) AND
144-
_cs_encrypted_check_i(val) AND
145-
_cs_encrypted_check_k(val) AND
146-
_cs_encrypted_check_k_ct(val) AND
147-
_cs_encrypted_check_k_sv(val) AND
148-
_cs_encrypted_check_q(val) AND
149-
_cs_encrypted_check_p(val)
143+
eql_v1._encrypted_check_v(val) AND
144+
eql_v1._encrypted_check_i(val) AND
145+
eql_v1._encrypted_check_k(val) AND
146+
eql_v1._encrypted_check_k_ct(val) AND
147+
eql_v1._encrypted_check_k_sv(val) AND
148+
eql_v1._encrypted_check_q(val) AND
149+
eql_v1._encrypted_check_p(val)
150150
);
151151
END;
152152

153-
ALTER DOMAIN cs_encrypted_v1 DROP CONSTRAINT IF EXISTS cs_encrypted_v1_check;
153+
ALTER DOMAIN eql_v1_encrypted DROP CONSTRAINT IF EXISTS eql_v1_encrypted_check;
154154

155-
ALTER DOMAIN cs_encrypted_v1
156-
ADD CONSTRAINT cs_encrypted_v1_check CHECK (
157-
cs_check_encrypted_v1(VALUE)
155+
ALTER DOMAIN eql_v1_encrypted
156+
ADD CONSTRAINT eql_v1_encrypted_check CHECK (
157+
eql_v1.check_encrypted(VALUE)
158158
);
159159

0 commit comments

Comments
 (0)