-
Notifications
You must be signed in to change notification settings - Fork 6
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 spec up spec #162
Add spec up spec #162
Conversation
It might be easiest for you to review this if you check out the branch and render the spec yourself. You can do that with ... git fetch
git checkout origin/spec-up
cd spec
npm i
npm run build
open build/index.html |
1. **Web1**: Read-only, static websites | ||
2. **Web2**: Read-write, interactive platforms | ||
3. **Web3**: Read-write-own, blockchain-based applications | ||
4. **Web5**: Decentralized, user-centric internet, without the need for a blockchain |
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.
nice
spec/spec.md
Outdated
|
||
1. Key Manager Interface | ||
2. In-Memory Key Manager | ||
3. AWS KMS |
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.
are we 100% sure we need this / its required for the spec?
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.
I copied from the current readme I'd love to kill this or just define a key manager interface
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.
I feel strongly we should kill this as well as (4) and (5) below. I do feel that we need to add support for the 3 I'm proposing removing here, but I lack confidence the 3 belong here in this place at this time. Perhaps we could add a :::note
with commentary which describes our intention of covering all major platforms' key management at a later date.
* Data Signing | ||
|
||
::: note | ||
[AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-ecc) does not support [[ref:Ed25519]]. At some point in the future, we can consider introducing support for key wrapping. |
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.
especially since it wont event work lol
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.
hmm can you expand?
|
||
[[ref:JSON-SCHEMA]] support is ****REQUIRED**** for multiple features throughout [[ref:Web5 SDKs]], including, but not limited to support with [[ref:verifiable credentials]], [VC JSON Schemas](#vc-json-schema), and for use in validating the data models this specification has defined. | ||
|
||
Conformant implementations of [[ref:Web5 SDKs]] ****MUST**** support at least [[ref:JSON-SCHEMA-DRAFT-7]] and [[ref:JSON-SCHEMA-2020-12]]. |
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.
Chad says JSON-SCHEMA-2020-12 is backwards compatible with JSON-SCHEMA-DRAFT-7, so just writing in JSON-SCHEMA-DRAFT-7 should be sufficient right?
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.
And if someone used features from JSON-SCHEMA-2020-12 then it may or may not be compatible with SCHEMA-DRAFT-7... lol so it seems like everyone will / should only use SCHEMA-DRAFT-7
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.
we should be using 2020-12 since it's the latest draft, which is being used as the input document to a LTS type draft.
more info here and here which notes that if you're using 2020-12 you'll be fine (we're not using breaking features)
it should be straightforward to convert our schemas to 2020-12, I've done so in the past using this tool https://github.com/sourcemeta/alterschema
spec/spec.md
Outdated
|
||
| Method | Creation | Resolution | Note | | ||
|--------|----------|------------|------| | ||
| [[ref:did:web]] | ❌ | ✅ | - | |
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.
We can create a did web document (have this in the cli).. but yea they would have to host it on their domain, so the philosophical question: is a did:web created if its not hosted on a domain?
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.
created yes, published no
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.
okay so we should change this to
| [[ref:did:web]] | ❌ | ✅ | - | | |
| [[ref:did:web]] | ✅ | ✅ | - | |
yeah?
perhaps we should add a column for Publish
?
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.
good call, yes
spec/spec.md
Outdated
|
||
Web5 supports the following DID methods: | ||
|
||
| Method | Creation | Resolution | Note | |
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.
add update column here?
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.
good catch
|
||
#### Credential Status | ||
|
||
Conformant [[ref:Web5 SDKs]] ****MUST**** support Credential Status as specified by [[ref:STATUS-LIST-2021]] for usage with the W3C Verifiable Credential Data Model 1.1 [[ref:VC-DATA-MODEL-1.1]]. |
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.
not using the updated one? https://www.w3.org/TR/vc-bitstring-status-list/
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.
there are some weird things that will break if we do, mostly incompatibility with the 1.1 data model since bitstring is designed to be used with 2.0
spec/spec.md
Outdated
| Key Type | Algorithm | Function | | ||
|----------|-----------|----------| | ||
| [[ref:secp256k1]] | `ES256K` [[spec:RFC8812]] | Signing and Verification | | ||
| [[ref:Ed25519]] | `EdDSA` [[spec:RFC8032]] | Signing and Verification | |
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.
FWIW I was planning on adding support for the four key types from here https://did-dht.com/registry/index.html#key-type-index
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.
excellent, I'll add these
spec/spec.md
Outdated
| [[ref:did:web]] | ❌ | ✅ | - | | ||
| [[ref:did:jwk]] | ✅ | ✅ | - | | ||
| [[ref:did:dht]] | ✅ | ✅ | This is the "default" method for [[ref:Web5 SDKs]]. | | ||
| [[ref:did:key]] | ⚠️ | ⚠️ | This method has been implemented in both Kotlin and TypeScript, with no plans for support in other languages. | |
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.
I would probably just remove this line altogether
The new KT SDK (from Rust Core) won't have this
Co-authored-by: Kendall Weihe <[email protected]>
Co-authored-by: Kendall Weihe <[email protected]>
@KendallWeihe @nitro-neal @frankhinek @mistermoe I have incorporated all feedback. I'd like to get this merged and publishing as-is. Then I will work on a follow up PR for aligning normative statements (MUSTs) to test vectors we have, in addition to removing the README and GH-pageifying the spec. |
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.
Looks great! The big thing I would want to see in the future is a "Recommended vc-jwt
verification and parsing .
Basically this part:
https://github.com/TBD54566975/web5-rs/blob/main/crates/web5/src/credentials/verifiable_credential_1_1.rs#L271
where a vc jwt is still valid if it has the jwt parts but not the internal vc parts, like it is valid if it hass iss
and now vc.issuer (and when we build it internally we add vc.issuer from the iss
Maybe an example section of a "minimum viable vc-jwt" and a "full featured vc jwt"
thanks @nitro-neal I added links to that section of the spec and an issue marker for #134 |
Signed-off-by: Frank Hinek <[email protected]>
Fix #131
This is the first step in making web5 spec more formal, yay!
Next steps:
Separately, once we agree on the language in the spec and the features we can create a related spec for conformance testing. Here we can note the features, the associated test vectors, and whether the implementations we have are conformant against them.
Open to any & all feedback.