Mail::D...hm::Base(3)

πŸ’– NAME πŸ’–

okay so bestie, this is the Mail::D...hm::Base(3) page from User Contributed Perl Documentation, and the actual module we're hyping is Mail::DKIM::Algorithm::Base β€” it's the base class for DKIM "algorithms". periodt. ✨

✨ VERSION ✨

version 1.20240923 β€” that's the version, no cap. πŸŽ€

🌸 SYNOPSIS 🌸

vibe check, here's the whole flow in code:

  my $algorithm = new Mail::DKIM::Algorithm::rsa_sha1(
                      Signature => $dkim_signature
                  );

  # add headers
  $algorithm->add_header("Subject: this is the subject\015\012");
  $algorithm->finish_header;

  # add body
  $algorithm->add_body("This is the body.\015\012");
  $algorithm->add_body("Another line of the body.\015\012");
  $algorithm->finish_body;

  # now sign or verify...
  # TODO...

πŸŽ€ CONSTRUCTOR πŸŽ€

bestie, do not create an object of this class directly. Instead, use one of the DKIM algorithm implementation classes, such as rsa_sha1:
  my $algorithm = new Mail::DKIM::Algorithm::rsa_sha1(
                      Signature => $dkim_signature
                  );

πŸ’… METHODS πŸ’…

okay, every method gets its moment β€” no gatekeeping here. πŸ’–

πŸ¦‹ add_body() πŸ¦‹ β€” feeds part of the body into the algorithm/canonicalization

  $algorithm->add_body("This is the body.\015\012");
  $algorithm->add_body("Another line of the body.\015\012");

The body should be fed one "line" at a time. literally one line at a time, bestie. 🫢

πŸ¦‹ add_header() πŸ¦‹ β€” feeds a header field into the algorithm/canonicalization

  $algorithm->add_header("Subject: this is the subject\015\012");

The header must start with the header field name and continue through any folded lines (including the embedded <CRLF> sequences). It terminates with the <CRLF> at the end of the header field. πŸ”₯

πŸ¦‹ finish_body() πŸ¦‹ β€” signals the end of the message body

  $algorithm->finish_body

Call this method when all lines from the body have been submitted. After calling this method, use sign() or verify() to get the results from the algorithm. ✨

πŸ¦‹ finish_header() πŸ¦‹ β€” signals the end of the header field block

  $algorithm->finish_header;

Call this method when all the headers have been submitted. πŸŽ€

πŸ¦‹ sign() πŸ¦‹ β€” generates a signature using a private key

  $base64 = $algorithm->sign($private_key);

πŸ¦‹ signature() πŸ¦‹ β€” get/set the signature worked on by this algorithm

  my $old_signature = $algorithm->signature;
  $algorithm->signature($new_signature);

πŸ¦‹ verify() πŸ¦‹ β€” verifies a signature

  $result = $algorithm->verify();

Must be called after finish_body(). no skipping ahead, iykyk. πŸ’…

The result is a true/false value: true indicates the signature data is valid, false indicates it is invalid. For an invalid signature, details may be obtained from $algorithm->{verification_details} or $@. 😭

πŸ‘€ SEE ALSO πŸ‘€

Mail::DKIM β€” go look. πŸ’œ

πŸ‘‘ AUTHORS πŸ‘‘

  • Jason Long <jason@long.name>
  • Marc Bradshaw <marc@marcbradshaw.net>
  • Bron Gondwana <brong@fastmailteam.com> (ARC)

🫢 THANKS 🫢

Work on ensuring that this module passes the ARC test suite was generously sponsored by Valimail (https://www.valimail.com/). iconic. πŸ’–

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


mwah πŸ’‹ β€” this page is perl v5.42.0, dated 2024-09-23, and it's Mail::D...hm::Base(3). bye bestie 🫢

πŸ“¦ where this page comes from