OpenSSL bindings for Perl 6
Switch branches/tags
Nothing to show
Clone or download
Latest commit fd3ca7a Aug 19, 2018

OpenSSL Build Status Build status


OpenSSL bindings for Perl 6


Socket connection class. You probably want to use IO::Socket::SSL instead of this (low-level) interface.

use OpenSSL;

my $ssl =, :client);
my $s =$host, :port(443));
# $ssl.write, etc


Public key signing tools

use OpenSSL::RSATools;

my $pem = slurp 'key.pem';
my $rsa = => $pem);
my $data = 'as df jk l';
my $signature = $rsa.sign($data.encode);
my $rsa = => $public);
if $rsa.verify($data.encode, $signature) { ... }


Symmetric encryption tools (currently only AES256/192/128 encrypt/decrypt)

use OpenSSL::CryptTools;

my $ciphertext = encrypt("asdf".encode,
                         :iv(("0" x 16).encode),
                         :key(('x' x 32).encode));
my $plaintext = decrypt($ciphertext,
                        :iv(("0" x 16).encode),
                        :key(('x' x 32).encode));


Digest Functions (currently only md5/sha1/sha256/sha384/sha512)

use OpenSSL::Digest;
my Blob $digest = md5("xyz".encode);


OO-Interface supporting incremental digesting

use OpenSSL::Digest::MD5;

my $md5 =; # Create fresh object
$md5.add('abc');                    # pass in Str or Blob
$md5.add('def');                    # Add some more data
my $digest = $md5.hash;             # Blob hash (and reset)
$md5.addfile('myfile');             # Read a file
my $hexdigest = $md5.hex;           # hex hash  (and reset)