Groups | Search | Server Info | Login | Register
Groups > fr.comp.lang.perl > #1811
| 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> |
(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 | Next — Previous in thread | Next in thread | Find similar
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