Crypt::OpenPGP::Message - Sequence of PGP packets


    use Crypt::OpenPGP::Message;

    my $data; $data .= $_ while <STDIN>;
    my $msg = Crypt::OpenPGP::Message->new( Data => $data );
    my @pieces = $msg->pieces;


Crypt::OpenPGP::Message provides a container for a sequence of PGP packets. It transparently handles ASCII-armoured messages, as well as cleartext signatures.


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

Constructs a new Crypt::OpenPGP::Message object, presumably to be filled with some data, where the data is a serialized stream of PGP packets.

Reads the packets into in-memory packet objects.

Returns the new Message object on success, undef on failure.

%arg can contain:

  • Data

    A scalar string containing the serialized packets.

    This argument is optional, but either this argument or Filename must be provided.

  • Filename

    The path to a file that contains a serialized stream of packets.

    This argument is optional, but either this argument or Data must be provided.

  • IsPacketStream

    By default Crypt::OpenPGP::Message will attempt to unarmour ASCII-armoured text. Since the armoured text can actually appear anywhere in a string, as long as it starts at the beginning of a line, this can cause problems when a stream of packets happens to include armoured text. At those times you want the packets to be treated as a stream, not as a string that happens to contain armoured text.

    In this case, set IsPacketStream to a true value, and the ASCII armour detection will be skipped.


Returns an array containing packet objects. For example, if the packet stream contains a public key packet, a user ID packet, and a signature packet, the array will contain three objects: a Crypt::OpenPGP::Certificate object; a Crypt::OpenPGP::UserID object; and a Crypt::OpenPGP::Signature object, in that order.


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