diff --git a/mayan/apps/django_gpg/managers.py b/mayan/apps/django_gpg/managers.py index 940f207e08..79a29b5af5 100644 --- a/mayan/apps/django_gpg/managers.py +++ b/mayan/apps/django_gpg/managers.py @@ -112,7 +112,7 @@ class KeyManager(models.Manager): shutil.rmtree(temporary_directory) raise KeyDoesNotExist('Specified key for verification not found in keyring') else: - gpg.import_keys(key_data=key.key_data) + result = gpg.import_keys(key_data=key.key_data) if signature_file: # Save the original data and invert the argument order @@ -124,11 +124,12 @@ class KeyManager(models.Manager): signature_file_buffer = io.BytesIO() signature_file_buffer.write(signature_file.read()) signature_file_buffer.seek(0) + signature_file.seek(0) verify_result = gpg.verify_file( file=signature_file_buffer, data_filename=temporary_filename ) signature_file_buffer.close() - # TODO: delete file + os.unlink(temporary_filename) else: verify_result = gpg.verify_file(file=file_object) @@ -136,19 +137,10 @@ class KeyManager(models.Manager): if verify_result: shutil.rmtree(temporary_directory) - SignatureVerification(verify_result.__dict__) - elif verify_result.status == 'no public key' and not (key_fingerprint or all_keys): - # File is signed but we need the key for full verification - #try: - # key = self.get(fingerprint__endswith=verify_result.key_id) - #except self.model.DoesNotExist: - # shutil.rmtree(temporary_directory) - # raise KeyDoesNotExist('Signature key is not found in keyring') - #else: - # gpg.import_keys(key_data=key.key_data) + return SignatureVerification(verify_result.__dict__) + elif verify_result.status == 'no public key' and not (key_fingerprint or all_keys or key_id): file_object.seek(0) - return self.verify_file(file_object=file_object, signature_file=signature_file, key_id=verify_result.key_id, key_fingerprint=key_fingerprint, all_keys=all_keys) - # verify_result = gpg.verify_file(file=file_object) + return self.verify_file(file_object=file_object, signature_file=signature_file, key_id=verify_result.key_id) else: shutil.rmtree(temporary_directory) raise VerificationError('File not signed') diff --git a/mayan/apps/django_gpg/tests/test_models.py b/mayan/apps/django_gpg/tests/test_models.py index 13a6e9d5bf..5b11afd959 100644 --- a/mayan/apps/django_gpg/tests/test_models.py +++ b/mayan/apps/django_gpg/tests/test_models.py @@ -47,7 +47,7 @@ class KeyTestCase(TestCase): with open(TEST_SIGNED_FILE) as signed_file: result = Key.objects.verify_file(signed_file) - self.assertTrue(result) + self.assertTrue(result.valid) self.assertEqual(result.fingerprint, TEST_KEY_FINGERPRINT) def test_embedded_verification_with_correct_fingerprint(self): @@ -56,7 +56,7 @@ class KeyTestCase(TestCase): with open(TEST_SIGNED_FILE) as signed_file: result = Key.objects.verify_file(signed_file, key_fingerprint=TEST_KEY_FINGERPRINT) - self.assertTrue(result) + self.assertTrue(result.valid) self.assertEqual(result.fingerprint, TEST_KEY_FINGERPRINT) def test_embedded_verification_with_incorrect_fingerprint(self): @@ -87,7 +87,7 @@ class KeyTestCase(TestCase): def test_detached_verification_no_key(self): with open(TEST_DETACHED_SIGNATURE) as signature_file: with open(TEST_FILE) as test_file: - with self.assertRaises(VerificationError): + with self.assertRaises(KeyDoesNotExist): Key.objects.verify_file(file_object=test_file, signature_file=signature_file) def test_detached_verification_with_key(self):