1--
2-- PGP Public Key Encryption
3--
4-- ensure consistent test output regardless of the default bytea format
5SET bytea_output TO escape;
6-- successful encrypt/decrypt
7select pgp_pub_decrypt(
8	pgp_pub_encrypt('Secret msg', dearmor(pubkey)),
9	dearmor(seckey))
10from keytbl where keytbl.id=1;
11 pgp_pub_decrypt
12-----------------
13 Secret msg
14(1 row)
15
16select pgp_pub_decrypt(
17		pgp_pub_encrypt('Secret msg', dearmor(pubkey)),
18		dearmor(seckey))
19from keytbl where keytbl.id=2;
20 pgp_pub_decrypt
21-----------------
22 Secret msg
23(1 row)
24
25select pgp_pub_decrypt(
26		pgp_pub_encrypt('Secret msg', dearmor(pubkey)),
27		dearmor(seckey))
28from keytbl where keytbl.id=3;
29 pgp_pub_decrypt
30-----------------
31 Secret msg
32(1 row)
33
34select pgp_pub_decrypt(
35		pgp_pub_encrypt('Secret msg', dearmor(pubkey)),
36		dearmor(seckey))
37from keytbl where keytbl.id=6;
38 pgp_pub_decrypt
39-----------------
40 Secret msg
41(1 row)
42
43-- try with rsa-sign only
44select pgp_pub_decrypt(
45		pgp_pub_encrypt('Secret msg', dearmor(pubkey)),
46		dearmor(seckey))
47from keytbl where keytbl.id=4;
48ERROR:  No encryption key found
49-- try with secret key
50select pgp_pub_decrypt(
51		pgp_pub_encrypt('Secret msg', dearmor(seckey)),
52		dearmor(seckey))
53from keytbl where keytbl.id=1;
54ERROR:  Refusing to encrypt with secret key
55-- does text-to-bytea works
56select pgp_pub_decrypt_bytea(
57		pgp_pub_encrypt('Secret msg', dearmor(pubkey)),
58		dearmor(seckey))
59from keytbl where keytbl.id=1;
60 pgp_pub_decrypt_bytea
61-----------------------
62 Secret msg
63(1 row)
64
65-- and bytea-to-text?
66select pgp_pub_decrypt(
67		pgp_pub_encrypt_bytea('Secret msg', dearmor(pubkey)),
68		dearmor(seckey))
69from keytbl where keytbl.id=1;
70ERROR:  Not text data
71