Round 286: PAM ext, SSHD ext, GPG ext, SSL ext, Vault ext (20 commands)

ober

ec7d009a086852f6173a961bc7362487fa2385d7

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 80291da..72f49f7 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 286 — PAM ext, SSHD ext, GPG ext, SSL ext, Vault ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| pam-status | :orange_circle: | Show PAM status |
+| pam-config | :orange_circle: | View PAM configuration |
+| pam-module-list | :orange_circle: | List PAM modules |
+| pam-auth-test | :orange_circle: | Test PAM authentication |
+| sshd-config | :orange_circle: | View SSHD configuration |
+| sshd-restart | :orange_circle: | Restart SSHD service |
+| sshd-keygen | :orange_circle: | Generate SSH key |
+| sshd-authorized-keys | :orange_circle: | List authorized keys |
+| gpg-list-keys | :orange_circle: | List GPG keys |
+| gpg-import | :orange_circle: | Import GPG key |
+| gpg-export | :orange_circle: | Export GPG key |
+| gpg-sign-file | :orange_circle: | Sign file with GPG |
+| ssl-cert-info | :orange_circle: | Show certificate info |
+| ssl-cert-verify | :orange_circle: | Verify certificate |
+| ssl-cert-generate | :orange_circle: | Generate SSL certificate |
+| ssl-cert-expiry | :orange_circle: | Check certificate expiry |
+| vault-status | :orange_circle: | Show Vault status |
+| vault-seal | :orange_circle: | Seal Vault |
+| vault-unseal | :orange_circle: | Unseal Vault |
+| vault-read | :orange_circle: | Read Vault secret |
+
 ### Round 285 — Cgroup ext, Namespace ext, Seccomp ext, Capabilities ext, Ulimit ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index ca16cb4..909577c 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -22177,4 +22177,62 @@
 
 (def (cmd-ulimit-soft app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Ulimit: showing soft limits")))
\ No newline at end of file
+    (echo-message! echo "Ulimit: showing soft limits")))
+
+;;; Round 286 — GPG ext, SSL ext, Vault ext (batch 2)
+
+(def (cmd-gpg-export app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key ID: "
+      (lambda (kid)
+        (echo-message! echo (str "GPG: exporting " kid))))))
+
+(def (cmd-gpg-sign-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (file)
+        (echo-message! echo (str "GPG: signing " file))))))
+
+(def (cmd-ssl-cert-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Certificate file: "
+      (lambda (cert)
+        (echo-message! echo (str "SSL: info for " cert))))))
+
+(def (cmd-ssl-cert-verify app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Certificate file: "
+      (lambda (cert)
+        (echo-message! echo (str "SSL: verifying " cert))))))
+
+(def (cmd-ssl-cert-generate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Common name: "
+      (lambda (cn)
+        (echo-message! echo (str "SSL: generating cert for " cn))))))
+
+(def (cmd-ssl-cert-expiry app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Certificate file: "
+      (lambda (cert)
+        (echo-message! echo (str "SSL: checking expiry of " cert))))))
+
+(def (cmd-vault-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vault: showing status")))
+
+(def (cmd-vault-seal app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vault: sealing")))
+
+(def (cmd-vault-unseal app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Unseal key: "
+      (lambda (key)
+        (echo-message! echo "Vault: unsealing")))))
+
+(def (cmd-vault-read app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Secret path: "
+      (lambda (path)
+        (echo-message! echo (str "Vault: reading " path))))))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 469b4b7..da99052 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -22840,3 +22840,51 @@
       (lambda (path)
         (echo-message! echo (str "Seccomp: loading " path))))))
 
+;;; Round 286 — PAM ext, SSHD ext, GPG ext (batch 1)
+
+(def (cmd-pam-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PAM: showing status")))
+
+(def (cmd-pam-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PAM: viewing configuration")))
+
+(def (cmd-pam-module-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PAM: listing modules")))
+
+(def (cmd-pam-auth-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Service: "
+      (lambda (svc)
+        (echo-message! echo (str "PAM: testing auth for " svc))))))
+
+(def (cmd-sshd-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SSHD: viewing configuration")))
+
+(def (cmd-sshd-restart app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SSHD: restarting service")))
+
+(def (cmd-sshd-keygen app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key type (rsa/ed25519): "
+      (lambda (typ)
+        (echo-message! echo (str "SSHD: generating " typ " key"))))))
+
+(def (cmd-sshd-authorized-keys app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SSHD: listing authorized keys")))
+
+(def (cmd-gpg-list-keys app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "GPG: listing keys")))
+
+(def (cmd-gpg-import app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key file: "
+      (lambda (file)
+        (echo-message! echo (str "GPG: importing " file))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 9dae046..faf4db2 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7423,4 +7423,25 @@
   (register-command! 'ulimit-set cmd-ulimit-set)
   (register-command! 'ulimit-hard cmd-ulimit-hard)
   (register-command! 'ulimit-soft cmd-ulimit-soft)
+  ;; Round 286
+  (register-command! 'pam-status cmd-pam-status)
+  (register-command! 'pam-config cmd-pam-config)
+  (register-command! 'pam-module-list cmd-pam-module-list)
+  (register-command! 'pam-auth-test cmd-pam-auth-test)
+  (register-command! 'sshd-config cmd-sshd-config)
+  (register-command! 'sshd-restart cmd-sshd-restart)
+  (register-command! 'sshd-keygen cmd-sshd-keygen)
+  (register-command! 'sshd-authorized-keys cmd-sshd-authorized-keys)
+  (register-command! 'gpg-list-keys cmd-gpg-list-keys)
+  (register-command! 'gpg-import cmd-gpg-import)
+  (register-command! 'gpg-export cmd-gpg-export)
+  (register-command! 'gpg-sign-file cmd-gpg-sign-file)
+  (register-command! 'ssl-cert-info cmd-ssl-cert-info)
+  (register-command! 'ssl-cert-verify cmd-ssl-cert-verify)
+  (register-command! 'ssl-cert-generate cmd-ssl-cert-generate)
+  (register-command! 'ssl-cert-expiry cmd-ssl-cert-expiry)
+  (register-command! 'vault-status cmd-vault-status)
+  (register-command! 'vault-seal cmd-vault-seal)
+  (register-command! 'vault-unseal cmd-vault-unseal)
+  (register-command! 'vault-read cmd-vault-read)
 )