------------------------------------------------------------------------ -- $Source: /local/data/cvs/yellowbank/postgres/src/y_crypto/y_pgcrypto.sql,v $ -- $Revision: 1.1 $ -- $State: Exp $ -- $Date: 2007/11/20 00:56:11 $ -- $Author: yrp001 $ -- $Locker: $ ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- Copyright (c) 2007 -- Ronald Peterson -- (Y) Yellowbank -- -- https://www.yellowbank.com/ -- -- There are no restrictions on the copying of this file. ------------------------------------------------------------------------ ------------------------------------------------------------------------ DROP FUNCTION y_mhash( BYTEA, TEXT ); DROP FUNCTION y_generate_rsa_keys( INTEGER ); DROP FUNCTION y_rsaes_oaep_encrypt( TEXT, y_part_key, TEXT, TEXT ); DROP FUNCTION y_rsaes_oaep_decrypt( TEXT, y_part_key, TEXT, TEXT ); DROP FUNCTION y_rsassa_pss_sign( TEXT, y_part_key, TEXT, INTEGER ); DROP FUNCTION y_rsassa_pss_verify( TEXT, TEXT, y_part_key, TEXT, INTEGER ); DROP TYPE y_full_key; DROP TYPE y_part_key; ------------------------------------------------------------------------ ------------------------------------------------------------------------ CREATE TYPE y_full_key AS ( n TEXT, e TEXT, d TEXT ); CREATE TYPE y_part_key AS ( n TEXT, e TEXT ); ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- args: data to encrypt, hash type -- returns: digest (hex) -- e.g. -- y_mhash( decode( 'deadbeef', 'hex' ), 'SHA256' ) CREATE OR REPLACE FUNCTION y_mhash( BYTEA, TEXT ) RETURNS BYTEA AS 'y_pgcrypto.so', 'y_mhash' LANGUAGE C STRICT IMMUTABLE; ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- args: bitlength -- returns: n, e, d tuple -- e.g. -- y_generate_rsa_keys( '1024' ) CREATE OR REPLACE FUNCTION y_generate_rsa_keys( INTEGER ) RETURNS y_full_key AS 'y_pgcrypto.so', 'y_pg_generate_rsa_keys' LANGUAGE C STRICT; ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- args: message (hex), public key, hash type, label -- returns: ciphertext (hex) -- e.g. -- y_rsaes_oaep_encrypt( '123abc', ROW( n, e ), 'SHA1', '' ) CREATE OR REPLACE FUNCTION y_rsaes_oaep_encrypt( TEXT, y_part_key, TEXT, TEXT ) RETURNS TEXT AS 'y_pgcrypto.so', 'y_pg_rsaes_oaep_encrypt' LANGUAGE C STRICT; ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- args: ciphertext (hex), private key, hash type, label -- returns: message (hex) -- e.g. -- y_rsaes_oaep_encrypt( '123abc', ROW( n, e ), 'SHA1', '' ) CREATE OR REPLACE FUNCTION y_rsaes_oaep_decrypt( TEXT, y_part_key, TEXT, TEXT ) RETURNS TEXT AS 'y_pgcrypto.so', 'y_pg_rsaes_oaep_decrypt' LANGUAGE C STRICT IMMUTABLE; ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- args: message (hex), private key, hash type, salt length -- returns: signature (hex) -- e.g. -- y_rsassa_pss_sign( '123abc', ROW( n, e ), 'SHA1', 32 ) CREATE OR REPLACE FUNCTION y_rsassa_pss_sign( TEXT, y_part_key, TEXT, INTEGER ) RETURNS TEXT AS 'y_pgcrypto.so', 'y_pg_rsassa_pss_sign' LANGUAGE C STRICT; ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- args: message (hex), signature (hex), public key, hash type, salt length -- returns: true (signature verified) or false (verification failed) -- e.g. -- y_rsassa_pss_verify( '123abc', '123abc...', ROW( n, e ), 'SHA1', 32 ) CREATE OR REPLACE FUNCTION y_rsassa_pss_verify( TEXT, TEXT, y_part_key, TEXT, INTEGER ) RETURNS BOOLEAN AS 'y_pgcrypto.so', 'y_pg_rsassa_pss_verify' LANGUAGE C STRICT IMMUTABLE; ------------------------------------------------------------------------