Skip to content

[gtk3-port] Stages 0-12: Gtk2->Gtk3 port + test suite + CI - #1

Open
szjozsef wants to merge 10 commits into
mainfrom
gtk3-port
Open

szjozsef wants to merge 10 commits into
mainfrom
gtk3-port

Conversation

@szjozsef

Copy link
Copy Markdown
Owner

Change-Id: I6fdcb19474fcb6036681f484a7049f957d86ccd9

szjozsef added 10 commits May 14, 2026 19:15
Change-Id: I6fdcb19474fcb6036681f484a7049f957d86ccd9
Change-Id: Ia875fd976745960a6cd85e447f1f6f2d3e0e66b1
Change-Id: Id72e0ba60b583aafbda603047a081ec60541368c
Stages 14-22 — eliminate UI::Compat shims, use native Gtk3 API throughout:

- HBox/VBox/HSeparator/HButtonBox -> Gtk3::Box/Separator/ButtonBox
  with orientation argument
- Gtk3::Table + attach_defaults + set_col_spacing
  -> Gtk3::Grid + native attach (via new GUI::HELPERS::create_grid)
- Combo + set_popdown_strings + set_use_arrows + set_value_in_list
  -> Gtk3::ComboBoxText API directly (remove_all + append_text +
  set_active; ->entry -> ->get_child)
- ImageMenuItem -> Gtk3::MenuItem (menu icons deprecated since 3.10)
- TextView::modify_font -> inline Gtk3::CssProvider
- RadioButton legacy 2-arg new -> new_with_label_from_widget
- ->vbox / ->action_area / ->can_default / ->resize accessor forms
  -> get_content_area / get_action_area / set_can_default / removed
- create_menu rewritten with native Gtk3::MenuBar/Menu/MenuItem
- UI/Compat.pm shim module deleted
- UI/Stock.pm survives as plain helper (factory methods, no
  monkey-patching)
- new t/40-gtk3-smoke.t exercises native widget construction
  under Xvfb

Stage 23 — radio row ordering:

- %md_algorithms and %bit_lengths were plain Perl hashes; Perl 5.18+
  randomizes hash iteration, so radio rows reordered on every dialog
  open. Converted to ordered (value, label) arrays and rewrote
  _fill_radiobox to splice pairs.

Stage 24 — ECDSA / Ed25519 / Ed448 key support:

- OpenSSL::newkey adds branches for EC (genpkey -algorithm EC
  -pkeyopt ec_paramgen_curve:<curve>), Ed25519, Ed448. RSA/DSA
  legacy paths kept.
- New Request dialog: single 'Key Type' ComboBoxText with 12
  presets (RSA 2048/3072/4096/8192, DSA 2048/3072, ECDSA P-256/
  P-384/P-521/secp256k1, Ed25519, Ed448) replaces the separate
  Algorithm + Keylength radio rows.
- KEY::_check_key recognises BEGIN EC PRIVATE KEY -> 'EC' type.
- REQ.pm SIG_ALGORITHM -> digest mapping rewritten as substring
  scan so ECDSA (ecdsa-with-SHA*) and Ed25519/Ed448 (digest=0,
  omit -md) work. Latent ECDSA bug fixed too.
- OpenSSL::signreq defensive whitelist on -md.
- OpenSSL::_pretty_pk_algorithm renders id-ecPublicKey as ECDSA,
  ED25519 as Ed25519, etc. on the info panels.

Plus accumulated earlier Stage 13 smoke-test fixes since the last
push: read_reqlist/read_certlist/read_keylist cache uses > not >=
to avoid same-second false cache hits; status bar restored after
list enumeration; Copy command button + STDERR + file fallback for
X-to-Windows clipboard bridges; quiet zip/tar invocations; ed25519
PKCS#8 key export uses openssl pkey (universal subcommand); $opts
shared-closure bug in Sign/Renew menus fixed.

Change-Id: If9c1ab677b9e3403b5d954e2c1a5eb34e2fd370a
The test computed $expected_marker from only the RSA/DSA PEM headers, so
on OpenSSL 3.0+ (Ubuntu 22.04 CI, Debian 12) it expected 'UNKNOWN' for
the encrypted-PKCS#8 keys that 'genrsa -aes256' now emits. _check_key
correctly identifies those as 'PKCS8' since Stage 13; teach the test
the full mapping (RSA / DSA / EC / PKCS8 / UNKNOWN) so it matches reality
on both legacy and modern OpenSSL releases.

Change-Id: I2fc82f676d25bdfb89106d26d3444f76ced70271
Change-Id: I2f37aa678a88ccc884e1ee2198c209d8804cdf20
Marks the end of the GTK3-port + modernization work (Stages 0-24).
Window title now reads 'TinyCA2 Management 0.8.0'.

Change-Id: Ie41981d36d62c5f7524029a867971b6f5aac3860
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant