<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Timothy Legge</title>
    <description>The latest articles on DEV Community by Timothy Legge (@timlegge).</description>
    <link>https://dev.to/timlegge</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F807144%2F1a2fa5ac-d541-4269-a431-840274c82419.jpeg</url>
      <title>DEV Community: Timothy Legge</title>
      <link>https://dev.to/timlegge</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/timlegge"/>
    <language>en</language>
    <item>
      <title>New version of Crypt::OpenPGP released</title>
      <dc:creator>Timothy Legge</dc:creator>
      <pubDate>Sat, 05 Oct 2024 03:26:21 +0000</pubDate>
      <link>https://dev.to/timlegge/new-version-of-cryptopenpgp-released-3498</link>
      <guid>https://dev.to/timlegge/new-version-of-cryptopenpgp-released-3498</guid>
      <description>&lt;p&gt;I recently took over maintenance for #Perl's Crypt::OpenPGP module. &lt;a href="https://metacpan.org/pod/Crypt::OpenPGP" rel="noopener noreferrer"&gt;https://metacpan.org/pod/Crypt::OpenPGP&lt;/a&gt;. The latest release merged a significant number of older PRs that had languished on #GitHub for years and fixed a lot of issues. I am currently looking at support for parsing gnupg key box files that now hold public keys.&lt;/p&gt;

&lt;p&gt;While reviewing the code I discovered &lt;a href="https://metacpan.org/pod/Data::Buffer" rel="noopener noreferrer"&gt;https://metacpan.org/pod/Data::Buffer&lt;/a&gt;, an amazingly easy way to parse binary data files. Last released in 2001 and it still works great 23 years later.&lt;/p&gt;

&lt;p&gt;That's despite running on completely different Linux distributions.  Version 5.6.x Perl was at of the art in 2001.  It still runs fine in 5.40 Perl - No changes needed.  &lt;/p&gt;

&lt;p&gt;What other Programming language provides that level of backward compatibility.&lt;/p&gt;

</description>
      <category>perl</category>
      <category>pgp</category>
      <category>openpgp</category>
    </item>
    <item>
      <title>Dist::Zilla::Plugin::GitHub::CreateRelease</title>
      <dc:creator>Timothy Legge</dc:creator>
      <pubDate>Tue, 22 Aug 2023 01:29:38 +0000</pubDate>
      <link>https://dev.to/timlegge/distzillaplugingithubcreaterelease-3ahl</link>
      <guid>https://dev.to/timlegge/distzillaplugingithubcreaterelease-3ahl</guid>
      <description>&lt;p&gt;I released an initial version of Dist::Zilla::Plugin::GitHub::CreateRelease.&lt;/p&gt;

&lt;p&gt;It creates a GitHub Release complete with release notes (per options) and attaches the #cpan archive to the release.&lt;/p&gt;

&lt;p&gt;Its great for ensuring that you create a GitHub Release when you release a new #perl module version to cpan.&lt;/p&gt;

&lt;p&gt;It is likely rough so pull requests are welcome.&lt;/p&gt;

&lt;p&gt;It supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Draft Releases&lt;/li&gt;
&lt;li&gt;Obtaining release notes from the Change Log file, a specified file, the output of Dist::Zilla::Plugin::SignReleaseNotes or a generic release note generated by the module.&lt;/li&gt;
&lt;li&gt;Attaching the cpan archive&lt;/li&gt;
&lt;li&gt;Adding a checksum for the cpan archive to the release notes&lt;/li&gt;
&lt;li&gt;specifying that the notes should be a code block (verbatim text)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hope its useful...&lt;/p&gt;

</description>
      <category>perl</category>
      <category>cpan</category>
      <category>github</category>
      <category>distzilla</category>
    </item>
    <item>
      <title>Crypt::OpenSSL::SignCSR released</title>
      <dc:creator>Timothy Legge</dc:creator>
      <pubDate>Sun, 02 Jul 2023 02:17:06 +0000</pubDate>
      <link>https://dev.to/timlegge/cryptopensslsigncsr-released-1683</link>
      <guid>https://dev.to/timlegge/cryptopensslsigncsr-released-1683</guid>
      <description>&lt;p&gt;I released a new version of &lt;a href="https://metacpan.org/pod/Crypt::OpenSSL::SignCSR"&gt;https://metacpan.org/pod/Crypt::OpenSSL::SignCSR&lt;/a&gt; a #perl module to allow you to sign a Certificate Signing Request (CSR) from perl.  I was looking for a module to allow me to create a self signed certificate from perl directly and was not able to find one.  I could have called the openssl command to create one but that seemed like cheating.&lt;/p&gt;

&lt;p&gt;It's a XS based module which is a Frankenstein merger of #perl and #c that is fun to work with.  Basically I grabbed the parts of OpenSSL C code that I needed and married it to #perl.  It went very well and was a lot easier than I expected.  I did have to spend some time tracking down issues with different OpenSSL versions but it does what I want.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Net::SAML2 0.60 TRIAL Released</title>
      <dc:creator>Timothy Legge</dc:creator>
      <pubDate>Mon, 19 Sep 2022 15:31:47 +0000</pubDate>
      <link>https://dev.to/timlegge/netsaml2-060-trial-released-m81</link>
      <guid>https://dev.to/timlegge/netsaml2-060-trial-released-m81</guid>
      <description>&lt;p&gt;The Perl Net::SAML2 module has been around a long time and although there have been some significant updates over the last several years, the last couple of releases have seen significant changes thanks to &lt;a href="https://github.com/waterkip"&gt;Wesley Schwengle&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With Net::SAML2 0.60-TRIAL however, there are multiple potentially &lt;strong&gt;BREAKING CHANGES&lt;/strong&gt; depending on how you have written your application.  Your application &lt;strong&gt;may&lt;/strong&gt; need updates for this version.&lt;/p&gt;

&lt;p&gt;Perl has always promoted test scripts to ensure that new versions were automatically tested with the same tests as old versions.  In most cases a module will not ship if it breaks one of the existing test scripts.  In this case, the changes serve to improve the functionality and the consistency of the functions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BREAKING CHANGES&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Support multiple signing keys in the metadata.  This version attempts to ensure compatibility but the call to Net::SAML2::IdP-&amp;gt;cert will return an array of certs for each $use.  It is, however, likely that there will only be one cert in the array.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Net::SAML2::Binding::SOAP was improved.  The call to Net::SAML2::Binding::SOAP-&amp;gt;handle_request() now returns the XML whereas in the past it returned the certificate's subject and the xml as an array.  This make it consistent with the Redirect and POST Bindings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Net::SAML2::Binding::POST was also improved.  Previously the call to Net::SAML2::Binding::POST-&amp;gt;handle_response() returned inconsistent results depending on whether a cacert was provided.  This version returns the XML of the decoded request.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Other Changes of note&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Redirects now validate the raw URI that is passed to the call.  It is assumed that the URI that your application has sent is unmodified from the response that the web server received.  lighttpd in particular normalises the response and will break Redirects from Microsoft Azure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SAML trust anchors were implemented and the verification of the SAML response was improved.  It is possible to validate the response with subject, issuer or issuer_hash as anchors in addition to the cacert.  Neither cacert nor anchors are required as long as the signature of the response is valid.  The cacert has not been required for the Redirect or SOAP binding so this treats SOAP the same.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Required Application Updates&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There were several changes to the test suite that will likely need to be made in your application:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;To support metadata.xml containing multiple KeyDescriptors the call to Net::SAML2::IdP-&amp;gt;cert($use) now returns an ARRAY. &lt;br&gt;
As this is an helper function that is meant to allow you to pass the cert to another Net::SAML2 call it was deemed low risk.  Your code &lt;strong&gt;may&lt;/strong&gt; be unaffected.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The call to Net::SAML2::Binding::SOAP-&amp;gt;handle_request() needs to be updated to reflect that it returns only the decoded XML not an array of the certificate Subject and XML.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The call to Net::SAML2::Binding::POST-&amp;gt;handle_response() returned inconsistent results depending on whether a cacert was provided.  This version returns the XML of the decoded request.  Previously it returned either 1 for success or if a cacert was used either "(verified) and the certificate Subject" or 0 if the certificate verification failed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The lighttpd.conf for the testapp did require a change to prevent it from "normalizing" a SAML Logout Redirect.  There are contradictory RFCs concerning SAML and the "normalising" URIs.  If you use lighttpd in a SAML application with AZURE as your SAML IdP see &lt;a href="https://github.com/perl-net-saml2/perl-Net-SAML2/commit/3855393eb454097e1e326a516a573f37ce3456a3#diff-8fd15aaa870fd2b9cda596bf3bb870ce2723ae412e55f0b653124b45d87e1bea"&gt;lighttpd.conf&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Possible Impacts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is worth noting that the testapp (that implements a rudimentary Service Provider) included in the git repo did not require any code changes to the application for this version.  &lt;/p&gt;

&lt;p&gt;While my setup tests against multiple IdPs I do not have a working SOAP IdP at present. &lt;/p&gt;

</description>
      <category>perl</category>
      <category>saml</category>
      <category>soap</category>
    </item>
    <item>
      <title>Net::SAML2 version 0.55 Released</title>
      <dc:creator>Timothy Legge</dc:creator>
      <pubDate>Sat, 16 Apr 2022 01:11:58 +0000</pubDate>
      <link>https://dev.to/timlegge/netsaml2-version-055-released-55ld</link>
      <guid>https://dev.to/timlegge/netsaml2-version-055-released-55ld</guid>
      <description>&lt;p&gt;&lt;a href="https://metacpan.org/pod/Net::SAML2"&gt;Net::SAML2&lt;/a&gt; is a Perl module that implements the SAML2 protocol for Perl Applications.&lt;/p&gt;

&lt;p&gt;This release adds support for EncryptedAssertions via the &lt;a href="https://metacpan.org/pod/XML::Enc"&gt;XML::Enc&lt;/a&gt; module.&lt;/p&gt;

&lt;p&gt;Support for EncryptedAssertions is automatic if an EncryptedAssertion is received but the call to Net::SAML2::Protocol::Assertion must provide a key_file and a cacert to decrypt the EncryptedAssertion and verify the Signature on the decrypted Assertion (if it is signed).&lt;/p&gt;

&lt;p&gt;No changes are required for existing applications that do not use EncryptedAssertions.&lt;/p&gt;

&lt;p&gt;If you have never implemented SAML2 in a Perl web application, there is an extensive &lt;a href="https://github.com/perl-net-saml2/perl-Net-SAML2/blob/master/TUTORIAL.md"&gt;tutorial&lt;/a&gt; that discusses how to implement Net::SAML2 using Foswiki's &lt;a href="https://foswiki.org/Extensions/SamlLoginContrib"&gt;SamlLoginContrib&lt;/a&gt; as an example.&lt;/p&gt;

&lt;p&gt;In addition, the git repo includes a testapp that makes it easy to test against multiple IdPs by simply adding a directory, named for the IdP, containing valid metadata.xml and cacert.pem files.&lt;/p&gt;

</description>
      <category>perl</category>
      <category>sso</category>
      <category>saml</category>
    </item>
    <item>
      <title>XML::Sig 0.57 Released</title>
      <dc:creator>Timothy Legge</dc:creator>
      <pubDate>Fri, 15 Apr 2022 23:50:24 +0000</pubDate>
      <link>https://dev.to/timlegge/xmlsig-057-released-2i1e</link>
      <guid>https://dev.to/timlegge/xmlsig-057-released-2i1e</guid>
      <description>&lt;p&gt;XML::Sig is a perl module to sign and verify XML Digital Signatures&lt;/p&gt;

&lt;p&gt;This is a fairly minor release that addresses some test failures caused by the OpenSSL project &lt;a href="https://mta.openssl.org/pipermail/openssl-project/2020-January/001720.html"&gt;choosing to "not load” the Legacy provider by default in version 3&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This effectively drops support for a &lt;a href="https://www.openssl.org/docs/manmaster/man7/OSSL_PROVIDER-legacy.html"&gt;number of very old and broken algorithms&lt;/a&gt; (at least by default) and that is a very good thing despite the negative impact on their users.&lt;/p&gt;

&lt;p&gt;It does however make one wonder if it is not time for the &lt;a href="https://www.w3.org/2008/xmlsec/"&gt;XML Security Working Group&lt;/a&gt; to spin up and update the specifications for the changes from  the last ten years.&lt;/p&gt;

</description>
      <category>perl</category>
    </item>
    <item>
      <title>XML::Enc 0.06 Released</title>
      <dc:creator>Timothy Legge</dc:creator>
      <pubDate>Sun, 10 Apr 2022 14:46:28 +0000</pubDate>
      <link>https://dev.to/timlegge/xmlenc-006-released-493c</link>
      <guid>https://dev.to/timlegge/xmlenc-006-released-493c</guid>
      <description>&lt;p&gt;XML::Enc is written to be a generic Encryption/Decryption module for XML.  While it does not currently support all of the requirements of &lt;a href="https://www.w3.org/TR/xmlenc-core/"&gt;https://www.w3.org/TR/xmlenc-core/&lt;/a&gt; it supports enough to encrypt and decrypt XML documents.&lt;/p&gt;

&lt;p&gt;The trial version of Net::SAML2 0.54 uses XML:Enc to decrypt an EncryptedAssertion.&lt;/p&gt;

&lt;p&gt;The latest version 0.06 is a minor version that simply increased the minimum required version of Crypt::AuthEnc::GCM to 0.062.&lt;/p&gt;

&lt;p&gt;XML::Enc supports the following data encryption methods:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;tripledes-cbc&lt;/li&gt;
&lt;li&gt;aes128-cbc&lt;/li&gt;
&lt;li&gt;aes192-cbc&lt;/li&gt;
&lt;li&gt;aes256-cbc&lt;/li&gt;
&lt;li&gt;aes128-gcm&lt;/li&gt;
&lt;li&gt;aes192-gcm&lt;/li&gt;
&lt;li&gt;aes256-gcm&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;XML::Enc supports the following Key Transport encryption methods:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;rsa-1_5&lt;/li&gt;
&lt;li&gt;rsa-oaep-mgf1p&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>perl</category>
      <category>xmlenc</category>
      <category>xml</category>
    </item>
    <item>
      <title>Dist::Zilla::Plugin::SignReleaseNotes version 0.0006</title>
      <dc:creator>Timothy Legge</dc:creator>
      <pubDate>Sun, 06 Feb 2022 15:52:05 +0000</pubDate>
      <link>https://dev.to/timlegge/distzillapluginsignreleasenotes-version-00006-4dcd</link>
      <guid>https://dev.to/timlegge/distzillapluginsignreleasenotes-version-00006-4dcd</guid>
      <description>&lt;p&gt;Dist::Zilla::Plugin::SignReleaseNotes is a perl module to automatically create and gpg sign release notes as part of a Dist::Zilla release flow.&lt;/p&gt;

&lt;p&gt;The release notes include all of the commits between the most recent tags in your git repository.  It assumes that your Dist::Zilla flow is tagging the repo as part of the release process.&lt;/p&gt;

&lt;p&gt;The produced Release-{version} file is created in the root of the module directory and includes the sha-256 hash of the file that is released to CPAN. &lt;/p&gt;

&lt;p&gt;The use case is to simplify creating release notes on github and similar and to have a developer certified (via a gpg signature) sha256 hash of the file as it was uploaded to cpan.  There has been more attention being paid to ensuring the authenticity of releases and this module is my way of helping that (but mostly simplifying my release process).&lt;/p&gt;

&lt;p&gt;The following is a sample of the release notes created:&lt;/p&gt;

&lt;p&gt;`&lt;br&gt;
-----BEGIN PGP SIGNED MESSAGE-----&lt;br&gt;
Hash: RIPEMD160&lt;/p&gt;

&lt;p&gt;Dist::Zilla::Plugin::SignReleaseNotes&lt;/p&gt;

&lt;p&gt;Release 0.0006&lt;/p&gt;

&lt;p&gt;Change Log&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1e5d7ed v0.0006&lt;/li&gt;
&lt;li&gt;dd458e2 Update version&lt;/li&gt;
&lt;li&gt;3249fd6 Fix typo in sample&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SHA256 hash of CPAN release&lt;/p&gt;

&lt;p&gt;0266e366e2c975adc03a4de9109d80cb9aac8fc897419e8f3a72d54c60fb3a0b *Dist-Zilla-Plugin-SignReleaseNotes-0.0006.tar.gz&lt;/p&gt;

&lt;p&gt;-----BEGIN PGP SIGNATURE-----&lt;br&gt;
iQIzBAEBAwAdFiEEMguXHBCUSzAt6mNu1fh7LgYGpfkFAmH/6XAACgkQ1fh7LgYG&lt;br&gt;
pflnUA/+LzT9YMkjNebM3TP2SAAxl4tYbOi/WvE8ipOLq1LLnIihjEvRL+ajtfGP&lt;br&gt;
F75MwkjZvy8FpDZXYUKt5JQykT9aqvB9zVb2IoqOCcUOp3OZKefMZbHQzDfckaSC&lt;br&gt;
H7O65bAXWM6AVCmXr6OmHegvbODi92DAB7YPDoWEVl5OT29hIhmBeK3QwFi/cnJo&lt;br&gt;
7k/le8AcarxXCnRMNMs8Tr9yCYjHyExMyhEPkk6TzHVyFerFV12S57X2yKR5gk/H&lt;br&gt;
XO1r+K3vCow68Q3TcxRcM1K7eJ0pr+gdulvZImy+12OhVddTkeZ3UEDIjSdRI4Av&lt;br&gt;
hFT8PahaINgif0KAMJovwlwolX3T06cHMTgo4CdQPm/wCgYaU5twAUKv+KesgakR&lt;br&gt;
8KKESMqO8EJBm7ig2WIBqUS2NZEel7Q4DEqlG6qQKh4WDiNs+IgyEfxssuh5CKAq&lt;br&gt;
Edat5YN4reQxrLDNNkrzdHGKemM6PEb4GZeK9o9ougQv3rwV+D8XZuz3bO8HlurN&lt;br&gt;
cIpby/5kZXveAypOf34p98612YmjN800t3UDeeNsvzM9eqolDPycfCljHEB4Vp3I&lt;br&gt;
y35xT3+tnbn0I3TFZfz/O7AZh4/0ELgWeBAK5VltqyXL2BVd3u1DcP4m4DtYVxhy&lt;br&gt;
G2uKvRgZI3PfbtrDUQj3VGG5Vb8wj3L9PNKghhLmm3hR3gV8m9o=&lt;br&gt;
=UGb3&lt;br&gt;
-----END PGP SIGNATURE-----&lt;br&gt;
`&lt;/p&gt;

</description>
      <category>perl</category>
    </item>
  </channel>
</rss>
