-
Notifications
You must be signed in to change notification settings - Fork 204
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add Cryptid codecs #345
add Cryptid codecs #345
Conversation
Signed-off-by: Dave Grantham <dwg@linuxprogrammer.org>
The new Multisig and Multikey specs and implementations strictly follow:
This cannot be said for the existing Varsig spec. It relies heavily on context to know how to decode the bytes of the digital signature. More importantly, if your implementation doesn't support a specific algorithm, there is no way to know how many bytes to skip over in the stream to skip over the Varsig. Multisig fixes this as an explicit goal. |
Apologies for our slowness on this @dhuseby, both Volker and I are a bit stretched and you've given us a lot to review with your PRs and the cost of context switching to try and get our heads around all the new stuff in here isn't small. Firstly, the one we tend to be most concerned about is anything that adds
The new multi* entries will also require some additional thought and consideration. And due to the changes of the tags for existing entries we may need to pull in some folks who rely on those. |
Ah...ok. These are a new IPLD data structures but I think you're right,
This is a fair concern. I think to be safe, I'll just duplicate the overlap and assign new numbers. Let me fix this. |
Signed-off-by: Dave Grantham <dwg@linuxprogrammer.org>
Thank you for taking time to review this. I changed the provenance-log and provenance-log-entry to be |
Signed-off-by: Dave Grantham <dwg@linuxprogrammer.org>
I also just corrected the |
Signed-off-by: Dave Grantham <dwg@linuxprogrammer.org>
Also just cleaned up the |
I only had a quick look. We are generally pretty cautious adding anything into the number space which is encoded into a single byte as it is so limited (also some things that are already there shouldn't really, but that's hard to change). So if you would move your additions to a 2 bytes or higher section, that would be great. |
I can do that, but what about the I'm happy to move things elsewhere but I had reasons for putting these in the single byte space. |
That's the point. At the moment we hardly add anything to the range of single bytes, the idea is to put things there that have wide adoption/are standardized. I know that it's annoying if it really gets used, that later on you don't really change to a different code, but that space is just so limited. |
FWIW, the word Multikey is currently being used in some of the upcoming W3C specs related to DID and Verifiable Credentials: https://www.w3.org/TR/vc-data-integrity/#multikey. |
My multikey predates the W3C use. There's no mention of multikey in this file yet. Plus the verifiable credentials spec has failed to gain adoption in key political and business areas. |
Signed-off-by: Dave Grantham <dwg@linuxprogrammer.org>
Signed-off-by: Dave Grantham <dwg@linuxprogrammer.org>
Signed-off-by: Dave Grantham <dwg@linuxprogrammer.org>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Those are lot of codecs, but as all of them are at least in the 2 byte range I don't see a reason not to accept them. We surely want people to use the multicodec table and experiment with things. Hence I approve it.
But before merging I'd like to see another approval from someone else, as it isn't just me making decisions.
I think I'm OK with this, it's just a lot of new tags being added, including single-entry ones: vlag, nonce, multikey. I'd be more comfortable if we didn't encourage more expansion of tags. But I don't have a hard reason to object. |
At the risk of bikeshedding... vlad and cid tags should just be "identifier" or something generic like that. multikey and key could be combine into "key-like" or something generic like that. But that would require re-tagging a bunch of values which I'm sure is way worse of an outcome. The tags are all fundamental types that fit with the establish pattern IMO. Thanks for the time you spent reviewing these. |
I see no reason to block with further bikeshedding |
Thanks! Can we land this? |
Signed-off-by: Dave Grantham <dwg@linuxprogrammer.org>
I think all concerns have been addressed. |
Sorry for the delays Dave, we're not well set up for dealing with complex requests like this. |
@dhuseby Thanks for your patience and all the changes compared to the original PR! |
@rvagg @vmx Sorry for the late appearance, this crossed my inbox last week but I was at TPAC on a borrowed laptop and couldn't get here in time.
This kinda feels like a "trust me bro" assertion. The "W3C use" was based on early versions of juan benet's eternally-unfinished/unpublished spec from 2016 which seems consistent with references in the original commits in this org. In fact, I myself removed FWIW W3C DIDWG and VCWG do not use the term "multikey" in surface-level schemas but do under the hood, for RDF-expansion purposes but not as a CID-like multiformat/composite containing keytypes; what they actually use (and what recent drafts specify internally rather than normrefing) is a multibased raw-codec ULEB128 of public key bytes with the w3c-namespaced RDF/JSON-LD semantic Similarly, I believe there is some multisig work ongoing elsewhere in the PL cinematic universe that I referred OP to when they asked about this a year ago, and never heard back about. That one goes by No particular action needed at this time but I figured this thread should have more information in it for future reference. |
@bumblefudge I don't care what it is called. If "multikey" is a hotly contested name then let's go with "polykey" or "unikey" or "whateverkey" or "skeletonkey". I officially do not care. I just need these changes to get landed. So in my best effort to end the yak shaving and to celebrate Halloween/Diwali and our triumph of light over darkness/enlightenment over ignorance, I propose the use of "skeletonkey" to alleviate the concern. |
If Rust allowed for unicode type names, I'd even go so far as to call it "💀 key" |
No worries! This is |
oh totally the sigil is yours! sorry it didn't land sooner. |
Thank you! |
This adds a number of multicodec values for various Cryptid projects ahead of the public release of the code. Most of the code is already available:
*Contains the Nonce implementation as well. Spec