mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	This was from before the hex format was available in bytea. Now we can remove the extra explicit encoding/decoding calls and rely on the default output format. Discussion: https://www.postgresql.org/message-id/flat/17dcb4f7-7ac1-e2b6-d5f7-2dfba06cd9ee%40enterprisedb.com
		
			
				
	
	
		
			69 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
--
 | 
						|
-- PGP Public Key Encryption
 | 
						|
--
 | 
						|
-- successful encrypt/decrypt
 | 
						|
select pgp_pub_decrypt(
 | 
						|
	pgp_pub_encrypt('Secret msg', dearmor(pubkey)),
 | 
						|
	dearmor(seckey))
 | 
						|
from keytbl where keytbl.id=1;
 | 
						|
 pgp_pub_decrypt 
 | 
						|
-----------------
 | 
						|
 Secret msg
 | 
						|
(1 row)
 | 
						|
 | 
						|
select pgp_pub_decrypt(
 | 
						|
		pgp_pub_encrypt('Secret msg', dearmor(pubkey)),
 | 
						|
		dearmor(seckey))
 | 
						|
from keytbl where keytbl.id=2;
 | 
						|
 pgp_pub_decrypt 
 | 
						|
-----------------
 | 
						|
 Secret msg
 | 
						|
(1 row)
 | 
						|
 | 
						|
select pgp_pub_decrypt(
 | 
						|
		pgp_pub_encrypt('Secret msg', dearmor(pubkey)),
 | 
						|
		dearmor(seckey))
 | 
						|
from keytbl where keytbl.id=3;
 | 
						|
 pgp_pub_decrypt 
 | 
						|
-----------------
 | 
						|
 Secret msg
 | 
						|
(1 row)
 | 
						|
 | 
						|
select pgp_pub_decrypt(
 | 
						|
		pgp_pub_encrypt('Secret msg', dearmor(pubkey)),
 | 
						|
		dearmor(seckey))
 | 
						|
from keytbl where keytbl.id=6;
 | 
						|
 pgp_pub_decrypt 
 | 
						|
-----------------
 | 
						|
 Secret msg
 | 
						|
(1 row)
 | 
						|
 | 
						|
-- try with rsa-sign only
 | 
						|
select pgp_pub_decrypt(
 | 
						|
		pgp_pub_encrypt('Secret msg', dearmor(pubkey)),
 | 
						|
		dearmor(seckey))
 | 
						|
from keytbl where keytbl.id=4;
 | 
						|
ERROR:  No encryption key found
 | 
						|
-- try with secret key
 | 
						|
select pgp_pub_decrypt(
 | 
						|
		pgp_pub_encrypt('Secret msg', dearmor(seckey)),
 | 
						|
		dearmor(seckey))
 | 
						|
from keytbl where keytbl.id=1;
 | 
						|
ERROR:  Refusing to encrypt with secret key
 | 
						|
-- does text-to-bytea works
 | 
						|
select encode(pgp_pub_decrypt_bytea(
 | 
						|
		pgp_pub_encrypt('Secret msg', dearmor(pubkey)),
 | 
						|
		dearmor(seckey)), 'escape')
 | 
						|
from keytbl where keytbl.id=1;
 | 
						|
   encode   
 | 
						|
------------
 | 
						|
 Secret msg
 | 
						|
(1 row)
 | 
						|
 | 
						|
-- and bytea-to-text?
 | 
						|
select pgp_pub_decrypt(
 | 
						|
		pgp_pub_encrypt_bytea('Secret msg', dearmor(pubkey)),
 | 
						|
		dearmor(seckey))
 | 
						|
from keytbl where keytbl.id=1;
 | 
						|
ERROR:  Not text data
 |