2017-04-15 2 views
1

J'ai essayé de résoudre un problème mais j'ai échoué d'innombrables fois. J'ai besoin d'utiliser une méthode, signe(), et j'ai la bibliothèque correcte importée, mais elle n'est toujours pas reconnue.PKCS1_PSS méthode()

Je suis de codage en Python et c'est ce que j'ai qui semble important:

#importing the library 
from Crypto.Signature import PKCS1_PSS 

[...] 
signer = PKCS1_PSS.new(keypair) 
sig = PKCS1_PSS.sign(keypair) 

Mais la méthode signe() est la seule chose dans tout le code de cette bibliothèque qui ne soit pas reconnu :.

« cette inspection détecte les noms qui doivent résoudre, mais ne raison de expédition dynamique et frappe de canard, cela est possible dans un nombre limité mais nombre utile de cas de haut niveau et des éléments de niveau de classe. sont pris en charge bette r que les éléments d'instance. "

Est-ce que quelqu'un a des suggestions sur comment résoudre ce problème ou savoir ce que je fais mal?

Répondre

3

La documentation de PKCS1_PSS est erronée. Il dit actuellement:

from Crypto.Signature import PKCS1_PSS 
from Crypto.Hash import SHA 
from Crypto.PublicKey import RSA 
from Crypto import Random 

message = 'To be signed' 
key = RSA.importKey(open('privkey.der').read()) 
h = SHA.new() 
h.update(message) 
signer = PKCS1_PSS.new(key) 
signature = PKCS1_PSS.sign(key) 

Mais il doit être le suivant analogue à la documentation de PKCS1_v1_5

from Crypto.Signature import PKCS1_PSS 
from Crypto.Hash import SHA 
from Crypto.PublicKey import RSA 
from Crypto import Random 

message = 'To be signed' 
key = RSA.importKey(open('privkey.der').read()) 
h = SHA.new() 
h.update(message) 
signer = PKCS1_PSS.new(key) 
signature = signer.sign(h) 
+0

Merci beaucoup pour la réponse ^^ –