---
name: "Convert::ASCII::Armour"
section: "3pm"
platform: "linux"
package: "libconvert-ascii-armour-perl"
version: "1.4-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Convert::ASCII::Armour"
---

# Convert::ASCII::Armour(3pm)

Convert binary octets into ASCII armoured messages.

## NAME

Convert::ASCII::Armour - Convert binary octets into ASCII armoured messages.

## 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();
```

## 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.

## METHODS

### new()

Constructor.

### 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:

- **Object**

  An identification string embedded in head and tail strings.

- **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.

- **Headers**

  Headers is a hashref that contains ASCII headers that are placed at top of the encoded message. Headers are encoded as RFC822 headers.

- **Compress**

  A boolean parameter that forces **armour()** to compress the message body.

### 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.

### errstr()

Returns the error message set by **unarmour()** on failure.

## AUTHOR

Vipul Ved Prakash, \<mail@vipul.net\>

## LICENSE

Copyright (c) 2001, Vipul Ved Prakash. All rights reserved. This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

## SEE ALSO

**MIME::Base64**(3), **Compress::Zlib**(3), **Digest::MD5**(3)
