Proposal: new CPAN module Crypt::TSD (.TSD read/write per RFC 5544)

[email protected] (Guido Brugnara via module-authors) Sun, 14 Sep 2025 13:15:31 +0200
Newsgroups perl.module-authors
Message-ID <[email protected]>
--------------8QRFQMUMOdImDgYwREXbi56P
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hello module-authors,
     I’d like feedback on a new CPAN distribution I’m preparing: 
Crypt::TSD. It implements reading and writing of RFC 5544 “Syntax for 
Binding Documents with Time-Stamps” containers (file extension .tsd; 
media type “application/timestamped-data” per RFC 5955).

In practice, .tsd is used notably in Italy; globally, adoption appears 
limited compared to RFC 3161 Time-Stamp Tokens and ETSI/eIDAS containers 
(CAdES/XAdES/PAdES/ASiC).

Still, .tsd exists in the wild and there is no dedicated CPAN module 
covering it. Based on my survey of open-source options, the only Open 
Source library exposing APIs for RFC 5544/.tsd that I found is Bouncy 
Castle (Java); Crypt::TSD would provide a Perl alternative.

Planned scope:
  - Read .tsd files and extract the original content and associated 
time-stamp tokens.
  - Create .tsd files from content and existing RFC 3161 tokens.
  - Provide helpers for basic structural checks; further verification 
utilities may follow.
  - Provide command line scripts to read/write .tsd files.

Before first upload, I’d appreciate feedback on:
  - The namespace: does Crypt::TSD look appropriate (alternatives: 
Crypt::TimestampedData, Crypt::RFC5544)?
  - Any API/naming concerns or prior art I should align with.

Thanks in advance for your guidance. I’m happy to adjust naming and API 
based on suggestions.

Best regards,
Guido Brugnara

--------------8QRFQMUMOdImDgYwREXbi56P
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p _d-id="22900"><span _d-id="24465"
        class="--l --r sentence_highlight">Hello module-authors,<br>
            I’d like feedback on a new CPAN distribution I’m preparing:
        Crypt::TSD. It implements reading and writing of RFC 5544
        “Syntax for Binding Documents with Time-Stamps” containers (file
        extension .tsd; media type “application/timestamped-data” per
        RFC 5955).</span></p>
    <p _d-id="22900"><span _d-id="24465"
        class="--l --r sentence_highlight">In practice, .tsd is used
        notably in Italy; globally, adoption appears limited compared to
        RFC 3161 Time-Stamp Tokens and ETSI/eIDAS containers
        (CAdES/XAdES/PAdES/ASiC).</span></p>
    <p _d-id="22900"><span _d-id="24465"
        class="--l --r sentence_highlight">Still, .tsd exists in the
        wild and there is no dedicated CPAN module covering it. Based on
        my survey of open-source options, the only Open Source library
        exposing APIs for RFC 5544/.tsd that I found is Bouncy Castle
        (Java); Crypt::TSD would provide a Perl alternative.</span></p>
    <p _d-id="22900"><span _d-id="24465"
        class="--l --r sentence_highlight">Planned scope:<br>
         - Read .tsd files and extract the original content and
        associated time-stamp tokens.<br>
         - Create .tsd files from content and existing RFC 3161 tokens.<br>
         - Provide helpers for basic structural checks; further
        verification utilities may follow.<br>
         - </span><span _d-id="2496" class="--l --r container-target"><span
          _d-id="2498"
          class="--l --r hover:bg-blue-100 hover:dark:bg-blue-600">Provide</span>
        <span _d-id="2502"
          class="--l --r hover:bg-blue-100 hover:dark:bg-blue-600">command</span>
        <span _d-id="2506"
          class="--l --r hover:bg-blue-100 hover:dark:bg-blue-600">line</span>
        <span _d-id="2510"
          class="--l --r hover:bg-blue-100 hover:dark:bg-blue-600">scripts</span>
        <span _d-id="2514"
          class="--l --r hover:bg-blue-100 hover:dark:bg-blue-600">to</span>
        <span _d-id="2518"
          class="--l --r hover:bg-blue-100 hover:dark:bg-blue-600">read</span><span
          _d-id="2521"
          class="--l --r hover:bg-blue-100 hover:dark:bg-blue-600">/</span><span
          _d-id="2524"
          class="--l --r hover:bg-blue-100 hover:dark:bg-blue-600">write</span>
        <span _d-id="2528"
          class="--l --r hover:bg-blue-100 hover:dark:bg-blue-600">.</span><span
          _d-id="2531"
          class="--l --r hover:bg-blue-100 hover:dark:bg-blue-600">tsd</span>
        <span _d-id="2535"
          class="--l --r hover:bg-blue-100 hover:dark:bg-blue-600">files</span><span
          _d-id="2538"
          class="--l --r hover:bg-blue-100 hover:dark:bg-blue-600">.</span></span></p>
    <p _d-id="22900"><span _d-id="24465"
        class="--l --r sentence_highlight">Before first upload, I’d
        appreciate feedback on:<br>
         - The namespace: does Crypt::TSD look appropriate
        (alternatives: Crypt::TimestampedData, Crypt::RFC5544)?<br>
         - Any API/naming concerns or prior art I should align with.</span></p>
    <p _d-id="22900"><span _d-id="24465"
        class="--l --r sentence_highlight">Thanks in advance for your
        guidance. I’m happy to adjust naming and API based on
        suggestions.</span></p>
    <p _d-id="22900"><span _d-id="24465"
        class="--l --r sentence_highlight">Best regards,<br>
        Guido Brugnara<br>
        <br>
      </span></p>
  </body>
</html>

--------------8QRFQMUMOdImDgYwREXbi56P--