summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/Crypt/OpenPGP/Plaintext.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Crypt/OpenPGP/Plaintext.pm')
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Crypt/OpenPGP/Plaintext.pm137
1 files changed, 137 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Crypt/OpenPGP/Plaintext.pm b/Master/tlpkg/tlperl/lib/Crypt/OpenPGP/Plaintext.pm
new file mode 100755
index 00000000000..892bf15679d
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Crypt/OpenPGP/Plaintext.pm
@@ -0,0 +1,137 @@
+package Crypt::OpenPGP::Plaintext;
+use strict;
+
+use Crypt::OpenPGP::Buffer;
+use Crypt::OpenPGP::ErrorHandler;
+use base qw( Crypt::OpenPGP::ErrorHandler );
+
+sub new {
+ my $class = shift;
+ my $pt = bless { }, $class;
+ $pt->init(@_);
+}
+
+sub data { $_[0]->{data} }
+sub mode { $_[0]->{mode} }
+
+sub init {
+ my $pt = shift;
+ my %param = @_;
+ if (my $data = $param{Data}) {
+ $pt->{data} = $data;
+ $pt->{mode} = $param{Mode} || 'b';
+ $pt->{timestamp} = time;
+ $pt->{filename} = $param{Filename} || '';
+ }
+ $pt;
+}
+
+sub parse {
+ my $class = shift;
+ my($buf) = @_;
+ my $pt = $class->new;
+ $pt->{mode} = $buf->get_char;
+ $pt->{filename} = $buf->get_bytes($buf->get_int8);
+ $pt->{timestamp} = $buf->get_int32;
+ $pt->{data} = $buf->get_bytes( $buf->length - $buf->offset );
+ $pt;
+}
+
+sub save {
+ my $pt = shift;
+ my $buf = Crypt::OpenPGP::Buffer->new;
+ $buf->put_char($pt->{mode});
+ $buf->put_int8(length $pt->{filename});
+ $buf->put_bytes($pt->{filename});
+ $buf->put_int32($pt->{timestamp});
+ $buf->put_bytes($pt->{data});
+ $buf->bytes;
+}
+
+1;
+__END__
+
+=head1 NAME
+
+Crypt::OpenPGP::Plaintext - A plaintext, literal-data packet
+
+=head1 SYNOPSIS
+
+ use Crypt::OpenPGP::Plaintext;
+
+ my $data = 'foo bar';
+ my $file = 'foo.txt';
+
+ my $pt = Crypt::OpenPGP::Plaintext->new(
+ Data => $data,
+ Filename => $file,
+ );
+ my $serialized = $pt->save;
+
+=head1 DESCRIPTION
+
+I<Crypt::OpenPGP::Plaintext> implements plaintext literal-data packets,
+and is essentially just a container for a string of octets, along
+with some meta-data about the plaintext.
+
+=head1 USAGE
+
+=head2 Crypt::OpenPGP::Plaintext->new( %arg )
+
+Creates a new plaintext data packet object and returns that object.
+If there are no arguments in I<%arg>, the object is created with an
+empty data container; this is used, for example, in I<parse> (below),
+to create an empty packet which is then filled from the data in the
+buffer.
+
+If you wish to initialize a non-empty object, I<%arg> can contain:
+
+=over 4
+
+=item * Data
+
+A block of octets that make up the plaintext data.
+
+This argument is required (for a non-empty object).
+
+=item * Filename
+
+The name of the file that this data came from, or the name of a file
+where it should be saved upon extraction from the packet (after
+decryption, for example, if this packet is going to be encrypted).
+
+=item * Mode
+
+The mode in which the data is formatted. Valid values are C<t> and
+C<b>, meaning "text" and "binary", respectively.
+
+This argument is optional; I<Mode> defaults to C<b>.
+
+=back
+
+=head2 $pt->save
+
+Returns the serialized form of the plaintext object, which is the
+plaintext data, preceded by some meta-data describing the data.
+
+=head2 Crypt::OpenPGP::Plaintext->parse($buffer)
+
+Given I<$buffer>, a I<Crypt::OpenPGP::Buffer> object holding (or
+with offset pointing to) a plaintext data packet, returns a new
+I<Crypt::OpenPGP::Ciphertext> object, initialized with the data
+in the buffer.
+
+=head2 $pt->data
+
+Returns the plaintext data.
+
+=head2 $pt->mode
+
+Returns the mode of the packet (either C<t> or C<b>).
+
+=head1 AUTHOR & COPYRIGHTS
+
+Please see the Crypt::OpenPGP manpage for author, copyright, and
+license information.
+
+=cut