From c06eb76644b1edfcfd614a279fa77a1278e717b4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C5=82awomir=20Nizio?= <slawomir.nizio@sabayon.org>
Date: Sun, 9 Feb 2020 22:18:26 +0100
Subject: [PATCH] [entropy.server] gpg related fix for Python 3

With Python 3, data in sqlite from packagesignatures.gpg column was binary on
read (because it was binary on write) but a string was actually required.

The problem was visible with GPG signed packages: when injected into database
using eit with Python 3, it would then explode during equo update/install on
client side.

error from Python 2:

      File "/usr/lib64/python2.7/site-packages/entropy/client/interfaces/package/actions/fetch.py", line 1063, in do_signatures_validation
	if hash_val in signatures:
    TypeError: writable buffers are not hashable

error from Python 3:

      File "/usr/lib64/python3.6/site-packages/entropy/client/interfaces/package/actions/fetch.py", line 1023, in do_compare_gpg
	tmp_f.write(hash_val)
    TypeError: write() argument must be str, not bytes
---
 lib/entropy/server/interfaces/main.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git lib/entropy/server/interfaces/main.py lib/entropy/server/interfaces/main.py
index 4a7103ff6..cac4fdb7e 100644
--- lib/entropy/server/interfaces/main.py
+++ lib/entropy/server/interfaces/main.py
@@ -7126,7 +7126,8 @@ class Server(Client):
             return None
         gpg_sign_path = repo_sec.sign_file(repo, pkg_path)
         # read file content and add to 'gpg' signature
-        with open(gpg_sign_path, "rb") as gpg_f:
+        enc = etpConst['conf_encoding']
+        with codecs.open(gpg_sign_path, "r", encoding = enc) as gpg_f:
             gpg_signature = gpg_f.read()
         os.remove(gpg_sign_path)
         return gpg_signature
-- 
2.24.1