In a new trial setup with sigul-1.1-1.el8.infra.x86_64 (from https://koji.fedoraproject.org/koji/buildinfo?buildID=1668924) I attempted to sigul new-key test but it failed. The following was logged on the server:
sigul new-key test
2021-11-16 10:17:14,454 DEBUG: Started processing a request 2021-11-16 10:17:14,455 INFO: Request: 'key' = b'test', 'keytype' = b'gnupg', 'op' = b'new-key', 'user' = b'd13677' 2021-11-16 10:17:15,367 INFO: Connection from CN=d13677 2021-11-16 10:17:15,397 ERROR: Unexpected exception Traceback (most recent call last): File "/usr/share/sigul/server.py", line 2041, in request_handling_child handler.handler(db, conn) File "/usr/share/sigul/server.py", line 1225, in cmd_new_key (fingerprint, key_passphrase) = gnupg_new_key(db, conn) File "/usr/share/sigul/server.py", line 1088, in gnupg_new_key name = key_name NameError: name 'key_name' is not defined 2021-11-16 10:17:15,400 ERROR: Child died with status 512
Briefly looking at the code, I guess the following patch might be appropriate:
--- /usr/share/sigul/server.py.orig 2021-01-13 12:01:59.000000000 -0500 +++ /usr/share/sigul/server.py 2021-11-16 10:19:29.779381632 -0500 @@ -1083,6 +1083,7 @@ + 'Subkey-Length: {0:d}\n'.format(conn.config.gnupg_subkey_length)) key_passphrase = utils.random_passphrase(conn.config.passphrase_length) key_attrs += 'Passphrase: {0!s}\n'.format(key_passphrase) + key_name = conn.safe_outer_field('key', required=True) name = conn.safe_outer_field('name-real') if name is None: name = key_name
However, that just led to another error when I attempted again with that patch:
2021-11-16 10:07:06,240 DEBUG: Waiting for a request 2021-11-16 10:07:07,195 DEBUG: Started processing a request 2021-11-16 10:07:07,196 INFO: Request: 'key' = b'test', 'keytype' = b'gnupg', 'op' = b'new-key', 'user' = b'd13677' 2021-11-16 10:07:08,166 INFO: Connection from CN=d13677 2021-11-16 10:07:09,971 ERROR: Unexpected exception Traceback (most recent call last): File "/usr/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 1244, in _execute_context cursor, statement, parameters, context File "/usr/lib64/python3.6/site-packages/sqlalchemy/engine/default.py", line 552, in do_execute cursor.execute(statement, parameters) sqlite3.IntegrityError: UNIQUE constraint failed: key_accesses.key_id, key_accesses.user_id The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/share/sigul/server.py", line 2042, in request_handling_child handler.handler(db, conn) File "/usr/share/sigul/server.py", line 1240, in cmd_new_key db.commit() File "/usr/lib64/python3.6/site-packages/sqlalchemy/orm/session.py", line 1026, in commit self.transaction.commit() File "/usr/lib64/python3.6/site-packages/sqlalchemy/orm/session.py", line 493, in commit self._prepare_impl() File "/usr/lib64/python3.6/site-packages/sqlalchemy/orm/session.py", line 472, in _prepare_impl self.session.flush() File "/usr/lib64/python3.6/site-packages/sqlalchemy/orm/session.py", line 2451, in flush self._flush(objects) File "/usr/lib64/python3.6/site-packages/sqlalchemy/orm/session.py", line 2589, in _flush transaction.rollback(_capture_exception=True) File "/usr/lib64/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File "/usr/lib64/python3.6/site-packages/sqlalchemy/util/compat.py", line 129, in reraise raise value File "/usr/lib64/python3.6/site-packages/sqlalchemy/orm/session.py", line 2549, in _flush flush_context.execute() File "/usr/lib64/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 422, in execute rec.execute(self) File "/usr/lib64/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 589, in execute uow, File "/usr/lib64/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 245, in save_obj insert, File "/usr/lib64/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 1120, in _emit_insert_statements statement, params File "/usr/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 988, in execute return meth(self, multiparams, params) File "/usr/lib64/python3.6/site-packages/sqlalchemy/sql/elements.py", line 287, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "/usr/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 1107, in _execute_clauseelement distilled_params, File "/usr/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 1248, in _execute_context e, statement, parameters, cursor, context File "/usr/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 1466, in _handle_dbapi_exception util.raise_from_cause(sqlalchemy_exception, exc_info) File "/usr/lib64/python3.6/site-packages/sqlalchemy/util/compat.py", line 383, in raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=cause) File "/usr/lib64/python3.6/site-packages/sqlalchemy/util/compat.py", line 128, in reraise raise value.with_traceback(tb) File "/usr/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 1244, in _execute_context cursor, statement, parameters, context File "/usr/lib64/python3.6/site-packages/sqlalchemy/engine/default.py", line 552, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: key_accesses.key_id, key_accesses.user_id [SQL: INSERT INTO key_accesses (key_id, user_id, encrypted_passphrase, key_admin) VALUES (?, ?, ?, ?)] [parameters: (1, 1, <memory at 0x7f2bef322948>, 1)] (Background on this error at: http://sqlalche.me/e/gkpj) 2021-11-16 10:07:09,978 ERROR: Child died with status 512