http://www.perlmonks.org?node_id=1025718


in reply to Crypt::OpenPGP encryption signature

I suggest that you start with acquiring a basic understanding of how the GPG/PGP system works.   The system uses a “key ring” in which both public and private keys are stored.   It refers to both of these keys by means of a 16-hex-digit “ID,” and an 8-hex-digit “short ID” which is simply the right-hand half of the first.   There is also a “fingerprint” which consists of a string of 4-hex-digit groups.   All references to keys are made by long or short ID.

It would appear either that the appropriate secret-key is not on the key-ring, or that at some point the Perl code does not know where to locate the key-ring file.   Commands such as gpg --list-secret-keys should be able to show you what keys your system knows about.   This is also how keys are managed on keyservers.

GPG is a sufficiently-different system, with its “web of trust” concept and so on, that you should pause and spend some time getting to know its mind-set.   GPG implements the notions of code-signing and so forth without the assumption that there is, or ever could be, a central, über-trustworthy “certifying authority.”   Thawte & Co. would have no money to earn from it.