@@ -139,13 +139,13 @@ index 8c33ac1..e9f0e08 100644
139
139
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
140
140
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
141
141
diff --git a/Makefile b/Makefile
142
- index 7f66766..af0ef00 100644
142
+ index 7f66766..d78d401 100644
143
143
--- a/Makefile
144
144
+++ b/Makefile
145
145
@@ -1,5 +1,25 @@
146
146
+ PG_CFLAGS = -std=c99 -Werror -Wno-declaration-after-statement
147
147
EXTENSION = supabase_vault
148
- + EXTVERSION = 0.3.0
148
+ + EXTVERSION = 0.3.1
149
149
+
150
150
DATA = $(wildcard sql/*--*.sql)
151
151
+
@@ -1116,6 +1116,13 @@ index ee40004..8973fe0 100644
1116
1116
1117
1117
COMMENT ON TABLE vault.secrets IS 'Table with encrypted `secret` column for storing sensitive information on disk.';
1118
1118
1119
+ diff --git a/sql/supabase_vault--0.3.0--0.3.1.sql b/sql/supabase_vault--0.3.0--0.3.1.sql
1120
+ new file mode 100644
1121
+ index 0000000..ee25f24
1122
+ --- /dev/null
1123
+ +++ b/sql/supabase_vault--0.3.0--0.3.1.sql
1124
+ @@ -0,0 +1 @@
1125
+ + -- no SQL changes in 0.3.1
1119
1126
diff --git a/sql/supabase_vault--0.3.0.sql b/sql/supabase_vault--0.3.0.sql
1120
1127
new file mode 100644
1121
1128
index 0000000..af6abe2
@@ -1434,7 +1441,7 @@ index 0000000..91eca9a
1434
1441
+ #endif
1435
1442
diff --git a/src/pgsodium.c b/src/pgsodium.c
1436
1443
new file mode 100644
1437
- index 0000000..d337fff
1444
+ index 0000000..563c55f
1438
1445
--- /dev/null
1439
1446
+++ b/src/pgsodium.c
1440
1447
@@ -0,0 +1,144 @@
@@ -1552,7 +1559,7 @@ index 0000000..d337fff
1552
1559
+ {
1553
1560
+ nonce = NULL;
1554
1561
+ }
1555
- + ERRORIF (VARSIZE_ANY_EXHDR (ciphertext) <=
1562
+ + ERRORIF (VARSIZE_ANY_EXHDR (ciphertext) <
1556
1563
+ crypto_aead_det_xchacha20_ABYTES, "%s: invalid message");
1557
1564
+ result_len =
1558
1565
+ VARSIZE_ANY_EXHDR (ciphertext) - crypto_aead_det_xchacha20_ABYTES;
@@ -1992,36 +1999,30 @@ index e6221c2..0000000
1992
1999
- select * from finish();
1993
2000
diff --git a/test/expected/test.out b/test/expected/test.out
1994
2001
new file mode 100644
1995
- index 0000000..28abe9b
2002
+ index 0000000..1d69ec5
1996
2003
--- /dev/null
1997
2004
+++ b/test/expected/test.out
1998
- @@ -0,0 +1,102 @@
2005
+ @@ -0,0 +1,110 @@
1999
2006
+ select no_plan();
2000
2007
+ no_plan
2001
2008
+ ---------
2002
2009
+ (0 rows)
2003
2010
+
2004
2011
+ do $$
2005
- + select vault.create_secret (
2006
- + 's3kr3t_k3y', 'a_name', 'this is the foo secret key');
2012
+ + begin
2013
+ + perform vault.create_secret('s3kr3t_k3y', 'a_name', 'this is the foo secret key');
2014
+ + end
2007
2015
+ $$;
2008
- + ERROR: syntax error at or near "select"
2009
- + LINE 2: select vault.create_secret (
2010
- + ^
2011
2016
+ SELECT results_eq(
2012
2017
+ $$
2013
2018
+ SELECT decrypted_secret = 's3kr3t_k3y', description = 'this is the foo secret key'
2014
2019
+ FROM vault.decrypted_secrets WHERE name = 'a_name';
2015
2020
+ $$,
2016
2021
+ $$VALUES (true, true)$$,
2017
2022
+ 'can select from masking view with custom key');
2018
- + results_eq
2019
- + -----------------------------------------------------------------
2020
- + not ok 1 - can select from masking view with custom key +
2021
- + # Failed test 1: "can select from masking view with custom key"+
2022
- + # Results differ beginning at row 1: +
2023
- + # have: NULL +
2024
- + # want: (t,t)
2023
+ + results_eq
2024
+ + -----------------------------------------------------
2025
+ + ok 1 - can select from masking view with custom key
2025
2026
+ (1 row)
2026
2027
+
2027
2028
+ SELECT lives_ok(
@@ -2040,25 +2041,20 @@ index 0000000..28abe9b
2040
2041
+ TRUNCATE vault.secrets;
2041
2042
+ set role bob;
2042
2043
+ do $$
2043
- + select vault.create_secret ('foo', 'bar', 'baz');
2044
+ + begin
2045
+ + perform vault.create_secret ('foo', 'bar', 'baz');
2046
+ + end
2044
2047
+ $$;
2045
- + ERROR: syntax error at or near "select"
2046
- + LINE 2: select vault.create_secret ('foo', 'bar', 'baz');
2047
- + ^
2048
2048
+ select results_eq(
2049
2049
+ $test$
2050
2050
+ SELECT (decrypted_secret COLLATE "default"), name, description FROM vault.decrypted_secrets
2051
2051
+ WHERE name = 'bar'
2052
2052
+ $test$,
2053
2053
+ $results$values ('foo', 'bar', 'baz')$results$,
2054
2054
+ 'bob can query a secret');
2055
- + results_eq
2056
- + -------------------------------------------
2057
- + not ok 3 - bob can query a secret +
2058
- + # Failed test 3: "bob can query a secret"+
2059
- + # Results differ beginning at row 1: +
2060
- + # have: NULL +
2061
- + # want: (foo,bar,baz)
2055
+ + results_eq
2056
+ + -------------------------------
2057
+ + ok 3 - bob can query a secret
2062
2058
+ (1 row)
2063
2059
+
2064
2060
+ select lives_ok(
@@ -2082,21 +2078,40 @@ index 0000000..28abe9b
2082
2078
+ $test$,
2083
2079
+ $results$values ('fooz', 'barz', 'bazz')$results$,
2084
2080
+ 'bob can query an updated secret');
2085
- + results_eq
2086
- + ----------------------------------------------------
2087
- + not ok 5 - bob can query an updated secret +
2088
- + # Failed test 5: "bob can query an updated secret"+
2089
- + # Results differ beginning at row 1: +
2090
- + # have: NULL +
2091
- + # want: (fooz,barz,bazz)
2081
+ + results_eq
2082
+ + ----------------------------------------
2083
+ + ok 5 - bob can query an updated secret
2092
2084
+ (1 row)
2093
2085
+
2094
- + select * from finish();
2095
- + finish
2086
+ + truncate vault.secrets;
2087
+ + reset role;
2088
+ + do $$
2089
+ + begin
2090
+ + perform vault.create_secret(
2091
+ + new_secret := '',
2092
+ + new_name := 'empty_secret'
2093
+ + );
2094
+ + end
2095
+ + $$;
2096
+ + select results_eq(
2097
+ + $test$
2098
+ + select decrypted_secret collate "default"
2099
+ + from vault.decrypted_secrets
2100
+ + where name = 'empty_secret'
2101
+ + $test$,
2102
+ + $results$values ('')$results$,
2103
+ + 'secret can be an empty string'
2104
+ + );
2105
+ + results_eq
2096
2106
+ --------------------------------------
2097
- + 1..5
2098
- + # Looks like you failed 3 tests of 5
2099
- + (2 rows)
2107
+ + ok 6 - secret can be an empty string
2108
+ + (1 row)
2109
+ +
2110
+ + select * from finish();
2111
+ + finish
2112
+ + --------
2113
+ + 1..6
2114
+ + (1 row)
2100
2115
+
2101
2116
diff --git a/test/fixtures.sql b/test/fixtures.sql
2102
2117
new file mode 100644
@@ -2121,15 +2136,16 @@ index 0000000..b323d22
2121
2136
+ GRANT pgsodium_keyiduser TO bob;
2122
2137
diff --git a/test/sql/test.sql b/test/sql/test.sql
2123
2138
new file mode 100644
2124
- index 0000000..f6b6e92
2139
+ index 0000000..69dbccd
2125
2140
--- /dev/null
2126
2141
+++ b/test/sql/test.sql
2127
- @@ -0,0 +1,59 @@
2142
+ @@ -0,0 +1,84 @@
2128
2143
+ select no_plan();
2129
2144
+
2130
2145
+ do $$
2131
- + select vault.create_secret (
2132
- + 's3kr3t_k3y', 'a_name', 'this is the foo secret key');
2146
+ + begin
2147
+ + perform vault.create_secret('s3kr3t_k3y', 'a_name', 'this is the foo secret key');
2148
+ + end
2133
2149
+ $$;
2134
2150
+
2135
2151
+ SELECT results_eq(
@@ -2154,7 +2170,9 @@ index 0000000..f6b6e92
2154
2170
+ set role bob;
2155
2171
+
2156
2172
+ do $$
2157
- + select vault.create_secret ('foo', 'bar', 'baz');
2173
+ + begin
2174
+ + perform vault.create_secret ('foo', 'bar', 'baz');
2175
+ + end
2158
2176
+ $$;
2159
2177
+
2160
2178
+ select results_eq(
@@ -2183,4 +2201,26 @@ index 0000000..f6b6e92
2183
2201
+ $results$values ('fooz', 'barz', 'bazz')$results$,
2184
2202
+ 'bob can query an updated secret');
2185
2203
+
2204
+ + truncate vault.secrets;
2205
+ + reset role;
2206
+ +
2207
+ + do $$
2208
+ + begin
2209
+ + perform vault.create_secret(
2210
+ + new_secret := '',
2211
+ + new_name := 'empty_secret'
2212
+ + );
2213
+ + end
2214
+ + $$;
2215
+ +
2216
+ + select results_eq(
2217
+ + $test$
2218
+ + select decrypted_secret collate "default"
2219
+ + from vault.decrypted_secrets
2220
+ + where name = 'empty_secret'
2221
+ + $test$,
2222
+ + $results$values ('')$results$,
2223
+ + 'secret can be an empty string'
2224
+ + );
2225
+ +
2186
2226
+ select * from finish();
0 commit comments