NAME

Crypt::OpenPGP::KeyRing - Key ring object

SYNOPSIS

use Crypt::OpenPGP::KeyRing;

my $ring = Crypt::OpenPGP::KeyRing->new( Filename => 'foo.ring' );

my $key_id = '...';
my $kb = $ring->find_keyblock_by_keyid($key_id);

DESCRIPTION

Crypt::OpenPGP::KeyRing provides keyring management and key lookup for Crypt::OpenPGP. A KeyRing, in this case, does not necessarily have to be a keyring file; a KeyRing object is just a collection of key blocks, where each key block contains exactly one master key, zero or more subkeys, some user ID packets, some signatures, etc.

USAGE

Crypt::OpenPGP::KeyRing->new( %arg )

Constructs a new Crypt::OpenPGP::KeyRing object and returns that object. This has the effect os hooking the object to a particular keyring, so that all subsequent methods called on the KeyRing object will use the data specified in the arguments to new.

%arg can contain:

  • Data

    A block of data specifying the serialized keyring, presumably as read in from a file on disk. This data can be either in binary form or in ASCII-armoured form; if the latter it will be unarmoured automatically.

    This argument is optional.

  • Filename

    The path to a keyring file, or at least, a file containing a key (and perhaps other associated keyblock data). The data in this file can be either in binary form or in ASCII-armoured form; if the latter it will be unarmoured automatically.

    This argument is optional.

$ring->find_keyblock_by_keyid($key_id)

Looks up the key ID $key_id in the keyring $ring. $key_id should be either a 4-octet or 8-octet string--it should not be a string of hexadecimal digits. If that is what you have, use pack to convert it to an octet string:

pack 'H*', $hex_key_id

If a keyblock is found where the key ID of either the master key or subkey matches $key_id, that keyblock will be returned. The definition of "match" depends on the length of $key_id: if it is a 16-digit hex number, only exact matches will be returned; if it is an 8-digit hex number, any keyblocks containing keys whose last 8 hex digits match $key_id will be returned.

In scalar context, only the first keyblock found in the keyring is returned; in list context, all matching keyblocks are returned. In practice, duplicated key IDs are rare, particularly so if you specify the full 16 hex digits in $key_id.

Returns false on failure (undef in scalar context, an empty list in list context).

$ring->find_keyblock_by_uid($uid)

Given a string $uid, looks up all keyblocks with User ID packets matching the string $uid, including partial matches.

In scalar context, returns only the first keyblock with a matching user ID; in list context, returns all matching keyblocks.

Returns false on failure.

$ring->find_keyblock_by_index($index)

Given an index into a list of keyblocks $index, returns the keyblock (a Crypt::OpenPGP::KeyBlock object) at that index. Accepts negative indexes, so -1 will give you the last keyblock in the keyring.

AUTHOR & COPYRIGHTS

Please see the Crypt::OpenPGP manpage for author, copyright, and license information.