Open
Conversation
ef7ba40 to
8e7485d
Compare
948fe9f to
114b984
Compare
HatemMn
reviewed
Apr 17, 2026
HatemMn
reviewed
Apr 17, 2026
Contributor
HatemMn
left a comment
There was a problem hiding this comment.
Other than than those comments amazing work, looks good and working well !
065a9a4 to
7c3c6e7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Key Auto-Rotation (Scheduled / Policy-Driven)
ReKeylinks old and new keys viaReplacementObjectLink/ReplacedObjectLink(#859).run_auto_rotation()scans all objects due for rotation and rotates them automatically; supportsSymmetricKey(ReKey),Certificate(Certify upsert), andPrivateKey/PublicKey(RSA/EC/PQC key pairs).rotate_interval,rotate_name,rotate_offsetfrom the old key; old key getsrotate_interval = 0to prevent re-rotation."toto_<uuid>"children; UUID suffix stripped on subsequent rotations.ReplacementObjectLink/ReplacedObjectLink; serial number mixed with timestamp to guarantee unique DER bytes per RFC 5280.sym keys set-rotation-policysub-command;--rotate-interval/--rotate-name/--rotate-offsetflags on allcreatecommands;re-keysub-commands for RSA, EC, PQC.--auto-rotation-check-interval-secsto configure the background cron interval.Renewal Notification System
NotificationsStoretrait: backed by SQLite, PostgreSQL, MySQL (notificationstable); Redis uses a no-op store.dispatch_renewal_warnings: scans objects approaching rotation deadline, creates DB notifications, and sends e-mails via optional SMTP notifier (no feature flag — controlled byKMS_SMTP_HOST).GET /api/notifications,GET /api/notifications/count-unread,POST /api/notifications/{id}/read,POST /api/notifications/read-all.NotificationBellin header with live unread badge and inline Popover; full list at/notifications.SmtpConfig::Debugredacts the SMTP password with<redacted>.PQC X.509 Certificate Generation
Certifynow supports ML-DSA-44/65/87 and all SLH-DSA variants (SHA2/SHAKE × 128s/f, 192s/f, 256s/f) as subject key algorithms and issuer signing keys (non-FIPS only); digest selection fixed to use the issuer's key type, mapping EdDSA/ML-DSA/SLH-DSA toMessageDigest::null().Algorithmenum incertificate_utilsextended with all ML-DSA, SLH-DSA, and ML-KEM/hybrid-KEM variants; KEM self-signed certificates are rejected by the server with a clear error.get_certificate_algorithms()exposes all ML-DSA, SLH-DSA, and ML-KEM options in the Generate New Keypair dropdown;data-testid="cert-algorithm-select"added to the algorithm<Select>for E2E testability.certificates-certify.spec.tswith 27 tests covering all four certification methods (generate key pair, existing public key, re-certify, CA-issued) and every supported algorithm; PQC tests auto-skipped in FIPS mode.Multi-HSM Support
[[hsm_instances]]TOML config: unlimited simultaneous HSM instances; prefix-based routing (hsm,hsm1,hsm2, …).GET /hsm/statusendpoint: JSON array of all connected HSM instances with per-slot accessibility.Objects → HSM Statuspage;Locate.tsxprefix regex updated to/^hsm[0-9]*::/.Closes #859
Closes #910