Convert-ASCII-Armour
view release on metacpan or search on metacpan
lib/Convert/ASCII/Armour.pm view on Meta::CPAN
my %data;
while ($content) {
$content =~ s/^(\d+)\x00(\d+)\x00// ||
return $self->error ("Inconsistent content.");
my $keylen = $1; my $valuelen = $2;
my $key = substr $content, 0, $keylen;
my $value = substr $content, $keylen, $valuelen;
substr ($content, 0, $keylen + $valuelen) = "";
$data{$key} = $value;
}
return \%data;
}
sub armor { armour (@_) }
sub unarmor { unarmour (@_) }
1;
=head1 NAME
Convert::ASCII::Armour - Convert binary octets into ASCII armoured messages.
=head1 SYNOPSIS
my $converter = new Convert::ASCII::Armour;
my $message = $converter->armour(
Object => "FOO RECORD",
Headers => {
Table => "FooBar",
Version => "1.23",
},
Content => {
Key => "0x8738FA7382",
Name => "Zoya Hall",
Pic => "....", # gif
},
Compress => 1,
);
print $message;
-----BEGIN COMPRESSED FOO RECORD-----
Version: 1.23
Table: FooBar
eJwzZzA0Z/BNLS5OTE8NycgsVgCiRIVciIAJg6EJg0tiSaqhsYJvYlFy...
XnpOZl5qYlJySmpaekZmVnZObl5+QWFRcUlpWXlFZRWXAk7g6OTs4urm...
Fh4VGaWAR5ehkbGJqZm5hSUeNXWKDsoGcWpaGpq68bba0dWxtTVmDOYM...
NzuZ
=MxpZvjkrv5XyhkVCuXmsBQ==
-----END COMPRESSED FOO RECORD-----
my $decoded = $converter->unarmour( $message )
|| die $converter->errstr();
=head1 DESCRIPTION
This module converts hashes of binary octets into ASCII messages suitable
for transfer over 6-bit clean transport channels. The encoded ASCII
resembles PGP's armoured messages, but are in no way compatible with PGP.
=head1 METHODS
=head2 B<new()>
Constructor.
=head2 B<armour()>
Converts a hash of binary octets into an ASCII encoded message. The
encoded message has 4 parts: head and tail strings that act as identifiers
and delimiters, a cluster of headers at top of the message, Base64 encoded
message body and a Base64 encoded MD5 digest of the message body. armour()
takes a hash as argument with following keys:
=over 4
=item B<Object>
An identification string embedded in head and tail strings.
=item B<Content>
Content is a hashref that contains the binary octets to be encoded. This
hash is serialized, compressed (if specified) and encoded into ASCII with
MIME::Base64. The result is the body of the encoded message.
=item B<Headers>
Headers is a hashref that contains ASCII headers that are placed at top of
the encoded message. Headers are encoded as RFC822 headers.
=item B<Compress>
A boolean parameter that forces armour() to compress the message body.
=back
=head2 B<unarmour()>
Decodes an armoured ASCII message into the hash provided as argument
to armour(). The hash contains Content, Object, and Headers.
unarmour() performs several consistency checks and returns a non-true
value on failure.
=head2 B<errstr()>
Returns the error message set by unarmour() on failure.
=head1 AUTHOR
Vipul Ved Prakash, E<lt>mail@vipul.netE<gt>
( run in 1.607 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )