all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [PATCH proxmox-acme 0/1] fix #7749: always serialize in same order
@ 2026-07-14  9:04 Thomas Ellmenreich
  2026-07-14  9:04 ` [PATCH proxmox-acme 1/1] " Thomas Ellmenreich
  0 siblings, 1 reply; 2+ messages in thread
From: Thomas Ellmenreich @ 2026-07-14  9:04 UTC (permalink / raw)
  To: pve-devel; +Cc: Thomas Ellmenreich

Serializing acme responses to json, because of perls randomized hash key order,
would lead to unequal serialized responses if they were compared as bytes. By
setting "canonical => 1" the serializations now always have the same order and
can thus be compared bytewise.

I have tested the patch against a local instance of HashiCorp Vault PKI and the
EAB registration works.

It seems that "canonical" can have performance implications when serialising
larger objects, but since the objects produced in our acme client are
relatively small, I consider this acceptable.


proxmox-acme:

Thomas Ellmenreich (1):
  fix #7749: always serialize in same order

 src/PVE/ACME.pm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)


Summary over all repositories:
  1 files changed, 4 insertions(+), 4 deletions(-)

-- 
Generated by murpp 0.12.0




^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH proxmox-acme 1/1] fix #7749: always serialize in same order
  2026-07-14  9:04 [PATCH proxmox-acme 0/1] fix #7749: always serialize in same order Thomas Ellmenreich
@ 2026-07-14  9:04 ` Thomas Ellmenreich
  0 siblings, 0 replies; 2+ messages in thread
From: Thomas Ellmenreich @ 2026-07-14  9:04 UTC (permalink / raw)
  To: pve-devel; +Cc: Thomas Ellmenreich

All objects are now serialized with "canonical => 1" so that the
resulting bytes are directly comparable. Perls randomized hash key
orders lead to different serialization outputs even with the same input.

Signed-off-by: Thomas Ellmenreich <t.ellmenreich@proxmox.com>
---
 src/PVE/ACME.pm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/PVE/ACME.pm b/src/PVE/ACME.pm
index e6fb9c2..a5287ac 100644
--- a/src/PVE/ACME.pm
+++ b/src/PVE/ACME.pm
@@ -64,9 +64,9 @@ sub encode($) { # acme requires 'base64url' encoding
     return encode_base64url($_[0]);
 }
 
-sub tojs($;%) { # shortcut for to_json with utf8=>1
+sub tojs($;%) { # shortcut for to_json with utf8=>1 and canonical=>1
     my ($data, %data) = @_;
-    return to_json($data, { utf8 => 1, %data });
+    return to_json($data, { utf8 => 1, canonical => 1, %data });
 }
 
 sub fromjs($) {
@@ -155,7 +155,7 @@ sub save {
     }
     # pretty => 1 for readability
     # canonical => 1 to reduce churn
-    file_set_contents($self->{path}, tojs($o, pretty => 1, canonical => 1));
+    file_set_contents($self->{path}, tojs($o, pretty => 1));
 }
 
 # Load serialized account JSON file into $self
@@ -196,7 +196,7 @@ sub jwk {
 sub jwk_thumbprint {
     my ($self) = @_;
     my $jwk = $self->jwk(1); # $pure = 1
-    return encode(sha256(tojs($jwk, canonical => 1))); # canonical sorts
+    return encode(sha256(tojs($jwk)));
 }
 
 # A key authorization string in acme is a challenge token dot-connected with
-- 
2.47.3





^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-07-14  9:05 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-14  9:04 [PATCH proxmox-acme 0/1] fix #7749: always serialize in same order Thomas Ellmenreich
2026-07-14  9:04 ` [PATCH proxmox-acme 1/1] " Thomas Ellmenreich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal