Groups | Search | Server Info | Login | Register


Groups > fr.comp.lang.perl > #1811

Re: INN2 Cancel-Lock, implémentation RFC8315 (filtres perl)

From Gérald Niel <gerald.niel+spam@gegeweb.invalid>
Newsgroups fr.comp.lang.perl
Subject Re: INN2 Cancel-Lock, implémentation RFC8315 (filtres perl)
Date 2021-02-08 07:30 +0000
Organization GegeWeb.ORG
Message-ID <slrns21q5g.1hsa.gerald.niel+spam@home.niel.me> (permalink)
References <slrns21n0l.1ala.gerald.niel+spam@home.niel.me>

Show all headers | View raw


(supersedes bis)

Le Lundi 08 février 2021 à 06:37 UTC, Gérald Niel écrivait sur
fr.comp.lang.perl :

> Je pense qu'il y aurait moyen de n'utiliser que Digest::SHA.
> Et peut être Digest::MD5.

> Je ne garde que les portions concernées par Cancel-Lock/Key :

> ```perl
> use MIME::Base64();
> use Digest::SHA1();
> use Digest::HMAC_SHA1();
> use Digest::SHA qw( sha256_base64 );

Ici, je modifie pour n'utiliser que :

```perl
use Digest::SHA qw( sha1_base64 sha256_base64 );
use Digest::MD5 qw( md5_base64 );
```

Ensuite,

> ## C'est ici qu'il y a quelque chose à faire
> ## Le script tient compte des 3 formats de clefs/verrous possible
> ## (deux dans l'original).
> ## L'adaptation est pour gérer les clef SHA256 en plus de SHA-1 et MD5.
> ## Cancel-Lock peut contenir plusieurs hash si ajouté par le client,
> ## puis le serveur, séparé par un espace dans ce cas.

> sub verify_cancel_key($$$) {

[…]

>        my $key;
>        if ($1 eq 'sha1') {
>           $key = Digest::SHA1::sha1($2);
>           $key = MIME::Base64::encode_base64($key, ''); }
>        elsif ($1 eq 'md5') {
>           $key = Digest::MD5::md5($2);
>           $key = MIME::Base64::encode_base64($key, ''); }
>        elsif ($1 eq 'sha256') {
>           $key = sha256_base64($2);
>           while (length($key) % 4) {
>              $key .= '=';
>           }
>        }

Je remplace par :
```perl
         my $key;
         if ($1 eq 'sha256') {
            $key = sha256_base64($2);
         }
         elsif ($1 eq 'sha1') {
            $key = sha1_base64($2);
         }
         elsif ($1 eq 'md5') {
            $key = md5_base64($2);
         }
         $key = pad_b64digest($key);
```

Et je rajoute la fonction :

```perl
sub pad_b64digest($) {
   my ($b64_digest) = @_;
   while (length($b64_digest) % 4) {
     $b64_digest .= '=';
   }
   return $b64_digest;
}
```

Je n'ai pas encore testé, je voudrais savoir si c'est la bonne méthode
et surtout, si "sur le papier" ça fonctionne.

-- 
On ne le dira jamais assez, l'anarchisme, c'est l'ordre sans le
gouvernement ; c'est la paix sans la violence. C'est le contraire
précisément de tout ce qu'on lui reproche, soit par ignorance, soit
par mauvaise foi.                                  -+- Hem Day -+-

Back to fr.comp.lang.perl | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

INN2 Cancel-Lock, implémentation RFC8315 (filtres perl) Gérald Niel <gerald.niel+spam@gegeweb.invalid> - 2021-02-08 06:37 +0000
  Re: INN2 Cancel-Lock, implémentation RFC8315 (filtres perl) Gérald Niel <gerald.niel+spam@gegeweb.invalid> - 2021-02-08 07:30 +0000
    Re: INN2 Cancel-Lock, implémentation RFC8315 (filtres perl) Gérald Niel <gerald.niel+spam@gegeweb.invalid> - 2021-02-08 11:39 +0000

csiph-web