-
Notifications
You must be signed in to change notification settings - Fork 90
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
SD-JWT VC implementation #1413
SD-JWT VC implementation #1413
Conversation
…solvers with the same signature
Hi I was just wondering what is the current status of this work :) Currently when using this branch like this: [dependencies]
identity_credential = { git = "https://github.com/iotaledger/identity.rs", branch = "feat/sd-jwt-vc", default-features = false, features = [
"validator",
"credential",
"presentation",
"domain-linkage",
"sd-jwt-vc"
] } which results in a couple of compilation errors: $ cargo check
Checking identity_credential v1.3.1 (https://github.com/iotaledger/identity.rs?branch=feat/sd-jwt-vc#654b188e)
error[E0433]: failed to resolve: use of undeclared crate or module `futures`
--> /home/nander/.cargo/git/checkouts/identity.rs-3c836f09661bc7fb/654b188/identity_credential/src/sd_jwt_vc/metadata/vc_type.rs:1:5
|
1 | use futures::future::BoxFuture;
| ^^^^^^^ use of undeclared crate or module `futures`
error[E0433]: failed to resolve: use of undeclared crate or module `futures`
--> /home/nander/.cargo/git/checkouts/identity.rs-3c836f09661bc7fb/654b188/identity_credential/src/sd_jwt_vc/metadata/vc_type.rs:2:5
|
2 | use futures::future::FutureExt;
| ^^^^^^^ use of undeclared crate or module `futures`
error[E0308]: mismatched types
--> /home/nander/.cargo/git/checkouts/identity.rs-3c836f09661bc7fb/654b188/identity_credential/src/sd_jwt_vc/builder.rs:233:46
|
233 | .fold(builder, |builder, (key, value)| builder.insert_claim(key, value));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `SdJwtBuilder<H>`, found `Result<SdJwtBuilder<H>, Error>`
|
= note: expected struct `SdJwtBuilder<_>`
found enum `std::result::Result<SdJwtBuilder<_>, sd_jwt_payload::Error>`
help: consider using `Result::expect` to unwrap the `std::result::Result<SdJwtBuilder<H>, sd_jwt_payload::Error>` value, panicking if the value is a `Result::Err`
|
233 | .fold(builder, |builder, (key, value)| builder.insert_claim(key, value).expect("REASON"));
| +++++++++++++++++
error[E0599]: no method named `boxed` found for `async` block `{async block@/home/nander/.cargo/git/checkouts/identity.rs-3c836f09661bc7fb/654b188/identity_credential/src/sd_jwt_vc/metadata/vc_type.rs:105:3: 105:13}` in the current scope
--> /home/nander/.cargo/git/checkouts/identity.rs-3c836f09661bc7fb/654b188/identity_credential/src/sd_jwt_vc/metadata/vc_type.rs:153:4
|
105 | / async move {
106 | | // Check if current type has already been checked.
107 | | let is_type_already_checked = passed_types.contains(¤t_type);
108 | | if is_type_already_checked {
... |
152 | | }
153 | | .boxed()
| | -^^^^^ method not found in `{async block@/home/nander/.cargo/git/checkouts/identity.rs-3c836f09661bc7fb/654b188/identity_credential/src/sd_jwt_vc/metadata/vc_type.rs:105:3: 105:13}`
| |___|
|
Some errors have detailed explanations: E0308, E0433, E0599.
For more information about an error, try `rustc --explain E0308`.
error: could not compile `identity_credential` (lib) due to 4 previous errors I have quickly resolved them a couple of weeks ago myself just to make it work (see this). |
After solving the mentioned issues and no further comments or reviews from your side we would be ready to release. |
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.
Great work, very hard to find anything to even nitpick about. :D
once_cell = { version = "1.18", default-features = false, features = ["std"] } | ||
reqwest = { version = "0.11", default-features = false, features = ["default-tls", "json", "stream"], optional = true } | ||
roaring = { version = "0.10.2", default-features = false, features = ["serde"], optional = true } | ||
sd-jwt-payload = { version = "0.2.1", default-features = false, features = ["sha"], optional = true } | ||
sd-jwt-payload-rework = { package = "sd-jwt-payload", git = "https://github.com/iotaledger/sd-jwt-payload.git", branch = "feat/sd-jwt-v11", default-features = false, features = ["sha"], optional = true } |
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.
This dependency split can be removed after iotaledger/sd-jwt-payload#14 has been merged, 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.
Not really, this can only be removed after we release identity 2.0. Before that we cannot refactor the code for our sd-jwt feature.
* reworked sd-jwt bindings * SdJwtVc WASM bindings * small example, many small fixes * example & small fixes * restore package.json * Update bindings/wasm/src/sd_jwt_vc/builder.rs Co-authored-by: wulfraem <[email protected]> * Update bindings/wasm/src/sd_jwt_vc/claims.rs Co-authored-by: wulfraem <[email protected]> * Update bindings/wasm/src/sd_jwt_vc/metadata/vc_type.rs Co-authored-by: wulfraem <[email protected]> * Update bindings/wasm/src/sd_jwt_vc/sd_jwt_v2/builder.rs Co-authored-by: wulfraem <[email protected]> * Update bindings/wasm/src/sd_jwt_vc/sd_jwt_v2/sd_jwt.rs Co-authored-by: wulfraem <[email protected]> * review comments --------- Co-authored-by: wulfraem <[email protected]>
Co-authored-by: wulfraem <[email protected]>
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.
Without having (had the time to) fully review everything this looks good to me now. I'm not super into the SD-JWT specifications but for our current use case everything works as expected.
Thanks for working on this feature!
Implementation of SD-JWT VC draft 5.
3 more versions of the draft have been published since we started working on this but let's ignore them for now