Projet

Général

Profil

Bug #38240

Problème sur la clé signature des services en python3

Ajouté par Emmanuel Cazenave il y a plus de 4 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
05 décembre 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Problème de base un appel de wcs (qui tourne chez moi en py3) vers chrono qui échoue avec 'Invalid signature'.
En opération préalable j'avais shooté mon tenant chrono (parce que je m'en sortais pas de la contrainte d'unicité sur le slug des évènements), puis re-création via cook.

Dans le site-option.cfg :

[wscall-secrets]
....
chrono.dev.publik.love = a729046aa4faca7d5a4ae2fdee30551cab8d9d7caae4f830004d589575a1240

Retour à python2 pour wcs, déclenchement d'un check_hobo en ajoutant une variable coté hobo. Plus de problème d'appels vers chrono et dans site-options.cfg, la clé avec un caractère en plus :

[wscall-secrets]
....
chrono.dev.publik.love = a729046aa4faca7d5a4ae2fdee30551cab8d9d7caae4f830004d589575a1240c

Fichiers

Révisions associées

Révision e80f55d6 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 4 ans

ctl: preserve key length in py3 (#38240)

Historique

#1

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

Et donc c'est check_hobos::shared_secret, avec en python2, le int(secret1, 16) qui retourne un long (https://docs.python.org/2/library/functions.html#long), dont la représentation hexadécimale se termine par un 'L', qui est volontairement shooté par :

return hex(int(secret1, 16) ^ int(secret2, 16))[2:-1]
<pre>

Mais en python3, plus de long, que des int, plus de 'L' à la fin, et plouf un caractère en moins dans la clé.
#2

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

J'ai bien vérifié que le tests passait en python2 et échouait en python3 avant de patcher shared_secret .

#3

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

Et comme le problème avait déjà été résolu dans hobo, on va faire pareil.

#5

Mis à jour par Frédéric Péters il y a plus de 4 ans

Sans prêter à conséquence, celui-ci aussi pourrait être corrigé :

wcs/api_utils.py:        nonce = hex(random.getrandbits(128))[2:-1]

Et un bout dans la documentation,

help/fr/api-auth.page:        nonce = hex(random.getrandbits(128))[2:-1]
#7

Mis à jour par Frédéric Péters il y a plus de 4 ans

  • Statut changé de Solution proposée à Solution validée
#8

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit e80f55d694b93a674076ac24d7245d686dd2da33
Author: Emmanuel Cazenave <ecazenave@entrouvert.com>
Date:   Thu Dec 5 18:43:14 2019 +0100

    ctl: preserve key length in py3 (#38240)
#9

Mis à jour par Frédéric Péters il y a plus de 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF