Setting aside the JSON canonicalization issue, I think that locking in
a signature algorithm (esp. one that already is showing weakness such
as SHA-1) is a mistake.  The digest key should go to an object that
has the algorithm and data properties.

Instead of this:

"digest": "pFCzUK7yuO0dWtm0oATB7ag6vj0="

use this:

"digest": {"algorithm": "SHA1", "data": "pFCzUK7yuO0dWtm0oATB7ag6vj0="}

It may be the case that SHA1 is the default for the near future, but
this choice will probably not be the default by the time Couch hits
2.0...

Now that I think about it a bit more, perhaps the digest should be a
nested object with being the algorithm identifier and data being the
hash value for that particular algorithm.  This also means that the
"signed" object would need to be a similarly nested object with
algorithm/hash-signature pairs, but it does give more flexibility and
a small bit of future-compatibility.

jim

Reply via email to