From 7d4838dca87aa31487426eb9093d65058a535300 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Tue, 5 Sep 2006 21:26:48 +0000
Subject: [PATCH] Remove pgcrypto functions that were deprecated and slated for
 removal. Marko Kreen

---
 contrib/pgcrypto/README.pgcrypto        | 13 +----
 contrib/pgcrypto/pgcrypto.c             | 75 +------------------------
 contrib/pgcrypto/pgcrypto.h             |  5 +-
 contrib/pgcrypto/pgcrypto.sql.in        | 15 -----
 contrib/pgcrypto/uninstall_pgcrypto.sql |  4 +-
 5 files changed, 6 insertions(+), 106 deletions(-)

diff --git a/contrib/pgcrypto/README.pgcrypto b/contrib/pgcrypto/README.pgcrypto
index a33c36080f..61b6788042 100644
--- a/contrib/pgcrypto/README.pgcrypto
+++ b/contrib/pgcrypto/README.pgcrypto
@@ -1,6 +1,6 @@
 pgcrypto - cryptographic functions for PostgreSQL
 =================================================
-Marko Kreen <marko@l-t.ee>
+Marko Kreen <markokr@gmail.com>
 
 // Note: this document is in asciidoc format.
 
@@ -79,14 +79,7 @@ As standard in SQL, all functions return NULL, if any of the arguments
 are NULL.  This may create security risks on careless usage.
 
 
-2.3.  Deprecated functions
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The `digest_exists()`, `hmac_exists()` and `cipher_exists()` functions
-are deprecated.  The plan is to remove them in PostgreSQL 8.2.
-
-
-2.4.  Security
+2.3.  Security
 ~~~~~~~~~~~~~~~
 
 All the functions here run inside database server.  That means that all
@@ -714,4 +707,4 @@ http://www.cs.ut.ee/~helger/crypto/[]::
 	Collection of cryptology pointers.
 
 
-// $PostgreSQL: pgsql/contrib/pgcrypto/README.pgcrypto,v 1.17 2006/08/05 00:29:11 neilc Exp $
+// $PostgreSQL: pgsql/contrib/pgcrypto/README.pgcrypto,v 1.18 2006/09/05 21:26:48 tgl Exp $
diff --git a/contrib/pgcrypto/pgcrypto.c b/contrib/pgcrypto/pgcrypto.c
index ee976a69a0..083b31d4c2 100644
--- a/contrib/pgcrypto/pgcrypto.c
+++ b/contrib/pgcrypto/pgcrypto.c
@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $PostgreSQL: pgsql/contrib/pgcrypto/pgcrypto.c,v 1.22 2006/07/13 04:15:25 neilc Exp $
+ * $PostgreSQL: pgsql/contrib/pgcrypto/pgcrypto.c,v 1.23 2006/09/05 21:26:48 tgl Exp $
  */
 
 #include "postgres.h"
@@ -87,32 +87,6 @@ pg_digest(PG_FUNCTION_ARGS)
 	PG_RETURN_BYTEA_P(res);
 }
 
-/* check if given hash exists */
-PG_FUNCTION_INFO_V1(pg_digest_exists);
-
-Datum
-pg_digest_exists(PG_FUNCTION_ARGS)
-{
-	text	   *name;
-	PX_MD	   *res;
-
-	if (PG_ARGISNULL(0))
-		PG_RETURN_NULL();
-
-	name = PG_GETARG_TEXT_P(0);
-
-	res = find_provider(name, (PFN) px_find_digest, "Digest", 1);
-
-	PG_FREE_IF_COPY(name, 0);
-
-	if (res == NULL)
-		PG_RETURN_BOOL(false);
-
-	res->free(res);
-
-	PG_RETURN_BOOL(true);
-}
-
 /* SQL function: hmac(data:bytea, key:bytea, type:text) returns bytea */
 PG_FUNCTION_INFO_V1(pg_hmac);
 
@@ -158,32 +132,6 @@ pg_hmac(PG_FUNCTION_ARGS)
 	PG_RETURN_BYTEA_P(res);
 }
 
-/* check if given hmac type exists */
-PG_FUNCTION_INFO_V1(pg_hmac_exists);
-
-Datum
-pg_hmac_exists(PG_FUNCTION_ARGS)
-{
-	text	   *name;
-	PX_HMAC    *h;
-
-	if (PG_ARGISNULL(0))
-		PG_RETURN_NULL();
-
-	name = PG_GETARG_TEXT_P(0);
-
-	h = find_provider(name, (PFN) px_find_hmac, "HMAC", 1);
-
-	PG_FREE_IF_COPY(name, 0);
-
-	if (h != NULL)
-	{
-		px_hmac_free(h);
-		PG_RETURN_BOOL(true);
-	}
-	PG_RETURN_BOOL(false);
-}
-
 
 /* SQL function: pg_gen_salt(text) returns text */
 PG_FUNCTION_INFO_V1(pg_gen_salt);
@@ -565,27 +513,6 @@ pg_random_bytes(PG_FUNCTION_ARGS)
 	PG_RETURN_BYTEA_P(res);
 }
 
-/* SQL function: pg_cipher_exists(text) returns bool */
-PG_FUNCTION_INFO_V1(pg_cipher_exists);
-
-Datum
-pg_cipher_exists(PG_FUNCTION_ARGS)
-{
-	text	   *arg;
-	PX_Combo   *c;
-
-	if (PG_ARGISNULL(0))
-		PG_RETURN_NULL();
-
-	arg = PG_GETARG_TEXT_P(0);
-
-	c = find_provider(arg, (PFN) px_find_combo, "Cipher", 1);
-	if (c != NULL)
-		px_combo_free(c);
-
-	PG_RETURN_BOOL((c != NULL) ? true : false);
-}
-
 static void *
 find_provider(text *name,
 			  PFN provider_lookup,
diff --git a/contrib/pgcrypto/pgcrypto.h b/contrib/pgcrypto/pgcrypto.h
index 3211fc4ded..b011b06062 100644
--- a/contrib/pgcrypto/pgcrypto.h
+++ b/contrib/pgcrypto/pgcrypto.h
@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $PostgreSQL: pgsql/contrib/pgcrypto/pgcrypto.h,v 1.10 2006/07/13 04:15:25 neilc Exp $
+ * $PostgreSQL: pgsql/contrib/pgcrypto/pgcrypto.h,v 1.11 2006/09/05 21:26:48 tgl Exp $
  */
 
 #ifndef _PG_CRYPTO_H
@@ -36,9 +36,7 @@
 
 /* exported functions */
 Datum		pg_digest(PG_FUNCTION_ARGS);
-Datum		pg_digest_exists(PG_FUNCTION_ARGS);
 Datum		pg_hmac(PG_FUNCTION_ARGS);
-Datum		pg_hmac_exists(PG_FUNCTION_ARGS);
 Datum		pg_gen_salt(PG_FUNCTION_ARGS);
 Datum		pg_gen_salt_rounds(PG_FUNCTION_ARGS);
 Datum		pg_crypt(PG_FUNCTION_ARGS);
@@ -46,7 +44,6 @@ Datum		pg_encrypt(PG_FUNCTION_ARGS);
 Datum		pg_decrypt(PG_FUNCTION_ARGS);
 Datum		pg_encrypt_iv(PG_FUNCTION_ARGS);
 Datum		pg_decrypt_iv(PG_FUNCTION_ARGS);
-Datum		pg_cipher_exists(PG_FUNCTION_ARGS);
 Datum		pg_random_bytes(PG_FUNCTION_ARGS);
 
 #endif
diff --git a/contrib/pgcrypto/pgcrypto.sql.in b/contrib/pgcrypto/pgcrypto.sql.in
index c442f6176c..a33e69de2f 100644
--- a/contrib/pgcrypto/pgcrypto.sql.in
+++ b/contrib/pgcrypto/pgcrypto.sql.in
@@ -11,11 +11,6 @@ RETURNS bytea
 AS 'MODULE_PATHNAME', 'pg_digest'
 LANGUAGE C IMMUTABLE STRICT;
 
-CREATE OR REPLACE FUNCTION digest_exists(text)
-RETURNS bool
-AS 'MODULE_PATHNAME', 'pg_digest_exists'
-LANGUAGE C IMMUTABLE STRICT;
-
 CREATE OR REPLACE FUNCTION hmac(text, text, text)
 RETURNS bytea
 AS 'MODULE_PATHNAME', 'pg_hmac'
@@ -26,11 +21,6 @@ RETURNS bytea
 AS 'MODULE_PATHNAME', 'pg_hmac'
 LANGUAGE C IMMUTABLE STRICT;
 
-CREATE OR REPLACE FUNCTION hmac_exists(text)
-RETURNS bool
-AS 'MODULE_PATHNAME', 'pg_hmac_exists'
-LANGUAGE C IMMUTABLE STRICT;
-
 CREATE OR REPLACE FUNCTION crypt(text, text)
 RETURNS text
 AS 'MODULE_PATHNAME', 'pg_crypt'
@@ -66,11 +56,6 @@ RETURNS bytea
 AS 'MODULE_PATHNAME', 'pg_decrypt_iv'
 LANGUAGE C IMMUTABLE STRICT;
 
-CREATE OR REPLACE FUNCTION cipher_exists(text)
-RETURNS bool
-AS 'MODULE_PATHNAME', 'pg_cipher_exists'
-LANGUAGE C IMMUTABLE STRICT;
-
 CREATE OR REPLACE FUNCTION gen_random_bytes(int4)
 RETURNS bytea
 AS 'MODULE_PATHNAME', 'pg_random_bytes'
diff --git a/contrib/pgcrypto/uninstall_pgcrypto.sql b/contrib/pgcrypto/uninstall_pgcrypto.sql
index 56103f09db..e5675943b3 100644
--- a/contrib/pgcrypto/uninstall_pgcrypto.sql
+++ b/contrib/pgcrypto/uninstall_pgcrypto.sql
@@ -3,11 +3,9 @@ SET search_path = public;
 
 DROP FUNCTION digest(text, text);
 DROP FUNCTION digest(bytea, text);
-DROP FUNCTION digest_exists(text);
 
 DROP FUNCTION hmac(text, text, text);
 DROP FUNCTION hmac(bytea, bytea, text);
-DROP FUNCTION hmac_exists(text);
 
 DROP FUNCTION crypt(text, text);
 DROP FUNCTION gen_salt(text);
@@ -17,7 +15,7 @@ DROP FUNCTION encrypt(bytea, bytea, text);
 DROP FUNCTION decrypt(bytea, bytea, text);
 DROP FUNCTION encrypt_iv(bytea, bytea, bytea, text);
 DROP FUNCTION decrypt_iv(bytea, bytea, bytea, text);
-DROP FUNCTION cipher_exists(text);
+
 DROP FUNCTION gen_random_bytes(int4);
 
 DROP FUNCTION pgp_sym_encrypt(text, text);
-- 
2.40.0