Tengo una clase para cifrar un string con gnupg la clase funciona bien con mi propia key pero cuando
importo otra key e intento cifrar una mensaje con esa key la clase falla, el error es el siguiente
Código Python:
Ver original
gpg: B7BB02D9: No hay seguridad de que esta clave pertenezca realmente al usuario que se nombra [GNUPG:] INV_RECP 10 user@dominio.com gpg: [stdin]: encryption failed: Unusable public key
La clase que utilizo es la siguiente
Código Python:
Ver original
class EncryptedString(): def __init__(self,homegpg,user,set_result): self.homegpg = homegpg self.user = user self.set_result = set_result def encrypt_string(self,input_string): #Encrypt a string self.input_string = input_string gpg = gnupg.GPG(gnupghome = self.homegpg) unencrypted_string = self.input_string encrypted_data = gpg.encrypt(unencrypted_string, self.user) encrypted_string = str(encrypted_data) ok = encrypted_data.ok status = encrypted_data.status stderr = encrypted_data.stderr result = [ok,status,stderr,unencrypted_string,encrypted_string] return result[self.set_result] # instantiate if __name__ == "__main__": print "Is not shown if import" homegpg = '../home/gpg/' input_string = 'string en texto plano' set_result = 2 encryptstring = EncryptedString(homegpg,user,set_result) print encryptstring.encrypt_string(input_string) print " enjoy "
Buscando en google encontré que hay que firmar la clave importada con mi propia clave para que funcione correctamente,
pero no se como hacer eso.
La forma que uso para importar la calve es la siguiente
Código Python:
Ver original
class ImportKey(): def __init__(self,homegpg,keyfile): self.homegpg=homegpg self.keyfile=keyfile def import_key(self): #Import keys gpg = gnupg.GPG(gnupghome=self.homegpg) key_data = open(self.keyfile).read() import_result = gpg.import_keys(key_data) pprint(import_result.results) # instantiate if __name__ == "__main__": print "Is not shown if import" homegpg='../home/gpg' keyfile='../home/gpg/publickeyfile.asc' importkey=ImportKey(homegpg,keyfile) importkey.import_key() print " enjoy "
Pese a haber leído la documentación[0] no me entero como firmar la clave importada. ¿ alguien tiene idea de como resolver esto ?
python 2.7
[0] http://packages.python.org/python-gnupg/
Gracias por leerme y si faltan datos pregunten