pgcrypto - cryptographic functions for PostgreSQL
=================================================
-Marko Kreen <marko@l-t.ee>
+Marko Kreen <markokr@gmail.com>
// Note: this document is in asciidoc format.
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
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 $
* 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"
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);
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);
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,
* 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
/* 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);
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
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'
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'
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'
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);
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);