I wanted to bounce a few related ideas off people. Foreign Data Wrappers
One of the biggest vulnerabilities of the current system is the need for the client to know the PGP key. There's a better alternative for many (not all) use cases - loading the PGP key from a file located on the server or securely downloaded from a trusted source on an as-needed basis. In other words - a Foreign Data Wrapper for PGP keyrings. The initial milestone could be a readonly table containing: - keyid - alg - not_before - not_after - public key - secret key (if available) I've included type --list-keys below. I know the FDW should include the [SCE] flags and '[unknown|lultimate|...] values, and possibly the uid values. (It would need to be text[]). Secret keys add a 'ssb' element. UDT and UDF This still exposes a lot of information so it makes sense to consider a UDT for PGP_KEY and possibly more. This UDT can be opaque - the secret key can be write-only. Otherwise the UDT can be a drop-in replacement for the existing text and bytea UDFs. A similar idea, one that I'm still exploring, is PGP_CIPHERTEXT. It's a drop-in replacement for bytea but makes it easy to add type-safe functions to extract metadata from the ciphertext. The keyring FDW would return a PGP_KEY for the secret key. This prevents the exposure of a secret key loaded from a keyring. Sample output of --list-keys pub rsa4096 2011-02-08 [SCE] BFC61E9C8BE9942EAE818A95E5D9A0503AD31D0B uid [ unknown] Fedora-SPARC (15) <fed...@fedoraproject.org> sub elg4096 2011-02-08 [E] pub rsa4096 2015-07-25 [SCE] 5048BDBBA5E776E547B09CCC73BDE98381B46521 uid [ unknown] Fedora (24) <fedora-24-prim...@fedoraproject.org> pub rsa4096 2015-07-27 [SCE] 8C6E5A80A399BABE791985BAB8635EEB030D5AED uid [ unknown] Fedora Secondary (24) < fedora-24-second...@fedoraproject.org> sub elg2048 2015-07-27 [E] pub rsa4096 2016-03-31 [SCE] C437DCCD558A66A37D6F43724089D8F2FDB19C98 uid [ unknown] Fedora 25 Primary (25) < fedora-25-prim...@fedoraproject.org> pub rsa4096 2016-03-31 [SCE] 838BD48E1B70069F4111BDE91A185CDDE372E838 uid [ unknown] Fedora 25 Secondary (25) < fedora-25-second...@fedoraproject.org> sub elg2048 2016-03-31 [E] pub rsa4096 2016-09-09 [SCE] E641850B77DF435378D1D7E2812A6B4B64DAB85D uid [ unknown] Fedora 26 Primary (26) < fedora-26-prim...@fedoraproject.org> pub rsa4096 2016-08-08 [SCE] 19AA0442249191098B3D80354560FD4D3B921D09 uid [ unknown] Fedora 26 Secondary (26) < fedora-26-second...@fedoraproject.org> sub elg2048 2016-08-08 [E]