Skip to content

Commit a492c48

Browse files
committed
_sd elements' order do not depend on the order of the claims
1 parent f730806 commit a492c48

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

src/encoder.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,14 @@ impl<H: Hasher> SdObjectEncoder<H> {
169169
fn add_digest_to_object(object: &mut Map<String, Value>, digest: String) -> Result<()> {
170170
if let Some(sd_value) = object.get_mut(DIGESTS_KEY) {
171171
if let Value::Array(value) = sd_value {
172-
value.push(Value::String(digest))
172+
// Insert the
173+
let idx = value
174+
.iter()
175+
.enumerate()
176+
.find(|(_, value)| value.as_str().is_some_and(|s| s > &digest))
177+
.map(|(pos, _)| pos)
178+
.unwrap_or(value.len());
179+
value.insert(idx, Value::String(digest));
173180
} else {
174181
return Err(Error::DataTypeMismatch(
175182
"invalid object: existing `_sd` type is not an array".to_string(),

0 commit comments

Comments
 (0)