The Perl Advent Calendar needs more articles for 2022. Submit your idea today!


Mail::DKIM::PrivateKey - a private key loaded in memory for DKIM signing


version 1.20220520


 my $key1 = Mail::DKIM::PrivateKey->load(
               File => '/path/to/private.key');

 my $key2 = Mail::DKIM::PrivateKey->load(
               Data => $base64);

 # use the loaded key in a DKIM signing object
 my $dkim = Mail::DKIM::Signer->new(
               Key => $key2,


load() - loads a private key into memory

 my $key1 = Mail::DKIM::PrivateKey->load(
               File => '/path/to/private.key');

Loads the Base64-encoded key from the specified file.

  my $key2 = Mail::DKIM::PrivateKey->load(Data => $base64);

Loads the Base64-encoded key from a string already in memory.

  my $key3 = Mail::DKIM::PrivateKey->load(Cork => $openssl_object);

Creates a Mail::DKIM::PrivateKey wrapper object for the given OpenSSL key object. The key object should be of type Crypt::OpenSSL::RSA.


cork() - access the underlying OpenSSL key object

  $openssl_object = $key->cork;

The returned object is of type Crypt::OpenSSL::RSA.


Cryptographically sign the given message digest.

  $key->sign_digest('SHA-1', sha1('my message text'));

The first parameter is the name of the digest: one of "SHA-1", "SHA-256".

The second parameter is the message digest as a binary string.

The result should be the signed digest as a binary string.



  • Jason Long <>

  • Marc Bradshaw <>

  • Bron Gondwana <> (ARC)


Work on ensuring that this module passes the ARC test suite was generously sponsored by Valimail (


  • Copyright (C) 2013 by Messiah College

  • Copyright (C) 2010 by Jason Long

  • Copyright (C) 2017 by Standcore LLC

  • Copyright (C) 2020 by FastMail Pty Ltd

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.