You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was trying to cryptographically sign some BSON documents using the dryoc crate, and noticed that, sometimes my tests would pass, other times they would somehow fail!? And when I made some seemingly random changes to the code, it would start working again!?
It turns out the root cause was that, when I was serializing the same data, it was not always in the same order, causing the signature to be different! 😮
I guess that's on me for trying this with an unstructured data format, but it would be nice to have a feature that automatically sorts entries. I currently hacked together a to_sorted function that sorts the entries using &str's handy built-in Cmp.
The text was updated successfully, but these errors were encountered:
Yep, the Document type is backed by a standard HashMap, which is nondeterministic in iteration order. Would the RawDocument type work for your purposes? Iteration there is deterministic (it's whatever order the serialized data is in).
I fixed my problems just using a BTreeMap without needing any extra trickery 😁. BTreeMap keeps everything in a deterministic order thanks to its structure, and that seems to carry over when serializing it into a Document 👍
I was trying to cryptographically sign some BSON documents using the
dryoc
crate, and noticed that, sometimes my tests would pass, other times they would somehow fail!? And when I made some seemingly random changes to the code, it would start working again!?It turns out the root cause was that, when I was serializing the same data, it was not always in the same order, causing the signature to be different! 😮
I guess that's on me for trying this with an unstructured data format, but it would be nice to have a feature that automatically sorts entries. I currently hacked together a
to_sorted
function that sorts the entries using&str
's handy built-inCmp
.The text was updated successfully, but these errors were encountered: