From 1bfe9d1d8478bc17f64b2058c18d22fa6dc53760 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 26 Jan 2026 09:49:57 +0100 Subject: [PATCH 01/35] feat: initialize issuance of `dc+sd-jwt` --- Cargo.lock | 3428 +++++++++-------- Cargo.toml | 42 +- .../issuance/credential_issuer/credential.rs | 5 +- agent_authorization/src/services.rs | 9 +- agent_holder/src/presentation/aggregate.rs | 17 +- agent_holder/src/services.rs | 9 +- agent_identity/src/document/aggregate.rs | 6 +- agent_issuance/Cargo.toml | 1 + .../access_token_validation_service.rs | 1 + agent_issuance/src/credential/aggregate.rs | 490 ++- agent_issuance/src/credential/command.rs | 3 +- agent_issuance/src/server_config/aggregate.rs | 1 + agent_issuance/src/services.rs | 9 +- agent_issuance/src/state.rs | 9 +- agent_secret_manager/Cargo.toml | 11 +- agent_secret_manager/src/service.rs | 4 +- agent_secret_manager/src/subject.rs | 30 +- agent_shared/src/config/mod.rs | 2 + .../src/authorization_request/aggregate.rs | 2 +- agent_verification/src/services.rs | 9 +- 20 files changed, 2176 insertions(+), 1912 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 81d5c2696..eadf2e913 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -15,9 +15,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] @@ -86,16 +86,16 @@ dependencies = [ "agent_verification", "anyhow", "askama", - "axum 0.8.3", + "axum 0.8.8", "axum-auth 0.8.1", "axum-macros", "chrono", "cqrs-es", "futures", - "http 1.3.1", + "http 1.4.0", "http-api-problem", "http-body-util", - "hyper 1.6.0", + "hyper 1.7.0", "identity_core", "identity_credential", "identity_did", @@ -109,18 +109,18 @@ dependencies = [ "oid4vc-manager", "oid4vci", "oid4vp", - "rand 0.9.1", + "rand 0.9.2", "rstest", "serde", "serde_json", "serde_urlencoded", - "serde_with 3.13.0", + "serde_with 3.16.1", "serial_test", "siopv2", "thiserror 1.0.69", "tokio", "tower 0.4.13", - "tower-http 0.6.6", + "tower-http 0.6.8", "tracing", "tracing-test", "url", @@ -145,13 +145,13 @@ dependencies = [ "agent_store", "agent_verification", "anyhow", - "axum 0.8.3", + "axum 0.8.8", "chrono", "serde", "serde_json", - "serde_with 3.13.0", + "serde_with 3.16.1", "tokio", - "tower-http 0.6.6", + "tower-http 0.6.8", "tracing", ] @@ -205,10 +205,10 @@ dependencies = [ "async-trait", "cqrs-es", "http-serde", - "reqwest 0.12.20", + "reqwest 0.12.28", "serde", "serde_json", - "serde_with 3.13.0", + "serde_with 3.16.1", "tokio", "tracing", "wiremock", @@ -247,7 +247,7 @@ dependencies = [ "agent_store", "async-std", "async-trait", - "axum 0.8.3", + "axum 0.8.8", "base64 0.22.1", "cqrs-es", "identity_core", @@ -258,8 +258,8 @@ dependencies = [ "names", "oid4vc-core", "oid4vci", - "rand 0.9.1", - "reqwest 0.12.20", + "rand 0.9.2", + "reqwest 0.12.28", "rstest", "serde", "serde_json", @@ -289,7 +289,7 @@ dependencies = [ "anyhow", "async-std", "async-trait", - "axum 0.8.3", + "axum 0.8.8", "base64 0.22.1", "cqrs-es", "derivative", @@ -302,7 +302,7 @@ dependencies = [ "identity_document", "identity_iota", "identity_storage", - "iota-sdk 1.6.1", + "iota-sdk 1.13.1", "itertools 0.14.0", "jsonwebtoken", "lazy_static", @@ -310,8 +310,8 @@ dependencies = [ "names", "oid4vc-core", "product_common", - "rand 0.9.1", - "reqwest 0.12.20", + "rand 0.9.2", + "reqwest 0.12.28", "rstest", "serde", "serde_json", @@ -353,13 +353,14 @@ dependencies = [ "oid4vc-core", "oid4vci", "once_cell", - "rand 0.9.1", - "reqwest 0.12.20", + "rand 0.9.2", + "reqwest 0.12.28", "rstest", + "sd-jwt-payload", "serde", "serde_json", "serde_json_path_to_error", - "serde_with 3.13.0", + "serde_with 3.16.1", "serial_test", "strum 0.26.3", "strum_macros 0.26.4", @@ -383,7 +384,7 @@ dependencies = [ "rstest", "serde", "serde_json", - "serde_with 3.13.0", + "serde_with 3.16.1", "serial_test", "strum 0.26.3", "strum_macros 0.26.4", @@ -398,7 +399,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -415,7 +416,7 @@ dependencies = [ "identity_iota", "identity_stronghold_ext", "iota-sdk 1.1.5", - "iota-sdk 1.6.1", + "iota-sdk 1.13.1", "iota_stronghold", "itertools 0.14.0", "jsonwebtoken", @@ -424,8 +425,10 @@ dependencies = [ "oid4vc-core", "p256 0.13.2", "ring", - "rustls 0.23.28", + "rustls 0.23.36", + "sd-jwt-payload", "serde", + "serde_json", "tokio", "url", ] @@ -449,11 +452,11 @@ dependencies = [ "oid4vci", "oid4vp", "once_cell", - "rand 0.9.1", - "reqwest 0.12.20", + "rand 0.9.2", + "reqwest 0.12.28", "serde", "serde_json", - "serde_with 3.13.0", + "serde_with 3.16.1", "serial_test", "strum 0.26.3", "temp-env", @@ -506,7 +509,7 @@ dependencies = [ "oid4vc-manager", "oid4vci", "oid4vp", - "reqwest 0.12.20", + "reqwest 0.12.28", "rstest", "serde", "serde_json", @@ -526,7 +529,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "once_cell", "version_check", ] @@ -538,7 +541,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "serde", "version_check", @@ -547,9 +550,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -602,7 +605,7 @@ dependencies = [ "ed25519 2.2.3", "futures", "hex", - "http 1.3.1", + "http 1.4.0", "matchit 0.5.0", "pin-project-lite", "pkcs8 0.10.2", @@ -611,8 +614,8 @@ dependencies = [ "rand 0.8.5", "rcgen", "ring", - "rustls 0.23.28", - "rustls-webpki 0.103.3", + "rustls 0.23.36", + "rustls-webpki 0.103.9", "serde", "serde_json", "socket2 0.5.10", @@ -643,20 +646,11 @@ dependencies = [ "uuid", ] -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - [[package]] name = "anstream" -version = "0.6.19" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -669,9 +663,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" @@ -684,29 +678,29 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.9" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" dependencies = [ "backtrace", ] @@ -718,12 +712,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344" [[package]] -name = "arbitrary" -version = "1.4.1" +name = "ar_archive_writer" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +checksum = "f0c269894b6fe5e9d7ada0cf69b5bf847ff35bc25fc271f08e1d080fce80339a" dependencies = [ - "derive_arbitrary", + "object 0.32.2", +] + +[[package]] +name = "arc-swap" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d03449bb8ca2cc2ef70869af31463d1ae5ccc8fa3e334b307203fbf815207e" +dependencies = [ + "rustversion", ] [[package]] @@ -955,7 +958,7 @@ dependencies = [ "rustc-hash 2.1.1", "serde", "serde_derive", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -967,7 +970,7 @@ dependencies = [ "memchr", "serde", "serde_derive", - "winnow 0.7.11", + "winnow 0.7.14", ] [[package]] @@ -982,7 +985,7 @@ dependencies = [ "nom 7.1.3", "num-traits", "rusticata-macros", - "thiserror 2.0.12", + "thiserror 2.0.18", "time", ] @@ -994,7 +997,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", "synstructure 0.13.2", ] @@ -1006,7 +1009,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -1042,9 +1045,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -1054,25 +1057,21 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.25" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40f6024f3f856663b45fd0c9b6f2024034a702f453549449e0d84a305900dad4" +checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" dependencies = [ - "brotli", - "flate2", - "futures-core", - "memchr", + "compression-codecs", + "compression-core", "pin-project-lite", "tokio", - "zstd", - "zstd-safe", ] [[package]] name = "async-executor" -version = "1.13.2" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" dependencies = [ "async-task", "concurrent-queue", @@ -1088,7 +1087,7 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel 2.3.1", + "async-channel 2.5.0", "async-executor", "async-io", "async-lock", @@ -1100,30 +1099,29 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "async-lock", + "autocfg", "cfg-if", "concurrent-queue", "futures-io", "futures-lite", "parking", "polling", - "rustix 1.0.7", + "rustix", "slab", - "tracing", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "async-lock" -version = "3.4.0" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "event-listener-strategy", "pin-project-lite", ] @@ -1156,7 +1154,7 @@ dependencies = [ "thiserror 1.0.69", "time", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tokio-util", "tokio-websockets", "tracing", @@ -1166,9 +1164,9 @@ dependencies = [ [[package]] name = "async-std" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" +checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" dependencies = [ "async-attributes", "async-channel 1.9.0", @@ -1191,6 +1189,28 @@ dependencies = [ "wasm-bindgen-futures", ] +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "async-task" version = "4.7.1" @@ -1199,13 +1219,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -1260,17 +1280,6 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "auto_ops" version = "0.3.0" @@ -1285,9 +1294,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" -version = "1.13.3" +version = "1.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" +checksum = "e84ce723ab67259cfeb9877c6a639ee9eb7a27b28123abd71db7f0d5d0cc9d86" dependencies = [ "aws-lc-sys", "zeroize", @@ -1295,11 +1304,10 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.30.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" +checksum = "43a442ece363113bd4bd4c8b18977a7798dd4d3c3383f34fb61936960e8f4ad8" dependencies = [ - "bindgen", "cc", "cmake", "dunce", @@ -1340,20 +1348,20 @@ dependencies = [ [[package]] name = "axum" -version = "0.8.3" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de45108900e1f9b9242f7f2e254aa3e2c029c921c258fe9e6b4217eeebd54288" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" dependencies = [ - "axum-core 0.5.2", + "axum-core 0.5.6", "axum-macros", "base64 0.22.1", "bytes", "form_urlencoded", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-util", "itoa", "matchit 0.8.4", @@ -1361,8 +1369,7 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "rustversion", - "serde", + "serde_core", "serde_json", "serde_path_to_error", "serde_urlencoded", @@ -1370,7 +1377,7 @@ dependencies = [ "sync_wrapper 1.0.2", "tokio", "tokio-tungstenite", - "tower 0.5.2", + "tower 0.5.3", "tower-layer", "tower-service", "tracing", @@ -1394,9 +1401,9 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93495037c01c639b198ecb926b58f7f1c0d61ae663edcd61b2dd679f2a0bffe6" dependencies = [ - "axum-core 0.5.2", + "axum-core 0.5.6", "base64 0.22.1", - "http 1.3.1", + "http 1.4.0", ] [[package]] @@ -1418,18 +1425,17 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.2" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", - "rustversion", "sync_wrapper 1.0.2", "tower-layer", "tower-service", @@ -1444,22 +1450,45 @@ checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", +] + +[[package]] +name = "axum-server" +version = "0.6.1" +source = "git+https://github.com/bmwill/axum-server.git?rev=f44323e271afdd1365fd0c8b0a4c0bbdf4956cb7#f44323e271afdd1365fd0c8b0a4c0bbdf4956cb7" +dependencies = [ + "arc-swap", + "bytes", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.7.0", + "hyper-util", + "pin-project-lite", + "rustls 0.23.36", + "rustls-pemfile 2.2.0", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tower 0.4.13", + "tower-service", ] [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", "libc", "miniz_oxide", - "object", + "object 0.37.3", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1480,6 +1509,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base256emoji" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" +dependencies = [ + "const-str", + "match-lookup", +] + [[package]] name = "base64" version = "0.12.3" @@ -1515,9 +1554,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.8.0" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" [[package]] name = "basic-toml" @@ -1597,29 +1636,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bindgen" -version = "0.69.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -dependencies = [ - "bitflags 2.9.1", - "cexpr", - "clang-sys", - "itertools 0.12.1", - "lazy_static", - "lazycell", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.104", - "which", -] - [[package]] name = "bip32" version = "0.5.3" @@ -1677,11 +1693,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -1728,24 +1744,38 @@ dependencies = [ [[package]] name = "blake2b_simd" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" +checksum = "b79834656f71332577234b50bfc009996f7449e0c056884e6a02492ded0ca2f3" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq 0.3.1", + "constant_time_eq 0.4.2", ] [[package]] name = "blake2s_simd" -version = "1.0.3" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee29928bad1e3f94c9d1528da29e07a1d3d04817ae8332de1e8b846c8439f4b3" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq 0.4.2", +] + +[[package]] +name = "blake3" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e90f7deecfac93095eb874a40febd69427776e24e1bd7f87f33ac62d6f0174df" +checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq 0.3.1", + "cc", + "cfg-if", + "constant_time_eq 0.4.2", + "cpufeatures", ] [[package]] @@ -1784,11 +1814,11 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ - "async-channel 2.3.1", + "async-channel 2.5.0", "async-task", "futures-io", "futures-lite", @@ -1833,9 +1863,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd49896f12ac9b6dcd7a5998466b9b58263a695a3dd1ecc1aaca2e12a90b080" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ "cc", "glob", @@ -1861,15 +1891,15 @@ dependencies = [ [[package]] name = "bnum" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e31ea183f6ee62ac8b8a8cf7feddd766317adfb13ff469de57ce033efd6a790" +checksum = "f781dba93de3a5ef6dc5b17c9958b208f6f3f021623b360fb605ea51ce443f10" [[package]] name = "brotli" -version = "8.0.1" +version = "8.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1914,13 +1944,13 @@ dependencies = [ "ahash 0.8.12", "base64 0.22.1", "bitvec 1.0.1", - "getrandom 0.2.16", - "getrandom 0.3.3", + "getrandom 0.2.17", + "getrandom 0.3.4", "hex", - "indexmap 2.12.0", + "indexmap 2.13.0", "js-sys", "once_cell", - "rand 0.9.1", + "rand 0.9.2", "serde", "serde_bytes", "serde_json", @@ -1930,9 +1960,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.18.1" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" [[package]] name = "byte-slice-cast" @@ -1948,9 +1978,9 @@ checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "bytemuck" -version = "1.23.1" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" [[package]] name = "byteorder" @@ -1960,63 +1990,11 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" -dependencies = [ - "serde", -] - -[[package]] -name = "camino" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-license" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653542a7f5db653bf79ee4b6455c23f8e6b8a9c38c6310fbe14528728c14bd19" -dependencies = [ - "ansi_term", - "anyhow", - "atty", - "cargo_metadata", - "clap 3.2.25", - "csv", - "getopts", - "semver", - "serde", - "serde_derive", - "serde_json", - "toml 0.5.11", -] - -[[package]] -name = "cargo-platform" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.15.4" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" dependencies = [ - "camino", - "cargo-platform", - "semver", "serde", - "serde_json", - "thiserror 1.0.69", ] [[package]] @@ -2030,10 +2008,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.27" +version = "1.2.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -2045,20 +2024,11 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom 7.1.3", -] - [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -2092,9 +2062,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" dependencies = [ "iana-time-zone", "js-sys", @@ -2142,96 +2112,46 @@ dependencies = [ "zeroize", ] -[[package]] -name = "clang-sys" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", -] - -[[package]] -name = "clap" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" -dependencies = [ - "atty", - "bitflags 1.3.2", - "clap_derive 3.2.25", - "clap_lex 0.2.4", - "indexmap 1.9.3", - "once_cell", - "strsim 0.10.0", - "termcolor", - "textwrap", -] - [[package]] name = "clap" -version = "4.5.40" +version = "4.5.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" +checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394" dependencies = [ "clap_builder", - "clap_derive 4.5.40", + "clap_derive", ] [[package]] name = "clap_builder" -version = "4.5.40" +version = "4.5.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" +checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00" dependencies = [ "anstream", "anstyle", - "clap_lex 0.7.5", + "clap_lex", "strsim 0.11.1", "terminal_size", ] [[package]] name = "clap_derive" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" -dependencies = [ - "heck 0.4.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "clap_derive" -version = "4.5.40" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.104", -] - -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", + "syn 2.0.114", ] [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32" [[package]] name = "cloudevents-sdk" @@ -2240,7 +2160,7 @@ source = "git+https://github.com/cloudevents/sdk-rust?rev=6f02d23#6f02d238e4de9e dependencies = [ "async-nats", "base64 0.22.1", - "bitflags 2.9.1", + "bitflags 2.10.0", "chrono", "delegate-attr", "hostname", @@ -2254,9 +2174,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.54" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" dependencies = [ "cc", ] @@ -2279,7 +2199,7 @@ checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ "serde", "termcolor", - "unicode-width 0.1.14", + "unicode-width", ] [[package]] @@ -2314,6 +2234,26 @@ dependencies = [ "memchr", ] +[[package]] +name = "compression-codecs" +version = "0.4.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" +dependencies = [ + "brotli", + "compression-core", + "flate2", + "memchr", + "zstd", + "zstd-safe", +] + +[[package]] +name = "compression-core" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" + [[package]] name = "concurrent-queue" version = "2.5.0" @@ -2338,20 +2278,20 @@ dependencies = [ "rust-ini", "serde", "serde_json", - "toml 0.8.23", + "toml", "yaml-rust2", ] [[package]] name = "consensus-config" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "fastcrypto", "iota-network-stack", + "iota-sdk-types", "rand 0.8.5", "serde", - "shared-crypto", ] [[package]] @@ -2393,16 +2333,22 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "once_cell", "tiny-keccak", ] +[[package]] +name = "const-str" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" + [[package]] name = "const_format" -version = "0.2.34" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" dependencies = [ "const_format_proc_macros", ] @@ -2426,21 +2372,20 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "constant_time_eq" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "consumer" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?tag=v1.0.0-beta.7#5ce0c7ddeebf0d3326a24717b470654c12d35e16" dependencies = [ "did_iota", "did_jwk", "did_key", "did_web", "identity_iota", - "rustls 0.23.28", + "rustls 0.23.36", "shared", "signature 2.2.0", "tokio", @@ -2467,6 +2412,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -2536,9 +2490,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" dependencies = [ "crc-catalog", ] @@ -2551,9 +2505,9 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -2564,6 +2518,15 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -2600,9 +2563,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" @@ -2640,9 +2603,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", "rand_core 0.6.4", @@ -2671,21 +2634,21 @@ dependencies = [ [[package]] name = "csv" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938" dependencies = [ "csv-core", "itoa", "ryu", - "serde", + "serde_core", ] [[package]] name = "csv-core" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" +checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782" dependencies = [ "memchr", ] @@ -2736,7 +2699,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -2782,6 +2745,16 @@ dependencies = [ "darling_macro 0.20.11", ] +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core 0.21.3", + "darling_macro 0.21.3", +] + [[package]] name = "darling_core" version = "0.10.2" @@ -2821,7 +2794,21 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.104", + "syn 2.0.114", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.114", ] [[package]] @@ -2854,14 +2841,25 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.104", + "syn 2.0.114", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core 0.21.3", + "quote", + "syn 2.0.114", ] [[package]] name = "dary_heap" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d2cd9c18b9f454ed67da600630b021a8a80bf33f8c95896ab33aaf1c26b728" +checksum = "06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04" [[package]] name = "dashmap" @@ -2873,20 +2871,20 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.11", + "parking_lot_core 0.9.12", ] [[package]] name = "data-encoding" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" [[package]] name = "data-encoding-macro" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d" +checksum = "8142a83c17aa9461d637e649271eae18bf2edd00e91f2e105df36c3c16355bdb" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -2894,22 +2892,22 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" +checksum = "7ab67060fc6b8ef687992d439ca0fa36e7ed17e9a0b16b25b601e8757df720de" dependencies = [ "data-encoding", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "deadpool" -version = "0.10.0" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb84100978c1c7b37f09ed3ce3e5f843af02c2a2c431bae5b19230dad2c1b490" +checksum = "0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b" dependencies = [ - "async-trait", "deadpool-runtime", + "lazy_static", "num_cpus", "tokio", ] @@ -2934,7 +2932,7 @@ checksum = "51aac4c99b2e6775164b412ea33ae8441b2fde2dbf05a20bc0052a63d08c475b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -2989,9 +2987,15 @@ name = "deranged" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] @@ -3024,7 +3028,7 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -3035,18 +3039,7 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", -] - -[[package]] -name = "derive_arbitrary" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -3084,7 +3077,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -3093,7 +3086,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl", + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl 2.1.1", ] [[package]] @@ -3104,7 +3106,21 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", + "unicode-xid", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "convert_case 0.10.0", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.114", "unicode-xid", ] @@ -3148,7 +3164,7 @@ dependencies = [ "curve25519-dalek 3.2.0", "did_url", "ed25519-dalek 1.0.1", - "getrandom 0.2.16", + "getrandom 0.2.17", "hkdf 0.11.0", "json-patch", "libsecp256k1", @@ -3192,14 +3208,13 @@ dependencies = [ [[package]] name = "did_iota" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?tag=v1.0.0-beta.7#5ce0c7ddeebf0d3326a24717b470654c12d35e16" dependencies = [ "anyhow", "identity_iota", "identity_stronghold", - "iota-sdk 1.6.1", + "iota-sdk 1.13.1", "log", - "rustls 0.23.28", + "rustls 0.23.36", "shared", "tokio", ] @@ -3207,12 +3222,11 @@ dependencies = [ [[package]] name = "did_jwk" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?tag=v1.0.0-beta.7#5ce0c7ddeebf0d3326a24717b470654c12d35e16" dependencies = [ "did-jwk", "identity_iota", "identity_stronghold", - "iota-sdk 1.6.1", + "iota-sdk 1.13.1", "log", "serde_json", "shared", @@ -3224,12 +3238,11 @@ dependencies = [ [[package]] name = "did_key" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?tag=v1.0.0-beta.7#5ce0c7ddeebf0d3326a24717b470654c12d35e16" dependencies = [ "did-method-key", "identity_iota", "identity_stronghold", - "iota-sdk 1.6.1", + "iota-sdk 1.13.1", "jsonwebkey", "log", "serde_json", @@ -3271,12 +3284,11 @@ dependencies = [ [[package]] name = "did_web" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?tag=v1.0.0-beta.7#5ce0c7ddeebf0d3326a24717b470654c12d35e16" dependencies = [ "did-web", "identity_iota", "identity_stronghold", - "iota-sdk 1.6.1", + "iota-sdk 1.13.1", "log", "serde_json", "shared", @@ -3378,7 +3390,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -3392,15 +3404,9 @@ dependencies = [ [[package]] name = "doc-comment" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" - -[[package]] -name = "dotenv" -version = "0.15.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" +checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" [[package]] name = "dotenvy" @@ -3416,9 +3422,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "ecdsa" @@ -3499,9 +3505,9 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ "curve25519-dalek 4.1.3", "ed25519 2.2.3", @@ -3515,17 +3521,16 @@ dependencies = [ [[package]] name = "ed25519-zebra" -version = "4.0.3" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" +checksum = "0017d969298eec91e3db7a2985a8cab4df6341d86e6f3a6f5878b13fb7846bc9" dependencies = [ "curve25519-dalek 4.1.3", "ed25519 2.2.3", - "hashbrown 0.14.5", - "hex", "rand_core 0.6.4", "serde", "sha2 0.10.9", + "subtle", "zeroize", ] @@ -3615,13 +3620,13 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "enum-compat-util" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "serde_yaml", ] @@ -3635,20 +3640,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.104", -] - -[[package]] -name = "env_logger" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" -dependencies = [ - "humantime", - "is-terminal", - "log", - "regex", - "termcolor", + "syn 2.0.114", ] [[package]] @@ -3659,12 +3651,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3692,9 +3684,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" dependencies = [ "concurrent-queue", "parking", @@ -3707,7 +3699,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "pin-project-lite", ] @@ -3739,8 +3731,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" dependencies = [ "bit-set", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] @@ -3786,7 +3778,7 @@ dependencies = [ "secp256k1", "serde", "serde_json", - "serde_with 3.13.0", + "serde_with 3.16.1", "sha2 0.10.9", "sha3 0.10.8", "signature 2.2.0", @@ -3866,7 +3858,7 @@ dependencies = [ "num-bigint 0.4.6", "once_cell", "regex", - "reqwest 0.12.20", + "reqwest 0.12.28", "schemars 0.8.22", "serde", "serde_json", @@ -3879,16 +3871,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" -[[package]] -name = "ff" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f40b2dcd8bc322217a5f6559ae5f9e9d1de202a2ecee2e9eafcbece7562a4f" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "ff" version = "0.12.1" @@ -3936,16 +3918,21 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "filetime" -version = "0.2.25" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" dependencies = [ "cfg-if", "libc", "libredox", - "windows-sys 0.59.0", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" + [[package]] name = "fixed-hash" version = "0.7.0" @@ -3978,13 +3965,14 @@ checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" dependencies = [ "crc32fast", "libz-sys", "miniz_oxide", + "zlib-rs", ] [[package]] @@ -4010,11 +3998,17 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -4098,7 +4092,7 @@ checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.12.4", + "parking_lot 0.12.5", ] [[package]] @@ -4109,9 +4103,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ "fastrand", "futures-core", @@ -4128,7 +4122,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -4183,15 +4177,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "getopts" -version = "0.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cba6ae63eb948698e300f645f87c70f76630d505f23b8907cf1e193ee85048c1" -dependencies = [ - "unicode-width 0.2.1", -] - [[package]] name = "getrandom" version = "0.1.16" @@ -4205,9 +4190,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "js-sys", @@ -4218,15 +4203,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasip2", "wasm-bindgen", ] @@ -4239,7 +4224,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -4254,15 +4239,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gloo-net" @@ -4274,7 +4259,7 @@ dependencies = [ "futures-core", "futures-sink", "gloo-utils", - "http 1.3.1", + "http 1.4.0", "js-sys", "pin-project", "serde", @@ -4334,7 +4319,7 @@ dependencies = [ "futures-timer", "no-std-compat", "nonzero_ext", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "portable-atomic", "quanta", "rand 0.8.5", @@ -4354,18 +4339,6 @@ dependencies = [ "rdf-types", ] -[[package]] -name = "group" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c363a5301b8f153d80747126a04b3c82073b9fe3130571a9d170cacdeaf7912" -dependencies = [ - "byteorder", - "ff 0.10.1", - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "group" version = "0.12.1" @@ -4392,9 +4365,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" dependencies = [ "bytes", "fnv", @@ -4402,7 +4375,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.12.0", + "indexmap 2.13.0", "slab", "tokio", "tokio-util", @@ -4411,17 +4384,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.10" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.3.1", - "indexmap 2.12.0", + "http 1.4.0", + "indexmap 2.13.0", "slab", "tokio", "tokio-util", @@ -4430,12 +4403,13 @@ dependencies = [ [[package]] name = "half" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", + "zerocopy", ] [[package]] @@ -4478,20 +4452,25 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash", + "foldhash 0.1.5", ] [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] [[package]] name = "hashlink" @@ -4508,7 +4487,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.4", + "hashbrown 0.15.5", ] [[package]] @@ -4546,15 +4525,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "hermit-abi" version = "0.5.2" @@ -4578,9 +4548,9 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "hickory-proto" -version = "0.24.4" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92652067c9ce6f66ce53cc38d1169daa36e6e7eb7dd3b63b5103bd9d97117248" +checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" dependencies = [ "async-trait", "cfg-if", @@ -4592,8 +4562,9 @@ dependencies = [ "idna", "ipnet", "once_cell", - "rand 0.8.5", - "thiserror 1.0.69", + "rand 0.9.2", + "ring", + "thiserror 2.0.18", "tinyvec", "tokio", "tracing", @@ -4602,21 +4573,21 @@ dependencies = [ [[package]] name = "hickory-resolver" -version = "0.24.4" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbb117a1ca520e111743ab2f6688eddee69db4e0ea242545a604dce8a66fd22e" +checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" dependencies = [ "cfg-if", "futures-util", "hickory-proto", "ipconfig", - "lru-cache", + "moka", "once_cell", - "parking_lot 0.12.4", - "rand 0.8.5", + "parking_lot 0.12.5", + "rand 0.9.2", "resolv-conf", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tracing", ] @@ -4688,11 +4659,11 @@ checksum = "77e806677ce663d0a199541030c816847b36e8dc095f70dae4a4f4ad63da5383" [[package]] name = "home" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4719,12 +4690,11 @@ dependencies = [ [[package]] name = "http" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -4734,8 +4704,8 @@ version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "000bed434eb9b5dfb8ea5ed904f02ffc63aa0ac7ac034d480dc24fbb97b748d8" dependencies = [ - "axum-core 0.5.2", - "http 1.3.1", + "axum-core 0.5.6", + "http 1.4.0", "http-api-problem-derive", "serde", "serde_json", @@ -4768,7 +4738,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.3.1", + "http 1.4.0", ] [[package]] @@ -4779,7 +4749,7 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "pin-project-lite", ] @@ -4802,7 +4772,7 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f056c8559e3757392c8d091e796416e4649d8e49e88b8d76df6c002f05027fd" dependencies = [ - "http 1.3.1", + "http 1.4.0", "serde", ] @@ -4820,9 +4790,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "hyper" @@ -4834,7 +4804,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.3.26", + "h2 0.3.27", "http 0.2.12", "http-body 0.4.6", "httparse", @@ -4850,20 +4820,22 @@ dependencies = [ [[package]] name = "hyper" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", - "h2 0.4.10", - "http 1.3.1", + "futures-core", + "h2 0.4.13", + "http 1.4.0", "http-body 1.0.1", "httparse", "httpdate", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -4889,17 +4861,17 @@ version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "http 1.3.1", - "hyper 1.6.0", + "http 1.4.0", + "hyper 1.7.0", "hyper-util", "log", - "rustls 0.23.28", - "rustls-native-certs 0.8.1", + "rustls 0.23.36", + "rustls-native-certs 0.8.3", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tower-service", - "webpki-roots 1.0.1", + "webpki-roots 1.0.5", ] [[package]] @@ -4908,7 +4880,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.6.0", + "hyper 1.7.0", "hyper-util", "pin-project-lite", "tokio", @@ -4917,23 +4889,23 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.14" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", "futures-core", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", - "hyper 1.6.0", + "hyper 1.7.0", "ipnet", "libc", "percent-encoding", "pin-project-lite", - "socket2 0.5.10", + "socket2 0.6.1", "tokio", "tower-service", "tracing", @@ -4941,9 +4913,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -4951,7 +4923,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.62.2", ] [[package]] @@ -4965,9 +4937,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", @@ -4978,9 +4950,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -4991,11 +4963,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -5006,42 +4977,38 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -5057,12 +5024,13 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "identity_core" -version = "1.6.0-beta" -source = "git+https://github.com/iotaledger/identity?tag=v1.6.0-beta.7#eb4c93abd7452bff8ccb919821a9949fbb838f5c" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ - "deranged", + "deranged 0.4.0", "js-sys", - "multibase 0.9.1", + "multibase 0.9.2", + "nom 8.0.0", "product_common", "serde", "serde_json", @@ -5074,8 +5042,8 @@ dependencies = [ [[package]] name = "identity_credential" -version = "1.6.0-beta" -source = "git+https://github.com/iotaledger/identity?tag=v1.6.0-beta.7#eb4c93abd7452bff8ccb919821a9949fbb838f5c" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "anyhow", "async-trait", @@ -5085,13 +5053,12 @@ dependencies = [ "identity_did", "identity_document", "identity_verification", - "indexmap 2.12.0", + "indexmap 2.13.0", "itertools 0.11.0", "jsonschema", "once_cell", - "roaring", - "sd-jwt-payload 0.2.1", - "sd-jwt-payload 0.4.0", + "roaring 0.10.12", + "sd-jwt-payload", "serde", "serde-aux", "serde_json", @@ -5103,8 +5070,8 @@ dependencies = [ [[package]] name = "identity_did" -version = "1.6.0-beta" -source = "git+https://github.com/iotaledger/identity?tag=v1.6.0-beta.7#eb4c93abd7452bff8ccb919821a9949fbb838f5c" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "did_url_parser 0.3.0", "form_urlencoded", @@ -5117,14 +5084,14 @@ dependencies = [ [[package]] name = "identity_document" -version = "1.6.0-beta" -source = "git+https://github.com/iotaledger/identity?tag=v1.6.0-beta.7#eb4c93abd7452bff8ccb919821a9949fbb838f5c" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "did_url_parser 0.2.0", "identity_core", "identity_did", "identity_verification", - "indexmap 2.12.0", + "indexmap 2.13.0", "serde", "strum 0.25.0", "thiserror 1.0.69", @@ -5132,8 +5099,8 @@ dependencies = [ [[package]] name = "identity_eddsa_verifier" -version = "1.6.0-beta" -source = "git+https://github.com/iotaledger/identity?tag=v1.6.0-beta.7#eb4c93abd7452bff8ccb919821a9949fbb838f5c" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "identity_jose", "iota-crypto", @@ -5141,8 +5108,8 @@ dependencies = [ [[package]] name = "identity_iota" -version = "1.6.0-beta" -source = "git+https://github.com/iotaledger/identity?tag=v1.6.0-beta.7#eb4c93abd7452bff8ccb919821a9949fbb838f5c" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "identity_core", "identity_credential", @@ -5157,15 +5124,17 @@ dependencies = [ [[package]] name = "identity_iota_core" -version = "1.6.0-beta" -source = "git+https://github.com/iotaledger/identity?tag=v1.6.0-beta.7#eb4c93abd7452bff8ccb919821a9949fbb838f5c" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "anyhow", + "async-stream", "async-trait", "bcs", "cfg-if", "fastcrypto", "futures", + "hyper 1.7.0", "identity_core", "identity_credential", "identity_did", @@ -5175,7 +5144,7 @@ dependencies = [ "identity_verification", "iota-config", "iota-crypto", - "iota-sdk 1.6.1", + "iota-sdk 1.13.1", "iota_interaction", "iota_interaction_rust", "iota_interaction_ts", @@ -5200,8 +5169,8 @@ dependencies = [ [[package]] name = "identity_jose" -version = "1.6.0-beta" -source = "git+https://github.com/iotaledger/identity?tag=v1.6.0-beta.7#eb4c93abd7452bff8ccb919821a9949fbb838f5c" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "anyhow", "bls12_381_plus 0.8.18", @@ -5220,8 +5189,8 @@ dependencies = [ [[package]] name = "identity_resolver" -version = "1.6.0-beta" -source = "git+https://github.com/iotaledger/identity?tag=v1.6.0-beta.7#eb4c93abd7452bff8ccb919821a9949fbb838f5c" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "async-trait", "futures", @@ -5237,8 +5206,8 @@ dependencies = [ [[package]] name = "identity_storage" -version = "1.6.0-beta" -source = "git+https://github.com/iotaledger/identity?tag=v1.6.0-beta.7#eb4c93abd7452bff8ccb919821a9949fbb838f5c" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "anyhow", "async-trait", @@ -5252,6 +5221,7 @@ dependencies = [ "identity_iota_core", "identity_verification", "iota-crypto", + "iota-sdk-types", "iota_interaction", "rand 0.8.5", "seahash", @@ -5264,8 +5234,8 @@ dependencies = [ [[package]] name = "identity_stronghold" -version = "1.6.0-beta" -source = "git+https://github.com/iotaledger/identity?tag=v1.6.0-beta.7#eb4c93abd7452bff8ccb919821a9949fbb838f5c" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "async-trait", "identity_storage", @@ -5281,7 +5251,6 @@ dependencies = [ [[package]] name = "identity_stronghold_ext" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?tag=v1.0.0-beta.7#5ce0c7ddeebf0d3326a24717b470654c12d35e16" dependencies = [ "async-trait", "elliptic-curve 0.13.8", @@ -5300,8 +5269,8 @@ dependencies = [ [[package]] name = "identity_verification" -version = "1.6.0-beta" -source = "git+https://github.com/iotaledger/identity?tag=v1.6.0-beta.7#eb4c93abd7452bff8ccb919821a9949fbb838f5c" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "identity_core", "identity_did", @@ -5391,14 +5360,14 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "indenter" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" [[package]] name = "indexmap" @@ -5413,12 +5382,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.12.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "serde", "serde_core", ] @@ -5441,14 +5410,15 @@ dependencies = [ [[package]] name = "insta" -version = "1.43.2" +version = "1.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fdb647ebde000f43b5b53f773c30cf9b0cb4300453208713fa38b2c70935a0" +checksum = "248b42847813a1550dafd15296fd9748c651d0c32194559dbc05d804d54b21e8" dependencies = [ "console", "once_cell", "serde", "similar", + "tempfile", ] [[package]] @@ -5463,21 +5433,10 @@ dependencies = [ "web-sys", ] -[[package]] -name = "io-uring" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" -dependencies = [ - "bitflags 2.9.1", - "cfg-if", - "libc", -] - [[package]] name = "iota-adapter-latest" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "bcs", @@ -5497,20 +5456,40 @@ dependencies = [ "move-vm-profiler", "move-vm-runtime", "move-vm-types", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "serde", "tracing", ] +[[package]] +name = "iota-common" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +dependencies = [ + "anyhow", + "fastcrypto", + "futures", + "iota-metrics", + "iota-tls", + "iota-types", + "parking_lot 0.12.5", + "prometheus", + "rand 0.8.5", + "reqwest 0.12.28", + "snap", + "tokio", + "tracing", +] + [[package]] name = "iota-config" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anemo", "anyhow", "bcs", - "clap 4.5.40", + "clap", "consensus-config", "csv", "dirs 5.0.1", @@ -5525,9 +5504,10 @@ dependencies = [ "once_cell", "prometheus", "rand 0.8.5", - "reqwest 0.12.20", + "reqwest 0.12.28", "serde", "serde_yaml", + "starfish-config", "tracing", ] @@ -5549,7 +5529,7 @@ dependencies = [ "digest 0.10.7", "ed25519-zebra", "generic-array", - "getrandom 0.2.16", + "getrandom 0.2.17", "hkdf 0.12.4", "hmac 0.12.1", "iterator-sorted 0.1.0", @@ -5568,8 +5548,8 @@ dependencies = [ [[package]] name = "iota-enum-compat-util" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "serde_yaml", ] @@ -5577,7 +5557,7 @@ dependencies = [ [[package]] name = "iota-execution" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "iota-adapter-latest", "iota-move-natives-latest", @@ -5594,8 +5574,8 @@ dependencies = [ [[package]] name = "iota-genesis-common" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "iota-execution", "iota-protocol-config", @@ -5605,19 +5585,19 @@ dependencies = [ [[package]] name = "iota-http" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "bytes", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-util", "pin-project-lite", "socket2 0.5.10", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tokio-util", "tower 0.4.13", "tracing", @@ -5625,8 +5605,8 @@ dependencies = [ [[package]] name = "iota-json" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "bcs", @@ -5642,8 +5622,8 @@ dependencies = [ [[package]] name = "iota-json-rpc-api" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "fastcrypto", @@ -5662,14 +5642,15 @@ dependencies = [ [[package]] name = "iota-json-rpc-types" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "bcs", "colored", "enum_dispatch", "fastcrypto", + "futures", "iota-enum-compat-util", "iota-json", "iota-macros", @@ -5688,7 +5669,7 @@ dependencies = [ "schemars 0.8.22", "serde", "serde_json", - "serde_with 3.13.0", + "serde_with 3.16.1", "strum 0.26.3", "tabled", "tracing", @@ -5696,19 +5677,19 @@ dependencies = [ [[package]] name = "iota-keys" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "bip32", "fastcrypto", + "iota-sdk-types", "iota-types", "rand 0.8.5", "regex", "serde", "serde_json", - "serde_with 3.13.0", - "shared-crypto", + "serde_with 3.16.1", "signature 1.6.4", "slip10_ed25519", "tiny-bip39", @@ -5717,8 +5698,8 @@ dependencies = [ [[package]] name = "iota-macros" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "futures", "iota-proc-macros", @@ -5728,18 +5709,18 @@ dependencies = [ [[package]] name = "iota-metrics" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anemo", "anemo-tower", "async-trait", - "axum 0.8.3", + "axum 0.8.8", "bytes", "dashmap", "futures", "once_cell", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "prometheus", "prometheus-closure-metric", "scopeguard", @@ -5755,14 +5736,14 @@ dependencies = [ [[package]] name = "iota-move-natives-latest" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "bcs", "better_any", "fastcrypto", "fastcrypto-vdf", "fastcrypto-zkp", - "indexmap 2.12.0", + "indexmap 2.13.0", "iota-protocol-config", "iota-types", "move-binary-format", @@ -5777,8 +5758,8 @@ dependencies = [ [[package]] name = "iota-names" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "bcs", @@ -5790,18 +5771,19 @@ dependencies = [ [[package]] name = "iota-network-stack" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anemo", "bcs", "bytes", "eyre", "futures", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "hyper-rustls 0.27.7", "hyper-util", + "idna", "iota-http", "multiaddr", "once_cell", @@ -5809,7 +5791,7 @@ dependencies = [ "serde", "snap", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tonic", "tonic-health", "tower 0.4.13", @@ -5819,8 +5801,8 @@ dependencies = [ [[package]] name = "iota-open-rpc" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "schemars 0.8.22", "serde", @@ -5830,8 +5812,8 @@ dependencies = [ [[package]] name = "iota-open-rpc-macros" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "derive-syn-parse 0.1.5", "itertools 0.13.0", @@ -5843,8 +5825,8 @@ dependencies = [ [[package]] name = "iota-package-resolver" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "async-trait", "bcs", @@ -5859,34 +5841,34 @@ dependencies = [ [[package]] name = "iota-proc-macros" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "msim-macros", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "iota-protocol-config" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ - "clap 4.5.40", + "clap", "iota-protocol-config-macros", "move-vm-config", "schemars 0.8.22", "serde", "serde-env", - "serde_with 3.13.0", + "serde_with 3.16.1", "tracing", ] [[package]] name = "iota-protocol-config-macros" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "proc-macro2", "quote", @@ -5895,53 +5877,33 @@ dependencies = [ [[package]] name = "iota-rest-api" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", - "axum 0.8.3", + "axum 0.8.8", "bcs", "fastcrypto", "iota-network-stack", "iota-protocol-config", - "iota-rust-sdk", + "iota-sdk-types", "iota-types", "itertools 0.13.0", "mime", "move-binary-format", "openapiv3", "prometheus", - "reqwest 0.12.20", + "reqwest 0.12.28", "schemars 0.8.22", "serde", "serde_json", - "serde_with 3.13.0", + "serde_with 3.16.1", "serde_yaml", "tap", "tokio", "url", ] -[[package]] -name = "iota-rust-sdk" -version = "0.0.0" -source = "git+https://github.com/iotaledger/iota-rust-sdk.git?rev=93580286f3714248398d17e4481daf608508856a#93580286f3714248398d17e4481daf608508856a" -dependencies = [ - "base64ct", - "bcs", - "blake2", - "bnum", - "bs58 0.5.1", - "hex", - "roaring", - "schemars 0.8.22", - "serde", - "serde_derive", - "serde_json", - "serde_with 3.13.0", - "winnow 0.6.26", -] - [[package]] name = "iota-sdk" version = "1.1.5" @@ -5951,7 +5913,7 @@ dependencies = [ "anymap", "async-trait", "bech32", - "bitflags 2.9.1", + "bitflags 2.10.0", "bytemuck", "derive_more 0.99.20", "futures", @@ -5988,8 +5950,8 @@ dependencies = [ [[package]] name = "iota-sdk" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "async-trait", @@ -6000,30 +5962,78 @@ dependencies = [ "futures", "futures-core", "getset", + "iota-common", "iota-config", "iota-json", "iota-json-rpc-api", "iota-json-rpc-types", "iota-keys", + "iota-sdk-types", "iota-transaction-builder", "iota-types", "jsonrpsee", "move-core-types", - "reqwest 0.12.20", - "rustls 0.23.28", + "reqwest 0.12.28", + "rustls 0.23.36", "serde", "serde_json", - "serde_with 3.13.0", - "shared-crypto", + "serde_with 3.16.1", "thiserror 1.0.69", "tokio", "tracing", ] +[[package]] +name = "iota-sdk-types" +version = "0.0.1-alpha.1" +source = "git+https://github.com/iotaledger/iota-rust-sdk.git?rev=05608b7e4a5b96d85f84e1970a517f6f174beb8b#05608b7e4a5b96d85f84e1970a517f6f174beb8b" +dependencies = [ + "base64ct", + "bcs", + "blake2", + "bnum", + "bs58 0.5.1", + "eyre", + "hex", + "itertools 0.13.0", + "paste", + "roaring 0.11.3", + "schemars 0.8.22", + "serde", + "serde_json", + "serde_repr", + "serde_with 3.16.1", + "strum 0.27.2", + "thiserror 2.0.18", + "winnow 0.7.14", +] + +[[package]] +name = "iota-tls" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +dependencies = [ + "anyhow", + "arc-swap", + "axum 0.8.8", + "axum-server", + "ed25519 2.2.3", + "fastcrypto", + "pkcs8 0.10.2", + "rcgen", + "reqwest 0.12.28", + "rustls 0.23.36", + "rustls-webpki 0.103.9", + "tokio", + "tokio-rustls 0.26.4", + "tower-layer", + "x509-parser", +] + [[package]] name = "iota-transaction-builder" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "async-trait", @@ -6039,8 +6049,8 @@ dependencies = [ [[package]] name = "iota-types" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anemo", "anyhow", @@ -6059,13 +6069,13 @@ dependencies = [ "fastcrypto-zkp", "hex", "im", - "indexmap 2.12.0", + "indexmap 2.13.0", "iota-enum-compat-util", "iota-macros", "iota-network-stack", "iota-protocol-config", - "iota-rust-sdk", "iota-sdk 1.1.5", + "iota-sdk-types", "itertools 0.13.0", "lru", "move-binary-format", @@ -6079,17 +6089,16 @@ dependencies = [ "num-traits", "once_cell", "packable", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "passkey-types", "prometheus", "rand 0.8.5", - "roaring", + "roaring 0.11.3", "schemars 0.8.22", "serde", "serde-name", "serde_json", - "serde_with 3.13.0", - "shared-crypto", + "serde_with 3.16.1", "signature 1.6.4", "starfish-config", "static_assertions", @@ -6105,7 +6114,7 @@ dependencies = [ [[package]] name = "iota-verifier-latest" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "iota-types", "move-abstract-interpreter", @@ -6119,8 +6128,8 @@ dependencies = [ [[package]] name = "iota_interaction" -version = "0.8.2" -source = "git+https://github.com/iotaledger/product-core?tag=v0.8.2#9e569ed450559d778c2f75c4e9698effb590449d" +version = "0.8.8" +source = "git+https://github.com/iotaledger/product-core?tag=v0.8.8#8356931932d1d62e7ac440a4c1b1f4d1b67b75c9" dependencies = [ "anyhow", "async-trait", @@ -6132,8 +6141,10 @@ dependencies = [ "fastcrypto", "fastcrypto-zkp", "hex", - "indexmap 2.12.0", - "iota-sdk 1.6.1", + "hyper 1.7.0", + "indexmap 2.13.0", + "iota-sdk 1.13.1", + "iota-sdk-types", "itertools 0.13.0", "jsonpath-rust", "jsonrpsee", @@ -6148,8 +6159,7 @@ dependencies = [ "serde", "serde_json", "serde_repr", - "serde_with 3.13.0", - "shared-crypto", + "serde_with 3.16.1", "strum 0.25.0", "thiserror 1.0.69", "tokio", @@ -6159,8 +6169,8 @@ dependencies = [ [[package]] name = "iota_interaction_rust" -version = "0.8.2" -source = "git+https://github.com/iotaledger/product-core?tag=v0.8.2#9e569ed450559d778c2f75c4e9698effb590449d" +version = "0.8.8" +source = "git+https://github.com/iotaledger/product-core?tag=v0.8.8#8356931932d1d62e7ac440a4c1b1f4d1b67b75c9" dependencies = [ "anyhow", "async-trait", @@ -6172,8 +6182,8 @@ dependencies = [ [[package]] name = "iota_interaction_ts" -version = "0.8.2" -source = "git+https://github.com/iotaledger/product-core?tag=v0.8.2#9e569ed450559d778c2f75c4e9698effb590449d" +version = "0.8.8" +source = "git+https://github.com/iotaledger/product-core?tag=v0.8.8#8356931932d1d62e7ac440a4c1b1f4d1b67b75c9" dependencies = [ "anyhow", "async-trait", @@ -6182,8 +6192,9 @@ dependencies = [ "eyre", "fastcrypto", "futures", - "getrandom 0.2.16", - "getrandom 0.3.3", + "getrandom 0.2.17", + "getrandom 0.3.4", + "hyper 1.7.0", "iota-sdk 1.1.5", "iota_interaction", "js-sys", @@ -6247,25 +6258,14 @@ dependencies = [ [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" dependencies = [ "memchr", "serde", ] -[[package]] -name = "is-terminal" -version = "0.4.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" -dependencies = [ - "hermit-abi 0.5.2", - "libc", - "windows-sys 0.59.0", -] - [[package]] name = "is_empty" version = "0.2.0" @@ -6288,9 +6288,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "iso8601" @@ -6369,9 +6369,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jni" @@ -6397,19 +6397,19 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" dependencies = [ "once_cell", "wasm-bindgen", @@ -6546,9 +6546,9 @@ dependencies = [ [[package]] name = "json-number" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66994b2bac615128d07a1e4527ad29e98b004dd1a1769e7b8fbc1173ccf43006" +checksum = "479dfd2ad8e4b4ae076b031f72ef2f3791f65e2a0f51e5f3408dbf716c4c2f82" dependencies = [ "lexical", "ryu-js", @@ -6577,13 +6577,12 @@ dependencies = [ [[package]] name = "json-proof-token" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "179551c27c512c948af1edaf4bd7e1d1486d223f8ec4fd41cd760f7645fd4197" +checksum = "704ced300295bcf404f788239794cc7c30551a4fb8e9718202268a1f495a8d4e" dependencies = [ - "cargo-license", "data-encoding", - "indexmap 2.12.0", + "indexmap 2.13.0", "json-unflattening", "serde", "serde_json", @@ -6658,9 +6657,9 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b26c20e2178756451cfeb0661fb74c47dd5988cb7e3939de7e9241fd604d42" +checksum = "e281ae70cc3b98dac15fced3366a880949e65fc66e345ce857a5682d152f3e62" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -6676,24 +6675,24 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bacb85abf4117092455e1573625e21b8f8ef4dec8aff13361140b2dc266cdff2" +checksum = "cc4280b709ac3bb5e16cf3bad5056a0ec8df55fa89edfe996361219aadc2c7ea" dependencies = [ "base64 0.22.1", "futures-channel", "futures-util", "gloo-net", - "http 1.3.1", + "http 1.4.0", "jsonrpsee-core", "pin-project", - "rustls 0.23.28", + "rustls 0.23.36", "rustls-pki-types", "rustls-platform-verifier", "soketto", "thiserror 1.0.69", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tokio-util", "tracing", "url", @@ -6701,19 +6700,19 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456196007ca3a14db478346f58c7238028d55ee15c1df15115596e411ff27925" +checksum = "348ee569eaed52926b5e740aae20863762b16596476e943c9e415a6479021622" dependencies = [ "async-trait", "bytes", "futures-timer", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", "jsonrpsee-types", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "pin-project", "rand 0.8.5", "rustc-hash 2.1.1", @@ -6728,19 +6727,19 @@ dependencies = [ [[package]] name = "jsonrpsee-http-client" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c872b6c9961a4ccc543e321bb5b89f6b2d2c7fe8b61906918273a3333c95400c" +checksum = "f50c389d6e6a52eb7c3548a6600c90cf74d9b71cb5912209833f00a5479e9a01" dependencies = [ "async-trait", "base64 0.22.1", "http-body 1.0.1", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-rustls 0.27.7", "hyper-util", "jsonrpsee-core", "jsonrpsee-types", - "rustls 0.23.28", + "rustls 0.23.36", "rustls-platform-verifier", "serde", "serde_json", @@ -6753,28 +6752,28 @@ dependencies = [ [[package]] name = "jsonrpsee-proc-macros" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e65763c942dfc9358146571911b0cd1c361c2d63e2d2305622d40d36376ca80" +checksum = "7398cddf5013cca4702862a2692b66c48a3bd6cf6ec681a47453c93d63cf8de5" dependencies = [ "heck 0.5.0", - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "jsonrpsee-server" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55e363146da18e50ad2b51a0a7925fc423137a0b1371af8235b1c231a0647328" +checksum = "21429bcdda37dcf2d43b68621b994adede0e28061f816b038b0f18c70c143d51" dependencies = [ "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-util", "jsonrpsee-core", "jsonrpsee-types", @@ -6793,11 +6792,11 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a8e70baf945b6b5752fc8eb38c918a48f1234daf11355e07106d963f860089" +checksum = "b0f05e0028e55b15dbd2107163b3c744cd3bb4474f193f95d9708acbf5677e44" dependencies = [ - "http 1.3.1", + "http 1.4.0", "serde", "serde_json", "thiserror 1.0.69", @@ -6805,9 +6804,9 @@ dependencies = [ [[package]] name = "jsonrpsee-wasm-client" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6558a9586cad43019dafd0b6311d0938f46efc116b34b28c74778bc11a2edf6" +checksum = "e9d745e4f543fc10fc0e2b11aa1f3be506b1e475d412167e7191a65ecd239f1c" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -6816,11 +6815,11 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b3323d890aa384f12148e8d2a1fd18eb66e9e7e825f9de4fa53bcc19b93eef" +checksum = "78fc744f17e7926d57f478cf9ca6e1ee5d8332bf0514860b1a3cdf1742e614cc" dependencies = [ - "http 1.3.1", + "http 1.4.0", "jsonrpsee-client-transport", "jsonrpsee-core", "jsonrpsee-types", @@ -6839,13 +6838,13 @@ dependencies = [ "bytecount", "fancy-regex", "fraction", - "getrandom 0.2.16", + "getrandom 0.2.17", "iso8601", "itoa", "memchr", "num-cmp", "once_cell", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "percent-encoding", "regex", "serde", @@ -6937,7 +6936,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -6964,12 +6963,6 @@ dependencies = [ "spin", ] -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "leb128" version = "0.2.5" @@ -6978,18 +6971,18 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "lexical" -version = "7.0.4" +version = "7.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ed980ff02623721dc334b9105150b66d0e1f246a92ab5a2eca0335d54c48f6" +checksum = "1bc8a009b2ff1f419ccc62706f04fe0ca6e67b37460513964a3dfdb919bb37d6" dependencies = [ "lexical-core", ] [[package]] name = "lexical-core" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b765c31809609075565a70b4b71402281283aeda7ecaf4818ac14a7b2ade8958" +checksum = "7d8d125a277f807e55a77304455eb7b1cb52f2b18c143b60e766c120bd64a594" dependencies = [ "lexical-parse-float", "lexical-parse-integer", @@ -7000,66 +6993,59 @@ dependencies = [ [[package]] name = "lexical-parse-float" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de6f9cb01fb0b08060209a057c048fcbab8717b4c1ecd2eac66ebfe39a65b0f2" +checksum = "52a9f232fbd6f550bc0137dcb5f99ab674071ac2d690ac69704593cb4abbea56" dependencies = [ "lexical-parse-integer", "lexical-util", - "static_assertions", ] [[package]] name = "lexical-parse-integer" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72207aae22fc0a121ba7b6d479e42cbfea549af1479c3f3a4f12c70dd66df12e" +checksum = "9a7a039f8fb9c19c996cd7b2fcce303c1b2874fe1aca544edc85c4a5f8489b34" dependencies = [ "lexical-util", - "static_assertions", ] [[package]] name = "lexical-util" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a82e24bf537fd24c177ffbbdc6ebcc8d54732c35b50a3f28cc3f4e4c949a0b3" -dependencies = [ - "static_assertions", -] +checksum = "2604dd126bb14f13fb5d1bd6a66155079cb9fa655b37f875b3a742c705dbed17" [[package]] name = "lexical-write-float" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5afc668a27f460fb45a81a757b6bf2f43c2d7e30cb5a2dcd3abf294c78d62bd" +checksum = "50c438c87c013188d415fbabbb1dceb44249ab81664efbd31b14ae55dabb6361" dependencies = [ "lexical-util", "lexical-write-integer", - "static_assertions", ] [[package]] name = "lexical-write-integer" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629ddff1a914a836fb245616a7888b62903aae58fa771e1d83943035efa0f978" +checksum = "409851a618475d2d5796377cad353802345cba92c867d9fbcde9cf4eac4e14df" dependencies = [ "lexical-util", - "static_assertions", ] [[package]] name = "libc" -version = "0.2.174" +version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] name = "libflate" -version = "2.1.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45d9dfdc14ea4ef0900c1cddbc8dcd553fbaacd8a4a282cf4018ae9dd04fb21e" +checksum = "e3248b8d211bd23a104a42d81b4fa8bb8ac4a3b75e7a43d85d2c9ccb6179cd74" dependencies = [ "adler32", "core2", @@ -7070,25 +7056,15 @@ dependencies = [ [[package]] name = "libflate_lz77" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d" +checksum = "a599cb10a9cd92b1300debcef28da8f70b935ec937f44fcd1b70a7c986a11c5c" dependencies = [ "core2", - "hashbrown 0.14.5", + "hashbrown 0.16.1", "rle-decode-fast", ] -[[package]] -name = "libloading" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" -dependencies = [ - "cfg-if", - "windows-targets 0.53.2", -] - [[package]] name = "libm" version = "0.2.15" @@ -7097,13 +7073,13 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "libc", - "redox_syscall 0.5.13", + "redox_syscall 0.7.0", ] [[package]] @@ -7156,9 +7132,9 @@ dependencies = [ [[package]] name = "libsodium-sys-stable" -version = "1.22.3" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b023d38f2afdfe36f81e15a9d7232097701d7b107e3a93ba903083985e235239" +checksum = "2e5d23f4a051a13cf1085b2c5a050d4d890d80c754534cc4247eff525fa5283d" dependencies = [ "cc", "libc", @@ -7183,9 +7159,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.22" +version = "1.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" +checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7" dependencies = [ "cc", "pkg-config", @@ -7200,29 +7176,22 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - -[[package]] -name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] @@ -7250,11 +7219,11 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" dependencies = [ - "serde", + "serde_core", "value-bag", ] @@ -7264,16 +7233,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.4", -] - -[[package]] -name = "lru-cache" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", + "hashbrown 0.15.5", ] [[package]] @@ -7303,7 +7263,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -7315,7 +7275,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -7329,7 +7289,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -7340,7 +7300,7 @@ checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -7351,16 +7311,27 @@ checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.104", + "syn 2.0.114", +] + +[[package]] +name = "match-lookup" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "757aee279b8bdbb9f9e676796fd459e4207a1f986e87886700abf589f5abf771" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", ] [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] @@ -7393,9 +7364,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memoffset" @@ -7408,9 +7379,9 @@ dependencies = [ [[package]] name = "metrics" -version = "0.24.2" +version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dea7ac8057892855ec285c440160265225438c3c45072613c25a4b26e98ef5" +checksum = "5d5312e9ba3771cfa961b585728215e3d972c950a3eed9252aa093d6301277e8" dependencies = [ "ahash 0.8.12", "portable-atomic", @@ -7423,25 +7394,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b166dea96003ee2531cf14833efedced545751d800f03535801d833313f8c15" dependencies = [ "base64 0.22.1", - "indexmap 2.12.0", + "indexmap 2.13.0", "metrics", "metrics-util", "quanta", - "thiserror 2.0.12", + "thiserror 2.0.18", ] [[package]] name = "metrics-util" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe8db7a05415d0f919ffb905afa37784f71901c9a773188876984b4f769ab986" +checksum = "cdfb1365fea27e6dd9dc1dbc19f570198bc86914533ad639dae939635f096be4" dependencies = [ "crossbeam-epoch", "crossbeam-utils", - "hashbrown 0.15.4", + "hashbrown 0.16.1", "metrics", "quanta", - "rand 0.9.1", + "rand 0.9.2", "rand_xoshiro 0.7.0", "sketches-ddsketch", ] @@ -7481,17 +7452,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "windows-sys 0.61.2", +] + +[[package]] +name = "moka" +version = "0.12.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3dec6bd31b08944e08b58fd99373893a6c17054d6f3ea5006cc894f4f4eee2a" +dependencies = [ + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "equivalent", + "parking_lot 0.12.5", + "portable-atomic", + "smallvec", + "tagptr", + "uuid", ] [[package]] @@ -7510,21 +7499,36 @@ dependencies = [ "tokio", ] +[[package]] +name = "mongocrypt" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da0cd419a51a5fb44819e290fbdb0665a54f21dead8923446a799c7f4d26ad9" +dependencies = [ + "bson", + "mongocrypt-sys", + "once_cell", + "serde", +] + +[[package]] +name = "mongocrypt-sys" +version = "0.1.5+1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224484c5d09285a7b8cb0a0c117e847ebd14cb6e4470ecf68cdb89c503b0edb9" + [[package]] name = "mongodb" -version = "3.2.4" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f8c69f13acf07eae386a2974f48ffd9187ea2aba8defbea9aa34e7e272c5f3" +checksum = "50ed2c028a2c04ad58faa2e0f4ee82c1319f0e495b710ca8e8498fde4b395f64" dependencies = [ - "async-trait", - "base64 0.13.1", - "bitflags 1.3.2", + "base64 0.22.1", + "bitflags 2.10.0", "bson", - "chrono", "derive-where", - "derive_more 0.99.20", + "derive_more 2.1.1", "futures-core", - "futures-executor", "futures-io", "futures-util", "hex", @@ -7533,69 +7537,70 @@ dependencies = [ "hmac 0.12.1", "macro_magic", "md-5", + "mongocrypt", "mongodb-internal-macros", - "once_cell", - "pbkdf2 0.11.0", + "pbkdf2 0.12.2", "percent-encoding", - "rand 0.8.5", + "rand 0.9.2", "rustc_version_runtime", - "rustls 0.21.12", - "rustls-pemfile 1.0.4", + "rustls 0.23.36", + "rustversion", "serde", "serde_bytes", - "serde_with 3.13.0", + "serde_with 3.16.1", "sha1", "sha2 0.10.9", - "socket2 0.5.10", + "socket2 0.6.1", "stringprep", "strsim 0.11.1", "take_mut", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", - "tokio-rustls 0.24.1", + "tokio-rustls 0.26.4", "tokio-util", "typed-builder", "uuid", - "webpki-roots 0.25.4", + "webpki-roots 1.0.5", ] [[package]] name = "mongodb-internal-macros" -version = "3.2.4" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9202de265a3a8bbb43f9fe56db27c93137d4f9fb04c093f47e9c7de0c61ac7d" +checksum = "28a42ac35ea5c79f6539851d79d7cfe3322358f7d0d7bf040eb3e1558efc0a4c" dependencies = [ "macro_magic", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "monostate" -version = "0.1.14" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafe1be9d0c75642e3e50fedc7ecadf1ef1cbce6eb66462153fc44245343fbee" +checksum = "3341a273f6c9d5bef1908f17b7267bbab0e95c9bf69a0d4dcf8e9e1b2c76ef67" dependencies = [ "monostate-impl", "serde", + "serde_core", ] [[package]] name = "monostate-impl" -version = "0.1.14" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c402a4092d5e204f32c9e155431046831fa712637043c58cb73bc6bc6c9663b5" +checksum = "e4db6d5580af57bf992f59068d4ea26fd518574ff48d7639b255a36f9de6e7e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "move-abstract-interpreter" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "move-binary-format", "move-bytecode-verifier-meter", @@ -7604,15 +7609,16 @@ dependencies = [ [[package]] name = "move-abstract-stack" version = "0.0.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" [[package]] name = "move-binary-format" version = "0.0.3" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "enum-compat-util", + "indexmap 2.13.0", "move-core-types", "move-proc-macros", "ref-cast", @@ -7623,12 +7629,12 @@ dependencies = [ [[package]] name = "move-borrow-graph" version = "0.0.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" [[package]] name = "move-bytecode-source-map" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "bcs", @@ -7644,10 +7650,10 @@ dependencies = [ [[package]] name = "move-bytecode-utils" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", - "indexmap 2.12.0", + "indexmap 2.13.0", "move-binary-format", "move-core-types", "petgraph", @@ -7658,7 +7664,7 @@ dependencies = [ [[package]] name = "move-bytecode-verifier" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "move-abstract-interpreter", "move-abstract-stack", @@ -7673,7 +7679,7 @@ dependencies = [ [[package]] name = "move-bytecode-verifier-meter" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "move-binary-format", "move-core-types", @@ -7683,7 +7689,7 @@ dependencies = [ [[package]] name = "move-command-line-common" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "bcs", @@ -7693,6 +7699,7 @@ dependencies = [ "move-binary-format", "move-core-types", "once_cell", + "packed_struct", "serde", "sha2 0.9.9", "vfs", @@ -7702,11 +7709,11 @@ dependencies = [ [[package]] name = "move-compiler" version = "0.0.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "bcs", - "clap 4.5.40", + "clap", "codespan-reporting", "dunce", "hex", @@ -7737,7 +7744,7 @@ dependencies = [ [[package]] name = "move-core-types" version = "0.0.4" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "bcs", @@ -7753,7 +7760,7 @@ dependencies = [ "ref-cast", "serde", "serde_bytes", - "serde_with 3.13.0", + "serde_with 3.16.1", "thiserror 1.0.69", "uint", ] @@ -7761,14 +7768,14 @@ dependencies = [ [[package]] name = "move-coverage" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "bcs", - "clap 4.5.40", + "clap", "codespan", "colored", - "indexmap 2.12.0", + "indexmap 2.13.0", "move-abstract-interpreter", "move-binary-format", "move-bytecode-source-map", @@ -7782,11 +7789,11 @@ dependencies = [ [[package]] name = "move-disassembler" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "bcs", - "clap 4.5.40", + "clap", "hex", "inline_colorization", "move-abstract-interpreter", @@ -7803,7 +7810,7 @@ dependencies = [ [[package]] name = "move-ir-to-bytecode" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "codespan-reporting", @@ -7821,7 +7828,7 @@ dependencies = [ [[package]] name = "move-ir-to-bytecode-syntax" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "hex", @@ -7834,7 +7841,7 @@ dependencies = [ [[package]] name = "move-ir-types" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "hex", "move-command-line-common", @@ -7847,16 +7854,16 @@ dependencies = [ [[package]] name = "move-proc-macros" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "move-stdlib-natives" version = "0.1.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "hex", "move-binary-format", @@ -7871,7 +7878,7 @@ dependencies = [ [[package]] name = "move-symbol-pool" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "once_cell", "phf", @@ -7881,7 +7888,7 @@ dependencies = [ [[package]] name = "move-trace-format" version = "0.0.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "move-binary-format", "move-core-types", @@ -7892,7 +7899,7 @@ dependencies = [ [[package]] name = "move-vm-config" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "move-binary-format", "once_cell", @@ -7901,7 +7908,7 @@ dependencies = [ [[package]] name = "move-vm-profiler" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "move-vm-config", "once_cell", @@ -7911,7 +7918,7 @@ dependencies = [ [[package]] name = "move-vm-runtime" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "better_any", "fail", @@ -7931,7 +7938,7 @@ dependencies = [ [[package]] name = "move-vm-test-utils" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "move-binary-format", @@ -7945,7 +7952,7 @@ dependencies = [ [[package]] name = "move-vm-types" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "bcs", "move-binary-format", @@ -7982,7 +7989,7 @@ dependencies = [ "byteorder", "data-encoding", "log", - "multibase 0.9.1", + "multibase 0.9.2", "multihash", "percent-encoding", "serde", @@ -8004,11 +8011,12 @@ dependencies = [ [[package]] name = "multibase" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" +checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77" dependencies = [ "base-x", + "base256emoji", "data-encoding", "data-encoding-macro", ] @@ -8086,8 +8094,8 @@ checksum = "879011babc47a1c7fdf5a935ae3cfe94f34645ca0cac1c7f6424b36fc743d1bf" dependencies = [ "data-encoding", "ed25519 2.2.3", - "ed25519-dalek 2.1.1", - "getrandom 0.2.16", + "ed25519-dalek 2.2.0", + "getrandom 0.2.17", "log", "rand 0.8.5", "signatory", @@ -8138,21 +8146,20 @@ checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" [[package]] name = "ntapi" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +checksum = "c70f219e21142367c70c0b30c6a9e3a14d55b4d12a204d897fbec83a0363f081" dependencies = [ "winapi", ] [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "overload", - "winapi", + "windows-sys 0.61.2", ] [[package]] @@ -8203,11 +8210,10 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", @@ -8258,7 +8264,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -8335,7 +8341,7 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.5.2", + "hermit-abi", "libc", ] @@ -8359,7 +8365,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.104", + "syn 2.0.114", "urlencoding", ] @@ -8379,9 +8385,18 @@ dependencies = [ [[package]] name = "object" -version = "0.36.7" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "object" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] @@ -8398,14 +8413,14 @@ dependencies = [ "chrono", "futures", "humantime", - "hyper 1.6.0", + "hyper 1.7.0", "itertools 0.13.0", "md-5", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "percent-encoding", "quick-xml", "rand 0.8.5", - "reqwest 0.12.20", + "reqwest 0.12.28", "ring", "rustls-pemfile 2.2.0", "serde", @@ -8429,7 +8444,6 @@ dependencies = [ [[package]] name = "oid4vc-core" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=61fd882#61fd88220a0e9f61959533627263ca3408ccd1c1" dependencies = [ "anyhow", "async-trait", @@ -8437,7 +8451,7 @@ dependencies = [ "derivative", "derive_more 0.99.20", "did_url", - "ed25519-dalek 2.1.1", + "ed25519-dalek 2.2.0", "getset", "is_empty", "jsonwebtoken", @@ -8454,7 +8468,6 @@ dependencies = [ [[package]] name = "oid4vc-manager" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=61fd882#61fd88220a0e9f61959533627263ca3408ccd1c1" dependencies = [ "anyhow", "async-trait", @@ -8477,7 +8490,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "serde_with 3.13.0", + "serde_with 3.16.1", "siopv2", "tokio", "tower-http 0.4.4", @@ -8487,13 +8500,12 @@ dependencies = [ [[package]] name = "oid4vci" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=61fd882#61fd88220a0e9f61959533627263ca3408ccd1c1" dependencies = [ "anyhow", "chrono", "derivative", "getset", - "http 1.3.1", + "http 1.4.0", "jsonwebtoken", "lazy_static", "nutype", @@ -8506,7 +8518,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "serde_with 3.13.0", + "serde_with 3.16.1", "thiserror 1.0.69", "tokio", "url", @@ -8515,7 +8527,6 @@ dependencies = [ [[package]] name = "oid4vp" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=61fd882#61fd88220a0e9f61959533627263ca3408ccd1c1" dependencies = [ "anyhow", "chrono", @@ -8534,7 +8545,7 @@ dependencies = [ "reqwest-retry", "serde", "serde_json", - "serde_with 3.13.0", + "serde_with 3.16.1", "tokio", "url", "validator", @@ -8545,12 +8556,16 @@ name = "once_cell" version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +dependencies = [ + "critical-section", + "portable-atomic", +] [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "opaque-debug" @@ -8563,7 +8578,7 @@ name = "openapiv3" version = "2.0.0" source = "git+https://github.com/bmwill/openapiv3.git?rev=ca4b4845b7c159a39f5c68ad8f7f76cb6f4d6963#ca4b4845b7c159a39f5c68ad8f7f76cb6f4d6963" dependencies = [ - "indexmap 2.12.0", + "indexmap 2.13.0", "schemars 0.8.22", "serde", "serde_json", @@ -8575,6 +8590,12 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "openssl-probe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + [[package]] name = "option-ext" version = "0.2.0" @@ -8600,12 +8621,6 @@ dependencies = [ "hashbrown 0.14.5", ] -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" - [[package]] name = "ouroboros" version = "0.17.2" @@ -8627,7 +8642,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -8636,12 +8651,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "p256" version = "0.11.1" @@ -8690,6 +8699,28 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "packed_struct" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36b29691432cc9eff8b282278473b63df73bea49bc3ec5e67f31a3ae9c3ec190" +dependencies = [ + "bitvec 1.0.1", + "packed_struct_codegen", + "serde", +] + +[[package]] +name = "packed_struct_codegen" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cd6706dfe50d53e0f6aa09e12c034c44faacd23e966ae5a209e8bdb8f179f98" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "pairing" version = "0.22.0" @@ -8716,7 +8747,7 @@ checksum = "ae7891b22598926e4398790c8fe6447930c72a67d36d983a49d6ce682ce83290" dependencies = [ "bytecount", "fnv", - "unicode-width 0.1.14", + "unicode-width", ] [[package]] @@ -8767,10 +8798,10 @@ version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -8792,12 +8823,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", - "parking_lot_core 0.9.11", + "parking_lot_core 0.9.12", ] [[package]] @@ -8816,15 +8847,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.13", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -8833,13 +8864,13 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77144664f6aac5f629d7efa815f5098a054beeeca6ccafee5ec453fd2b0c53f9" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "ciborium", "coset", "data-encoding", - "getrandom 0.2.16", + "getrandom 0.2.17", "hmac 0.12.1", - "indexmap 2.12.0", + "indexmap 2.13.0", "rand 0.8.5", "serde", "serde_json", @@ -8908,12 +8939,12 @@ dependencies = [ [[package]] name = "pem" -version = "3.0.5" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" dependencies = [ "base64 0.22.1", - "serde", + "serde_core", ] [[package]] @@ -8945,9 +8976,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "permutohedron" @@ -8957,20 +8988,19 @@ checksum = "b687ff7b5da449d39e418ad391e5e08da53ec334903ddbb921db208908fc372c" [[package]] name = "pest" -version = "2.8.1" +version = "2.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +checksum = "2c9eb05c21a464ea704b53158d358a31e6425db2f63a1a7312268b05fe2b75f7" dependencies = [ "memchr", - "thiserror 2.0.12", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.8.1" +version = "2.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" +checksum = "68f9dbced329c441fa79d80472764b1a2c7e57123553b8519b36663a2fb234ed" dependencies = [ "pest", "pest_generator", @@ -8978,22 +9008,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.1" +version = "2.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" +checksum = "3bb96d5051a78f44f43c8f712d8e810adb0ebf923fc9ed2655a7f66f63ba8ee5" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "pest_meta" -version = "2.8.1" +version = "2.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" +checksum = "602113b5b5e8621770cfd490cfd90b9f84ab29bd2b0e49ad83eb6d186cef2365" dependencies = [ "pest", "sha2 0.10.9", @@ -9049,7 +9079,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -9078,7 +9108,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -9188,17 +9218,16 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polling" -version = "3.8.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.5.2", + "hermit-abi", "pin-project-lite", - "rustix 1.0.7", - "tracing", - "windows-sys 0.59.0", + "rustix", + "windows-sys 0.61.2", ] [[package]] @@ -9226,9 +9255,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" [[package]] name = "postgres-es" @@ -9247,9 +9276,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ "zerovec", ] @@ -9289,16 +9318,6 @@ dependencies = [ "ryu_floating_decimal", ] -[[package]] -name = "prettyplease" -version = "0.2.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" -dependencies = [ - "proc-macro2", - "syn 2.0.104", -] - [[package]] name = "primeorder" version = "0.13.6" @@ -9354,11 +9373,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.22.27", + "toml_edit 0.23.10+spec-1.0.0", ] [[package]] @@ -9404,42 +9423,44 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" dependencies = [ "unicode-ident", ] [[package]] name = "product_common" -version = "0.8.2" -source = "git+https://github.com/iotaledger/product-core?tag=v0.8.2#9e569ed450559d778c2f75c4e9698effb590449d" +version = "0.8.8" +source = "git+https://github.com/iotaledger/product-core?tag=v0.8.8#8356931932d1d62e7ac440a4c1b1f4d1b67b75c9" dependencies = [ "anyhow", "async-trait", "bcs", "cfg-if", "fastcrypto", - "iota-sdk 1.6.1", + "hyper 1.7.0", + "iota-sdk 1.13.1", + "iota-sdk-types", "iota_interaction", "iota_interaction_rust", "iota_interaction_ts", "itertools 0.13.0", "phf", - "reqwest 0.12.20", + "reqwest 0.12.28", "secret-storage", "serde", "serde_json", "strum 0.25.0", "thiserror 1.0.69", "tokio", - "toml 0.8.23", + "toml", "url", ] @@ -9453,15 +9474,15 @@ dependencies = [ "fnv", "lazy_static", "memchr", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "protobuf", - "thiserror 2.0.12", + "thiserror 2.0.18", ] [[package]] name = "prometheus-closure-metric" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", "prometheus", @@ -9469,9 +9490,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", "prost-derive", @@ -9479,15 +9500,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -9512,10 +9533,11 @@ dependencies = [ [[package]] name = "psm" -version = "0.1.26" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e944464ec8536cd1beb0bbfd96987eb5e3b72f2ecdafdc5c769a37f1fa2ae1f" +checksum = "d11f2fedc3b7dafdc2851bc52f277377c5473d378859be234bc7ebb593144d01" dependencies = [ + "ar_archive_writer", "cc", ] @@ -9546,9 +9568,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", @@ -9557,9 +9579,9 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash 2.1.1", - "rustls 0.23.28", - "socket2 0.5.10", - "thiserror 2.0.12", + "rustls 0.23.36", + "socket2 0.6.1", + "thiserror 2.0.18", "tokio", "tracing", "web-time", @@ -9567,20 +9589,20 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.12" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.3", + "getrandom 0.3.4", "lru-slab", - "rand 0.9.1", + "rand 0.9.2", "ring", "rustc-hash 2.1.1", - "rustls 0.23.28", + "rustls 0.23.36", "rustls-pki-types", "slab", - "thiserror 2.0.12", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -9588,23 +9610,23 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.1", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" dependencies = [ "proc-macro2", ] @@ -9653,12 +9675,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -9688,7 +9710,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -9706,16 +9728,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", ] [[package]] @@ -9751,16 +9773,16 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" dependencies = [ - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] name = "raw-cpuid" -version = "11.5.0" +version = "11.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6df7ab838ed27997ba19a4664507e6f82b41fe6e20be42929332156e5e85146" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", ] [[package]] @@ -9817,7 +9839,7 @@ checksum = "f2a62d85ed81ca5305dc544bd42c8804c5060b78ffa5ad3c64b0fb6a8c13d062" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -9831,11 +9853,20 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.13" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "redox_syscall" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", ] [[package]] @@ -9844,74 +9875,59 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "libredox", "thiserror 1.0.69", ] [[package]] name = "ref-cast" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "relative-path" @@ -9930,7 +9946,7 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.3.26", + "h2 0.3.27", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.32", @@ -9963,20 +9979,20 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.20" +version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", "futures-core", "futures-util", - "h2 0.4.10", - "http 1.3.1", + "h2 0.4.13", + "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-rustls 0.27.7", "hyper-util", "js-sys", @@ -9984,25 +10000,25 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.28", - "rustls-native-certs 0.8.1", + "rustls 0.23.36", + "rustls-native-certs 0.8.3", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper 1.0.2", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tokio-util", - "tower 0.5.2", - "tower-http 0.6.6", + "tower 0.5.3", + "tower-http 0.6.8", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 1.0.1", + "webpki-roots 1.0.5", ] [[package]] @@ -10030,7 +10046,7 @@ dependencies = [ "async-trait", "chrono", "futures", - "getrandom 0.2.16", + "getrandom 0.2.17", "http 0.2.12", "hyper 0.14.32", "parking_lot 0.11.2", @@ -10045,9 +10061,9 @@ dependencies = [ [[package]] name = "resolv-conf" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95325155c684b1c89f7765e30bc1c42e4a6da51ca513615660cb8a62ef9a88e3" +checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" [[package]] name = "retry-policies" @@ -10089,7 +10105,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.16", + "getrandom 0.2.17", "libc", "untrusted", "windows-sys 0.52.0", @@ -10132,6 +10148,16 @@ dependencies = [ "serde", ] +[[package]] +name = "roaring" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ba9ce64a8f45d7fc86358410bb1a82e8c987504c0d4900e9141d69a9f26c885" +dependencies = [ + "bytemuck", + "byteorder", +] + [[package]] name = "ron" version = "0.8.1" @@ -10139,7 +10165,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64 0.21.7", - "bitflags 2.9.1", + "bitflags 2.10.0", "serde", "serde_derive", ] @@ -10150,6 +10176,15 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" +[[package]] +name = "rs_merkle" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb09b49230ba22e8c676e7b75dfe2887dea8121f18b530ae0ba519ce442d2b21" +dependencies = [ + "sha2 0.10.9", +] + [[package]] name = "rsa" version = "0.6.1" @@ -10193,9 +10228,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.8" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" dependencies = [ "const-oid 0.9.6", "digest 0.10.7", @@ -10231,13 +10266,13 @@ checksum = "c5e1711e7d14f74b12a58411c542185ef7fb7f2e7f8ee6e2940a883628522b42" dependencies = [ "cfg-if", "glob", - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", "regex", "relative-path", "rustc_version", - "syn 2.0.104", + "syn 2.0.114", "unicode-ident", ] @@ -10286,9 +10321,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.25" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" [[package]] name = "rustc-hash" @@ -10338,28 +10373,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.9.1", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustix" -version = "1.0.7" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "errno", "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", + "linux-raw-sys", + "windows-sys 0.61.2", ] [[package]] @@ -10376,16 +10398,16 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.28" +version = "0.23.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" +checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" dependencies = [ "aws-lc-rs", "log", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.3", + "rustls-webpki 0.103.9", "subtle", "zeroize", ] @@ -10396,7 +10418,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ - "openssl-probe", + "openssl-probe 0.1.6", "rustls-pemfile 1.0.4", "schannel", "security-framework 2.11.1", @@ -10408,7 +10430,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ - "openssl-probe", + "openssl-probe 0.1.6", "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", @@ -10417,14 +10439,14 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ - "openssl-probe", + "openssl-probe 0.2.1", "rustls-pki-types", "schannel", - "security-framework 3.2.0", + "security-framework 3.5.1", ] [[package]] @@ -10447,9 +10469,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" dependencies = [ "web-time", "zeroize", @@ -10466,11 +10488,11 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.28", - "rustls-native-certs 0.8.1", + "rustls 0.23.36", + "rustls-native-certs 0.8.3", "rustls-platform-verifier-android", - "rustls-webpki 0.103.3", - "security-framework 3.2.0", + "rustls-webpki 0.103.9", + "security-framework 3.5.1", "security-framework-sys", "webpki-root-certs 0.26.11", "windows-sys 0.59.0", @@ -10504,9 +10526,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.3" +version = "0.103.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" dependencies = [ "aws-lc-rs", "ring", @@ -10516,15 +10538,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" [[package]] name = "ryu-js" @@ -10558,20 +10580,20 @@ dependencies = [ [[package]] name = "scc" -version = "2.3.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22b2d775fb28f245817589471dd49c5edf64237f4a19d10ce9a92ff4651a27f4" +checksum = "46e6f046b7fef48e2660c57ed794263155d713de679057f2d0c169bfc6e756cc" dependencies = [ "sdd", ] [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -10599,6 +10621,18 @@ dependencies = [ "serde_json", ] +[[package]] +name = "schemars" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + [[package]] name = "schemars_derive" version = "0.8.22" @@ -10608,7 +10642,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -10640,48 +10674,29 @@ dependencies = [ [[package]] name = "sd-jwt-payload" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f96560f8ef0ef51808661b53f49e640cf854d64339d204c33fec3528d9451da7" -dependencies = [ - "iota-crypto", - "itertools 0.12.1", - "json-pointer", - "multibase 0.9.1", - "rand 0.8.5", - "serde", - "serde_json", - "serde_with 3.13.0", - "strum 0.26.3", - "thiserror 1.0.69", -] - -[[package]] -name = "sd-jwt-payload" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da68a72c06a4bd820e65e3926e5d2a45b6b5c04d8d8fe2e51f735ec2be07731" +checksum = "3d0271aef808decf6005e82e2b779a5659a630855206cde7e89a86d0d2b195cd" dependencies = [ "anyhow", "async-trait", - "indexmap 2.12.0", + "indexmap 2.13.0", "iota-crypto", "itertools 0.12.1", "json-pointer", - "multibase 0.9.1", + "multibase 0.9.2", "rand 0.8.5", "serde", "serde_json", - "serde_with 3.13.0", "strum 0.26.3", "thiserror 1.0.69", ] [[package]] name = "sdd" -version = "3.0.8" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "584e070911c7017da6cb2eb0788d09f43d789029b5877d3e5ecc8acf86ceee21" +checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" [[package]] name = "seahash" @@ -10731,9 +10746,9 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +checksum = "4473013577ec77b4ee3668179ef1186df3146e2cf2d927bd200974c6fe60fd99" dependencies = [ "cc", ] @@ -10745,7 +10760,7 @@ source = "git+https://github.com/iotaledger/secret-storage?tag=v0.3.0#7dc13ddae8 dependencies = [ "anyhow", "async-trait", - "thiserror 2.0.12", + "thiserror 2.0.18", ] [[package]] @@ -10754,7 +10769,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -10763,11 +10778,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.2.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -10776,9 +10791,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -10786,12 +10801,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" -dependencies = [ - "serde", -] +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "send_wrapper" @@ -10875,11 +10887,12 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.17" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -10899,7 +10912,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -10910,7 +10923,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -10926,15 +10939,16 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ - "indexmap 2.12.0", + "indexmap 2.13.0", "itoa", "memchr", - "ryu", "serde", + "serde_core", + "zmij", ] [[package]] @@ -10959,12 +10973,13 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" dependencies = [ "itoa", "serde", + "serde_core", ] [[package]] @@ -10975,7 +10990,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -10989,11 +11004,12 @@ dependencies = [ [[package]] name = "serde_stacker" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69c8defe6c780725cce4ec6ad3bd91e321baf6fa4e255df1f31e345d507ef01a" +checksum = "d4936375d50c4be7eff22293a9344f8e46f323ed2b3c243e52f89138d9bb0f4a" dependencies = [ "serde", + "serde_core", "stacker", ] @@ -11027,20 +11043,20 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.13.0" +version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf65a400f8f66fb7b0552869ad70157166676db75ed8181f8104ea91cf9d0b42" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.12.0", + "indexmap 2.13.0", "schemars 0.9.0", - "serde", - "serde_derive", + "schemars 1.2.0", + "serde_core", "serde_json", - "serde_with_macros 3.13.0", + "serde_with_macros 3.16.1", "time", ] @@ -11053,19 +11069,19 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "serde_with_macros" -version = "3.13.0" +version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81679d9ed988d5e9a5e6531dc3f2c28efbd639cbd1dfb628df08edea6004da77" +checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" dependencies = [ - "darling 0.20.11", + "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -11092,27 +11108,28 @@ dependencies = [ [[package]] name = "serial_test" -version = "3.2.0" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" +checksum = "0d0b343e184fc3b7bb44dff0705fffcf4b3756ba6aff420dddd8b24ca145e555" dependencies = [ - "futures", + "futures-executor", + "futures-util", "log", "once_cell", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "scc", "serial_test_derive", ] [[package]] name = "serial_test_derive" -version = "3.2.0" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" +checksum = "6f50427f258fb77356e4cd4aa0e87e2bd2c66dbcee41dc405282cae2bfc26c83" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -11184,7 +11201,6 @@ dependencies = [ [[package]] name = "shared" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?tag=v1.0.0-beta.7#5ce0c7ddeebf0d3326a24717b470654c12d35e16" dependencies = [ "identity_iota", "identity_storage", @@ -11198,18 +11214,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "shared-crypto" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" -dependencies = [ - "bcs", - "eyre", - "fastcrypto", - "serde", - "serde_repr", -] - [[package]] name = "shlex" version = "1.3.0" @@ -11218,10 +11222,11 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.5" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] @@ -11259,9 +11264,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] name = "similar" @@ -11295,14 +11300,13 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint 0.4.6", "num-traits", - "thiserror 2.0.12", + "thiserror 2.0.18", "time", ] [[package]] name = "siopv2" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=61fd882#61fd88220a0e9f61959533627263ca3408ccd1c1" dependencies = [ "anyhow", "async-trait", @@ -11322,7 +11326,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "serde_with 3.13.0", + "serde_with 3.16.1", "tokio", "url", ] @@ -11351,9 +11355,9 @@ checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a" [[package]] name = "slab" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "slip10_ed25519" @@ -11366,9 +11370,9 @@ dependencies = [ [[package]] name = "smallstr" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b1aefdf380735ff8ded0b15f31aab05daf1f70216c01c02a12926badd1df9d" +checksum = "862077b1e764f04c251fe82a2ef562fd78d7cadaeb072ca7c2bcaf7217b1ff3b" dependencies = [ "smallvec", ] @@ -11422,7 +11426,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -11443,12 +11447,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -11460,7 +11464,7 @@ dependencies = [ "base64 0.22.1", "bytes", "futures", - "http 1.3.1", + "http 1.4.0", "httparse", "log", "rand 0.8.5", @@ -11517,9 +11521,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4410e73b3c0d8442c5f99b425d7a435b5ee0ae4167b3196771dd3f7a01be745f" +checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" dependencies = [ "sqlx-core", "sqlx-macros", @@ -11530,33 +11534,33 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a007b6936676aa9ab40207cde35daab0a04b823be8ae004368c0793b96a61e0" +checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" dependencies = [ + "base64 0.22.1", "bytes", "crc", "crossbeam-queue", "either", - "event-listener 5.4.0", + "event-listener 5.4.1", "futures-core", "futures-intrusive", "futures-io", "futures-util", - "hashbrown 0.15.4", + "hashbrown 0.15.5", "hashlink 0.10.0", - "indexmap 2.12.0", + "indexmap 2.13.0", "log", "memchr", "once_cell", "percent-encoding", - "rustls 0.23.28", - "rustls-pemfile 2.2.0", + "rustls 0.23.36", "serde", "serde_json", "sha2 0.10.9", "smallvec", - "thiserror 2.0.12", + "thiserror 2.0.18", "tokio", "tokio-stream", "tracing", @@ -11566,22 +11570,22 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3112e2ad78643fef903618d78cf0aec1cb3134b019730edb039b69eaf531f310" +checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" dependencies = [ "proc-macro2", "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "sqlx-macros-core" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9f90acc5ab146a99bf5061a7eb4976b573f560bc898ef3bf8435448dd5e7ad" +checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" dependencies = [ "dotenvy", "either", @@ -11597,21 +11601,20 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.104", - "tempfile", + "syn 2.0.114", "tokio", "url", ] [[package]] name = "sqlx-mysql" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4560278f0e00ce64938540546f59f590d60beee33fffbd3b9cd47851e5fff233" +checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.1", + "bitflags 2.10.0", "byteorder", "bytes", "crc", @@ -11633,27 +11636,27 @@ dependencies = [ "once_cell", "percent-encoding", "rand 0.8.5", - "rsa 0.9.8", + "rsa 0.9.10", "serde", "sha1", "sha2 0.10.9", "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.12", + "thiserror 2.0.18", "tracing", "whoami", ] [[package]] name = "sqlx-postgres" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5b98a57f363ed6764d5b3a12bfedf62f07aa16e1856a7ddc2a0bb190a959613" +checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.1", + "bitflags 2.10.0", "byteorder", "crc", "dotenvy", @@ -11677,16 +11680,16 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.12", + "thiserror 2.0.18", "tracing", "whoami", ] [[package]] name = "sqlx-sqlite" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f85ca71d3a5b24e64e1d08dd8fe36c6c95c339a896cc33068148906784620540" +checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" dependencies = [ "atoi", "flume", @@ -11701,6 +11704,7 @@ dependencies = [ "serde", "serde_urlencoded", "sqlx-core", + "thiserror 2.0.18", "tracing", "url", ] @@ -11888,11 +11892,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2d7b2b056993e04945eade2b0bbd3049f1bb65cd2fcf661ccb15b615683b384" dependencies = [ "base64 0.12.3", - "ed25519-dalek 2.1.1", - "getrandom 0.2.16", + "ed25519-dalek 2.2.0", + "getrandom 0.2.17", "k256", "lazy_static", - "multibase 0.9.1", + "multibase 0.9.2", "num-bigint 0.4.6", "num-derive 0.3.3", "num-traits", @@ -11914,7 +11918,7 @@ source = "git+https://github.com/impierce/spruceid-ssi.git#ff91409b2a38188cf7126 dependencies = [ "base64 0.12.3", "lazy_static", - "multibase 0.9.1", + "multibase 0.9.2", "num-bigint 0.4.6", "num-derive 0.3.3", "num-traits", @@ -11928,15 +11932,15 @@ dependencies = [ [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "stacker" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cddb07e32ddb770749da91081d8d0ac3a16f1a569a18b20348cd371f5dead06b" +checksum = "e1f8b29fb42aafcea4edeeb6b2f2d7ecd0d969c48b4cf0d2e64aafc471dd6e59" dependencies = [ "cc", "cfg-if", @@ -11948,13 +11952,15 @@ dependencies = [ [[package]] name = "starfish-config" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ + "blake3", "fastcrypto", "iota-network-stack", + "iota-sdk-types", "rand 0.8.5", + "rs_merkle", "serde", - "shared-crypto", ] [[package]] @@ -12095,6 +12101,15 @@ dependencies = [ "strum_macros 0.26.4", ] +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + [[package]] name = "strum_macros" version = "0.25.3" @@ -12105,7 +12120,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -12118,7 +12133,19 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.104", + "syn 2.0.114", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.114", ] [[package]] @@ -12146,9 +12173,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.104" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", @@ -12190,7 +12217,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -12236,7 +12263,7 @@ checksum = "0ce69a5028cd9576063ec1f48edb2c75339fd835e6094ef3e05b3a079bf594a6" dependencies = [ "papergrid", "tabled_derive", - "unicode-width 0.1.14", + "unicode-width", ] [[package]] @@ -12252,6 +12279,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + [[package]] name = "take_mut" version = "0.2.2" @@ -12290,20 +12323,20 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96374855068f47402c3121c6eed88d29cb1de8f3ab27090e273e420bdabcf050" dependencies = [ - "parking_lot 0.12.4", + "parking_lot 0.12.5", ] [[package]] name = "tempfile" -version = "3.20.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", - "rustix 1.0.7", - "windows-sys 0.59.0", + "rustix", + "windows-sys 0.61.2", ] [[package]] @@ -12317,20 +12350,14 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" +checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" dependencies = [ - "rustix 1.0.7", - "windows-sys 0.59.0", + "rustix", + "windows-sys 0.60.2", ] -[[package]] -name = "textwrap" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" - [[package]] name = "thiserror" version = "1.0.69" @@ -12342,11 +12369,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.18", ] [[package]] @@ -12357,18 +12384,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -12391,30 +12418,30 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" dependencies = [ - "deranged", + "deranged 0.5.5", "itoa", "num-conv", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" dependencies = [ "num-conv", "time-core", @@ -12450,9 +12477,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -12460,9 +12487,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -12475,33 +12502,30 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.47.1" +version = "1.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", "mio", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -12516,19 +12540,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.28", + "rustls 0.23.36", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -12538,21 +12562,21 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.26.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" dependencies = [ "futures-util", "log", "tokio", - "tungstenite 0.26.2", + "tungstenite 0.28.0", ] [[package]] name = "tokio-util" -version = "0.7.15" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", @@ -12572,26 +12596,17 @@ dependencies = [ "bytes", "futures-core", "futures-sink", - "http 1.3.1", + "http 1.4.0", "httparse", "rand 0.8.5", "ring", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tokio-util", "webpki-roots 0.26.11", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.8.23" @@ -12600,7 +12615,7 @@ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", "toml_edit 0.22.27", ] @@ -12613,14 +12628,23 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.12.0", - "toml_datetime", + "indexmap 2.13.0", + "toml_datetime 0.6.11", "winnow 0.5.40", ] @@ -12630,12 +12654,33 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.12.0", + "indexmap 2.13.0", "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", "toml_write", - "winnow 0.7.11", + "winnow 0.7.14", +] + +[[package]] +name = "toml_edit" +version = "0.23.10+spec-1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +dependencies = [ + "indexmap 2.13.0", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "winnow 0.7.14", +] + +[[package]] +name = "toml_parser" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +dependencies = [ + "winnow 0.7.14", ] [[package]] @@ -12646,28 +12691,28 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tonic" -version = "0.13.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" +checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" dependencies = [ "async-trait", - "axum 0.8.3", + "axum 0.8.8", "base64 0.22.1", "bytes", - "h2 0.4.10", - "http 1.3.1", + "h2 0.4.13", + "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-timeout", "hyper-util", "percent-encoding", "pin-project", - "prost", - "socket2 0.5.10", + "socket2 0.6.1", + "sync_wrapper 1.0.2", "tokio", "tokio-stream", - "tower 0.5.2", + "tower 0.5.3", "tower-layer", "tower-service", "tracing", @@ -12676,14 +12721,26 @@ dependencies = [ [[package]] name = "tonic-health" -version = "0.13.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb87334d340313fefa513b6e60794d44a86d5f039b523229c99c323e4e19ca4b" +checksum = "2a82868bf299e0a1d2e8dce0dc33a46c02d6f045b2c1f1d6cc8dc3d0bf1812ef" dependencies = [ "prost", "tokio", "tokio-stream", "tonic", + "tonic-prost", +] + +[[package]] +name = "tonic-prost" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" +dependencies = [ + "bytes", + "prost", + "tonic", ] [[package]] @@ -12709,13 +12766,13 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", - "indexmap 2.12.0", + "indexmap 2.13.0", "pin-project-lite", "slab", "sync_wrapper 1.0.2", @@ -12732,7 +12789,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "bytes", "futures-core", "futures-util", @@ -12752,11 +12809,11 @@ checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "async-compression", "base64 0.21.7", - "bitflags 2.9.1", + "bitflags 2.10.0", "bytes", "futures-core", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", "http-range-header 0.4.2", @@ -12777,18 +12834,18 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "bytes", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "iri-string", "pin-project-lite", - "tower 0.5.2", + "tower 0.5.3", "tower-layer", "tower-service", "tracing", @@ -12808,9 +12865,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -12820,20 +12877,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -12862,14 +12919,14 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "serde", "serde_json", "sharded-slab", @@ -12899,7 +12956,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -12960,36 +13017,51 @@ dependencies = [ [[package]] name = "tungstenite" -version = "0.26.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" dependencies = [ "bytes", "data-encoding", - "http 1.3.1", + "http 1.4.0", "httparse", "log", - "rand 0.9.1", + "rand 0.9.2", "sha1", - "thiserror 2.0.12", + "thiserror 2.0.18", "utf-8", ] [[package]] name = "typed-builder" -version = "0.10.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89851716b67b937e393b3daa8423e67ddfc4bbbf1654bcf05488e95e0828db0c" +checksum = "398a3a3c918c96de527dc11e6e846cd549d4508030b8a33e1da12789c856b81a" +dependencies = [ + "typed-builder-macro", +] + +[[package]] +name = "typed-builder-macro" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e48cea23f68d1f78eb7bc092881b6bb88d3d6b5b7e6234f6f9c911da1ffb221" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.114", ] +[[package]] +name = "typed-path" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7922f2cdc51280d47b491af9eafc41eb0cdab85eabcb390c854412fcbf26dbe8" + [[package]] name = "typed-store-error" -version = "1.6.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.6.1#7a7a3e40745d7a8ae54afae65f64301f4743e70b" +version = "1.13.1" +source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "serde", "thiserror 1.0.69", @@ -12997,9 +13069,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "types-common" @@ -13030,9 +13102,9 @@ dependencies = [ [[package]] name = "typeshare" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19be0f411120091e76e13e5a0186d8e2bcc3e7e244afdb70152197f1a8486ceb" +checksum = "da1bf9fe204f358ffea7f8f779b53923a20278b3ab8e8d97962c5e1b3a54edb7" dependencies = [ "chrono", "serde", @@ -13042,12 +13114,12 @@ dependencies = [ [[package]] name = "typeshare-annotation" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a615d6c2764852a2e88a4f16e9ce1ea49bb776b5872956309e170d63a042a34f" +checksum = "621963e302416b389a1ec177397e9e62de849a78bd8205d428608553def75350" dependencies = [ "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -13076,9 +13148,9 @@ checksum = "ccb97dac3243214f8d8507998906ca3e2e0b900bf9bf4870477f125b82e68f6e" [[package]] name = "unicase" -version = "2.8.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" [[package]] name = "unicode-bidi" @@ -13088,24 +13160,24 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-normalization" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" dependencies = [ "tinyvec", ] [[package]] name = "unicode-properties" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" [[package]] name = "unicode-segmentation" @@ -13119,12 +13191,6 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" -[[package]] -name = "unicode-width" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" - [[package]] name = "unicode-xid" version = "0.2.6" @@ -13155,26 +13221,40 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.12.1" +version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" +checksum = "d39cb1dbab692d82a977c0392ffac19e188bd9186a9f32806f0aaa859d75585a" dependencies = [ "base64 0.22.1", "log", - "once_cell", - "url", + "percent-encoding", + "ureq-proto", + "utf-8", +] + +[[package]] +name = "ureq-proto" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d81f9efa9df032be5934a46a068815a10a042b494b6a58cb0a1a97bb5467ed6f" +dependencies = [ + "base64 0.22.1", + "http 1.4.0", + "httparse", + "log", ] [[package]] name = "url" -version = "2.5.4" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] @@ -13209,14 +13289,14 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.17.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "js-sys", - "rand 0.9.1", - "serde", + "rand 0.9.2", + "serde_core", "wasm-bindgen", ] @@ -13258,7 +13338,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -13269,9 +13349,9 @@ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "value-bag" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" +checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" [[package]] name = "variant_count" @@ -13281,7 +13361,7 @@ checksum = "a1935e10c6f04d22688d07c0790f2fc0e1b1c5c2c55bc0cc87ed67656e587dd8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -13350,12 +13430,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" +name = "wasip2" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] @@ -13366,9 +13446,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" dependencies = [ "cfg-if", "once_cell", @@ -13376,29 +13456,17 @@ dependencies = [ "serde", "serde_json", "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.104", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" dependencies = [ "cfg-if", + "futures-util", "js-sys", "once_cell", "wasm-bindgen", @@ -13407,9 +13475,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -13417,22 +13485,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.104", - "wasm-bindgen-backend", + "syn 2.0.114", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" dependencies = [ "unicode-ident", ] @@ -13467,9 +13535,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" dependencies = [ "js-sys", "wasm-bindgen", @@ -13491,14 +13559,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" dependencies = [ - "webpki-root-certs 1.0.1", + "webpki-root-certs 1.0.5", ] [[package]] name = "webpki-root-certs" -version = "1.0.1" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86138b15b2b7d561bc4469e77027b8dd005a43dc502e9031d1f5afc8ce1f280e" +checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc" dependencies = [ "rustls-pki-types", ] @@ -13515,45 +13583,33 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.1", + "webpki-roots 1.0.5", ] [[package]] name = "webpki-roots" -version = "1.0.1" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" +checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" dependencies = [ "rustls-pki-types", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - [[package]] name = "whoami" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" +checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" dependencies = [ - "redox_syscall 0.5.13", + "libredox", "wasite", ] [[package]] name = "widestring" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" [[package]] name = "winapi" @@ -13573,11 +13629,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -13605,7 +13661,7 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ - "windows-core", + "windows-core 0.57.0", "windows-targets 0.52.6", ] @@ -13615,12 +13671,25 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", + "windows-implement 0.57.0", + "windows-interface 0.57.0", + "windows-result 0.1.2", "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link", + "windows-result 0.4.1", + "windows-strings", +] + [[package]] name = "windows-implement" version = "0.57.0" @@ -13629,7 +13698,18 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", ] [[package]] @@ -13640,7 +13720,18 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", ] [[package]] @@ -13658,6 +13749,24 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -13700,7 +13809,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.2", + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", ] [[package]] @@ -13751,18 +13869,19 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.2" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -13785,9 +13904,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -13815,9 +13934,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -13845,9 +13964,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -13857,9 +13976,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -13887,9 +14006,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -13917,9 +14036,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -13941,9 +14060,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -13971,9 +14090,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" @@ -13986,18 +14105,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e90edd2ac1aa278a5c4599b1d89cf03074b610800f866d4026dc199d7929a28" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.7.11" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" dependencies = [ "memchr", ] @@ -14014,18 +14124,17 @@ dependencies = [ [[package]] name = "wiremock" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b8b99d4cdbf36b239a9532e31fe4fb8acc38d1897c1761e161550a7dc78e6a" +checksum = "08db1edfb05d9b3c1542e521aea074442088292f00b5f28e435c714a98f85031" dependencies = [ "assert-json-diff", - "async-trait", "base64 0.22.1", "deadpool", "futures", - "http 1.3.1", + "http 1.4.0", "http-body-util", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-util", "log", "once_cell", @@ -14037,19 +14146,16 @@ dependencies = [ ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "ws_stream_tungstenite" @@ -14059,7 +14165,7 @@ checksum = "e283cc794a890f5bdc01e358ad7c34535025f79ba83c1b5c7e01e5d6c60b336d" dependencies = [ "async-tungstenite", "async_io_stream", - "bitflags 2.9.1", + "bitflags 2.10.0", "futures-core", "futures-io", "futures-sink", @@ -14121,18 +14227,18 @@ dependencies = [ "nom 7.1.3", "oid-registry", "rusticata-macros", - "thiserror 2.0.12", + "thiserror 2.0.18", "time", ] [[package]] name = "xattr" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.0.7", + "rustix", ] [[package]] @@ -14166,11 +14272,10 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -14178,34 +14283,34 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", "synstructure 0.13.2", ] [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] @@ -14225,15 +14330,15 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", "synstructure 0.13.2", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "serde", "zeroize_derive", @@ -14241,20 +14346,20 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ "displaydoc", "yoke", @@ -14263,9 +14368,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.2" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -14274,63 +14379,66 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.114", ] [[package]] name = "zip" -version = "2.4.2" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +checksum = "c42e33efc22a0650c311c2ef19115ce232583abbe80850bc8b66509ebef02de0" dependencies = [ - "arbitrary", "crc32fast", - "crossbeam-utils", - "displaydoc", "flate2", - "indexmap 2.12.0", + "indexmap 2.13.0", "memchr", - "thiserror 2.0.12", + "typed-path", "zopfli", ] [[package]] name = "zkryptium" -version = "0.2.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c734c171ed591a19dc1127351eb1b4d91864d3e53b2b6e9992bffcb7febf364a" +checksum = "14be09edf2acce2a8d1dc925330e42e4b106c94caa5ce8f44a42525668ba2931" dependencies = [ "bls12_381_plus 0.8.18", - "cargo-license", "digest 0.10.7", - "dotenv", "elliptic-curve 0.13.8", - "env_logger", "ff 0.13.1", - "group 0.10.0", + "group 0.13.0", "hex", - "hkdf 0.12.4", - "log", "rand 0.8.5", "serde", "serde_json", "sha2 0.10.9", "sha3 0.10.8", - "thiserror 1.0.69", - "zeroize", + "thiserror 2.0.18", ] +[[package]] +name = "zlib-rs" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" + +[[package]] +name = "zmij" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65" + [[package]] name = "zopfli" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" dependencies = [ "bumpalo", "crc32fast", @@ -14358,9 +14466,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.15+zstd.1.5.7" +version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 3f31a60c0..85a45f3fb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,11 +23,17 @@ edition = "2021" rust-version = "1.76.0" [workspace.dependencies] -siopv2 = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } -oid4vci = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } -oid4vc-core = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } -oid4vc-manager = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } -oid4vp = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } +# siopv2 = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } +# oid4vci = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } +# oid4vc-core = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } +# oid4vc-manager = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } +# oid4vp = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } + +siopv2 = { path = "../openid4vc/siopv2" } +oid4vci = { path = "../openid4vc/oid4vci" } +oid4vc-core = { path = "../openid4vc/oid4vc-core" } +oid4vc-manager = { path = "../openid4vc/oid4vc-manager" } +oid4vp = { path = "../openid4vc/oid4vp" } anyhow = "1.0" async-std = { version = "1.5", features = ["attributes", "tokio1"] } @@ -38,19 +44,20 @@ chrono = { version = "0.4", features = ["serde"] } cqrs-es = "0.4.12" derivative = "2.2" futures = "0.3" -identity_core = { git = "https://github.com/iotaledger/identity", tag = "v1.6.0-beta.7" } -identity_credential = { git = "https://github.com/iotaledger/identity", tag = "v1.6.0-beta.7", default-features = false, features = [ - "validator", +identity_core = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2" } +identity_credential = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2", default-features = false, features = [ "credential", - "presentation", "domain-linkage", + "presentation", + "sd-jwt-vc", + "validator", ] } -identity_did = { git = "https://github.com/iotaledger/identity", tag = "v1.6.0-beta.7" } -identity_document = { git = "https://github.com/iotaledger/identity", tag = "v1.6.0-beta.7" } -identity_iota = { git = "https://github.com/iotaledger/identity", tag = "v1.6.0-beta.7" } -identity_storage = { git = "https://github.com/iotaledger/identity", tag = "v1.6.0-beta.7" } -identity_verification = { git = "https://github.com/iotaledger/identity", tag = "v1.6.0-beta.7", default-features = false } -iota-sdk = { git = "https://github.com/iotaledger/iota", package = "iota-sdk", tag = "v1.6.1" } +identity_did = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2" } +identity_document = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2" } +identity_iota = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2" } +identity_storage = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2" } +identity_verification = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2", default-features = false } +iota-sdk = { git = "https://github.com/iotaledger/iota", package = "iota-sdk", tag = "v1.13.1" } # TODO: Check if this is still needed. iota-sdk-legacy = { version = "1.0", package = "iota-sdk", default-features = false, features = [ "tls", @@ -62,7 +69,7 @@ lazy_static = "1.4" mime = { version = "0.3" } oauth_tsl = { git = "https://github.com/impierce/oauth-token-status-list", rev = "0aa0228" } once_cell = { version = "1.19" } -product_common = { git = "https://github.com/iotaledger/product-core", tag = "v0.8.2", package = "product_common", features = [ +product_common = { git = "https://github.com/iotaledger/product-core", tag = "v0.8.8", package = "product_common", features = [ "gas-station", "default-http-client", ] } @@ -72,6 +79,9 @@ reqwest = { version = "0.12", default-features = false, features = [ "rustls-tls", ] } rstest = "0.22" +sd-jwt = { package = "sd-jwt-payload", version = "0.5", default-features = false, features = [ + "sha", +] } serde = { version = "1.0", default-features = false, features = ["derive"] } serde_json = { version = "1.0" } serde_json_path_to_error = { version = "0.1" } diff --git a/agent_api_http/src/v0/issuance/credential_issuer/credential.rs b/agent_api_http/src/v0/issuance/credential_issuer/credential.rs index ba36bc91e..19ad5d2d1 100644 --- a/agent_api_http/src/v0/issuance/credential_issuer/credential.rs +++ b/agent_api_http/src/v0/issuance/credential_issuer/credential.rs @@ -19,8 +19,8 @@ use axum::{ response::{IntoResponse, Response}, }; use axum_auth::AuthBearer; -use oid4vci::credential_request::CredentialRequest; use oid4vci::errors::CredentialErrorResponse; +use oid4vci::{credential_request::CredentialRequest, Proof}; use std::sync::Arc; use tokio::time::sleep; use tracing::error; @@ -56,6 +56,8 @@ pub(crate) async fn credential( _ => return Err(internal_server_error()), }; + let proof = credential_request.proof.clone(); + let command = OfferCommand::VerifyCredentialRequest { offer_id: offer_id.clone(), credential_issuer_metadata, @@ -102,6 +104,7 @@ pub(crate) async fn credential( credential_id: credential_id.clone(), subject_id: subject_id.clone(), overwrite: false, + proof: proof.clone(), }; command_handler(&credential_id, &state.command.credential, command).await?; diff --git a/agent_authorization/src/services.rs b/agent_authorization/src/services.rs index 139ca76b1..ec47e6230 100644 --- a/agent_authorization/src/services.rs +++ b/agent_authorization/src/services.rs @@ -1,12 +1,15 @@ -use agent_secret_manager::{service::Service, subject::SubjectExt}; +use agent_secret_manager::{ + service::Service, + subject::{Subject, SubjectExt}, +}; use std::sync::Arc; pub struct AuthorizationServices { - pub signer: Arc, + pub signer: Arc, } impl Service for AuthorizationServices { - fn new(signer: Arc) -> Self { + fn new(signer: Arc) -> Self { Self { signer } } } diff --git a/agent_holder/src/presentation/aggregate.rs b/agent_holder/src/presentation/aggregate.rs index 370b6a5ee..82d8da858 100644 --- a/agent_holder/src/presentation/aggregate.rs +++ b/agent_holder/src/presentation/aggregate.rs @@ -7,6 +7,7 @@ use cqrs_es::Aggregate; use identity_core::convert::ToJson; use identity_credential::{credential::Jwt, presentation::JwtPresentationOptions}; use jsonwebtoken::Header; +use oid4vc_core::Subject as _; use serde::{Deserialize, Serialize}; use std::sync::Arc; use tracing::{debug, info}; @@ -94,14 +95,14 @@ impl Aggregate for Presentation { ] .join("."); - let proof_value = holder - .sign( - &message, - get_preferred_did_method().to_string().as_ref(), - get_preferred_signing_algorithm(), - ) - .await - .map_err(|err| SigningError(err.to_string()))?; + let proof_value = oid4vc_core::Sign::sign( + &**holder, + &message, + get_preferred_did_method().to_string().as_ref(), + get_preferred_signing_algorithm(), + ) + .await + .unwrap(); let signature = URL_SAFE_NO_PAD.encode(proof_value.as_slice()); let message = [message, signature].join("."); diff --git a/agent_holder/src/services.rs b/agent_holder/src/services.rs index 453c41de2..cd769a24a 100644 --- a/agent_holder/src/services.rs +++ b/agent_holder/src/services.rs @@ -1,4 +1,7 @@ -use agent_secret_manager::{service::Service, subject::SubjectExt}; +use agent_secret_manager::{ + service::Service, + subject::{Subject, SubjectExt}, +}; use agent_shared::config::{ get_all_enabled_did_methods, get_all_enabled_signing_algorithms_supported, get_preferred_did_method, }; @@ -8,12 +11,12 @@ use std::sync::Arc; /// Holder services. This struct is used to sign credentials and validate credential requests. pub struct HolderServices { - pub holder: Arc, + pub holder: Arc, pub wallet: Wallet, } impl Service for HolderServices { - fn new(holder: Arc) -> Self { + fn new(holder: Arc) -> Self { let signing_algorithms_supported = get_all_enabled_signing_algorithms_supported(); let mut enabled_did_methods = get_all_enabled_did_methods(); diff --git a/agent_identity/src/document/aggregate.rs b/agent_identity/src/document/aggregate.rs index e006692f2..49065ba4c 100644 --- a/agent_identity/src/document/aggregate.rs +++ b/agent_identity/src/document/aggregate.rs @@ -147,7 +147,7 @@ impl Aggregate for Document { .map_err(|err| GenericError(err.to_string()))?; // Retrieve the wallet address from the identity client. - let wallet_address = identity_client.sender_address(); + let wallet_address = identity_client.address(); let balance = iota_client .coin_read_api() @@ -455,7 +455,7 @@ impl Aggregate for Document { } // Retrieve the wallet address from the identity client. - let wallet_address = identity_client.sender_address(); + let wallet_address = identity_client.address(); let network_name = did_method .network_name() @@ -659,7 +659,7 @@ where let controller_token = oci.get_controller_token(identity_client).await?.ok_or_else(|| { rebased::Error::Identity(format!( "address {} has no control over Identity {}", - identity_client.sender_address(), + identity_client.address(), oci.id() )) })?; diff --git a/agent_issuance/Cargo.toml b/agent_issuance/Cargo.toml index c7e973fa8..94f3a2cf1 100644 --- a/agent_issuance/Cargo.toml +++ b/agent_issuance/Cargo.toml @@ -23,6 +23,7 @@ oid4vci.workspace = true oid4vc-core.workspace = true rand.workspace = true reqwest.workspace = true +sd-jwt.workspace = true serde.workspace = true serde_json.workspace = true serde_json_path_to_error.workspace = true diff --git a/agent_issuance/src/application/access_token_validation_service.rs b/agent_issuance/src/application/access_token_validation_service.rs index 7c0528d68..3791a0467 100644 --- a/agent_issuance/src/application/access_token_validation_service.rs +++ b/agent_issuance/src/application/access_token_validation_service.rs @@ -1,4 +1,5 @@ use crate::state::IssuanceState; +use agent_secret_manager::subject::SubjectExt as _; use agent_shared::config::config; use identity_core::convert::{FromJson as _, ToJson as _}; use jsonwebtoken::{decode, jwk::Jwk as JsonWebTokenJwk, DecodingKey, Validation}; diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index 732deddad..ef9509f11 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -15,14 +15,16 @@ use identity_credential::credential::{ use jsonwebtoken::Header; use oauth_tsl::status_list::StatusType; use oauth_tsl::tokens::status_list_token::StatusListTyp; -use oid4vc_core::jwt; +use oid4vc_core::{jwt, Sign as _, Subject as _}; +use oid4vci::credential_format_profiles::ietf_sd_jwt_vc::dc_sd_jwt::{DcSdJwt, DcSdJwtParameters}; use oid4vci::credential_format_profiles::w3c_verifiable_credentials::jwt_vc_json::{ CredentialDefinition, JwtVcJson, JwtVcJsonParameters, }; use oid4vci::credential_format_profiles::{CredentialFormats, Parameters}; use oid4vci::credential_issuer::credential_configurations_supported::CredentialConfigurationsSupportedObject; use oid4vci::notification_request::NotificationRequest; -use oid4vci::VerifiableCredentialJwt; +use oid4vci::{Proof, VerifiableCredentialJwt}; +use sd_jwt::{RequiredKeyBinding, SdJwtBuilder}; use serde::{Deserialize, Serialize}; use serde_json::json; use std::sync::Arc; @@ -115,212 +117,235 @@ impl Aggregate for Credential { credential_configuration, expires_at, credential_status_index, - } => match &credential_configuration.credential_format { - CredentialFormats::JwtVcJson(Parameters:: { - parameters: - JwtVcJsonParameters { - credential_definition: CredentialDefinition { type_, .. }, - .. - }, - }) => { - #[cfg(feature = "test_utils")] - let notification_id = test_utils::notification_id(); - #[cfg(not(feature = "test_utils"))] - let notification_id = agent_shared::generate_random_string(); - - #[cfg(feature = "test_utils")] - let issuance_date = "2010-01-01T00:00:00Z".to_string(); - #[cfg(not(feature = "test_utils"))] - let issuance_date = chrono::Utc::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, true); - - let name = config() - .display - .first() - .expect("Configuration `display.name` missing") - .name - .clone(); - - let issuer: Profile = ProfileBuilder::default() - .id(config().public_url.clone()) - .type_("Profile") - .name(name) - .try_into() - .expect("Could not build issuer profile"); - - let issuance_date = - identity_core::common::Timestamp::parse(&issuance_date).expect("Could not parse issuance_date"); - - let expiration_date = match expires_at { - CredentialExpiry::Fixed(fixed) => { - let fixed = identity_core::common::Timestamp::from_unix(fixed.timestamp()) - .map_err(|_| InvalidExpirationDateError)?; - - Some(fixed) - } - CredentialExpiry::Never => None, - }; - - let mut credential_types: Vec = type_.clone(); - - let id = data - .raw - .get("id") - .map(|id| { - id.as_str() - .and_then(|id_str| Url::parse(id_str).ok()) - .ok_or(InvalidIdentifierError) - }) - .transpose()?; - - let credential_subject = identity_credential::credential::Subject::from_json_value( - data.raw["credentialSubject"].clone(), - ) - .map_err(|e| InvalidCredentialSubjectError(e.to_string()))?; - - let credential_status = CredentialStatus { - index: credential_status_index, - status: StatusType::VALID, - }; + } => { + #[cfg(feature = "test_utils")] + let notification_id = test_utils::notification_id(); + #[cfg(not(feature = "test_utils"))] + let notification_id = agent_shared::generate_random_string(); - let status_list_url = get_status_list_url(self.credential_status.index)?; - - // Loop through all the items in the `type` array in reverse until we find a match. - while let Some(credential_type) = credential_types.pop() { - match credential_type.as_str() { - "VerifiableCredential" => { - let issuer = match serde_json::from_value::(json!({ - "id": issuer.id, - "name": issuer.name, - })) { - Ok(issuer) => issuer, - Err(_) => unreachable!("Couldn't parse issuer"), - }; - - let status_uri_idx = identity_core::common::Object::from_json_value(json!({ - "uri": status_list_url.clone(), - "idx": credential_status_index - })) - .map_err(|_| CredentialError::InvalidCredentialStatus)?; - - let status = identity_credential::credential::Status { - id: status_list_url.into(), - type_: StatusListTyp::Jwt.to_string(), - properties: status_uri_idx, - }; - - let builder = W3CVerifiableCredentialBuilder::default() - .issuer(issuer) - .subject(credential_subject) - .issuance_date(issuance_date) - .status(status); - - let builder = if let Some(expiration_date) = expiration_date { - builder.expiration_date(expiration_date) - } else { - builder - }; - - let builder = if let Some(id) = id { - builder.id(id.into()) - } else { - builder - }; - - let credential: W3CVerifiableCredential = builder - .build() - .map_err(|e| InvalidCredentialSubjectError(e.to_string()))?; - - // Set the type to the original credential configuration type. - let mut raw = json!(credential); - raw["type"] = json!(type_); - - return Ok(vec![UnsignedCredentialCreated { - credential_id, - data: Data { raw }, - credential_configuration, - notification_id: Some(notification_id), - credential_status, - }]); + match &credential_configuration.credential_format { + CredentialFormats::JwtVcJson(Parameters:: { + parameters: + JwtVcJsonParameters { + credential_definition: CredentialDefinition { type_, .. }, + .. + }, + }) => { + #[cfg(feature = "test_utils")] + let issuance_date = "2010-01-01T00:00:00Z".to_string(); + #[cfg(not(feature = "test_utils"))] + let issuance_date = chrono::Utc::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, true); + + let name = config() + .display + .first() + .expect("Configuration `display.name` missing") + .name + .clone(); + + let issuer: Profile = ProfileBuilder::default() + .id(config().public_url.clone()) + .type_("Profile") + .name(name) + .try_into() + .expect("Could not build issuer profile"); + + let issuance_date = identity_core::common::Timestamp::parse(&issuance_date) + .expect("Could not parse issuance_date"); + + let expiration_date = match expires_at { + CredentialExpiry::Fixed(fixed) => { + let fixed = identity_core::common::Timestamp::from_unix(fixed.timestamp()) + .map_err(|_| InvalidExpirationDateError)?; + + Some(fixed) } - "AchievementCredential" | "OpenBadgeCredential" => { - let name = credential_configuration - .display - .first() - .map(|display| display.name.clone()) - .unwrap_or("OpenBadge Credential".to_string()); - - let credential_subject = serde_json_path_to_error::from_value::( - json!(credential_subject), - ) - .map_err(|e| InvalidCredentialSubjectError(e.to_string()))?; - - let builder_credential_status = types_ob_v3::prelude::CredentialStatus { - id: status_list_url.to_string(), - type_: StatusListTyp::Jwt.to_string(), - }; - - let builder = AchievementCredentialBuilder::default() - .context(vec![ - "https://www.w3.org/2018/credentials/v1", - "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json", - ]) - .type_(AchievementCredentialType::from(vec![ - "VerifiableCredential", - &credential_type, - ])) - .name(name) - .issuer(issuer) - .credential_subject(credential_subject) - .issuance_date(issuance_date.to_rfc3339()) - .credential_status(builder_credential_status); - - let builder = if let Some(expiration_date) = expiration_date { - builder.expiration_date(expiration_date.to_rfc3339()) - } else { - builder - }; - - let builder = builder.id(id.ok_or(InvalidIdentifierError)?); - - let credential: AchievementCredential = - builder.try_into().map_err(InvalidCredentialSubjectError)?; - - // `types_ob_v3::achievement_credential` builder does not support additional properties for the credentialStatus, - // therefore we insert them manually. - let mut raw = serde_json::to_value(credential) + CredentialExpiry::Never => None, + }; + + let mut credential_types: Vec = type_.clone(); + + let id = data + .raw + .get("id") + .map(|id| { + id.as_str() + .and_then(|id_str| Url::parse(id_str).ok()) + .ok_or(InvalidIdentifierError) + }) + .transpose()?; + + let credential_subject = identity_credential::credential::Subject::from_json_value( + data.raw["credentialSubject"].clone(), + ) + .map_err(|e| InvalidCredentialSubjectError(e.to_string()))?; + + let credential_status = CredentialStatus { + index: credential_status_index, + status: StatusType::VALID, + }; + + let status_list_url = get_status_list_url(self.credential_status.index)?; + + // Loop through all the items in the `type` array in reverse until we find a match. + while let Some(credential_type) = credential_types.pop() { + match credential_type.as_str() { + "VerifiableCredential" => { + let issuer = match serde_json::from_value::(json!({ + "id": issuer.id, + "name": issuer.name, + })) { + Ok(issuer) => issuer, + Err(_) => unreachable!("Couldn't parse issuer"), + }; + + let status_uri_idx = identity_core::common::Object::from_json_value(json!({ + "uri": status_list_url.clone(), + "idx": credential_status_index + })) .map_err(|_| CredentialError::InvalidCredentialStatus)?; - let raw_credential_status = raw["credentialStatus"] - .as_object_mut() - .ok_or(CredentialError::InvalidCredentialStatus)?; - - raw_credential_status.insert( - "uri".to_string(), - serde_json::Value::String(status_list_url.to_string()), - ); - raw_credential_status.insert( - "idx".to_string(), - serde_json::Value::Number(credential_status_index.into()), - ); - - return Ok(vec![UnsignedCredentialCreated { - credential_id, - notification_id: Some(notification_id), - data: Data { raw }, - credential_configuration, - credential_status, - }]); + let status = identity_credential::credential::Status { + id: status_list_url.into(), + type_: StatusListTyp::Jwt.to_string(), + properties: status_uri_idx, + }; + + let builder = W3CVerifiableCredentialBuilder::default() + .issuer(issuer) + .subject(credential_subject) + .issuance_date(issuance_date) + .status(status); + + let builder = if let Some(expiration_date) = expiration_date { + builder.expiration_date(expiration_date) + } else { + builder + }; + + let builder = if let Some(id) = id { + builder.id(id.into()) + } else { + builder + }; + + let credential: W3CVerifiableCredential = builder + .build() + .map_err(|e| InvalidCredentialSubjectError(e.to_string()))?; + + // Set the type to the original credential configuration type. + let mut raw = json!(credential); + raw["type"] = json!(type_); + + return Ok(vec![UnsignedCredentialCreated { + credential_id, + data: Data { raw }, + credential_configuration, + notification_id: Some(notification_id), + credential_status, + }]); + } + "AchievementCredential" | "OpenBadgeCredential" => { + let name = credential_configuration + .display + .first() + .map(|display| display.name.clone()) + .unwrap_or("OpenBadge Credential".to_string()); + + let credential_subject = + serde_json_path_to_error::from_value::(json!( + credential_subject + )) + .map_err(|e| InvalidCredentialSubjectError(e.to_string()))?; + + let builder_credential_status = types_ob_v3::prelude::CredentialStatus { + id: status_list_url.to_string(), + type_: StatusListTyp::Jwt.to_string(), + }; + + let builder = AchievementCredentialBuilder::default() + .context(vec![ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json", + ]) + .type_(AchievementCredentialType::from(vec![ + "VerifiableCredential", + &credential_type, + ])) + .name(name) + .issuer(issuer) + .credential_subject(credential_subject) + .issuance_date(issuance_date.to_rfc3339()) + .credential_status(builder_credential_status); + + let builder = if let Some(expiration_date) = expiration_date { + builder.expiration_date(expiration_date.to_rfc3339()) + } else { + builder + }; + + let builder = builder.id(id.ok_or(InvalidIdentifierError)?); + + let credential: AchievementCredential = + builder.try_into().map_err(InvalidCredentialSubjectError)?; + + // `types_ob_v3::achievement_credential` builder does not support additional properties for the credentialStatus, + // therefore we insert them manually. + let mut raw = serde_json::to_value(credential) + .map_err(|_| CredentialError::InvalidCredentialStatus)?; + + let raw_credential_status = raw["credentialStatus"] + .as_object_mut() + .ok_or(CredentialError::InvalidCredentialStatus)?; + + raw_credential_status.insert( + "uri".to_string(), + serde_json::Value::String(status_list_url.to_string()), + ); + raw_credential_status.insert( + "idx".to_string(), + serde_json::Value::Number(credential_status_index.into()), + ); + + return Ok(vec![UnsignedCredentialCreated { + credential_id, + notification_id: Some(notification_id), + data: Data { raw }, + credential_configuration, + credential_status, + }]); + } + _ => continue, } - _ => continue, } - } - Err(UnsupportedCredentialType) + Err(UnsupportedCredentialType) + } + CredentialFormats::DcSdJwt(Parameters:: { + parameters: DcSdJwtParameters { vct }, + }) => { + // FIXME: Properly construct SD-JWT unsigned credential + let mut raw = data.raw; + raw["vct"] = json!(vct); + + let credential_status = CredentialStatus { + index: credential_status_index, + status: StatusType::VALID, + }; + + return Ok(vec![UnsignedCredentialCreated { + credential_id, + notification_id: Some(notification_id), + data: Data { raw }, + credential_configuration, + credential_status, + }]); + } + _ => Err(UnsupportedCredentialFormat(serde_json::json!( + credential_configuration.credential_format + ))), } - _ => Err(UnsupportedCredentialFormat(serde_json::json!( - credential_configuration.credential_format - ))), - }, + } CreateSignedCredential { credential_id, @@ -341,6 +366,7 @@ impl Aggregate for Credential { credential_id, subject_id, overwrite, + proof, } => { if self.signed.is_some() && !overwrite { return Ok(vec![]); @@ -360,7 +386,68 @@ impl Aggregate for Credential { .identifier(&default_did_method.to_string(), get_preferred_signing_algorithm()) .await .unwrap(); - let signed_credential = { + + let signed_credential = if let CredentialFormats::DcSdJwt(Parameters:: { + parameters: DcSdJwtParameters { vct }, + }) = &self.credential_configuration.credential_format + { + let issuer = &services.issuer; + + let data = self.data.clone().unwrap().raw; + + let alg = match get_preferred_signing_algorithm() { + jsonwebtoken::Algorithm::ES256 => "ES256", + jsonwebtoken::Algorithm::EdDSA => "EdDSA", + _ => { + todo!() + } + }; + + let proof = if let Some(Proof::Jwt { jwt: proof }) = proof { + proof + } else { + // FIXME + todo!() + }; + + let holder_kid = jsonwebtoken::decode_header(&proof).unwrap().kid.unwrap(); + + let kid = issuer + .key_id( + &get_preferred_did_method().to_string(), + get_preferred_signing_algorithm(), + ) + .await + .unwrap(); + + println!("DATA: {}", serde_json::to_string_pretty(&data).unwrap()); + + let paths = data + .clone() + .as_object() + .unwrap() + .keys() + .cloned() + .collect::>(); + + let mut builder = SdJwtBuilder::new(data) + .unwrap() + // Narrow the type to VC SD-JWT as per the spec. + .header("typ", "dc+sd-jwt") + // Set the issuer's verification method as the `kid` so that the verifiers can identify the correct key. + .header("kid", kid) + .require_key_binding(RequiredKeyBinding::Kid(holder_kid)); + + for path in paths { + if path != "vct" { + builder = builder.make_concealable(&format!("/{}", path)).unwrap(); + } + } + + let sd_jwt_credential = builder.finish(&**issuer, alg).await.unwrap(); + + serde_json::json!(sd_jwt_credential.to_string()) + } else { let mut credential = self.data.as_ref().ok_or(MissingCredentialDataError)?.clone(); if let Some(ref id) = id { @@ -656,6 +743,7 @@ pub mod credential_tests { credential_id: credential_id.clone(), subject_id: Some(holder.identifier("did:key", Algorithm::EdDSA).await.unwrap()), overwrite: false, + proof: None, }) .then_expect_events(vec![CredentialEvent::CredentialSigned { credential_id, diff --git a/agent_issuance/src/credential/command.rs b/agent_issuance/src/credential/command.rs index afe92e39c..0aef8d87f 100644 --- a/agent_issuance/src/credential/command.rs +++ b/agent_issuance/src/credential/command.rs @@ -1,6 +1,6 @@ use oid4vci::{ credential_issuer::credential_configurations_supported::CredentialConfigurationsSupportedObject, - notification_request::NotificationRequest, + notification_request::NotificationRequest, Proof, }; use serde::Deserialize; @@ -27,6 +27,7 @@ pub enum CredentialCommand { subject_id: Option, // When true, a credential will be re-signed if it already exists. overwrite: bool, + proof: Option, }, AddNotification { credential_id: String, diff --git a/agent_issuance/src/server_config/aggregate.rs b/agent_issuance/src/server_config/aggregate.rs index 3ad72c794..be8e0edb5 100644 --- a/agent_issuance/src/server_config/aggregate.rs +++ b/agent_issuance/src/server_config/aggregate.rs @@ -403,6 +403,7 @@ pub mod server_config_tests { pre_authorized: true, tx_code_constraints: None, }, + selective_disclosable: false, }, provisioned: false, }) diff --git a/agent_issuance/src/services.rs b/agent_issuance/src/services.rs index eed6171ab..ba49913b6 100644 --- a/agent_issuance/src/services.rs +++ b/agent_issuance/src/services.rs @@ -1,13 +1,16 @@ -use agent_secret_manager::{service::Service, subject::SubjectExt}; +use agent_secret_manager::{ + service::Service, + subject::{Subject, SubjectExt}, +}; use std::sync::Arc; /// Issuance services. This struct is used to sign credentials and validate credential requests. pub struct IssuanceServices { - pub issuer: Arc, + pub issuer: Arc, } impl Service for IssuanceServices { - fn new(issuer: Arc) -> Self { + fn new(issuer: Arc) -> Self { Self { issuer } } } diff --git a/agent_issuance/src/state.rs b/agent_issuance/src/state.rs index 11a0eb62a..a7ced22eb 100644 --- a/agent_issuance/src/state.rs +++ b/agent_issuance/src/state.rs @@ -1,4 +1,4 @@ -use agent_secret_manager::subject::SubjectExt; +use agent_secret_manager::subject::{Subject, SubjectExt}; use agent_shared::application_state::CommandHandler; use agent_shared::config::{ config, get_all_enabled_did_methods, get_all_enabled_signing_algorithms_supported, CredentialConfiguration, @@ -26,7 +26,7 @@ use crate::server_config::views::ServerConfigView; pub struct IssuanceState { pub command: CommandHandlers, pub query: Queries, - pub subject: Arc, + pub subject: Arc, } /// The command handlers are used to execute commands on the aggregates. @@ -249,6 +249,11 @@ pub async fn update_credential_configurations(state: &IssuanceState) -> anyhow:: }], } ] + }, + { + "credential_configuration_id": "002", + "format": "dc+sd-jwt", + "vct": "https://example.com/vct", } ])) .expect("Failed to parse default development credential configurations") diff --git a/agent_secret_manager/Cargo.toml b/agent_secret_manager/Cargo.toml index 7ad378f50..41e63eaa9 100644 --- a/agent_secret_manager/Cargo.toml +++ b/agent_secret_manager/Cargo.toml @@ -13,9 +13,12 @@ agent_shared = { path = "../agent_shared" } # - All components of the `identity_stronghold_ext` module are still active. # # Future work: Migrate the remaining functionality into UniCore. -did_manager_consumer = { git = "https://github.com/impierce/did-manager", tag = "v1.0.0-beta.7", package = "consumer" } -did_manager_identity_stronghold_ext = { git = "https://github.com/impierce/did-manager", tag = "v1.0.0-beta.7", package = "identity_stronghold_ext" } -did_manager_iota = { git = "https://github.com/impierce/did-manager", tag = "v1.0.0-beta.7", package = "did_iota" } +# did_manager_consumer = { git = "https://github.com/impierce/did-manager", tag = "v1.0.0-beta.7", package = "consumer" } +# did_manager_identity_stronghold_ext = { git = "https://github.com/impierce/did-manager", tag = "v1.0.0-beta.7", package = "identity_stronghold_ext" } +# did_manager_iota = { git = "https://github.com/impierce/did-manager", tag = "v1.0.0-beta.7", package = "did_iota" } +did_manager_consumer = { path = "../../did-manager/consumer", package = "consumer" } +did_manager_identity_stronghold_ext = { path = "../../did-manager/identity_stronghold_ext", package = "identity_stronghold_ext" } +did_manager_iota = { path = "../../did-manager/did_iota", package = "did_iota" } anyhow.workspace = true async-trait.workspace = true @@ -35,7 +38,9 @@ rustls = { version = "0.23", default-features = false, features = [ "std", "tls12", ] } +sd-jwt.workspace = true serde.workspace = true +serde_json.workspace = true tokio.workspace = true url.workspace = true diff --git a/agent_secret_manager/src/service.rs b/agent_secret_manager/src/service.rs index aea55ffa7..7c0479a95 100644 --- a/agent_secret_manager/src/service.rs +++ b/agent_secret_manager/src/service.rs @@ -1,11 +1,11 @@ -use crate::subject::SubjectExt; +use crate::subject::Subject; use async_trait::async_trait; use std::sync::Arc; /// Convenience trait for Services like `IssuanceServices`, `HolderServices`, and `VerifierServices`. #[async_trait] pub trait Service { - fn new(subject: Arc) -> Self; + fn new(subject: Arc) -> Self; #[cfg(feature = "test_utils")] async fn default() -> Arc diff --git a/agent_secret_manager/src/subject.rs b/agent_secret_manager/src/subject.rs index c2c84a089..fbff6a92d 100644 --- a/agent_secret_manager/src/subject.rs +++ b/agent_secret_manager/src/subject.rs @@ -1,5 +1,5 @@ use crate::stronghold_storage; -use agent_shared::config::{config, SupportedDidMethod}; +use agent_shared::config::{config, get_preferred_did_method, SupportedDidMethod}; use anyhow::anyhow; use async_trait::async_trait; use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; @@ -12,6 +12,7 @@ use identity_iota::verification::jwk::Jwk; use identity_iota::{did::DID, document::DIDUrlQuery, verification::jwk::JwkParams}; use jsonwebtoken::Algorithm; use oid4vc_core::{authentication::sign::ExternalSign, Sign, Verify}; +use sd_jwt::{JsonObject, JwsSigner}; use std::collections::HashMap; use std::str::FromStr; use std::sync::Arc; @@ -77,7 +78,32 @@ impl Subject { } #[async_trait] -pub trait SubjectExt: oid4vc_core::Subject { +impl JwsSigner for Subject { + type Error = String; + + // FIX THIS: jwt::encode? + async fn sign(&self, header: &JsonObject, payload: &JsonObject) -> Result, Self::Error> { + let encoded_header = URL_SAFE_NO_PAD.encode(serde_json::to_vec(header).unwrap()); + let encoded_payload = URL_SAFE_NO_PAD.encode(serde_json::to_vec(payload).unwrap()); + + let message = format!("{}.{}", encoded_header, encoded_payload); + + let preferred_did_method = get_preferred_did_method(); + + // FIXME!!! + let proof_value = Sign::sign(self, &message, &preferred_did_method.to_string(), Algorithm::EdDSA) + .await + .unwrap(); + + let signature = URL_SAFE_NO_PAD.encode(proof_value.as_slice()); + let message = [message, signature].join("."); + + Ok(message.as_bytes().to_vec()) + } +} + +#[async_trait] +pub trait SubjectExt: oid4vc_core::Subject + JwsSigner { async fn resolve_public_key(&self, did_url: &str) -> anyhow::Result; } diff --git a/agent_shared/src/config/mod.rs b/agent_shared/src/config/mod.rs index 06283a125..55f3aeeb2 100644 --- a/agent_shared/src/config/mod.rs +++ b/agent_shared/src/config/mod.rs @@ -526,6 +526,8 @@ pub struct CredentialConfiguration { pub claims: Vec, #[serde(default)] pub authorization: Authorization, + #[serde(default)] + pub selective_disclosable: bool, } #[derive(Deserialize, Serialize, Debug, Clone, PartialEq)] diff --git a/agent_verification/src/authorization_request/aggregate.rs b/agent_verification/src/authorization_request/aggregate.rs index 0892ada10..beed78515 100644 --- a/agent_verification/src/authorization_request/aggregate.rs +++ b/agent_verification/src/authorization_request/aggregate.rs @@ -9,8 +9,8 @@ use crate::{ use agent_shared::config::{config, get_preferred_signing_algorithm}; use async_trait::async_trait; use cqrs_es::Aggregate; -use oid4vc_core::client_metadata::ClientMetadataResource; use oid4vc_core::{authorization_request::ByReference, scope::Scope}; +use oid4vc_core::{client_metadata::ClientMetadataResource, Subject as _}; use oid4vp::token::vp_token_builder::VpTokenBuilder; use oid4vp::{authorization_request::ClientId, oid4vp::DecodedVpToken}; use serde::{Deserialize, Serialize}; diff --git a/agent_verification/src/services.rs b/agent_verification/src/services.rs index 8fb8ba0de..8562eaafc 100644 --- a/agent_verification/src/services.rs +++ b/agent_verification/src/services.rs @@ -1,4 +1,7 @@ -use agent_secret_manager::{service::Service, subject::SubjectExt}; +use agent_secret_manager::{ + service::Service, + subject::{Subject, SubjectExt}, +}; use agent_shared::config::{ config, get_all_enabled_did_methods, get_all_enabled_signing_algorithms_supported, get_preferred_did_method, }; @@ -9,14 +12,14 @@ use std::{collections::HashMap, str::FromStr, sync::Arc}; /// Verification services. This struct is used to generate authorization requests and validate authorization responses. pub struct VerificationServices { - pub verifier: Arc, + pub verifier: Arc, pub relying_party: RelyingPartyManager, pub siopv2_client_metadata: ClientMetadataResource, pub oid4vp_client_metadata: ClientMetadataResource, } impl Service for VerificationServices { - fn new(verifier: Arc) -> Self { + fn new(verifier: Arc) -> Self { let client_name = config().display.first().as_ref().map(|display| display.name.clone()); let logo_uri = config() From 6a8ed9d70e3e7573f3109e3f9df8e7f2d480d86f Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 26 Jan 2026 23:15:13 +0100 Subject: [PATCH 02/35] feat: add support for SD-JWT and base64 dependencies, enhance error handling --- Cargo.lock | 3 + agent_api_http/Cargo.toml | 2 + .../issuance/credential_issuer/credential.rs | 2 +- agent_api_http/src/v0/issuance/error.rs | 2 + .../src/v0/issuance/ietf_oauth_sd_jwt_vc.rs | 48 ++++++++++++++++ agent_api_http/src/v0/issuance/mod.rs | 6 ++ agent_authorization/src/services.rs | 5 +- agent_holder/src/services.rs | 5 +- agent_identity/src/document/aggregate.rs | 1 - agent_issuance/Cargo.toml | 1 + .../access_token_validation_service.rs | 1 - agent_issuance/src/credential/aggregate.rs | 15 +++-- agent_issuance/src/server_config/aggregate.rs | 44 +++++++++----- agent_issuance/src/services.rs | 5 +- agent_issuance/src/state.rs | 32 +++++++++-- agent_secret_manager/src/subject.rs | 57 ++++++++----------- agent_shared/src/config/mod.rs | 11 ++-- agent_verification/src/services.rs | 5 +- 18 files changed, 163 insertions(+), 82 deletions(-) create mode 100644 agent_api_http/src/v0/issuance/ietf_oauth_sd_jwt_vc.rs diff --git a/Cargo.lock b/Cargo.lock index eadf2e913..a9f9a337d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -89,6 +89,7 @@ dependencies = [ "axum 0.8.8", "axum-auth 0.8.1", "axum-macros", + "base64 0.22.1", "chrono", "cqrs-es", "futures", @@ -111,6 +112,7 @@ dependencies = [ "oid4vp", "rand 0.9.2", "rstest", + "sd-jwt-payload", "serde", "serde_json", "serde_urlencoded", @@ -342,6 +344,7 @@ dependencies = [ "anyhow", "async-std", "async-trait", + "base64 0.22.1", "chrono", "cqrs-es", "derivative", diff --git a/agent_api_http/Cargo.toml b/agent_api_http/Cargo.toml index 319162371..ecdf490e1 100644 --- a/agent_api_http/Cargo.toml +++ b/agent_api_http/Cargo.toml @@ -19,6 +19,7 @@ askama = "0.14" axum.workspace = true axum-auth = "0.8" axum-macros = "0.5" +base64.workspace = true chrono.workspace = true cqrs-es.workspace = true http = "1.3" @@ -35,6 +36,7 @@ oid4vc-core.workspace = true oid4vci.workspace = true oid4vp.workspace = true rand.workspace = true +sd-jwt.workspace = true serde.workspace = true serde_with.workspace = true serde_json.workspace = true diff --git a/agent_api_http/src/v0/issuance/credential_issuer/credential.rs b/agent_api_http/src/v0/issuance/credential_issuer/credential.rs index 19ad5d2d1..8639b716d 100644 --- a/agent_api_http/src/v0/issuance/credential_issuer/credential.rs +++ b/agent_api_http/src/v0/issuance/credential_issuer/credential.rs @@ -19,8 +19,8 @@ use axum::{ response::{IntoResponse, Response}, }; use axum_auth::AuthBearer; +use oid4vci::credential_request::CredentialRequest; use oid4vci::errors::CredentialErrorResponse; -use oid4vci::{credential_request::CredentialRequest, Proof}; use std::sync::Arc; use tokio::time::sleep; use tracing::error; diff --git a/agent_api_http/src/v0/issuance/error.rs b/agent_api_http/src/v0/issuance/error.rs index 2e43d8f1f..24c1312cc 100644 --- a/agent_api_http/src/v0/issuance/error.rs +++ b/agent_api_http/src/v0/issuance/error.rs @@ -131,6 +131,7 @@ pub enum PublicError { CredentialError(OID4VCError), NotificationError(OID4VCError), InternalServerError, + NotFoundError, } impl axum::response::IntoResponse for PublicError { @@ -149,6 +150,7 @@ impl axum::response::IntoResponse for PublicError { (status, axum::Json(oid4vc_error)).into_response() } PublicError::InternalServerError => StatusCode::INTERNAL_SERVER_ERROR.into_response(), + PublicError::NotFoundError => StatusCode::NOT_FOUND.into_response(), } } } diff --git a/agent_api_http/src/v0/issuance/ietf_oauth_sd_jwt_vc.rs b/agent_api_http/src/v0/issuance/ietf_oauth_sd_jwt_vc.rs new file mode 100644 index 000000000..322e37a60 --- /dev/null +++ b/agent_api_http/src/v0/issuance/ietf_oauth_sd_jwt_vc.rs @@ -0,0 +1,48 @@ +use crate::{handlers::query_handler, v0::issuance::error::PublicError}; +use agent_issuance::state::{IssuanceState, SERVER_CONFIG_ID}; +use axum::{ + extract::{Path, State}, + response::{IntoResponse, Response}, +}; +use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; +use identity_credential::sd_jwt_vc::metadata::TypeMetadata; +use std::sync::Arc; + +#[axum_macros::debug_handler] +pub(crate) async fn type_metadata( + State(state): State>, + // FIXME: This is human readable so not suitable for a URL path segment + Path((credential_configuration_id, _version)): Path<(String, String)>, +) -> Result { + let credential_configuration_id = URL_SAFE_NO_PAD + .decode(credential_configuration_id) + .ok() + .and_then(|bytes| String::from_utf8(bytes).ok()) + .ok_or_else(|| PublicError::NotFoundError)?; + + // Check if the credential configuration IDs are valid. + let _credential_configuration = query_handler(SERVER_CONFIG_ID, &state.query.server_config) + .await? + .and_then(|server_config_view| { + server_config_view + .credential_configurations + .get(&credential_configuration_id) + .map(|(_, credential_configuration, _authorization)| credential_configuration) + .cloned() + }) + .ok_or_else(|| PublicError::NotFoundError)?; + + // TODO: Fill in more of these fields once `agent_library` supports it. + let type_metadata = TypeMetadata { + name: Some(credential_configuration_id), + description: None, + extends: None, + extends_integrity: None, + schema: None, + // TODO: Fill in display and claims once these issues are resolved: https://github.com/iotaledger/identity/pull/1770/changes#r2729345235 + display: vec![], + claims: vec![], + }; + + Ok((axum::http::StatusCode::OK, axum::Json(type_metadata)).into_response()) +} diff --git a/agent_api_http/src/v0/issuance/mod.rs b/agent_api_http/src/v0/issuance/mod.rs index 7c4abaa6a..4d8b29a37 100644 --- a/agent_api_http/src/v0/issuance/mod.rs +++ b/agent_api_http/src/v0/issuance/mod.rs @@ -2,6 +2,7 @@ pub mod credential_configurations; pub mod credential_issuer; pub mod credentials; +pub mod ietf_oauth_sd_jwt_vc; pub mod offers; pub mod error; @@ -54,5 +55,10 @@ pub fn router(issuance_state: Arc) -> Router { .route("/openid4vci/notification", post(notification)) .route("/openid4vci/credential-offer/{offer_id}", get(credential_offer_uri)) .route("/ietf-oauth-token-status-list/{path}", get(token_status_list)) + // TODO: Move this route to `../library` once `agent_library` is properly implemented. + .route( + "/vct/{credential_configuration_id}/{version}", + get(ietf_oauth_sd_jwt_vc::type_metadata), + ) .with_state(issuance_state) } diff --git a/agent_authorization/src/services.rs b/agent_authorization/src/services.rs index ec47e6230..4b5a27b56 100644 --- a/agent_authorization/src/services.rs +++ b/agent_authorization/src/services.rs @@ -1,7 +1,4 @@ -use agent_secret_manager::{ - service::Service, - subject::{Subject, SubjectExt}, -}; +use agent_secret_manager::{service::Service, subject::Subject}; use std::sync::Arc; pub struct AuthorizationServices { diff --git a/agent_holder/src/services.rs b/agent_holder/src/services.rs index cd769a24a..d25ef794d 100644 --- a/agent_holder/src/services.rs +++ b/agent_holder/src/services.rs @@ -1,7 +1,4 @@ -use agent_secret_manager::{ - service::Service, - subject::{Subject, SubjectExt}, -}; +use agent_secret_manager::{service::Service, subject::Subject}; use agent_shared::config::{ get_all_enabled_did_methods, get_all_enabled_signing_algorithms_supported, get_preferred_did_method, }; diff --git a/agent_identity/src/document/aggregate.rs b/agent_identity/src/document/aggregate.rs index 49065ba4c..f0aecda8b 100644 --- a/agent_identity/src/document/aggregate.rs +++ b/agent_identity/src/document/aggregate.rs @@ -21,7 +21,6 @@ use identity_storage::{JwkStorage, KeyIdStorage}; use iota_sdk::types::base_types::IotaAddress; use iota_sdk::{IotaClient, IotaClientBuilder}; use jsonwebtoken::Algorithm; -use product_common::core_client::CoreClient as _; use product_common::gas_station::GasStationOptions; use product_common::network_name::NetworkName; use product_common::transaction::TransactionBuilder; diff --git a/agent_issuance/Cargo.toml b/agent_issuance/Cargo.toml index 94f3a2cf1..3827939fe 100644 --- a/agent_issuance/Cargo.toml +++ b/agent_issuance/Cargo.toml @@ -11,6 +11,7 @@ agent_secret_manager = { path = "../agent_secret_manager" } anyhow.workspace = true async-trait.workspace = true +base64.workspace = true cqrs-es.workspace = true chrono.workspace = true types-ob-v3 = { git = "https://github.com/impierce/digital-credential-data-models", rev = "9f16c27" } diff --git a/agent_issuance/src/application/access_token_validation_service.rs b/agent_issuance/src/application/access_token_validation_service.rs index 3791a0467..7c0528d68 100644 --- a/agent_issuance/src/application/access_token_validation_service.rs +++ b/agent_issuance/src/application/access_token_validation_service.rs @@ -1,5 +1,4 @@ use crate::state::IssuanceState; -use agent_secret_manager::subject::SubjectExt as _; use agent_shared::config::config; use identity_core::convert::{FromJson as _, ToJson as _}; use jsonwebtoken::{decode, jwk::Jwk as JsonWebTokenJwk, DecodingKey, Validation}; diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index ef9509f11..fe74ffdae 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -388,12 +388,12 @@ impl Aggregate for Credential { .unwrap(); let signed_credential = if let CredentialFormats::DcSdJwt(Parameters:: { - parameters: DcSdJwtParameters { vct }, + parameters: DcSdJwtParameters { .. }, }) = &self.credential_configuration.credential_format { let issuer = &services.issuer; - let data = self.data.clone().unwrap().raw; + let mut data = self.data.clone().unwrap().raw; let alg = match get_preferred_signing_algorithm() { jsonwebtoken::Algorithm::ES256 => "ES256", @@ -420,8 +420,6 @@ impl Aggregate for Credential { .await .unwrap(); - println!("DATA: {}", serde_json::to_string_pretty(&data).unwrap()); - let paths = data .clone() .as_object() @@ -430,6 +428,15 @@ impl Aggregate for Credential { .cloned() .collect::>(); + data["iss"] = json!(issuer_did); + + data["status"] = json!({ + "status_list": { + "idx": self.credential_status.index, + "uri": get_status_list_url(self.credential_status.index)?, + } + }); + let mut builder = SdJwtBuilder::new(data) .unwrap() // Narrow the type to VC SD-JWT as per the spec. diff --git a/agent_issuance/src/server_config/aggregate.rs b/agent_issuance/src/server_config/aggregate.rs index be8e0edb5..9da8f0d6c 100644 --- a/agent_issuance/src/server_config/aggregate.rs +++ b/agent_issuance/src/server_config/aggregate.rs @@ -1,8 +1,11 @@ -use agent_shared::config::Authorization; +use agent_shared::config::{config, Authorization}; use async_trait::async_trait; +use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; use cqrs_es::Aggregate; use identity_core::convert::ToJson; use jsonwebtoken::Algorithm; +use oid4vci::credential_format_profiles::w3c_verifiable_credentials::{jwt_vc_json, CredentialSubject}; +use oid4vci::credential_format_profiles::{CredentialFormats, Parameters}; use oid4vci::credential_issuer::credential_configurations_supported::CredentialConfigurationsSupportedObject; use oid4vci::credential_issuer::{ authorization_server_metadata::AuthorizationServerMetadata, credential_issuer_metadata::CredentialIssuerMetadata, @@ -174,10 +177,34 @@ impl Aggregate for ServerConfig { credential_configuration, provisioned, } => { + let credential_format = match credential_configuration.format { + CredentialFormats::JwtVcJson(_) => CredentialFormats::JwtVcJson(Parameters { + parameters: (jwt_vc_json::CredentialDefinition { + type_: credential_configuration.type_, + credential_subject: CredentialSubject::default(), + }) + .into(), + }), + CredentialFormats::DcSdJwt(_) => { + let vct = format!( + "{}vct/{}/{version}", + config().application_url, + URL_SAFE_NO_PAD.encode(&credential_configuration.credential_configuration_id), + // TODO: support versioning of VCTs once we support versioning of Templates + version = 0 + ); + + CredentialFormats::DcSdJwt(Parameters { + parameters: (vct).into(), + }) + } + _ => todo!(), + }; + let proof_types_supported = into_proof_types_supported(&self.signing_algorithms_supported); let credential_configuration_object = CredentialConfigurationsSupportedObject { - credential_format: credential_configuration.credential_format_with_parameters, + credential_format, cryptographic_binding_methods_supported: self.cryptographic_binding_methods_supported.clone(), credential_signing_alg_values_supported: into_credential_signing_alg_values_supported( &self.signing_algorithms_supported, @@ -326,8 +353,6 @@ pub mod server_config_tests { use agent_secret_manager::service::Service; use agent_shared::config::{Authorization, CredentialConfiguration}; use cqrs_es::test::TestFramework; - use oid4vci::credential_format_profiles::w3c_verifiable_credentials::jwt_vc_json::JwtVcJson; - use oid4vci::credential_format_profiles::{w3c_verifiable_credentials, CredentialFormats, Parameters}; use oid4vci::credential_issuer::credential_configurations_supported::{ CredentialConfigurationsSupportedDisplay, Logo, }; @@ -378,14 +403,8 @@ pub mod server_config_tests { .when(ServerConfigCommand::UpdateCredentialConfiguration { credential_configuration: CredentialConfiguration { credential_configuration_id: credential_configuration_id.clone(), - credential_format_with_parameters: CredentialFormats::JwtVcJson(Parameters:: { - parameters: w3c_verifiable_credentials::jwt_vc_json::JwtVcJsonParameters { - credential_definition: w3c_verifiable_credentials::jwt_vc_json::CredentialDefinition { - type_: vec!["VerifiableCredential".to_string()], - credential_subject: Default::default(), - }, - }, - }), + format: CredentialFormats::JwtVcJson(()), + type_: vec!["VerifiableCredential".to_string()], display: vec![CredentialConfigurationsSupportedDisplay { name: "Verifiable Credential".to_string(), locale: Some("en".to_string()), @@ -403,7 +422,6 @@ pub mod server_config_tests { pre_authorized: true, tx_code_constraints: None, }, - selective_disclosable: false, }, provisioned: false, }) diff --git a/agent_issuance/src/services.rs b/agent_issuance/src/services.rs index ba49913b6..cea999997 100644 --- a/agent_issuance/src/services.rs +++ b/agent_issuance/src/services.rs @@ -1,7 +1,4 @@ -use agent_secret_manager::{ - service::Service, - subject::{Subject, SubjectExt}, -}; +use agent_secret_manager::{service::Service, subject::Subject}; use std::sync::Arc; /// Issuance services. This struct is used to sign credentials and validate credential requests. diff --git a/agent_issuance/src/state.rs b/agent_issuance/src/state.rs index a7ced22eb..108937fa3 100644 --- a/agent_issuance/src/state.rs +++ b/agent_issuance/src/state.rs @@ -1,4 +1,4 @@ -use agent_secret_manager::subject::{Subject, SubjectExt}; +use agent_secret_manager::subject::Subject; use agent_shared::application_state::CommandHandler; use agent_shared::config::{ config, get_all_enabled_did_methods, get_all_enabled_signing_algorithms_supported, CredentialConfiguration, @@ -213,9 +213,7 @@ pub async fn update_credential_configurations(state: &IssuanceState) -> anyhow:: { "credential_configuration_id": "001", "format": "jwt_vc_json", - "credential_definition": { - "type": ["VerifiableCredential"] - }, + "type": ["VerifiableCredential"], "display": [ { "name": "Verifiable Credential", @@ -251,9 +249,31 @@ pub async fn update_credential_configurations(state: &IssuanceState) -> anyhow:: ] }, { - "credential_configuration_id": "002", + "credential_configuration_id": "SD-JWT", "format": "dc+sd-jwt", - "vct": "https://example.com/vct", + "claims": [ + { + "path": ["first_name"], + "display": [{ + "name": "First Name", + "locale": "en" + }], + }, + { + "path": ["last_name"], + "display": [{ + "name": "Last Name", + "locale": "en" + }], + }, + { + "path": ["dob"], + "display": [{ + "name": "Date of Birth", + "locale": "en" + }], + } + ] } ])) .expect("Failed to parse default development credential configurations") diff --git a/agent_secret_manager/src/subject.rs b/agent_secret_manager/src/subject.rs index fbff6a92d..d97df98e6 100644 --- a/agent_secret_manager/src/subject.rs +++ b/agent_secret_manager/src/subject.rs @@ -75,6 +75,30 @@ impl Subject { pub async fn get_verification_method_id(&self, key: StorageKey) -> Option { self.verification_method_ids.lock().await.get(&key).cloned() } + + /// Resolves the public key for a given DID URL. + pub async fn resolve_public_key(&self, did_url: &str) -> anyhow::Result { + let did_url = + identity_iota::did::DIDUrl::parse(did_url).map_err(|err| anyhow!("Failed to parse DID URL: {err}"))?; + + let document = self + .resolver + .resolve(did_url.did().as_str()) + .await + .map_err(|err| anyhow!("Failed to resolve DID Document for DID: `{did_url}`, error: {err}"))?; + + let verification_method = document + .resolve_method(DIDUrlQuery::from(&did_url), None) + .ok_or(anyhow!( + "Failed to resolve verification method for DID URL: `{did_url}`" + ))?; + + verification_method + .data() + .public_key_jwk() + .ok_or_else(|| anyhow!("Failed to resolve public key for DID URL: `{did_url}`")) + .cloned() + } } #[async_trait] @@ -102,39 +126,6 @@ impl JwsSigner for Subject { } } -#[async_trait] -pub trait SubjectExt: oid4vc_core::Subject + JwsSigner { - async fn resolve_public_key(&self, did_url: &str) -> anyhow::Result; -} - -/// Extension trait for `Subject` to provide additional functionality. -#[async_trait] -impl SubjectExt for Subject { - /// Resolves the public key for a given DID URL. - async fn resolve_public_key(&self, did_url: &str) -> anyhow::Result { - let did_url = - identity_iota::did::DIDUrl::parse(did_url).map_err(|err| anyhow!("Failed to parse DID URL: {err}"))?; - - let document = self - .resolver - .resolve(did_url.did().as_str()) - .await - .map_err(|err| anyhow!("Failed to resolve DID Document for DID: `{did_url}`, error: {err}"))?; - - let verification_method = document - .resolve_method(DIDUrlQuery::from(&did_url), None) - .ok_or(anyhow!( - "Failed to resolve verification method for DID URL: `{did_url}`" - ))?; - - verification_method - .data() - .public_key_jwk() - .ok_or_else(|| anyhow!("Failed to resolve public key for DID URL: `{did_url}`")) - .cloned() - } -} - /// This module contains implementations for `Subject` for testing purposes. /// It is only available when the `test_utils` feature is enabled. #[cfg(feature = "test_utils")] diff --git a/agent_shared/src/config/mod.rs b/agent_shared/src/config/mod.rs index 55f3aeeb2..a0e422329 100644 --- a/agent_shared/src/config/mod.rs +++ b/agent_shared/src/config/mod.rs @@ -10,10 +10,7 @@ use jsonwebtoken::Algorithm; use oid4vc_core::SubjectSyntaxType; use oid4vci::credential_issuer::credential_configurations_supported::ClaimDescription; use oid4vci::credential_issuer::credential_configurations_supported::CredentialConfigurationsSupportedDisplay; -use oid4vci::{ - credential_format_profiles::{CredentialFormats, WithParameters}, - credential_offer::TxCodeConstraints, -}; +use oid4vci::{credential_format_profiles::CredentialFormats, credential_offer::TxCodeConstraints}; use oid4vp::authorization_request::{DcSdJwtParameters, JwtVcJsonParameters, JwtVpJsonParameters, VpFormatsSupported}; use once_cell::sync::Lazy; use rand::Rng; @@ -519,15 +516,15 @@ pub fn default_issuer_es256_key_id() -> KeyId { pub struct CredentialConfiguration { pub credential_configuration_id: String, #[serde(flatten)] - pub credential_format_with_parameters: CredentialFormats, + pub format: CredentialFormats, + #[serde(default, rename = "type")] + pub type_: Vec, #[serde(default)] pub display: Vec, #[serde(default)] pub claims: Vec, #[serde(default)] pub authorization: Authorization, - #[serde(default)] - pub selective_disclosable: bool, } #[derive(Deserialize, Serialize, Debug, Clone, PartialEq)] diff --git a/agent_verification/src/services.rs b/agent_verification/src/services.rs index 8562eaafc..5d4c79153 100644 --- a/agent_verification/src/services.rs +++ b/agent_verification/src/services.rs @@ -1,7 +1,4 @@ -use agent_secret_manager::{ - service::Service, - subject::{Subject, SubjectExt}, -}; +use agent_secret_manager::{service::Service, subject::Subject}; use agent_shared::config::{ config, get_all_enabled_did_methods, get_all_enabled_signing_algorithms_supported, get_preferred_did_method, }; From 48a3fee54529d1d0c6fff6f7bca2b5d7453f1c80 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 26 Jan 2026 23:23:11 +0100 Subject: [PATCH 03/35] fix: reset `Cargo.lock` file --- Cargo.lock | 2584 ++++++++++++++++++++++++---------------------------- 1 file changed, 1210 insertions(+), 1374 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a9f9a337d..815b0fd1f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -15,9 +15,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.25.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] @@ -86,14 +86,14 @@ dependencies = [ "agent_verification", "anyhow", "askama", - "axum 0.8.8", + "axum 0.8.3", "axum-auth 0.8.1", "axum-macros", "base64 0.22.1", "chrono", "cqrs-es", "futures", - "http 1.4.0", + "http 1.3.1", "http-api-problem", "http-body-util", "hyper 1.7.0", @@ -110,19 +110,19 @@ dependencies = [ "oid4vc-manager", "oid4vci", "oid4vp", - "rand 0.9.2", + "rand 0.9.1", "rstest", "sd-jwt-payload", "serde", "serde_json", "serde_urlencoded", - "serde_with 3.16.1", + "serde_with 3.13.0", "serial_test", "siopv2", "thiserror 1.0.69", "tokio", "tower 0.4.13", - "tower-http 0.6.8", + "tower-http 0.6.6", "tracing", "tracing-test", "url", @@ -147,13 +147,13 @@ dependencies = [ "agent_store", "agent_verification", "anyhow", - "axum 0.8.8", + "axum 0.8.3", "chrono", "serde", "serde_json", - "serde_with 3.16.1", + "serde_with 3.13.0", "tokio", - "tower-http 0.6.8", + "tower-http 0.6.6", "tracing", ] @@ -207,10 +207,10 @@ dependencies = [ "async-trait", "cqrs-es", "http-serde", - "reqwest 0.12.28", + "reqwest 0.12.20", "serde", "serde_json", - "serde_with 3.16.1", + "serde_with 3.13.0", "tokio", "tracing", "wiremock", @@ -249,7 +249,7 @@ dependencies = [ "agent_store", "async-std", "async-trait", - "axum 0.8.8", + "axum 0.8.3", "base64 0.22.1", "cqrs-es", "identity_core", @@ -260,8 +260,8 @@ dependencies = [ "names", "oid4vc-core", "oid4vci", - "rand 0.9.2", - "reqwest 0.12.28", + "rand 0.9.1", + "reqwest 0.12.20", "rstest", "serde", "serde_json", @@ -291,7 +291,7 @@ dependencies = [ "anyhow", "async-std", "async-trait", - "axum 0.8.8", + "axum 0.8.3", "base64 0.22.1", "cqrs-es", "derivative", @@ -312,8 +312,8 @@ dependencies = [ "names", "oid4vc-core", "product_common", - "rand 0.9.2", - "reqwest 0.12.28", + "rand 0.9.1", + "reqwest 0.12.20", "rstest", "serde", "serde_json", @@ -356,14 +356,14 @@ dependencies = [ "oid4vc-core", "oid4vci", "once_cell", - "rand 0.9.2", - "reqwest 0.12.28", + "rand 0.9.1", + "reqwest 0.12.20", "rstest", "sd-jwt-payload", "serde", "serde_json", "serde_json_path_to_error", - "serde_with 3.16.1", + "serde_with 3.13.0", "serial_test", "strum 0.26.3", "strum_macros 0.26.4", @@ -387,7 +387,7 @@ dependencies = [ "rstest", "serde", "serde_json", - "serde_with 3.16.1", + "serde_with 3.13.0", "serial_test", "strum 0.26.3", "strum_macros 0.26.4", @@ -402,7 +402,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -428,7 +428,7 @@ dependencies = [ "oid4vc-core", "p256 0.13.2", "ring", - "rustls 0.23.36", + "rustls 0.23.28", "sd-jwt-payload", "serde", "serde_json", @@ -455,11 +455,11 @@ dependencies = [ "oid4vci", "oid4vp", "once_cell", - "rand 0.9.2", - "reqwest 0.12.28", + "rand 0.9.1", + "reqwest 0.12.20", "serde", "serde_json", - "serde_with 3.16.1", + "serde_with 3.13.0", "serial_test", "strum 0.26.3", "temp-env", @@ -512,7 +512,7 @@ dependencies = [ "oid4vc-manager", "oid4vci", "oid4vp", - "reqwest 0.12.28", + "reqwest 0.12.20", "rstest", "serde", "serde_json", @@ -532,7 +532,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.17", + "getrandom 0.2.16", "once_cell", "version_check", ] @@ -544,7 +544,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.3.4", + "getrandom 0.3.3", "once_cell", "serde", "version_check", @@ -553,9 +553,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.4" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -608,7 +608,7 @@ dependencies = [ "ed25519 2.2.3", "futures", "hex", - "http 1.4.0", + "http 1.3.1", "matchit 0.5.0", "pin-project-lite", "pkcs8 0.10.2", @@ -617,8 +617,8 @@ dependencies = [ "rand 0.8.5", "rcgen", "ring", - "rustls 0.23.36", - "rustls-webpki 0.103.9", + "rustls 0.23.28", + "rustls-webpki 0.103.3", "serde", "serde_json", "socket2 0.5.10", @@ -651,9 +651,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.21" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -666,9 +666,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" @@ -681,29 +681,29 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.5" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.11" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" dependencies = [ "backtrace", ] @@ -715,12 +715,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344" [[package]] -name = "ar_archive_writer" -version = "0.2.0" +name = "arbitrary" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c269894b6fe5e9d7ada0cf69b5bf847ff35bc25fc271f08e1d080fce80339a" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ - "object 0.32.2", + "derive_arbitrary", ] [[package]] @@ -961,7 +961,7 @@ dependencies = [ "rustc-hash 2.1.1", "serde", "serde_derive", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -973,7 +973,7 @@ dependencies = [ "memchr", "serde", "serde_derive", - "winnow 0.7.14", + "winnow 0.7.11", ] [[package]] @@ -988,7 +988,7 @@ dependencies = [ "nom 7.1.3", "num-traits", "rusticata-macros", - "thiserror 2.0.18", + "thiserror 2.0.12", "time", ] @@ -1000,7 +1000,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", "synstructure 0.13.2", ] @@ -1012,7 +1012,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -1048,9 +1048,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.5.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -1060,21 +1060,25 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.37" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" +checksum = "40f6024f3f856663b45fd0c9b6f2024034a702f453549449e0d84a305900dad4" dependencies = [ - "compression-codecs", - "compression-core", + "brotli", + "flate2", + "futures-core", + "memchr", "pin-project-lite", "tokio", + "zstd", + "zstd-safe", ] [[package]] name = "async-executor" -version = "1.13.3" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" dependencies = [ "async-task", "concurrent-queue", @@ -1090,7 +1094,7 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel 2.5.0", + "async-channel 2.3.1", "async-executor", "async-io", "async-lock", @@ -1102,29 +1106,30 @@ dependencies = [ [[package]] name = "async-io" -version = "2.6.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" dependencies = [ - "autocfg", + "async-lock", "cfg-if", "concurrent-queue", "futures-io", "futures-lite", "parking", "polling", - "rustix", + "rustix 1.0.7", "slab", - "windows-sys 0.61.2", + "tracing", + "windows-sys 0.59.0", ] [[package]] name = "async-lock" -version = "3.4.2" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 5.4.1", + "event-listener 5.4.0", "event-listener-strategy", "pin-project-lite", ] @@ -1157,7 +1162,7 @@ dependencies = [ "thiserror 1.0.69", "time", "tokio", - "tokio-rustls 0.26.4", + "tokio-rustls 0.26.2", "tokio-util", "tokio-websockets", "tracing", @@ -1167,9 +1172,9 @@ dependencies = [ [[package]] name = "async-std" -version = "1.13.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" +checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" dependencies = [ "async-attributes", "async-channel 1.9.0", @@ -1211,7 +1216,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -1222,13 +1227,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.89" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -1297,9 +1302,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" -version = "1.15.3" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e84ce723ab67259cfeb9877c6a639ee9eb7a27b28123abd71db7f0d5d0cc9d86" +checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" dependencies = [ "aws-lc-sys", "zeroize", @@ -1307,10 +1312,11 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.36.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a442ece363113bd4bd4c8b18977a7798dd4d3c3383f34fb61936960e8f4ad8" +checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" dependencies = [ + "bindgen", "cc", "cmake", "dunce", @@ -1351,17 +1357,17 @@ dependencies = [ [[package]] name = "axum" -version = "0.8.8" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" +checksum = "de45108900e1f9b9242f7f2e254aa3e2c029c921c258fe9e6b4217eeebd54288" dependencies = [ - "axum-core 0.5.6", + "axum-core 0.5.2", "axum-macros", "base64 0.22.1", "bytes", "form_urlencoded", "futures-util", - "http 1.4.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper 1.7.0", @@ -1372,7 +1378,8 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "serde_core", + "rustversion", + "serde", "serde_json", "serde_path_to_error", "serde_urlencoded", @@ -1380,7 +1387,7 @@ dependencies = [ "sync_wrapper 1.0.2", "tokio", "tokio-tungstenite", - "tower 0.5.3", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -1404,9 +1411,9 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93495037c01c639b198ecb926b58f7f1c0d61ae663edcd61b2dd679f2a0bffe6" dependencies = [ - "axum-core 0.5.6", + "axum-core 0.5.2", "base64 0.22.1", - "http 1.4.0", + "http 1.3.1", ] [[package]] @@ -1428,17 +1435,18 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.6" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" dependencies = [ "bytes", "futures-core", - "http 1.4.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", + "rustversion", "sync_wrapper 1.0.2", "tower-layer", "tower-service", @@ -1453,7 +1461,7 @@ checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -1464,34 +1472,34 @@ dependencies = [ "arc-swap", "bytes", "futures-util", - "http 1.4.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper 1.7.0", "hyper-util", "pin-project-lite", - "rustls 0.23.36", + "rustls 0.23.28", "rustls-pemfile 2.2.0", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.4", + "tokio-rustls 0.26.2", "tower 0.4.13", "tower-service", ] [[package]] name = "backtrace" -version = "0.3.76" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", "libc", "miniz_oxide", - "object 0.37.3", + "object", "rustc-demangle", - "windows-link", + "windows-targets 0.52.6", ] [[package]] @@ -1512,16 +1520,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" -[[package]] -name = "base256emoji" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" -dependencies = [ - "const-str", - "match-lookup", -] - [[package]] name = "base64" version = "0.12.3" @@ -1557,9 +1555,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.8.3" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "basic-toml" @@ -1639,6 +1637,29 @@ dependencies = [ "serde", ] +[[package]] +name = "bindgen" +version = "0.69.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +dependencies = [ + "bitflags 2.9.1", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.104", + "which", +] + [[package]] name = "bip32" version = "0.5.3" @@ -1696,11 +1717,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" dependencies = [ - "serde_core", + "serde", ] [[package]] @@ -1747,24 +1768,24 @@ dependencies = [ [[package]] name = "blake2b_simd" -version = "1.0.4" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b79834656f71332577234b50bfc009996f7449e0c056884e6a02492ded0ca2f3" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq 0.4.2", + "constant_time_eq 0.3.1", ] [[package]] name = "blake2s_simd" -version = "1.0.4" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee29928bad1e3f94c9d1528da29e07a1d3d04817ae8332de1e8b846c8439f4b3" +checksum = "e90f7deecfac93095eb874a40febd69427776e24e1bd7f87f33ac62d6f0174df" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq 0.4.2", + "constant_time_eq 0.3.1", ] [[package]] @@ -1817,11 +1838,11 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.2" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ - "async-channel 2.5.0", + "async-channel 2.3.1", "async-task", "futures-io", "futures-lite", @@ -1866,9 +1887,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.16" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" +checksum = "4fd49896f12ac9b6dcd7a5998466b9b58263a695a3dd1ecc1aaca2e12a90b080" dependencies = [ "cc", "glob", @@ -1900,9 +1921,9 @@ checksum = "f781dba93de3a5ef6dc5b17c9958b208f6f3f021623b360fb605ea51ce443f10" [[package]] name = "brotli" -version = "8.0.2" +version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1947,13 +1968,13 @@ dependencies = [ "ahash 0.8.12", "base64 0.22.1", "bitvec 1.0.1", - "getrandom 0.2.17", - "getrandom 0.3.4", + "getrandom 0.2.16", + "getrandom 0.3.3", "hex", - "indexmap 2.13.0", + "indexmap 2.12.0", "js-sys", "once_cell", - "rand 0.9.2", + "rand 0.9.1", "serde", "serde_bytes", "serde_json", @@ -1963,9 +1984,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.1" +version = "3.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" [[package]] name = "byte-slice-cast" @@ -1981,9 +2002,9 @@ checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "bytemuck" -version = "1.24.0" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" [[package]] name = "byteorder" @@ -1993,9 +2014,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.11.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -2011,11 +2032,10 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.53" +version = "1.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" dependencies = [ - "find-msvc-tools", "jobserver", "libc", "shlex", @@ -2027,11 +2047,20 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom 7.1.3", +] + [[package]] name = "cfg-if" -version = "1.0.4" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -2065,9 +2094,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.43" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ "iana-time-zone", "js-sys", @@ -2115,11 +2144,22 @@ dependencies = [ "zeroize", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" -version = "4.5.54" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394" +checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" dependencies = [ "clap_builder", "clap_derive", @@ -2127,9 +2167,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.54" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00" +checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" dependencies = [ "anstream", "anstyle", @@ -2140,21 +2180,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.49" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "clap_lex" -version = "0.7.7" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "cloudevents-sdk" @@ -2163,7 +2203,7 @@ source = "git+https://github.com/cloudevents/sdk-rust?rev=6f02d23#6f02d238e4de9e dependencies = [ "async-nats", "base64 0.22.1", - "bitflags 2.10.0", + "bitflags 2.9.1", "chrono", "delegate-attr", "hostname", @@ -2177,9 +2217,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.57" +version = "0.1.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" dependencies = [ "cc", ] @@ -2237,26 +2277,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "compression-codecs" -version = "0.4.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" -dependencies = [ - "brotli", - "compression-core", - "flate2", - "memchr", - "zstd", - "zstd-safe", -] - -[[package]] -name = "compression-core" -version = "0.4.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" - [[package]] name = "concurrent-queue" version = "2.5.0" @@ -2336,22 +2356,16 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.17", + "getrandom 0.2.16", "once_cell", "tiny-keccak", ] -[[package]] -name = "const-str" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" - [[package]] name = "const_format" -version = "0.2.35" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" dependencies = [ "const_format_proc_macros", ] @@ -2373,6 +2387,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "constant_time_eq" version = "0.4.2" @@ -2388,7 +2408,7 @@ dependencies = [ "did_key", "did_web", "identity_iota", - "rustls 0.23.36", + "rustls 0.23.28", "shared", "signature 2.2.0", "tokio", @@ -2415,15 +2435,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "convert_case" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "core-foundation" version = "0.9.4" @@ -2493,9 +2504,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.4.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" dependencies = [ "crc-catalog", ] @@ -2508,9 +2519,9 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.5.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] @@ -2521,15 +2532,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -2566,9 +2568,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.4" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -2606,9 +2608,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", "rand_core 0.6.4", @@ -2637,21 +2639,21 @@ dependencies = [ [[package]] name = "csv" -version = "1.4.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" dependencies = [ "csv-core", "itoa", "ryu", - "serde_core", + "serde", ] [[package]] name = "csv-core" -version = "0.1.13" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782" +checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" dependencies = [ "memchr", ] @@ -2702,7 +2704,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -2748,16 +2750,6 @@ dependencies = [ "darling_macro 0.20.11", ] -[[package]] -name = "darling" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" -dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", -] - [[package]] name = "darling_core" version = "0.10.2" @@ -2797,21 +2789,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.114", -] - -[[package]] -name = "darling_core" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.11.1", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -2844,25 +2822,14 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.114", -] - -[[package]] -name = "darling_macro" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" -dependencies = [ - "darling_core 0.21.3", - "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "dary_heap" -version = "0.3.8" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04" +checksum = "04d2cd9c18b9f454ed67da600630b021a8a80bf33f8c95896ab33aaf1c26b728" [[package]] name = "dashmap" @@ -2874,20 +2841,20 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.12", + "parking_lot_core 0.9.11", ] [[package]] name = "data-encoding" -version = "2.10.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "data-encoding-macro" -version = "0.1.19" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8142a83c17aa9461d637e649271eae18bf2edd00e91f2e105df36c3c16355bdb" +checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -2895,22 +2862,22 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.17" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab67060fc6b8ef687992d439ca0fa36e7ed17e9a0b16b25b601e8757df720de" +checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "deadpool" -version = "0.12.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b" +checksum = "fb84100978c1c7b37f09ed3ce3e5f843af02c2a2c431bae5b19230dad2c1b490" dependencies = [ + "async-trait", "deadpool-runtime", - "lazy_static", "num_cpus", "tokio", ] @@ -2935,7 +2902,7 @@ checksum = "51aac4c99b2e6775164b412ea33ae8441b2fde2dbf05a20bc0052a63d08c475b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -2990,15 +2957,9 @@ name = "deranged" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" - -[[package]] -name = "deranged" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", - "serde_core", + "serde", ] [[package]] @@ -3031,7 +2992,7 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -3042,7 +3003,18 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", ] [[package]] @@ -3080,7 +3052,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -3089,16 +3061,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl 1.0.0", -] - -[[package]] -name = "derive_more" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" -dependencies = [ - "derive_more-impl 2.1.1", + "derive_more-impl", ] [[package]] @@ -3109,21 +3072,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", - "unicode-xid", -] - -[[package]] -name = "derive_more-impl" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" -dependencies = [ - "convert_case 0.10.0", - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.114", + "syn 2.0.104", "unicode-xid", ] @@ -3167,7 +3116,7 @@ dependencies = [ "curve25519-dalek 3.2.0", "did_url", "ed25519-dalek 1.0.1", - "getrandom 0.2.17", + "getrandom 0.2.16", "hkdf 0.11.0", "json-patch", "libsecp256k1", @@ -3217,7 +3166,7 @@ dependencies = [ "identity_stronghold", "iota-sdk 1.13.1", "log", - "rustls 0.23.36", + "rustls 0.23.28", "shared", "tokio", ] @@ -3393,7 +3342,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -3407,9 +3356,9 @@ dependencies = [ [[package]] name = "doc-comment" -version = "0.3.4" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "dotenvy" @@ -3425,9 +3374,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" -version = "1.0.20" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" [[package]] name = "ecdsa" @@ -3508,9 +3457,9 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ "curve25519-dalek 4.1.3", "ed25519 2.2.3", @@ -3524,16 +3473,17 @@ dependencies = [ [[package]] name = "ed25519-zebra" -version = "4.1.0" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0017d969298eec91e3db7a2985a8cab4df6341d86e6f3a6f5878b13fb7846bc9" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" dependencies = [ "curve25519-dalek 4.1.3", "ed25519 2.2.3", + "hashbrown 0.14.5", + "hex", "rand_core 0.6.4", "serde", "sha2 0.10.9", - "subtle", "zeroize", ] @@ -3623,7 +3573,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -3643,7 +3593,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -3654,12 +3604,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.14" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -3687,9 +3637,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "5.4.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" dependencies = [ "concurrent-queue", "parking", @@ -3702,7 +3652,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.1", + "event-listener 5.4.0", "pin-project-lite", ] @@ -3734,8 +3684,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" dependencies = [ "bit-set", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -3781,7 +3731,7 @@ dependencies = [ "secp256k1", "serde", "serde_json", - "serde_with 3.16.1", + "serde_with 3.13.0", "sha2 0.10.9", "sha3 0.10.8", "signature 2.2.0", @@ -3861,7 +3811,7 @@ dependencies = [ "num-bigint 0.4.6", "once_cell", "regex", - "reqwest 0.12.28", + "reqwest 0.12.20", "schemars 0.8.22", "serde", "serde_json", @@ -3921,21 +3871,16 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "filetime" -version = "0.2.27" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", "libredox", + "windows-sys 0.59.0", ] -[[package]] -name = "find-msvc-tools" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" - [[package]] name = "fixed-hash" version = "0.7.0" @@ -3968,14 +3913,13 @@ checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" [[package]] name = "flate2" -version = "1.1.8" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "libz-sys", "miniz_oxide", - "zlib-rs", ] [[package]] @@ -4001,17 +3945,11 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - [[package]] name = "form_urlencoded" -version = "1.2.2" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -4095,7 +4033,7 @@ checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.12.5", + "parking_lot 0.12.4", ] [[package]] @@ -4106,9 +4044,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.6.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" dependencies = [ "fastrand", "futures-core", @@ -4125,7 +4063,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -4193,9 +4131,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.17" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", @@ -4206,15 +4144,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.4" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasip2", + "wasi 0.14.2+wasi-0.2.4", "wasm-bindgen", ] @@ -4227,7 +4165,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -4242,15 +4180,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.32.3" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.3" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "gloo-net" @@ -4262,7 +4200,7 @@ dependencies = [ "futures-core", "futures-sink", "gloo-utils", - "http 1.4.0", + "http 1.3.1", "js-sys", "pin-project", "serde", @@ -4322,7 +4260,7 @@ dependencies = [ "futures-timer", "no-std-compat", "nonzero_ext", - "parking_lot 0.12.5", + "parking_lot 0.12.4", "portable-atomic", "quanta", "rand 0.8.5", @@ -4368,9 +4306,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.27" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", @@ -4378,7 +4316,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.13.0", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4387,17 +4325,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.13" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.4.0", - "indexmap 2.13.0", + "http 1.3.1", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4406,13 +4344,12 @@ dependencies = [ [[package]] name = "half" -version = "2.7.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" dependencies = [ "cfg-if", "crunchy", - "zerocopy", ] [[package]] @@ -4455,25 +4392,20 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ "allocator-api2", "equivalent", - "foldhash 0.1.5", + "foldhash", ] [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash 0.2.0", -] +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" [[package]] name = "hashlink" @@ -4490,7 +4422,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.15.4", ] [[package]] @@ -4551,9 +4483,9 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "hickory-proto" -version = "0.25.2" +version = "0.24.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" +checksum = "92652067c9ce6f66ce53cc38d1169daa36e6e7eb7dd3b63b5103bd9d97117248" dependencies = [ "async-trait", "cfg-if", @@ -4565,9 +4497,8 @@ dependencies = [ "idna", "ipnet", "once_cell", - "rand 0.9.2", - "ring", - "thiserror 2.0.18", + "rand 0.8.5", + "thiserror 1.0.69", "tinyvec", "tokio", "tracing", @@ -4576,21 +4507,21 @@ dependencies = [ [[package]] name = "hickory-resolver" -version = "0.25.2" +version = "0.24.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" +checksum = "cbb117a1ca520e111743ab2f6688eddee69db4e0ea242545a604dce8a66fd22e" dependencies = [ "cfg-if", "futures-util", "hickory-proto", "ipconfig", - "moka", + "lru-cache", "once_cell", - "parking_lot 0.12.5", - "rand 0.9.2", + "parking_lot 0.12.4", + "rand 0.8.5", "resolv-conf", "smallvec", - "thiserror 2.0.18", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -4662,11 +4593,11 @@ checksum = "77e806677ce663d0a199541030c816847b36e8dc095f70dae4a4f4ad63da5383" [[package]] name = "home" -version = "0.5.12" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -4693,11 +4624,12 @@ dependencies = [ [[package]] name = "http" -version = "1.4.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", + "fnv", "itoa", ] @@ -4707,8 +4639,8 @@ version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "000bed434eb9b5dfb8ea5ed904f02ffc63aa0ac7ac034d480dc24fbb97b748d8" dependencies = [ - "axum-core 0.5.6", - "http 1.4.0", + "axum-core 0.5.2", + "http 1.3.1", "http-api-problem-derive", "serde", "serde_json", @@ -4741,7 +4673,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.4.0", + "http 1.3.1", ] [[package]] @@ -4752,7 +4684,7 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.4.0", + "http 1.3.1", "http-body 1.0.1", "pin-project-lite", ] @@ -4775,7 +4707,7 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f056c8559e3757392c8d091e796416e4649d8e49e88b8d76df6c002f05027fd" dependencies = [ - "http 1.4.0", + "http 1.3.1", "serde", ] @@ -4793,9 +4725,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.3.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" +checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" [[package]] name = "hyper" @@ -4807,7 +4739,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.3.27", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "httparse", @@ -4831,8 +4763,8 @@ dependencies = [ "bytes", "futures-channel", "futures-core", - "h2 0.4.13", - "http 1.4.0", + "h2 0.4.10", + "http 1.3.1", "http-body 1.0.1", "httparse", "httpdate", @@ -4864,17 +4796,17 @@ version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "http 1.4.0", + "http 1.3.1", "hyper 1.7.0", "hyper-util", "log", - "rustls 0.23.36", - "rustls-native-certs 0.8.3", + "rustls 0.23.28", + "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.4", + "tokio-rustls 0.26.2", "tower-service", - "webpki-roots 1.0.5", + "webpki-roots 1.0.1", ] [[package]] @@ -4892,23 +4824,23 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.17" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", "futures-core", "futures-util", - "http 1.4.0", + "http 1.3.1", "http-body 1.0.1", "hyper 1.7.0", "ipnet", "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.1", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -4916,9 +4848,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.64" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -4926,7 +4858,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.62.2", + "windows-core", ] [[package]] @@ -4940,9 +4872,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", "potential_utf", @@ -4953,9 +4885,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -4966,10 +4898,11 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ + "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -4980,38 +4913,42 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ + "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", + "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", "icu_locale_core", + "stable_deref_trait", + "tinystr", "writeable", "yoke", "zerofrom", @@ -5030,9 +4967,9 @@ name = "identity_core" version = "1.8.0-beta.2" source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ - "deranged 0.4.0", + "deranged", "js-sys", - "multibase 0.9.2", + "multibase 0.9.1", "nom 8.0.0", "product_common", "serde", @@ -5056,7 +4993,7 @@ dependencies = [ "identity_did", "identity_document", "identity_verification", - "indexmap 2.13.0", + "indexmap 2.12.0", "itertools 0.11.0", "jsonschema", "once_cell", @@ -5094,7 +5031,7 @@ dependencies = [ "identity_core", "identity_did", "identity_verification", - "indexmap 2.13.0", + "indexmap 2.12.0", "serde", "strum 0.25.0", "thiserror 1.0.69", @@ -5363,14 +5300,14 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "indenter" -version = "0.3.4" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" @@ -5385,12 +5322,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.13.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.16.0", "serde", "serde_core", ] @@ -5413,15 +5350,14 @@ dependencies = [ [[package]] name = "insta" -version = "1.46.1" +version = "1.43.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248b42847813a1550dafd15296fd9748c651d0c32194559dbc05d804d54b21e8" +checksum = "46fdb647ebde000f43b5b53f773c30cf9b0cb4300453208713fa38b2c70935a0" dependencies = [ "console", "once_cell", "serde", "similar", - "tempfile", ] [[package]] @@ -5436,6 +5372,17 @@ dependencies = [ "web-sys", ] +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + [[package]] name = "iota-adapter-latest" version = "0.1.0" @@ -5459,7 +5406,7 @@ dependencies = [ "move-vm-profiler", "move-vm-runtime", "move-vm-types", - "parking_lot 0.12.5", + "parking_lot 0.12.4", "serde", "tracing", ] @@ -5475,10 +5422,10 @@ dependencies = [ "iota-metrics", "iota-tls", "iota-types", - "parking_lot 0.12.5", + "parking_lot 0.12.4", "prometheus", "rand 0.8.5", - "reqwest 0.12.28", + "reqwest 0.12.20", "snap", "tokio", "tracing", @@ -5507,7 +5454,7 @@ dependencies = [ "once_cell", "prometheus", "rand 0.8.5", - "reqwest 0.12.28", + "reqwest 0.12.20", "serde", "serde_yaml", "starfish-config", @@ -5532,7 +5479,7 @@ dependencies = [ "digest 0.10.7", "ed25519-zebra", "generic-array", - "getrandom 0.2.17", + "getrandom 0.2.16", "hkdf 0.12.4", "hmac 0.12.1", "iterator-sorted 0.1.0", @@ -5592,7 +5539,7 @@ version = "1.13.1" source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "bytes", - "http 1.4.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper 1.7.0", @@ -5600,7 +5547,7 @@ dependencies = [ "pin-project-lite", "socket2 0.5.10", "tokio", - "tokio-rustls 0.26.4", + "tokio-rustls 0.26.2", "tokio-util", "tower 0.4.13", "tracing", @@ -5672,7 +5619,7 @@ dependencies = [ "schemars 0.8.22", "serde", "serde_json", - "serde_with 3.16.1", + "serde_with 3.13.0", "strum 0.26.3", "tabled", "tracing", @@ -5692,7 +5639,7 @@ dependencies = [ "regex", "serde", "serde_json", - "serde_with 3.16.1", + "serde_with 3.13.0", "signature 1.6.4", "slip10_ed25519", "tiny-bip39", @@ -5718,12 +5665,12 @@ dependencies = [ "anemo", "anemo-tower", "async-trait", - "axum 0.8.8", + "axum 0.8.3", "bytes", "dashmap", "futures", "once_cell", - "parking_lot 0.12.5", + "parking_lot 0.12.4", "prometheus", "prometheus-closure-metric", "scopeguard", @@ -5746,7 +5693,7 @@ dependencies = [ "fastcrypto", "fastcrypto-vdf", "fastcrypto-zkp", - "indexmap 2.13.0", + "indexmap 2.12.0", "iota-protocol-config", "iota-types", "move-binary-format", @@ -5782,7 +5729,7 @@ dependencies = [ "bytes", "eyre", "futures", - "http 1.4.0", + "http 1.3.1", "http-body 1.0.1", "hyper-rustls 0.27.7", "hyper-util", @@ -5794,7 +5741,7 @@ dependencies = [ "serde", "snap", "tokio", - "tokio-rustls 0.26.4", + "tokio-rustls 0.26.2", "tonic", "tonic-health", "tower 0.4.13", @@ -5850,7 +5797,7 @@ dependencies = [ "msim-macros", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -5864,7 +5811,7 @@ dependencies = [ "schemars 0.8.22", "serde", "serde-env", - "serde_with 3.16.1", + "serde_with 3.13.0", "tracing", ] @@ -5884,7 +5831,7 @@ version = "1.13.1" source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", - "axum 0.8.8", + "axum 0.8.3", "bcs", "fastcrypto", "iota-network-stack", @@ -5896,11 +5843,11 @@ dependencies = [ "move-binary-format", "openapiv3", "prometheus", - "reqwest 0.12.28", + "reqwest 0.12.20", "schemars 0.8.22", "serde", "serde_json", - "serde_with 3.16.1", + "serde_with 3.13.0", "serde_yaml", "tap", "tokio", @@ -5916,7 +5863,7 @@ dependencies = [ "anymap", "async-trait", "bech32", - "bitflags 2.10.0", + "bitflags 2.9.1", "bytemuck", "derive_more 0.99.20", "futures", @@ -5976,11 +5923,11 @@ dependencies = [ "iota-types", "jsonrpsee", "move-core-types", - "reqwest 0.12.28", - "rustls 0.23.36", + "reqwest 0.12.20", + "rustls 0.23.28", "serde", "serde_json", - "serde_with 3.16.1", + "serde_with 3.13.0", "thiserror 1.0.69", "tokio", "tracing", @@ -6005,10 +5952,10 @@ dependencies = [ "serde", "serde_json", "serde_repr", - "serde_with 3.16.1", + "serde_with 3.13.0", "strum 0.27.2", - "thiserror 2.0.18", - "winnow 0.7.14", + "thiserror 2.0.12", + "winnow 0.7.11", ] [[package]] @@ -6018,17 +5965,17 @@ source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265 dependencies = [ "anyhow", "arc-swap", - "axum 0.8.8", + "axum 0.8.3", "axum-server", "ed25519 2.2.3", "fastcrypto", "pkcs8 0.10.2", "rcgen", - "reqwest 0.12.28", - "rustls 0.23.36", - "rustls-webpki 0.103.9", + "reqwest 0.12.20", + "rustls 0.23.28", + "rustls-webpki 0.103.3", "tokio", - "tokio-rustls 0.26.4", + "tokio-rustls 0.26.2", "tower-layer", "x509-parser", ] @@ -6072,7 +6019,7 @@ dependencies = [ "fastcrypto-zkp", "hex", "im", - "indexmap 2.13.0", + "indexmap 2.12.0", "iota-enum-compat-util", "iota-macros", "iota-network-stack", @@ -6092,7 +6039,7 @@ dependencies = [ "num-traits", "once_cell", "packable", - "parking_lot 0.12.5", + "parking_lot 0.12.4", "passkey-types", "prometheus", "rand 0.8.5", @@ -6101,7 +6048,7 @@ dependencies = [ "serde", "serde-name", "serde_json", - "serde_with 3.16.1", + "serde_with 3.13.0", "signature 1.6.4", "starfish-config", "static_assertions", @@ -6145,7 +6092,7 @@ dependencies = [ "fastcrypto-zkp", "hex", "hyper 1.7.0", - "indexmap 2.13.0", + "indexmap 2.12.0", "iota-sdk 1.13.1", "iota-sdk-types", "itertools 0.13.0", @@ -6162,7 +6109,7 @@ dependencies = [ "serde", "serde_json", "serde_repr", - "serde_with 3.16.1", + "serde_with 3.13.0", "strum 0.25.0", "thiserror 1.0.69", "tokio", @@ -6195,8 +6142,8 @@ dependencies = [ "eyre", "fastcrypto", "futures", - "getrandom 0.2.17", - "getrandom 0.3.4", + "getrandom 0.2.16", + "getrandom 0.3.3", "hyper 1.7.0", "iota-sdk 1.1.5", "iota_interaction", @@ -6261,9 +6208,9 @@ dependencies = [ [[package]] name = "iri-string" -version = "0.7.10" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" dependencies = [ "memchr", "serde", @@ -6291,9 +6238,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.2" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "iso8601" @@ -6372,9 +6319,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jni" @@ -6400,19 +6347,19 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.34" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.3.3", "libc", ] [[package]] name = "js-sys" -version = "0.3.85" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ "once_cell", "wasm-bindgen", @@ -6549,9 +6496,9 @@ dependencies = [ [[package]] name = "json-number" -version = "0.4.10" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479dfd2ad8e4b4ae076b031f72ef2f3791f65e2a0f51e5f3408dbf716c4c2f82" +checksum = "66994b2bac615128d07a1e4527ad29e98b004dd1a1769e7b8fbc1173ccf43006" dependencies = [ "lexical", "ryu-js", @@ -6585,7 +6532,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "704ced300295bcf404f788239794cc7c30551a4fb8e9718202268a1f495a8d4e" dependencies = [ "data-encoding", - "indexmap 2.13.0", + "indexmap 2.12.0", "json-unflattening", "serde", "serde_json", @@ -6660,9 +6607,9 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.24.10" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e281ae70cc3b98dac15fced3366a880949e65fc66e345ce857a5682d152f3e62" +checksum = "37b26c20e2178756451cfeb0661fb74c47dd5988cb7e3939de7e9241fd604d42" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -6678,24 +6625,24 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.24.10" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4280b709ac3bb5e16cf3bad5056a0ec8df55fa89edfe996361219aadc2c7ea" +checksum = "bacb85abf4117092455e1573625e21b8f8ef4dec8aff13361140b2dc266cdff2" dependencies = [ "base64 0.22.1", "futures-channel", "futures-util", "gloo-net", - "http 1.4.0", + "http 1.3.1", "jsonrpsee-core", "pin-project", - "rustls 0.23.36", + "rustls 0.23.28", "rustls-pki-types", "rustls-platform-verifier", "soketto", "thiserror 1.0.69", "tokio", - "tokio-rustls 0.26.4", + "tokio-rustls 0.26.2", "tokio-util", "tracing", "url", @@ -6703,19 +6650,19 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.24.10" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348ee569eaed52926b5e740aae20863762b16596476e943c9e415a6479021622" +checksum = "456196007ca3a14db478346f58c7238028d55ee15c1df15115596e411ff27925" dependencies = [ "async-trait", "bytes", "futures-timer", "futures-util", - "http 1.4.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "jsonrpsee-types", - "parking_lot 0.12.5", + "parking_lot 0.12.4", "pin-project", "rand 0.8.5", "rustc-hash 2.1.1", @@ -6730,9 +6677,9 @@ dependencies = [ [[package]] name = "jsonrpsee-http-client" -version = "0.24.10" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50c389d6e6a52eb7c3548a6600c90cf74d9b71cb5912209833f00a5479e9a01" +checksum = "c872b6c9961a4ccc543e321bb5b89f6b2d2c7fe8b61906918273a3333c95400c" dependencies = [ "async-trait", "base64 0.22.1", @@ -6742,7 +6689,7 @@ dependencies = [ "hyper-util", "jsonrpsee-core", "jsonrpsee-types", - "rustls 0.23.36", + "rustls 0.23.28", "rustls-platform-verifier", "serde", "serde_json", @@ -6755,25 +6702,25 @@ dependencies = [ [[package]] name = "jsonrpsee-proc-macros" -version = "0.24.10" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7398cddf5013cca4702862a2692b66c48a3bd6cf6ec681a47453c93d63cf8de5" +checksum = "5e65763c942dfc9358146571911b0cd1c361c2d63e2d2305622d40d36376ca80" dependencies = [ "heck 0.5.0", - "proc-macro-crate 3.4.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "jsonrpsee-server" -version = "0.24.10" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21429bcdda37dcf2d43b68621b994adede0e28061f816b038b0f18c70c143d51" +checksum = "55e363146da18e50ad2b51a0a7925fc423137a0b1371af8235b1c231a0647328" dependencies = [ "futures-util", - "http 1.4.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper 1.7.0", @@ -6795,11 +6742,11 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.24.10" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0f05e0028e55b15dbd2107163b3c744cd3bb4474f193f95d9708acbf5677e44" +checksum = "08a8e70baf945b6b5752fc8eb38c918a48f1234daf11355e07106d963f860089" dependencies = [ - "http 1.4.0", + "http 1.3.1", "serde", "serde_json", "thiserror 1.0.69", @@ -6807,9 +6754,9 @@ dependencies = [ [[package]] name = "jsonrpsee-wasm-client" -version = "0.24.10" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9d745e4f543fc10fc0e2b11aa1f3be506b1e475d412167e7191a65ecd239f1c" +checksum = "e6558a9586cad43019dafd0b6311d0938f46efc116b34b28c74778bc11a2edf6" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -6818,11 +6765,11 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.24.10" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78fc744f17e7926d57f478cf9ca6e1ee5d8332bf0514860b1a3cdf1742e614cc" +checksum = "01b3323d890aa384f12148e8d2a1fd18eb66e9e7e825f9de4fa53bcc19b93eef" dependencies = [ - "http 1.4.0", + "http 1.3.1", "jsonrpsee-client-transport", "jsonrpsee-core", "jsonrpsee-types", @@ -6841,13 +6788,13 @@ dependencies = [ "bytecount", "fancy-regex", "fraction", - "getrandom 0.2.17", + "getrandom 0.2.16", "iso8601", "itoa", "memchr", "num-cmp", "once_cell", - "parking_lot 0.12.5", + "parking_lot 0.12.4", "percent-encoding", "regex", "serde", @@ -6939,7 +6886,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -6966,6 +6913,12 @@ dependencies = [ "spin", ] +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "leb128" version = "0.2.5" @@ -6974,18 +6927,18 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "lexical" -version = "7.0.5" +version = "7.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc8a009b2ff1f419ccc62706f04fe0ca6e67b37460513964a3dfdb919bb37d6" +checksum = "70ed980ff02623721dc334b9105150b66d0e1f246a92ab5a2eca0335d54c48f6" dependencies = [ "lexical-core", ] [[package]] name = "lexical-core" -version = "1.0.6" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d8d125a277f807e55a77304455eb7b1cb52f2b18c143b60e766c120bd64a594" +checksum = "b765c31809609075565a70b4b71402281283aeda7ecaf4818ac14a7b2ade8958" dependencies = [ "lexical-parse-float", "lexical-parse-integer", @@ -6996,59 +6949,66 @@ dependencies = [ [[package]] name = "lexical-parse-float" -version = "1.0.6" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a9f232fbd6f550bc0137dcb5f99ab674071ac2d690ac69704593cb4abbea56" +checksum = "de6f9cb01fb0b08060209a057c048fcbab8717b4c1ecd2eac66ebfe39a65b0f2" dependencies = [ "lexical-parse-integer", "lexical-util", + "static_assertions", ] [[package]] name = "lexical-parse-integer" -version = "1.0.6" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a7a039f8fb9c19c996cd7b2fcce303c1b2874fe1aca544edc85c4a5f8489b34" +checksum = "72207aae22fc0a121ba7b6d479e42cbfea549af1479c3f3a4f12c70dd66df12e" dependencies = [ "lexical-util", + "static_assertions", ] [[package]] name = "lexical-util" -version = "1.0.7" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2604dd126bb14f13fb5d1bd6a66155079cb9fa655b37f875b3a742c705dbed17" +checksum = "5a82e24bf537fd24c177ffbbdc6ebcc8d54732c35b50a3f28cc3f4e4c949a0b3" +dependencies = [ + "static_assertions", +] [[package]] name = "lexical-write-float" -version = "1.0.6" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c438c87c013188d415fbabbb1dceb44249ab81664efbd31b14ae55dabb6361" +checksum = "c5afc668a27f460fb45a81a757b6bf2f43c2d7e30cb5a2dcd3abf294c78d62bd" dependencies = [ "lexical-util", "lexical-write-integer", + "static_assertions", ] [[package]] name = "lexical-write-integer" -version = "1.0.6" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "409851a618475d2d5796377cad353802345cba92c867d9fbcde9cf4eac4e14df" +checksum = "629ddff1a914a836fb245616a7888b62903aae58fa771e1d83943035efa0f978" dependencies = [ "lexical-util", + "static_assertions", ] [[package]] name = "libc" -version = "0.2.180" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libflate" -version = "2.2.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3248b8d211bd23a104a42d81b4fa8bb8ac4a3b75e7a43d85d2c9ccb6179cd74" +checksum = "45d9dfdc14ea4ef0900c1cddbc8dcd553fbaacd8a4a282cf4018ae9dd04fb21e" dependencies = [ "adler32", "core2", @@ -7059,15 +7019,25 @@ dependencies = [ [[package]] name = "libflate_lz77" -version = "2.2.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a599cb10a9cd92b1300debcef28da8f70b935ec937f44fcd1b70a7c986a11c5c" +checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d" dependencies = [ "core2", - "hashbrown 0.16.1", + "hashbrown 0.14.5", "rle-decode-fast", ] +[[package]] +name = "libloading" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +dependencies = [ + "cfg-if", + "windows-targets 0.53.2", +] + [[package]] name = "libm" version = "0.2.15" @@ -7076,13 +7046,13 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.12" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.1", "libc", - "redox_syscall 0.7.0", + "redox_syscall 0.5.13", ] [[package]] @@ -7135,9 +7105,9 @@ dependencies = [ [[package]] name = "libsodium-sys-stable" -version = "1.23.2" +version = "1.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5d23f4a051a13cf1085b2c5a050d4d890d80c754534cc4247eff525fa5283d" +checksum = "b023d38f2afdfe36f81e15a9d7232097701d7b107e3a93ba903083985e235239" dependencies = [ "cc", "libc", @@ -7162,9 +7132,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.23" +version = "1.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7" +checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" dependencies = [ "cc", "pkg-config", @@ -7179,22 +7149,29 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.14" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ + "autocfg", "scopeguard", ] @@ -7222,11 +7199,11 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" dependencies = [ - "serde_core", + "serde", "value-bag", ] @@ -7236,7 +7213,16 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.15.4", +] + +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", ] [[package]] @@ -7266,7 +7252,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -7278,7 +7264,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -7292,7 +7278,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -7303,7 +7289,7 @@ checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -7314,27 +7300,16 @@ checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.114", -] - -[[package]] -name = "match-lookup" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "757aee279b8bdbb9f9e676796fd459e4207a1f986e87886700abf589f5abf771" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "matchers" -version = "0.2.0" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "regex-automata", + "regex-automata 0.1.10", ] [[package]] @@ -7367,9 +7342,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.6" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memoffset" @@ -7382,9 +7357,9 @@ dependencies = [ [[package]] name = "metrics" -version = "0.24.3" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5312e9ba3771cfa961b585728215e3d972c950a3eed9252aa093d6301277e8" +checksum = "25dea7ac8057892855ec285c440160265225438c3c45072613c25a4b26e98ef5" dependencies = [ "ahash 0.8.12", "portable-atomic", @@ -7397,25 +7372,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b166dea96003ee2531cf14833efedced545751d800f03535801d833313f8c15" dependencies = [ "base64 0.22.1", - "indexmap 2.13.0", + "indexmap 2.12.0", "metrics", "metrics-util", "quanta", - "thiserror 2.0.18", + "thiserror 2.0.12", ] [[package]] name = "metrics-util" -version = "0.20.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdfb1365fea27e6dd9dc1dbc19f570198bc86914533ad639dae939635f096be4" +checksum = "fe8db7a05415d0f919ffb905afa37784f71901c9a773188876984b4f769ab986" dependencies = [ "crossbeam-epoch", "crossbeam-utils", - "hashbrown 0.16.1", + "hashbrown 0.15.4", "metrics", "quanta", - "rand 0.9.2", + "rand 0.9.1", "rand_xoshiro 0.7.0", "sketches-ddsketch", ] @@ -7455,35 +7430,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", - "simd-adler32", ] [[package]] name = "mio" -version = "1.1.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.61.2", -] - -[[package]] -name = "moka" -version = "0.12.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3dec6bd31b08944e08b58fd99373893a6c17054d6f3ea5006cc894f4f4eee2a" -dependencies = [ - "crossbeam-channel", - "crossbeam-epoch", - "crossbeam-utils", - "equivalent", - "parking_lot 0.12.5", - "portable-atomic", - "smallvec", - "tagptr", - "uuid", + "windows-sys 0.59.0", ] [[package]] @@ -7502,36 +7459,21 @@ dependencies = [ "tokio", ] -[[package]] -name = "mongocrypt" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da0cd419a51a5fb44819e290fbdb0665a54f21dead8923446a799c7f4d26ad9" -dependencies = [ - "bson", - "mongocrypt-sys", - "once_cell", - "serde", -] - -[[package]] -name = "mongocrypt-sys" -version = "0.1.5+1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224484c5d09285a7b8cb0a0c117e847ebd14cb6e4470ecf68cdb89c503b0edb9" - [[package]] name = "mongodb" -version = "3.5.0" +version = "3.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ed2c028a2c04ad58faa2e0f4ee82c1319f0e495b710ca8e8498fde4b395f64" +checksum = "d0f8c69f13acf07eae386a2974f48ffd9187ea2aba8defbea9aa34e7e272c5f3" dependencies = [ - "base64 0.22.1", - "bitflags 2.10.0", + "async-trait", + "base64 0.13.1", + "bitflags 1.3.2", "bson", + "chrono", "derive-where", - "derive_more 2.1.1", + "derive_more 0.99.20", "futures-core", + "futures-executor", "futures-io", "futures-util", "hex", @@ -7540,64 +7482,63 @@ dependencies = [ "hmac 0.12.1", "macro_magic", "md-5", - "mongocrypt", "mongodb-internal-macros", - "pbkdf2 0.12.2", + "once_cell", + "pbkdf2 0.11.0", "percent-encoding", - "rand 0.9.2", + "rand 0.8.5", "rustc_version_runtime", - "rustls 0.23.36", - "rustversion", + "rustls 0.21.12", + "rustls-pemfile 1.0.4", "serde", "serde_bytes", - "serde_with 3.16.1", + "serde_with 3.13.0", "sha1", "sha2 0.10.9", - "socket2 0.6.1", + "socket2 0.5.10", "stringprep", "strsim 0.11.1", "take_mut", - "thiserror 2.0.18", + "thiserror 1.0.69", "tokio", - "tokio-rustls 0.26.4", + "tokio-rustls 0.24.1", "tokio-util", "typed-builder", "uuid", - "webpki-roots 1.0.5", + "webpki-roots 0.25.4", ] [[package]] name = "mongodb-internal-macros" -version = "3.5.0" +version = "3.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a42ac35ea5c79f6539851d79d7cfe3322358f7d0d7bf040eb3e1558efc0a4c" +checksum = "b9202de265a3a8bbb43f9fe56db27c93137d4f9fb04c093f47e9c7de0c61ac7d" dependencies = [ "macro_magic", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "monostate" -version = "0.1.18" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3341a273f6c9d5bef1908f17b7267bbab0e95c9bf69a0d4dcf8e9e1b2c76ef67" +checksum = "aafe1be9d0c75642e3e50fedc7ecadf1ef1cbce6eb66462153fc44245343fbee" dependencies = [ "monostate-impl", "serde", - "serde_core", ] [[package]] name = "monostate-impl" -version = "0.1.18" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4db6d5580af57bf992f59068d4ea26fd518574ff48d7639b255a36f9de6e7e9" +checksum = "c402a4092d5e204f32c9e155431046831fa712637043c58cb73bc6bc6c9663b5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -7621,7 +7562,7 @@ source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265 dependencies = [ "anyhow", "enum-compat-util", - "indexmap 2.13.0", + "indexmap 2.12.0", "move-core-types", "move-proc-macros", "ref-cast", @@ -7656,7 +7597,7 @@ version = "0.1.0" source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "anyhow", - "indexmap 2.13.0", + "indexmap 2.12.0", "move-binary-format", "move-core-types", "petgraph", @@ -7763,7 +7704,7 @@ dependencies = [ "ref-cast", "serde", "serde_bytes", - "serde_with 3.16.1", + "serde_with 3.13.0", "thiserror 1.0.69", "uint", ] @@ -7778,7 +7719,7 @@ dependencies = [ "clap", "codespan", "colored", - "indexmap 2.13.0", + "indexmap 2.12.0", "move-abstract-interpreter", "move-binary-format", "move-bytecode-source-map", @@ -7860,7 +7801,7 @@ version = "0.1.0" source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -7992,7 +7933,7 @@ dependencies = [ "byteorder", "data-encoding", "log", - "multibase 0.9.2", + "multibase 0.9.1", "multihash", "percent-encoding", "serde", @@ -8014,12 +7955,11 @@ dependencies = [ [[package]] name = "multibase" -version = "0.9.2" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77" +checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" dependencies = [ "base-x", - "base256emoji", "data-encoding", "data-encoding-macro", ] @@ -8097,8 +8037,8 @@ checksum = "879011babc47a1c7fdf5a935ae3cfe94f34645ca0cac1c7f6424b36fc743d1bf" dependencies = [ "data-encoding", "ed25519 2.2.3", - "ed25519-dalek 2.2.0", - "getrandom 0.2.17", + "ed25519-dalek 2.1.1", + "getrandom 0.2.16", "log", "rand 0.8.5", "signatory", @@ -8149,20 +8089,21 @@ checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" [[package]] name = "ntapi" -version = "0.4.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c70f219e21142367c70c0b30c6a9e3a14d55b4d12a204d897fbec83a0363f081" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" dependencies = [ "winapi", ] [[package]] name = "nu-ansi-term" -version = "0.50.3" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" dependencies = [ - "windows-sys 0.61.2", + "overload", + "winapi", ] [[package]] @@ -8213,10 +8154,11 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.6" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" dependencies = [ + "byteorder", "lazy_static", "libm", "num-integer", @@ -8267,7 +8209,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -8368,7 +8310,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.114", + "syn 2.0.104", "urlencoding", ] @@ -8388,18 +8330,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" -dependencies = [ - "memchr", -] - -[[package]] -name = "object" -version = "0.37.3" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -8419,11 +8352,11 @@ dependencies = [ "hyper 1.7.0", "itertools 0.13.0", "md-5", - "parking_lot 0.12.5", + "parking_lot 0.12.4", "percent-encoding", "quick-xml", "rand 0.8.5", - "reqwest 0.12.28", + "reqwest 0.12.20", "ring", "rustls-pemfile 2.2.0", "serde", @@ -8454,7 +8387,7 @@ dependencies = [ "derivative", "derive_more 0.99.20", "did_url", - "ed25519-dalek 2.2.0", + "ed25519-dalek 2.1.1", "getset", "is_empty", "jsonwebtoken", @@ -8493,7 +8426,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "serde_with 3.16.1", + "serde_with 3.13.0", "siopv2", "tokio", "tower-http 0.4.4", @@ -8508,7 +8441,7 @@ dependencies = [ "chrono", "derivative", "getset", - "http 1.4.0", + "http 1.3.1", "jsonwebtoken", "lazy_static", "nutype", @@ -8521,7 +8454,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "serde_with 3.16.1", + "serde_with 3.13.0", "thiserror 1.0.69", "tokio", "url", @@ -8548,7 +8481,7 @@ dependencies = [ "reqwest-retry", "serde", "serde_json", - "serde_with 3.16.1", + "serde_with 3.13.0", "tokio", "url", "validator", @@ -8559,16 +8492,12 @@ name = "once_cell" version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" -dependencies = [ - "critical-section", - "portable-atomic", -] [[package]] name = "once_cell_polyfill" -version = "1.70.2" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "opaque-debug" @@ -8581,7 +8510,7 @@ name = "openapiv3" version = "2.0.0" source = "git+https://github.com/bmwill/openapiv3.git?rev=ca4b4845b7c159a39f5c68ad8f7f76cb6f4d6963#ca4b4845b7c159a39f5c68ad8f7f76cb6f4d6963" dependencies = [ - "indexmap 2.13.0", + "indexmap 2.12.0", "schemars 0.8.22", "serde", "serde_json", @@ -8593,12 +8522,6 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" -[[package]] -name = "openssl-probe" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" - [[package]] name = "option-ext" version = "0.2.0" @@ -8645,7 +8568,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -8654,6 +8577,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "p256" version = "0.11.1" @@ -8801,10 +8730,10 @@ version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -8826,12 +8755,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.5" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", - "parking_lot_core 0.9.12", + "parking_lot_core 0.9.11", ] [[package]] @@ -8850,15 +8779,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.12" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.18", + "redox_syscall 0.5.13", "smallvec", - "windows-link", + "windows-targets 0.52.6", ] [[package]] @@ -8867,13 +8796,13 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77144664f6aac5f629d7efa815f5098a054beeeca6ccafee5ec453fd2b0c53f9" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.1", "ciborium", "coset", "data-encoding", - "getrandom 0.2.17", + "getrandom 0.2.16", "hmac 0.12.1", - "indexmap 2.13.0", + "indexmap 2.12.0", "rand 0.8.5", "serde", "serde_json", @@ -8942,12 +8871,12 @@ dependencies = [ [[package]] name = "pem" -version = "3.0.6" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" +checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" dependencies = [ "base64 0.22.1", - "serde_core", + "serde", ] [[package]] @@ -8979,9 +8908,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.2" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "permutohedron" @@ -8991,19 +8920,20 @@ checksum = "b687ff7b5da449d39e418ad391e5e08da53ec334903ddbb921db208908fc372c" [[package]] name = "pest" -version = "2.8.5" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9eb05c21a464ea704b53158d358a31e6425db2f63a1a7312268b05fe2b75f7" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", + "thiserror 2.0.12", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.8.5" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f9dbced329c441fa79d80472764b1a2c7e57123553b8519b36663a2fb234ed" +checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" dependencies = [ "pest", "pest_generator", @@ -9011,22 +8941,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.5" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bb96d5051a78f44f43c8f712d8e810adb0ebf923fc9ed2655a7f66f63ba8ee5" +checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "pest_meta" -version = "2.8.5" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602113b5b5e8621770cfd490cfd90b9f84ab29bd2b0e49ad83eb6d186cef2365" +checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" dependencies = [ "pest", "sha2 0.10.9", @@ -9082,7 +9012,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -9111,7 +9041,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -9221,16 +9151,17 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polling" -version = "3.11.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix", - "windows-sys 0.61.2", + "rustix 1.0.7", + "tracing", + "windows-sys 0.59.0", ] [[package]] @@ -9258,9 +9189,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.13.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "postgres-es" @@ -9279,9 +9210,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" dependencies = [ "zerovec", ] @@ -9321,6 +9252,16 @@ dependencies = [ "ryu_floating_decimal", ] +[[package]] +name = "prettyplease" +version = "0.2.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" +dependencies = [ + "proc-macro2", + "syn 2.0.104", +] + [[package]] name = "primeorder" version = "0.13.6" @@ -9376,11 +9317,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", + "toml_edit 0.22.27", ] [[package]] @@ -9426,14 +9367,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "proc-macro2" -version = "1.0.105" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] @@ -9456,7 +9397,7 @@ dependencies = [ "iota_interaction_ts", "itertools 0.13.0", "phf", - "reqwest 0.12.28", + "reqwest 0.12.20", "secret-storage", "serde", "serde_json", @@ -9477,9 +9418,9 @@ dependencies = [ "fnv", "lazy_static", "memchr", - "parking_lot 0.12.5", + "parking_lot 0.12.4", "protobuf", - "thiserror 2.0.18", + "thiserror 2.0.12", ] [[package]] @@ -9511,7 +9452,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -9536,11 +9477,10 @@ dependencies = [ [[package]] name = "psm" -version = "0.1.28" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d11f2fedc3b7dafdc2851bc52f277377c5473d378859be234bc7ebb593144d01" +checksum = "6e944464ec8536cd1beb0bbfd96987eb5e3b72f2ecdafdc5c769a37f1fa2ae1f" dependencies = [ - "ar_archive_writer", "cc", ] @@ -9571,9 +9511,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.9" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", "cfg_aliases", @@ -9582,9 +9522,9 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash 2.1.1", - "rustls 0.23.36", - "socket2 0.6.1", - "thiserror 2.0.18", + "rustls 0.23.28", + "socket2 0.5.10", + "thiserror 2.0.12", "tokio", "tracing", "web-time", @@ -9592,20 +9532,20 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.13" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" dependencies = [ "bytes", - "getrandom 0.3.4", + "getrandom 0.3.3", "lru-slab", - "rand 0.9.2", + "rand 0.9.1", "ring", "rustc-hash 2.1.1", - "rustls 0.23.36", + "rustls 0.23.28", "rustls-pki-types", "slab", - "thiserror 2.0.18", + "thiserror 2.0.12", "tinyvec", "tracing", "web-time", @@ -9613,23 +9553,23 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.14" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.1", + "socket2 0.5.10", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] name = "quote" -version = "1.0.43" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -9678,12 +9618,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.2" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.5", + "rand_core 0.9.3", ] [[package]] @@ -9713,7 +9653,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.5", + "rand_core 0.9.3", ] [[package]] @@ -9731,16 +9671,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.17", + "getrandom 0.2.16", ] [[package]] name = "rand_core" -version = "0.9.5" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.3.3", ] [[package]] @@ -9776,16 +9716,16 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" dependencies = [ - "rand_core 0.9.5", + "rand_core 0.9.3", ] [[package]] name = "raw-cpuid" -version = "11.6.0" +version = "11.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" +checksum = "c6df7ab838ed27997ba19a4664507e6f82b41fe6e20be42929332156e5e85146" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.1", ] [[package]] @@ -9842,7 +9782,7 @@ checksum = "f2a62d85ed81ca5305dc544bd42c8804c5060b78ffa5ad3c64b0fb6a8c13d062" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -9856,20 +9796,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.10.0", -] - -[[package]] -name = "redox_syscall" -version = "0.7.0" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.1", ] [[package]] @@ -9878,59 +9809,74 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.17", + "getrandom 0.2.16", "libredox", "thiserror 1.0.69", ] [[package]] name = "ref-cast" -version = "1.0.25" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.25" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "regex" -version = "1.12.2" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.5", ] [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "relative-path" @@ -9949,7 +9895,7 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.3.27", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.32", @@ -9982,17 +9928,17 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.28" +version = "0.12.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", "futures-core", "futures-util", - "h2 0.4.13", - "http 1.4.0", + "h2 0.4.10", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper 1.7.0", @@ -10003,25 +9949,25 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.36", - "rustls-native-certs 0.8.3", + "rustls 0.23.28", + "rustls-native-certs 0.8.1", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper 1.0.2", "tokio", - "tokio-rustls 0.26.4", + "tokio-rustls 0.26.2", "tokio-util", - "tower 0.5.3", - "tower-http 0.6.8", + "tower 0.5.2", + "tower-http 0.6.6", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 1.0.5", + "webpki-roots 1.0.1", ] [[package]] @@ -10049,7 +9995,7 @@ dependencies = [ "async-trait", "chrono", "futures", - "getrandom 0.2.17", + "getrandom 0.2.16", "http 0.2.12", "hyper 0.14.32", "parking_lot 0.11.2", @@ -10064,9 +10010,9 @@ dependencies = [ [[package]] name = "resolv-conf" -version = "0.7.6" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" +checksum = "95325155c684b1c89f7765e30bc1c42e4a6da51ca513615660cb8a62ef9a88e3" [[package]] name = "retry-policies" @@ -10108,7 +10054,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.17", + "getrandom 0.2.16", "libc", "untrusted", "windows-sys 0.52.0", @@ -10168,7 +10114,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64 0.21.7", - "bitflags 2.10.0", + "bitflags 2.9.1", "serde", "serde_derive", ] @@ -10231,9 +10177,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.10" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" +checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" dependencies = [ "const-oid 0.9.6", "digest 0.10.7", @@ -10269,13 +10215,13 @@ checksum = "c5e1711e7d14f74b12a58411c542185ef7fb7f2e7f8ee6e2940a883628522b42" dependencies = [ "cfg-if", "glob", - "proc-macro-crate 3.4.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", "regex", "relative-path", "rustc_version", - "syn 2.0.114", + "syn 2.0.104", "unicode-ident", ] @@ -10324,9 +10270,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.27" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc-hash" @@ -10376,15 +10322,28 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.3" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.1", "errno", "libc", - "linux-raw-sys", - "windows-sys 0.61.2", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", ] [[package]] @@ -10401,16 +10360,16 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.36" +version = "0.23.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ "aws-lc-rs", "log", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.9", + "rustls-webpki 0.103.3", "subtle", "zeroize", ] @@ -10421,7 +10380,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ - "openssl-probe 0.1.6", + "openssl-probe", "rustls-pemfile 1.0.4", "schannel", "security-framework 2.11.1", @@ -10433,7 +10392,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ - "openssl-probe 0.1.6", + "openssl-probe", "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", @@ -10442,14 +10401,14 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" dependencies = [ - "openssl-probe 0.2.1", + "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.5.1", + "security-framework 3.2.0", ] [[package]] @@ -10472,9 +10431,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ "web-time", "zeroize", @@ -10491,11 +10450,11 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.36", - "rustls-native-certs 0.8.3", + "rustls 0.23.28", + "rustls-native-certs 0.8.1", "rustls-platform-verifier-android", - "rustls-webpki 0.103.9", - "security-framework 3.5.1", + "rustls-webpki 0.103.3", + "security-framework 3.2.0", "security-framework-sys", "webpki-root-certs 0.26.11", "windows-sys 0.59.0", @@ -10529,9 +10488,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.9" +version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" dependencies = [ "aws-lc-rs", "ring", @@ -10541,15 +10500,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "ryu" -version = "1.0.22" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "ryu-js" @@ -10583,20 +10542,20 @@ dependencies = [ [[package]] name = "scc" -version = "2.4.0" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46e6f046b7fef48e2660c57ed794263155d713de679057f2d0c169bfc6e756cc" +checksum = "22b2d775fb28f245817589471dd49c5edf64237f4a19d10ce9a92ff4651a27f4" dependencies = [ "sdd", ] [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -10624,18 +10583,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "schemars" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - [[package]] name = "schemars_derive" version = "0.8.22" @@ -10645,7 +10592,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -10683,11 +10630,11 @@ checksum = "3d0271aef808decf6005e82e2b779a5659a630855206cde7e89a86d0d2b195cd" dependencies = [ "anyhow", "async-trait", - "indexmap 2.13.0", + "indexmap 2.12.0", "iota-crypto", "itertools 0.12.1", "json-pointer", - "multibase 0.9.2", + "multibase 0.9.1", "rand 0.8.5", "serde", "serde_json", @@ -10697,9 +10644,9 @@ dependencies = [ [[package]] name = "sdd" -version = "3.0.10" +version = "3.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" +checksum = "584e070911c7017da6cb2eb0788d09f43d789029b5877d3e5ecc8acf86ceee21" [[package]] name = "seahash" @@ -10749,9 +10696,9 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4473013577ec77b4ee3668179ef1186df3146e2cf2d927bd200974c6fe60fd99" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" dependencies = [ "cc", ] @@ -10763,7 +10710,7 @@ source = "git+https://github.com/iotaledger/secret-storage?tag=v0.3.0#7dc13ddae8 dependencies = [ "anyhow", "async-trait", - "thiserror 2.0.18", + "thiserror 2.0.12", ] [[package]] @@ -10772,7 +10719,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.1", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -10781,11 +10728,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.5.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.1", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -10794,9 +10741,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.15.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -10804,9 +10751,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "send_wrapper" @@ -10890,12 +10837,11 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.19" +version = "0.11.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" dependencies = [ "serde", - "serde_core", ] [[package]] @@ -10915,7 +10861,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -10926,7 +10872,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -10942,16 +10888,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ - "indexmap 2.13.0", + "indexmap 2.12.0", "itoa", "memchr", + "ryu", "serde", - "serde_core", - "zmij", ] [[package]] @@ -10976,13 +10921,12 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.20" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ "itoa", "serde", - "serde_core", ] [[package]] @@ -10993,7 +10937,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -11007,12 +10951,11 @@ dependencies = [ [[package]] name = "serde_stacker" -version = "0.1.14" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4936375d50c4be7eff22293a9344f8e46f323ed2b3c243e52f89138d9bb0f4a" +checksum = "69c8defe6c780725cce4ec6ad3bd91e321baf6fa4e255df1f31e345d507ef01a" dependencies = [ "serde", - "serde_core", "stacker", ] @@ -11046,20 +10989,20 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.16.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +checksum = "bf65a400f8f66fb7b0552869ad70157166676db75ed8181f8104ea91cf9d0b42" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.13.0", + "indexmap 2.12.0", "schemars 0.9.0", - "schemars 1.2.0", - "serde_core", + "serde", + "serde_derive", "serde_json", - "serde_with_macros 3.16.1", + "serde_with_macros 3.13.0", "time", ] @@ -11072,19 +11015,19 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "serde_with_macros" -version = "3.16.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +checksum = "81679d9ed988d5e9a5e6531dc3f2c28efbd639cbd1dfb628df08edea6004da77" dependencies = [ - "darling 0.21.3", + "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -11111,28 +11054,27 @@ dependencies = [ [[package]] name = "serial_test" -version = "3.3.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d0b343e184fc3b7bb44dff0705fffcf4b3756ba6aff420dddd8b24ca145e555" +checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" dependencies = [ - "futures-executor", - "futures-util", + "futures", "log", "once_cell", - "parking_lot 0.12.5", + "parking_lot 0.12.4", "scc", "serial_test_derive", ] [[package]] name = "serial_test_derive" -version = "3.3.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f50427f258fb77356e4cd4aa0e87e2bd2c66dbcee41dc405282cae2bfc26c83" +checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -11225,11 +11167,10 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.8" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ - "errno", "libc", ] @@ -11267,9 +11208,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "similar" @@ -11303,7 +11244,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint 0.4.6", "num-traits", - "thiserror 2.0.18", + "thiserror 2.0.12", "time", ] @@ -11329,7 +11270,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "serde_with 3.16.1", + "serde_with 3.13.0", "tokio", "url", ] @@ -11358,9 +11299,9 @@ checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a" [[package]] name = "slab" -version = "0.4.11" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "slip10_ed25519" @@ -11373,9 +11314,9 @@ dependencies = [ [[package]] name = "smallstr" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862077b1e764f04c251fe82a2ef562fd78d7cadaeb072ca7c2bcaf7217b1ff3b" +checksum = "63b1aefdf380735ff8ded0b15f31aab05daf1f70216c01c02a12926badd1df9d" dependencies = [ "smallvec", ] @@ -11429,7 +11370,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -11450,12 +11391,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -11467,7 +11408,7 @@ dependencies = [ "base64 0.22.1", "bytes", "futures", - "http 1.4.0", + "http 1.3.1", "httparse", "log", "rand 0.8.5", @@ -11524,9 +11465,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.8.6" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" +checksum = "4410e73b3c0d8442c5f99b425d7a435b5ee0ae4167b3196771dd3f7a01be745f" dependencies = [ "sqlx-core", "sqlx-macros", @@ -11537,33 +11478,33 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.8.6" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" +checksum = "6a007b6936676aa9ab40207cde35daab0a04b823be8ae004368c0793b96a61e0" dependencies = [ - "base64 0.22.1", "bytes", "crc", "crossbeam-queue", "either", - "event-listener 5.4.1", + "event-listener 5.4.0", "futures-core", "futures-intrusive", "futures-io", "futures-util", - "hashbrown 0.15.5", + "hashbrown 0.15.4", "hashlink 0.10.0", - "indexmap 2.13.0", + "indexmap 2.12.0", "log", "memchr", "once_cell", "percent-encoding", - "rustls 0.23.36", + "rustls 0.23.28", + "rustls-pemfile 2.2.0", "serde", "serde_json", "sha2 0.10.9", "smallvec", - "thiserror 2.0.18", + "thiserror 2.0.12", "tokio", "tokio-stream", "tracing", @@ -11573,22 +11514,22 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.8.6" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" +checksum = "3112e2ad78643fef903618d78cf0aec1cb3134b019730edb039b69eaf531f310" dependencies = [ "proc-macro2", "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "sqlx-macros-core" -version = "0.8.6" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" +checksum = "4e9f90acc5ab146a99bf5061a7eb4976b573f560bc898ef3bf8435448dd5e7ad" dependencies = [ "dotenvy", "either", @@ -11604,20 +11545,21 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.114", + "syn 2.0.104", + "tempfile", "tokio", "url", ] [[package]] name = "sqlx-mysql" -version = "0.8.6" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" +checksum = "4560278f0e00ce64938540546f59f590d60beee33fffbd3b9cd47851e5fff233" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.10.0", + "bitflags 2.9.1", "byteorder", "bytes", "crc", @@ -11639,27 +11581,27 @@ dependencies = [ "once_cell", "percent-encoding", "rand 0.8.5", - "rsa 0.9.10", + "rsa 0.9.8", "serde", "sha1", "sha2 0.10.9", "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.18", + "thiserror 2.0.12", "tracing", "whoami", ] [[package]] name = "sqlx-postgres" -version = "0.8.6" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" +checksum = "c5b98a57f363ed6764d5b3a12bfedf62f07aa16e1856a7ddc2a0bb190a959613" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.10.0", + "bitflags 2.9.1", "byteorder", "crc", "dotenvy", @@ -11683,16 +11625,16 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.18", + "thiserror 2.0.12", "tracing", "whoami", ] [[package]] name = "sqlx-sqlite" -version = "0.8.6" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" +checksum = "f85ca71d3a5b24e64e1d08dd8fe36c6c95c339a896cc33068148906784620540" dependencies = [ "atoi", "flume", @@ -11707,7 +11649,6 @@ dependencies = [ "serde", "serde_urlencoded", "sqlx-core", - "thiserror 2.0.18", "tracing", "url", ] @@ -11895,11 +11836,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2d7b2b056993e04945eade2b0bbd3049f1bb65cd2fcf661ccb15b615683b384" dependencies = [ "base64 0.12.3", - "ed25519-dalek 2.2.0", - "getrandom 0.2.17", + "ed25519-dalek 2.1.1", + "getrandom 0.2.16", "k256", "lazy_static", - "multibase 0.9.2", + "multibase 0.9.1", "num-bigint 0.4.6", "num-derive 0.3.3", "num-traits", @@ -11921,7 +11862,7 @@ source = "git+https://github.com/impierce/spruceid-ssi.git#ff91409b2a38188cf7126 dependencies = [ "base64 0.12.3", "lazy_static", - "multibase 0.9.2", + "multibase 0.9.1", "num-bigint 0.4.6", "num-derive 0.3.3", "num-traits", @@ -11935,15 +11876,15 @@ dependencies = [ [[package]] name = "stable_deref_trait" -version = "1.2.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "stacker" -version = "0.1.22" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1f8b29fb42aafcea4edeeb6b2f2d7ecd0d969c48b4cf0d2e64aafc471dd6e59" +checksum = "cddb07e32ddb770749da91081d8d0ac3a16f1a569a18b20348cd371f5dead06b" dependencies = [ "cc", "cfg-if", @@ -12123,7 +12064,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -12136,7 +12077,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -12148,7 +12089,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -12176,9 +12117,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.114" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -12220,7 +12161,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -12282,12 +12223,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "tagptr" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" - [[package]] name = "take_mut" version = "0.2.2" @@ -12326,20 +12261,20 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96374855068f47402c3121c6eed88d29cb1de8f3ab27090e273e420bdabcf050" dependencies = [ - "parking_lot 0.12.5", + "parking_lot 0.12.4", ] [[package]] name = "tempfile" -version = "3.24.0" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.3.3", "once_cell", - "rustix", - "windows-sys 0.61.2", + "rustix 1.0.7", + "windows-sys 0.59.0", ] [[package]] @@ -12353,12 +12288,12 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.4.3" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" +checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" dependencies = [ - "rustix", - "windows-sys 0.60.2", + "rustix 1.0.7", + "windows-sys 0.59.0", ] [[package]] @@ -12372,11 +12307,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.18", + "thiserror-impl 2.0.12", ] [[package]] @@ -12387,18 +12322,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -12421,30 +12356,30 @@ dependencies = [ [[package]] name = "time" -version = "0.3.45" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ - "deranged 0.5.5", + "deranged", "itoa", "num-conv", "powerfmt", - "serde_core", + "serde", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.7" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.25" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -12480,9 +12415,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -12490,9 +12425,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -12505,30 +12440,33 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.49.0" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ + "backtrace", "bytes", + "io-uring", "libc", "mio", - "parking_lot 0.12.5", + "parking_lot 0.12.4", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.1", + "slab", + "socket2 0.6.0", "tokio-macros", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -12543,19 +12481,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.4" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "rustls 0.23.36", + "rustls 0.23.28", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.18" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -12565,21 +12503,21 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.28.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" dependencies = [ "futures-util", "log", "tokio", - "tungstenite 0.28.0", + "tungstenite 0.26.2", ] [[package]] name = "tokio-util" -version = "0.7.18" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", @@ -12599,13 +12537,13 @@ dependencies = [ "bytes", "futures-core", "futures-sink", - "http 1.4.0", + "http 1.3.1", "httparse", "rand 0.8.5", "ring", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.4", + "tokio-rustls 0.26.2", "tokio-util", "webpki-roots 0.26.11", ] @@ -12618,7 +12556,7 @@ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime 0.6.11", + "toml_datetime", "toml_edit 0.22.27", ] @@ -12631,23 +12569,14 @@ dependencies = [ "serde", ] -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - [[package]] name = "toml_edit" version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.13.0", - "toml_datetime 0.6.11", + "indexmap 2.12.0", + "toml_datetime", "winnow 0.5.40", ] @@ -12657,33 +12586,12 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.13.0", + "indexmap 2.12.0", "serde", "serde_spanned", - "toml_datetime 0.6.11", + "toml_datetime", "toml_write", - "winnow 0.7.14", -] - -[[package]] -name = "toml_edit" -version = "0.23.10+spec-1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" -dependencies = [ - "indexmap 2.13.0", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow 0.7.14", -] - -[[package]] -name = "toml_parser" -version = "1.0.6+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" -dependencies = [ - "winnow 0.7.14", + "winnow 0.7.11", ] [[package]] @@ -12699,11 +12607,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" dependencies = [ "async-trait", - "axum 0.8.8", + "axum 0.8.3", "base64 0.22.1", "bytes", - "h2 0.4.13", - "http 1.4.0", + "h2 0.4.10", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper 1.7.0", @@ -12711,11 +12619,11 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "socket2 0.6.1", + "socket2 0.6.0", "sync_wrapper 1.0.2", "tokio", "tokio-stream", - "tower 0.5.3", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -12769,13 +12677,13 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.3" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "indexmap 2.13.0", + "indexmap 2.12.0", "pin-project-lite", "slab", "sync_wrapper 1.0.2", @@ -12792,7 +12700,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.1", "bytes", "futures-core", "futures-util", @@ -12812,11 +12720,11 @@ checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "async-compression", "base64 0.21.7", - "bitflags 2.10.0", + "bitflags 2.9.1", "bytes", "futures-core", "futures-util", - "http 1.4.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "http-range-header 0.4.2", @@ -12837,18 +12745,18 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.8" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.1", "bytes", "futures-util", - "http 1.4.0", + "http 1.3.1", "http-body 1.0.1", "iri-string", "pin-project-lite", - "tower 0.5.3", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -12868,9 +12776,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.44" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -12880,20 +12788,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.31" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "tracing-core" -version = "0.1.36" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -12922,14 +12830,14 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex-automata", + "regex", "serde", "serde_json", "sharded-slab", @@ -12959,7 +12867,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -13020,47 +12928,32 @@ dependencies = [ [[package]] name = "tungstenite" -version = "0.28.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" dependencies = [ "bytes", "data-encoding", - "http 1.4.0", + "http 1.3.1", "httparse", "log", - "rand 0.9.2", + "rand 0.9.1", "sha1", - "thiserror 2.0.18", + "thiserror 2.0.12", "utf-8", ] [[package]] name = "typed-builder" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "398a3a3c918c96de527dc11e6e846cd549d4508030b8a33e1da12789c856b81a" -dependencies = [ - "typed-builder-macro", -] - -[[package]] -name = "typed-builder-macro" -version = "0.22.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e48cea23f68d1f78eb7bc092881b6bb88d3d6b5b7e6234f6f9c911da1ffb221" +checksum = "89851716b67b937e393b3daa8423e67ddfc4bbbf1654bcf05488e95e0828db0c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 1.0.109", ] -[[package]] -name = "typed-path" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7922f2cdc51280d47b491af9eafc41eb0cdab85eabcb390c854412fcbf26dbe8" - [[package]] name = "typed-store-error" version = "1.13.1" @@ -13072,9 +12965,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.19.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "types-common" @@ -13105,9 +12998,9 @@ dependencies = [ [[package]] name = "typeshare" -version = "1.0.5" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da1bf9fe204f358ffea7f8f779b53923a20278b3ab8e8d97962c5e1b3a54edb7" +checksum = "19be0f411120091e76e13e5a0186d8e2bcc3e7e244afdb70152197f1a8486ceb" dependencies = [ "chrono", "serde", @@ -13117,12 +13010,12 @@ dependencies = [ [[package]] name = "typeshare-annotation" -version = "1.0.5" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "621963e302416b389a1ec177397e9e62de849a78bd8205d428608553def75350" +checksum = "a615d6c2764852a2e88a4f16e9ce1ea49bb776b5872956309e170d63a042a34f" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -13151,9 +13044,9 @@ checksum = "ccb97dac3243214f8d8507998906ca3e2e0b900bf9bf4870477f125b82e68f6e" [[package]] name = "unicase" -version = "2.9.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-bidi" @@ -13163,24 +13056,24 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-normalization" -version = "0.1.25" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-properties" -version = "0.1.4" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" [[package]] name = "unicode-segmentation" @@ -13224,40 +13117,26 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "3.1.4" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39cb1dbab692d82a977c0392ffac19e188bd9186a9f32806f0aaa859d75585a" +checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" dependencies = [ "base64 0.22.1", "log", - "percent-encoding", - "ureq-proto", - "utf-8", -] - -[[package]] -name = "ureq-proto" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d81f9efa9df032be5934a46a068815a10a042b494b6a58cb0a1a97bb5467ed6f" -dependencies = [ - "base64 0.22.1", - "http 1.4.0", - "httparse", - "log", + "once_cell", + "url", ] [[package]] name = "url" -version = "2.5.8" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", - "serde_derive", ] [[package]] @@ -13292,14 +13171,14 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.19.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.3.3", "js-sys", - "rand 0.9.2", - "serde_core", + "rand 0.9.1", + "serde", "wasm-bindgen", ] @@ -13341,7 +13220,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -13352,9 +13231,9 @@ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "value-bag" -version = "1.12.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" [[package]] name = "variant_count" @@ -13364,7 +13243,7 @@ checksum = "a1935e10c6f04d22688d07c0790f2fc0e1b1c5c2c55bc0cc87ed67656e587dd8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -13433,12 +13312,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" +name = "wasi" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" dependencies = [ - "wit-bindgen", + "wit-bindgen-rt", ] [[package]] @@ -13449,9 +13328,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.108" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", @@ -13459,17 +13338,29 @@ dependencies = [ "serde", "serde_json", "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.104", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.58" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", - "futures-util", "js-sys", "once_cell", "wasm-bindgen", @@ -13478,9 +13369,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.108" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -13488,22 +13379,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.108" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ - "bumpalo", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", + "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.108" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" dependencies = [ "unicode-ident", ] @@ -13538,9 +13429,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.85" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -13562,14 +13453,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" dependencies = [ - "webpki-root-certs 1.0.5", + "webpki-root-certs 1.0.1", ] [[package]] name = "webpki-root-certs" -version = "1.0.5" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc" +checksum = "86138b15b2b7d561bc4469e77027b8dd005a43dc502e9031d1f5afc8ce1f280e" dependencies = [ "rustls-pki-types", ] @@ -13586,33 +13477,45 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.5", + "webpki-roots 1.0.1", ] [[package]] name = "webpki-roots" -version = "1.0.5" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" +checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" dependencies = [ "rustls-pki-types", ] +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.44", +] + [[package]] name = "whoami" -version = "1.6.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" +checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" dependencies = [ - "libredox", + "redox_syscall 0.5.13", "wasite", ] [[package]] name = "widestring" -version = "1.2.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" +checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" [[package]] name = "winapi" @@ -13632,11 +13535,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.11" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -13664,7 +13567,7 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ - "windows-core 0.57.0", + "windows-core", "windows-targets 0.52.6", ] @@ -13674,25 +13577,12 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ - "windows-implement 0.57.0", - "windows-interface 0.57.0", - "windows-result 0.1.2", + "windows-implement", + "windows-interface", + "windows-result", "windows-targets 0.52.6", ] -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement 0.60.2", - "windows-interface 0.59.3", - "windows-link", - "windows-result 0.4.1", - "windows-strings", -] - [[package]] name = "windows-implement" version = "0.57.0" @@ -13701,18 +13591,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -13723,18 +13602,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -13752,24 +13620,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-sys" version = "0.45.0" @@ -13812,16 +13662,7 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.5", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", + "windows-targets 0.53.2", ] [[package]] @@ -13872,19 +13713,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.5" +version = "0.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", ] [[package]] @@ -13907,9 +13747,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" [[package]] name = "windows_aarch64_msvc" @@ -13937,9 +13777,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" [[package]] name = "windows_i686_gnu" @@ -13967,9 +13807,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" [[package]] name = "windows_i686_gnullvm" @@ -13979,9 +13819,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" [[package]] name = "windows_i686_msvc" @@ -14009,9 +13849,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" [[package]] name = "windows_x86_64_gnu" @@ -14039,9 +13879,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" [[package]] name = "windows_x86_64_gnullvm" @@ -14063,9 +13903,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" [[package]] name = "windows_x86_64_msvc" @@ -14093,9 +13933,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" @@ -14108,9 +13948,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" dependencies = [ "memchr", ] @@ -14127,15 +13967,16 @@ dependencies = [ [[package]] name = "wiremock" -version = "0.6.5" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08db1edfb05d9b3c1542e521aea074442088292f00b5f28e435c714a98f85031" +checksum = "a2b8b99d4cdbf36b239a9532e31fe4fb8acc38d1897c1761e161550a7dc78e6a" dependencies = [ "assert-json-diff", + "async-trait", "base64 0.22.1", "deadpool", "futures", - "http 1.4.0", + "http 1.3.1", "http-body-util", "hyper 1.7.0", "hyper-util", @@ -14149,16 +13990,19 @@ dependencies = [ ] [[package]] -name = "wit-bindgen" -version = "0.51.0" +name = "wit-bindgen-rt" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "ws_stream_tungstenite" @@ -14168,7 +14012,7 @@ checksum = "e283cc794a890f5bdc01e358ad7c34535025f79ba83c1b5c7e01e5d6c60b336d" dependencies = [ "async-tungstenite", "async_io_stream", - "bitflags 2.10.0", + "bitflags 2.9.1", "futures-core", "futures-io", "futures-sink", @@ -14230,18 +14074,18 @@ dependencies = [ "nom 7.1.3", "oid-registry", "rusticata-macros", - "thiserror 2.0.18", + "thiserror 2.0.12", "time", ] [[package]] name = "xattr" -version = "1.6.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" +checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" dependencies = [ "libc", - "rustix", + "rustix 1.0.7", ] [[package]] @@ -14275,10 +14119,11 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ + "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -14286,34 +14131,34 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", "synstructure 0.13.2", ] [[package]] name = "zerocopy" -version = "0.8.33" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.33" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] @@ -14333,15 +14178,15 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", "synstructure 0.13.2", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" dependencies = [ "serde", "zeroize_derive", @@ -14349,20 +14194,20 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.4.3" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" dependencies = [ "displaydoc", "yoke", @@ -14371,9 +14216,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -14382,26 +14227,29 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.104", ] [[package]] name = "zip" -version = "7.2.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e33efc22a0650c311c2ef19115ce232583abbe80850bc8b66509ebef02de0" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" dependencies = [ + "arbitrary", "crc32fast", + "crossbeam-utils", + "displaydoc", "flate2", - "indexmap 2.13.0", + "indexmap 2.12.0", "memchr", - "typed-path", + "thiserror 2.0.12", "zopfli", ] @@ -14422,26 +14270,14 @@ dependencies = [ "serde_json", "sha2 0.10.9", "sha3 0.10.8", - "thiserror 2.0.18", + "thiserror 2.0.12", ] -[[package]] -name = "zlib-rs" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" - -[[package]] -name = "zmij" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65" - [[package]] name = "zopfli" -version = "0.8.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" dependencies = [ "bumpalo", "crc32fast", @@ -14469,9 +14305,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.16+zstd.1.5.7" +version = "2.0.15+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" dependencies = [ "cc", "pkg-config", From acf2cf77ae564ab85db4b46498bfc3a9d60badb6 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Wed, 28 Jan 2026 15:35:31 +0100 Subject: [PATCH 04/35] feat: add error handling for unsupported credential format identifier and update documentation --- agent_api_http/src/v0/issuance/error.rs | 8 +- .../src/v0/issuance/ietf_oauth_sd_jwt_vc.rs | 5 +- agent_holder/src/presentation/aggregate.rs | 2 +- agent_issuance/src/credential/aggregate.rs | 128 +++++++++--------- agent_issuance/src/credential/error.rs | 4 +- agent_issuance/src/server_config/aggregate.rs | 7 +- agent_issuance/src/server_config/error.rs | 2 + agent_secret_manager/src/subject.rs | 23 +++- agent_shared/src/config/mod.rs | 25 ++++ .../tests/test_credential_configurations.json | 8 +- docs/problem-details/issuance.md | 8 ++ 11 files changed, 132 insertions(+), 88 deletions(-) diff --git a/agent_api_http/src/v0/issuance/error.rs b/agent_api_http/src/v0/issuance/error.rs index 24c1312cc..9d74f053d 100644 --- a/agent_api_http/src/v0/issuance/error.rs +++ b/agent_api_http/src/v0/issuance/error.rs @@ -51,7 +51,7 @@ impl IntoApiErrorExt for CredentialError { )) .source(self) .finish(), - BuildVcJwtError(_) => ApiError::builder(StatusCode::INTERNAL_SERVER_ERROR) + BuildCredentialError(_) => ApiError::builder(StatusCode::INTERNAL_SERVER_ERROR) .title("Unexpected Error") .type_url(format!( "{DOCUMENTATION_URL}problem-details/unexpected#unexpected-error" @@ -122,6 +122,11 @@ impl IntoApiErrorExt for ServerConfigError { .type_url(type_url("issuance#remove-provisioned-credential-configuration-error")) .source(self) .finish(), + UnsupportedCredentialFormatIdentifierError(_) => ApiError::builder(StatusCode::BAD_REQUEST) + .title("Unsupported Credential Format Identifier Error") + .type_url(type_url("issuance#unsupported-credential-format-identifier-error")) + .source(self) + .finish(), } } } @@ -201,6 +206,7 @@ impl IntoPublicError for ServerConfigError { match self { UpdateProvisionedCredentialConfigurationError => PublicError::InternalServerError, RemoveProvisionedCredentialConfigurationError => PublicError::InternalServerError, + UnsupportedCredentialFormatIdentifierError(_) => PublicError::InternalServerError, } } } diff --git a/agent_api_http/src/v0/issuance/ietf_oauth_sd_jwt_vc.rs b/agent_api_http/src/v0/issuance/ietf_oauth_sd_jwt_vc.rs index 322e37a60..3fb5aa64a 100644 --- a/agent_api_http/src/v0/issuance/ietf_oauth_sd_jwt_vc.rs +++ b/agent_api_http/src/v0/issuance/ietf_oauth_sd_jwt_vc.rs @@ -11,14 +11,13 @@ use std::sync::Arc; #[axum_macros::debug_handler] pub(crate) async fn type_metadata( State(state): State>, - // FIXME: This is human readable so not suitable for a URL path segment Path((credential_configuration_id, _version)): Path<(String, String)>, ) -> Result { let credential_configuration_id = URL_SAFE_NO_PAD .decode(credential_configuration_id) .ok() .and_then(|bytes| String::from_utf8(bytes).ok()) - .ok_or_else(|| PublicError::NotFoundError)?; + .ok_or(PublicError::NotFoundError)?; // Check if the credential configuration IDs are valid. let _credential_configuration = query_handler(SERVER_CONFIG_ID, &state.query.server_config) @@ -30,7 +29,7 @@ pub(crate) async fn type_metadata( .map(|(_, credential_configuration, _authorization)| credential_configuration) .cloned() }) - .ok_or_else(|| PublicError::NotFoundError)?; + .ok_or(PublicError::NotFoundError)?; // TODO: Fill in more of these fields once `agent_library` supports it. let type_metadata = TypeMetadata { diff --git a/agent_holder/src/presentation/aggregate.rs b/agent_holder/src/presentation/aggregate.rs index 82d8da858..ea617480f 100644 --- a/agent_holder/src/presentation/aggregate.rs +++ b/agent_holder/src/presentation/aggregate.rs @@ -102,7 +102,7 @@ impl Aggregate for Presentation { get_preferred_signing_algorithm(), ) .await - .unwrap(); + .map_err(|err| SigningError(err.to_string()))?; let signature = URL_SAFE_NO_PAD.encode(proof_value.as_slice()); let message = [message, signature].join("."); diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index fe74ffdae..38f6c9998 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -4,14 +4,17 @@ use crate::credential::error::CredentialError::{self}; use crate::credential::event::CredentialEvent; use crate::services::IssuanceServices; use agent_shared::config::{ - config, get_preferred_did_method, get_preferred_signing_algorithm, BITS_PER_STATUS, STATUS_LIST_BYTES_AMOUNT, + config, get_preferred_did_method, get_preferred_signing_algorithm, AlgorithmExt, BITS_PER_STATUS, + STATUS_LIST_BYTES_AMOUNT, }; use async_trait::async_trait; use cqrs_es::Aggregate; +use identity_core::common::Timestamp; use identity_core::convert::FromJson; use identity_credential::credential::{ Credential as W3CVerifiableCredential, CredentialBuilder as W3CVerifiableCredentialBuilder, Issuer, }; +use identity_credential::sd_jwt_vc::SdJwtVcClaims; use jsonwebtoken::Header; use oauth_tsl::status_list::StatusType; use oauth_tsl::tokens::status_list_token::StatusListTyp; @@ -387,76 +390,84 @@ impl Aggregate for Credential { .await .unwrap(); + let mut credential = self.data.as_ref().ok_or(MissingCredentialDataError)?.clone(); + + #[cfg(feature = "test_utils")] + let iat = 1262304000; // 2010-01-01T00:00:00Z + #[cfg(not(feature = "test_utils"))] + let iat = credential.raw["issuanceDate"] + .as_str() + .unwrap() + .parse::>() + .unwrap() + .timestamp(); + + let exp = credential.raw["expirationDate"].as_str().map(|expiration_date| { + expiration_date + .parse::>() + .expect("Could not parse `expirationDate` to DateTime") + .timestamp() + }); + let signed_credential = if let CredentialFormats::DcSdJwt(Parameters:: { parameters: DcSdJwtParameters { .. }, }) = &self.credential_configuration.credential_format { let issuer = &services.issuer; - let mut data = self.data.clone().unwrap().raw; + let algorithm = get_preferred_signing_algorithm(); - let alg = match get_preferred_signing_algorithm() { - jsonwebtoken::Algorithm::ES256 => "ES256", - jsonwebtoken::Algorithm::EdDSA => "EdDSA", - _ => { - todo!() - } - }; + let alg = algorithm.as_str(); - let proof = if let Some(Proof::Jwt { jwt: proof }) = proof { - proof - } else { - // FIXME - todo!() - }; + let holder_kid = proof.and_then(|proof| { + let Proof::Jwt { jwt: proof } = proof; + jsonwebtoken::decode_header(&proof).ok().and_then(|header| header.kid) + }); - let holder_kid = jsonwebtoken::decode_header(&proof).unwrap().kid.unwrap(); + let mut sd_jwt_vc_claims: SdJwtVcClaims = + serde_json::from_value(credential.raw).map_err(|e| BuildCredentialError(e.to_string()))?; + sd_jwt_vc_claims.iss = issuer_did.parse().ok(); + sd_jwt_vc_claims.status = serde_json::from_value(serde_json::json!({ + "status_list": { + "idx": self.credential_status.index, + "uri": get_status_list_url(self.credential_status.index)?, + } + })) + .ok(); + sd_jwt_vc_claims.iat = Timestamp::from_unix(iat).ok(); + sd_jwt_vc_claims.nbf = Timestamp::from_unix(iat).ok(); + sd_jwt_vc_claims.exp = exp.and_then(|exp| Timestamp::from_unix(exp).ok()); let kid = issuer - .key_id( - &get_preferred_did_method().to_string(), - get_preferred_signing_algorithm(), - ) + .key_id(&get_preferred_did_method().to_string(), algorithm) .await .unwrap(); - let paths = data - .clone() - .as_object() - .unwrap() - .keys() - .cloned() - .collect::>(); - - data["iss"] = json!(issuer_did); + let paths = sd_jwt_vc_claims.keys().cloned().collect::>(); - data["status"] = json!({ - "status_list": { - "idx": self.credential_status.index, - "uri": get_status_list_url(self.credential_status.index)?, - } - }); - - let mut builder = SdJwtBuilder::new(data) + let mut builder = SdJwtBuilder::new(sd_jwt_vc_claims) .unwrap() - // Narrow the type to VC SD-JWT as per the spec. .header("typ", "dc+sd-jwt") - // Set the issuer's verification method as the `kid` so that the verifiers can identify the correct key. - .header("kid", kid) - .require_key_binding(RequiredKeyBinding::Kid(holder_kid)); + .header("kid", kid); + + if let Some(holder_kid) = holder_kid.clone() { + builder = builder.require_key_binding(RequiredKeyBinding::Kid(holder_kid)); + } + // By default, all custom claims are concealable. for path in paths { - if path != "vct" { - builder = builder.make_concealable(&format!("/{}", path)).unwrap(); - } + builder = builder.make_concealable(&format!("/{}", path)).map_err(|e| { + BuildCredentialError(format!("Failed to make claim at path `/{}` concealable: {}", path, e)) + })?; } - let sd_jwt_credential = builder.finish(&**issuer, alg).await.unwrap(); + let sd_jwt_credential = builder + .finish(&**issuer, alg) + .await + .map_err(|e| BuildCredentialError(format!("Failed to build SD-JWT credential: {}", e)))?; serde_json::json!(sd_jwt_credential.to_string()) } else { - let mut credential = self.data.as_ref().ok_or(MissingCredentialDataError)?.clone(); - if let Some(ref id) = id { credential.raw["id"] = json!(id); }; @@ -486,23 +497,6 @@ impl Aggregate for Credential { info!("Credential: {:?}", credential); - #[cfg(feature = "test_utils")] - let iat = 1262304000; // 2010-01-01T00:00:00Z - #[cfg(not(feature = "test_utils"))] - let iat = credential.raw["issuanceDate"] - .as_str() - .unwrap() - .parse::>() - .unwrap() - .timestamp(); - - let exp = credential.raw["expirationDate"].as_str().map(|expiration_date| { - expiration_date - .parse::>() - .expect("Could not parse `expirationDate` to DateTime") - .timestamp() - }); - // Add standard claims let mut vc_jwt_builder = VerifiableCredentialJwt::builder().iss(issuer_did).iat(iat).nbf(iat); // TODO: setting the `nbf` to `iat` makes the JWT immediately usable @@ -525,14 +519,14 @@ impl Aggregate for Credential { let vc_jwt_built = vc_jwt_builder .verifiable_credential(credential.raw) .build() - .map_err(|e| CredentialError::BuildVcJwtError(e.to_string()))?; + .map_err(|e| CredentialError::BuildCredentialError(e.to_string()))?; let mut vc_jwt_value = serde_json::to_value(&vc_jwt_built) - .map_err(|e| CredentialError::BuildVcJwtError(e.to_string()))?; + .map_err(|e| CredentialError::BuildCredentialError(e.to_string()))?; let mut vc_jwt_object = vc_jwt_value .as_object_mut() - .ok_or(CredentialError::BuildVcJwtError( + .ok_or(CredentialError::BuildCredentialError( "Failed to convert VC JWT to mutable JSON object".to_string(), ))? .clone(); diff --git a/agent_issuance/src/credential/error.rs b/agent_issuance/src/credential/error.rs index d9af1da2a..95d7ba76a 100644 --- a/agent_issuance/src/credential/error.rs +++ b/agent_issuance/src/credential/error.rs @@ -18,6 +18,6 @@ pub enum CredentialError { InvalidExpirationDateError, #[error("Unable to create the `credentialStatus`")] InvalidCredentialStatus, - #[error("Failed to create the VC JWT: {0}")] - BuildVcJwtError(String), + #[error("Failed to create the credential: {0}")] + BuildCredentialError(String), } diff --git a/agent_issuance/src/server_config/aggregate.rs b/agent_issuance/src/server_config/aggregate.rs index 9da8f0d6c..e02499436 100644 --- a/agent_issuance/src/server_config/aggregate.rs +++ b/agent_issuance/src/server_config/aggregate.rs @@ -198,7 +198,12 @@ impl Aggregate for ServerConfig { parameters: (vct).into(), }) } - _ => todo!(), + _ => { + return Err(UnsupportedCredentialFormatIdentifierError(format!( + "{:?}", + credential_configuration.format + ))) + } }; let proof_types_supported = into_proof_types_supported(&self.signing_algorithms_supported); diff --git a/agent_issuance/src/server_config/error.rs b/agent_issuance/src/server_config/error.rs index d8f5a9e51..1b99b7262 100644 --- a/agent_issuance/src/server_config/error.rs +++ b/agent_issuance/src/server_config/error.rs @@ -6,4 +6,6 @@ pub enum ServerConfigError { UpdateProvisionedCredentialConfigurationError, #[error("Cannot remove provisioned credential configuration during runtime")] RemoveProvisionedCredentialConfigurationError, + #[error("Unsupported credential format identifier: `{0}`")] + UnsupportedCredentialFormatIdentifierError(String), } diff --git a/agent_secret_manager/src/subject.rs b/agent_secret_manager/src/subject.rs index d97df98e6..87f18763b 100644 --- a/agent_secret_manager/src/subject.rs +++ b/agent_secret_manager/src/subject.rs @@ -1,5 +1,5 @@ use crate::stronghold_storage; -use agent_shared::config::{config, get_preferred_did_method, SupportedDidMethod}; +use agent_shared::config::{config, get_preferred_did_method, get_preferred_signing_algorithm, SupportedDidMethod}; use anyhow::anyhow; use async_trait::async_trait; use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; @@ -105,19 +105,28 @@ impl Subject { impl JwsSigner for Subject { type Error = String; - // FIX THIS: jwt::encode? async fn sign(&self, header: &JsonObject, payload: &JsonObject) -> Result, Self::Error> { - let encoded_header = URL_SAFE_NO_PAD.encode(serde_json::to_vec(header).unwrap()); - let encoded_payload = URL_SAFE_NO_PAD.encode(serde_json::to_vec(payload).unwrap()); + let algorithm = header + .get("alg") + .and_then(|alg| alg.as_str()) + .and_then(|alg_str| Algorithm::from_str(alg_str).ok()) + .unwrap_or_else(get_preferred_signing_algorithm); + + let encoded_header = serde_json::to_vec(header) + .map_err(|e| format!("Failed to serialize header to JSON: {}", e)) + .map(|header_bytes| URL_SAFE_NO_PAD.encode(&header_bytes))?; + + let encoded_payload = serde_json::to_vec(payload) + .map_err(|e| format!("Failed to serialize payload to JSON: {}", e)) + .map(|payload_bytes| URL_SAFE_NO_PAD.encode(&payload_bytes))?; let message = format!("{}.{}", encoded_header, encoded_payload); let preferred_did_method = get_preferred_did_method(); - // FIXME!!! - let proof_value = Sign::sign(self, &message, &preferred_did_method.to_string(), Algorithm::EdDSA) + let proof_value = Sign::sign(self, &message, &preferred_did_method.to_string(), algorithm) .await - .unwrap(); + .map_err(|e| format!("Signing error: {}", e))?; let signature = URL_SAFE_NO_PAD.encode(proof_value.as_slice()); let message = [message, signature].join("."); diff --git a/agent_shared/src/config/mod.rs b/agent_shared/src/config/mod.rs index a0e422329..c583c9793 100644 --- a/agent_shared/src/config/mod.rs +++ b/agent_shared/src/config/mod.rs @@ -517,6 +517,7 @@ pub struct CredentialConfiguration { pub credential_configuration_id: String, #[serde(flatten)] pub format: CredentialFormats, + // The `type` field is only used when `format` is `jwt_vc_json`. #[serde(default, rename = "type")] pub type_: Vec, #[serde(default)] @@ -959,6 +960,30 @@ pub fn get_preferred_signing_algorithm() -> jsonwebtoken::Algorithm { .expect("Please set a signing algorithm as `preferred` in the configuration") } +/// Extension trait for `jsonwebtoken::Algorithm` to provide a method to get the string representation. +pub trait AlgorithmExt { + fn as_str(&self) -> &str; +} + +impl AlgorithmExt for jsonwebtoken::Algorithm { + fn as_str(&self) -> &str { + match self { + jsonwebtoken::Algorithm::HS256 => "HS256", + jsonwebtoken::Algorithm::HS384 => "HS384", + jsonwebtoken::Algorithm::HS512 => "HS512", + jsonwebtoken::Algorithm::RS256 => "RS256", + jsonwebtoken::Algorithm::RS384 => "RS384", + jsonwebtoken::Algorithm::RS512 => "RS512", + jsonwebtoken::Algorithm::ES256 => "ES256", + jsonwebtoken::Algorithm::ES384 => "ES384", + jsonwebtoken::Algorithm::PS256 => "PS256", + jsonwebtoken::Algorithm::PS384 => "PS384", + jsonwebtoken::Algorithm::PS512 => "PS512", + jsonwebtoken::Algorithm::EdDSA => "EdDSA", + } + } +} + /// Serializes the passed `String` into the value `""` to prevent leaking secrets. pub(crate) fn redact(_str: &T, serializer: S) -> Result where diff --git a/agent_shared/tests/test_credential_configurations.json b/agent_shared/tests/test_credential_configurations.json index cbc8d56e1..c55341c36 100644 --- a/agent_shared/tests/test_credential_configurations.json +++ b/agent_shared/tests/test_credential_configurations.json @@ -2,9 +2,7 @@ { "credential_configuration_id": "001", "format": "jwt_vc_json", - "credential_definition": { - "type": ["VerifiableCredential"] - }, + "type": ["VerifiableCredential"], "display": [ { "name": "Verifiable Credential", @@ -22,9 +20,7 @@ { "credential_configuration_id": "002", "format": "jwt_vc_json", - "credential_definition": { - "type": ["VerifiableCredential"] - }, + "type": ["VerifiableCredential"], "display": [ { "name": "Verifiable Credential", diff --git a/docs/problem-details/issuance.md b/docs/problem-details/issuance.md index 4259c9d61..4f64b524a 100644 --- a/docs/problem-details/issuance.md +++ b/docs/problem-details/issuance.md @@ -211,3 +211,11 @@ This error is returned when there is an attempt to remove a provisioned credenti ### Resolution Provisioned credential configurations cannot be removed at runtime. To remove a configuration, update your server's configuration files and restart the service. + +## Unsupported Credential Format Identifier Error + +This error occurs when the `format` specified in a credential configuration is not supported by UniCore. This typically happens when the format does not match any of the recognized credential formats. + +### Resolution + +Ensure that the `format` field in the credential configuration is set to a supported value. Supported values include: `jwt_vc_json` and `dc+sd-jwt`. From c4438f49aa8bf3779b5cdd8ab6b4d3dc01c804e6 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Fri, 30 Jan 2026 14:53:24 +0100 Subject: [PATCH 05/35] feat: update dependencies to use specific revisions for did-manager and identity crates --- Cargo.lock | 48 +++++---- Cargo.toml | 30 +++--- agent_issuance/src/credential/aggregate.rs | 116 +++++++++++++++------ agent_secret_manager/Cargo.toml | 9 +- 4 files changed, 129 insertions(+), 74 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 815b0fd1f..de6c9c643 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2402,6 +2402,7 @@ checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "consumer" version = "0.1.0" +source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" dependencies = [ "did_iota", "did_jwk", @@ -3160,6 +3161,7 @@ dependencies = [ [[package]] name = "did_iota" version = "0.1.0" +source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" dependencies = [ "anyhow", "identity_iota", @@ -3174,6 +3176,7 @@ dependencies = [ [[package]] name = "did_jwk" version = "0.1.0" +source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" dependencies = [ "did-jwk", "identity_iota", @@ -3190,6 +3193,7 @@ dependencies = [ [[package]] name = "did_key" version = "0.1.0" +source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" dependencies = [ "did-method-key", "identity_iota", @@ -3236,6 +3240,7 @@ dependencies = [ [[package]] name = "did_web" version = "0.1.0" +source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" dependencies = [ "did-web", "identity_iota", @@ -4965,7 +4970,7 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "identity_core" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "deranged", "js-sys", @@ -4983,7 +4988,7 @@ dependencies = [ [[package]] name = "identity_credential" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "anyhow", "async-trait", @@ -5011,7 +5016,7 @@ dependencies = [ [[package]] name = "identity_did" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "did_url_parser 0.3.0", "form_urlencoded", @@ -5025,7 +5030,7 @@ dependencies = [ [[package]] name = "identity_document" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "did_url_parser 0.2.0", "identity_core", @@ -5040,7 +5045,7 @@ dependencies = [ [[package]] name = "identity_eddsa_verifier" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "identity_jose", "iota-crypto", @@ -5049,7 +5054,7 @@ dependencies = [ [[package]] name = "identity_iota" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "identity_core", "identity_credential", @@ -5065,7 +5070,7 @@ dependencies = [ [[package]] name = "identity_iota_core" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "anyhow", "async-stream", @@ -5110,7 +5115,7 @@ dependencies = [ [[package]] name = "identity_jose" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "anyhow", "bls12_381_plus 0.8.18", @@ -5130,7 +5135,7 @@ dependencies = [ [[package]] name = "identity_resolver" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "async-trait", "futures", @@ -5147,7 +5152,7 @@ dependencies = [ [[package]] name = "identity_storage" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "anyhow", "async-trait", @@ -5175,7 +5180,7 @@ dependencies = [ [[package]] name = "identity_stronghold" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "async-trait", "identity_storage", @@ -5191,6 +5196,7 @@ dependencies = [ [[package]] name = "identity_stronghold_ext" version = "0.1.0" +source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" dependencies = [ "async-trait", "elliptic-curve 0.13.8", @@ -5210,7 +5216,7 @@ dependencies = [ [[package]] name = "identity_verification" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?branch=feat/sd-jwt-dm-v2#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "identity_core", "identity_did", @@ -8380,6 +8386,7 @@ dependencies = [ [[package]] name = "oid4vc-core" version = "0.1.0" +source = "git+https://github.com/impierce/openid4vc?rev=31783fd#31783fd5d5c2804c3f0f2051186c1d95b904d0cb" dependencies = [ "anyhow", "async-trait", @@ -8404,6 +8411,7 @@ dependencies = [ [[package]] name = "oid4vc-manager" version = "0.1.0" +source = "git+https://github.com/impierce/openid4vc?rev=31783fd#31783fd5d5c2804c3f0f2051186c1d95b904d0cb" dependencies = [ "anyhow", "async-trait", @@ -8436,6 +8444,7 @@ dependencies = [ [[package]] name = "oid4vci" version = "0.1.0" +source = "git+https://github.com/impierce/openid4vc?rev=31783fd#31783fd5d5c2804c3f0f2051186c1d95b904d0cb" dependencies = [ "anyhow", "chrono", @@ -8463,6 +8472,7 @@ dependencies = [ [[package]] name = "oid4vp" version = "0.1.0" +source = "git+https://github.com/impierce/openid4vc?rev=31783fd#31783fd5d5c2804c3f0f2051186c1d95b904d0cb" dependencies = [ "anyhow", "chrono", @@ -11146,6 +11156,7 @@ dependencies = [ [[package]] name = "shared" version = "0.1.0" +source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" dependencies = [ "identity_iota", "identity_storage", @@ -11251,6 +11262,7 @@ dependencies = [ [[package]] name = "siopv2" version = "0.1.0" +source = "git+https://github.com/impierce/openid4vc?rev=31783fd#31783fd5d5c2804c3f0f2051186c1d95b904d0cb" dependencies = [ "anyhow", "async-trait", @@ -12602,9 +12614,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tonic" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" +checksum = "a286e33f82f8a1ee2df63f4fa35c0becf4a85a0cb03091a15fd7bf0b402dc94a" dependencies = [ "async-trait", "axum 0.8.3", @@ -12632,9 +12644,9 @@ dependencies = [ [[package]] name = "tonic-health" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a82868bf299e0a1d2e8dce0dc33a46c02d6f045b2c1f1d6cc8dc3d0bf1812ef" +checksum = "8dbde2c702c4be12b9b2f6f7e6c824a84a7b7be177070cada8ee575a581af359" dependencies = [ "prost", "tokio", @@ -12645,9 +12657,9 @@ dependencies = [ [[package]] name = "tonic-prost" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" +checksum = "d6c55a2d6a14174563de34409c9f92ff981d006f56da9c6ecd40d9d4a31500b0" dependencies = [ "bytes", "prost", diff --git a/Cargo.toml b/Cargo.toml index 85a45f3fb..0434f55cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,17 +23,11 @@ edition = "2021" rust-version = "1.76.0" [workspace.dependencies] -# siopv2 = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } -# oid4vci = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } -# oid4vc-core = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } -# oid4vc-manager = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } -# oid4vp = { git = "https://github.com/impierce/openid4vc", rev = "61fd882" } - -siopv2 = { path = "../openid4vc/siopv2" } -oid4vci = { path = "../openid4vc/oid4vci" } -oid4vc-core = { path = "../openid4vc/oid4vc-core" } -oid4vc-manager = { path = "../openid4vc/oid4vc-manager" } -oid4vp = { path = "../openid4vc/oid4vp" } +siopv2 = { git = "https://github.com/impierce/openid4vc", rev = "31783fd" } +oid4vci = { git = "https://github.com/impierce/openid4vc", rev = "31783fd" } +oid4vc-core = { git = "https://github.com/impierce/openid4vc", rev = "31783fd" } +oid4vc-manager = { git = "https://github.com/impierce/openid4vc", rev = "31783fd" } +oid4vp = { git = "https://github.com/impierce/openid4vc", rev = "31783fd" } anyhow = "1.0" async-std = { version = "1.5", features = ["attributes", "tokio1"] } @@ -44,19 +38,19 @@ chrono = { version = "0.4", features = ["serde"] } cqrs-es = "0.4.12" derivative = "2.2" futures = "0.3" -identity_core = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2" } -identity_credential = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2", default-features = false, features = [ +identity_core = { git = "https://github.com/iotaledger/identity", rev = "88ea775" } +identity_credential = { git = "https://github.com/iotaledger/identity", rev = "88ea775", default-features = false, features = [ "credential", "domain-linkage", "presentation", "sd-jwt-vc", "validator", ] } -identity_did = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2" } -identity_document = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2" } -identity_iota = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2" } -identity_storage = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2" } -identity_verification = { git = "https://github.com/iotaledger/identity", branch = "feat/sd-jwt-dm-v2", default-features = false } +identity_did = { git = "https://github.com/iotaledger/identity", rev = "88ea775" } +identity_document = { git = "https://github.com/iotaledger/identity", rev = "88ea775" } +identity_iota = { git = "https://github.com/iotaledger/identity", rev = "88ea775" } +identity_storage = { git = "https://github.com/iotaledger/identity", rev = "88ea775" } +identity_verification = { git = "https://github.com/iotaledger/identity", rev = "88ea775", default-features = false } iota-sdk = { git = "https://github.com/iotaledger/iota", package = "iota-sdk", tag = "v1.13.1" } # TODO: Check if this is still needed. iota-sdk-legacy = { version = "1.0", package = "iota-sdk", default-features = false, features = [ diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index 38f6c9998..e39acca0a 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -14,7 +14,7 @@ use identity_core::convert::FromJson; use identity_credential::credential::{ Credential as W3CVerifiableCredential, CredentialBuilder as W3CVerifiableCredentialBuilder, Issuer, }; -use identity_credential::sd_jwt_vc::SdJwtVcClaims; +use identity_credential::sd_jwt_vc::{SdJwtVcBuilder, SdJwtVcClaims}; use jsonwebtoken::Header; use oauth_tsl::status_list::StatusType; use oauth_tsl::tokens::status_list_token::StatusListTyp; @@ -331,6 +331,30 @@ impl Aggregate for Credential { let mut raw = data.raw; raw["vct"] = json!(vct); + // #[cfg(feature = "test_utils")] + // let issuance_date = "2010-01-01T00:00:00Z".to_string(); + // #[cfg(not(feature = "test_utils"))] + // let issuance_date = chrono::Utc::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, true); + + // let issuance_date = identity_core::common::Timestamp::parse(&issuance_date) + // .expect("Could not parse issuance_date"); + + // let expiration_date = match expires_at { + // CredentialExpiry::Fixed(fixed) => { + // let fixed = identity_core::common::Timestamp::from_unix(fixed.timestamp()) + // .map_err(|_| InvalidExpirationDateError)?; + + // Some(fixed) + // } + // CredentialExpiry::Never => None, + // }; + + // raw["iat"] = json!(issuance_date.to_unix()); + // raw["nbf"] = json!(issuance_date.to_unix()); + // if let Some(expiration_date) = expiration_date { + // raw["exp"] = json!(expiration_date); + // } + let credential_status = CredentialStatus { index: credential_status_index, status: StatusType::VALID, @@ -392,23 +416,6 @@ impl Aggregate for Credential { let mut credential = self.data.as_ref().ok_or(MissingCredentialDataError)?.clone(); - #[cfg(feature = "test_utils")] - let iat = 1262304000; // 2010-01-01T00:00:00Z - #[cfg(not(feature = "test_utils"))] - let iat = credential.raw["issuanceDate"] - .as_str() - .unwrap() - .parse::>() - .unwrap() - .timestamp(); - - let exp = credential.raw["expirationDate"].as_str().map(|expiration_date| { - expiration_date - .parse::>() - .expect("Could not parse `expirationDate` to DateTime") - .timestamp() - }); - let signed_credential = if let CredentialFormats::DcSdJwt(Parameters:: { parameters: DcSdJwtParameters { .. }, }) = &self.credential_configuration.credential_format @@ -424,32 +431,60 @@ impl Aggregate for Credential { jsonwebtoken::decode_header(&proof).ok().and_then(|header| header.kid) }); - let mut sd_jwt_vc_claims: SdJwtVcClaims = - serde_json::from_value(credential.raw).map_err(|e| BuildCredentialError(e.to_string()))?; - sd_jwt_vc_claims.iss = issuer_did.parse().ok(); - sd_jwt_vc_claims.status = serde_json::from_value(serde_json::json!({ - "status_list": { - "idx": self.credential_status.index, - "uri": get_status_list_url(self.credential_status.index)?, - } - })) - .ok(); - sd_jwt_vc_claims.iat = Timestamp::from_unix(iat).ok(); - sd_jwt_vc_claims.nbf = Timestamp::from_unix(iat).ok(); - sd_jwt_vc_claims.exp = exp.and_then(|exp| Timestamp::from_unix(exp).ok()); + println!("{}", serde_json::to_string_pretty(&credential.raw).unwrap()); + + #[cfg(feature = "test_utils")] + let issuance_date = "2010-01-01T00:00:00Z".to_string(); + #[cfg(not(feature = "test_utils"))] + let issuance_date = chrono::Utc::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, true); + + let issuance_date = + identity_core::common::Timestamp::parse(&issuance_date).expect("Could not parse issuance_date"); + + // let expiration_date = match expires_at { + // CredentialExpiry::Fixed(fixed) => { + // let fixed = identity_core::common::Timestamp::from_unix(fixed.timestamp()) + // .map_err(|_| InvalidExpirationDateError)?; + + // Some(fixed) + // } + // CredentialExpiry::Never => None, + // }; + + // raw["iat"] = json!(issuance_date.to_unix()); + // raw["nbf"] = json!(issuance_date.to_unix()); + // if let Some(expiration_date) = expiration_date { + // raw["exp"] = json!(expiration_date); + // } let kid = issuer .key_id(&get_preferred_did_method().to_string(), algorithm) .await .unwrap(); + let sd_jwt_vc_claims = SdJwtVcClaims::from_json_value(credential.raw.clone()) + .map_err(|e| BuildCredentialError(format!("Failed to extract SD-JWT VC claims: {}", e)))?; + let paths = sd_jwt_vc_claims.keys().cloned().collect::>(); - let mut builder = SdJwtBuilder::new(sd_jwt_vc_claims) + let mut builder = SdJwtVcBuilder::new(credential.raw.clone()) .unwrap() .header("typ", "dc+sd-jwt") .header("kid", kid); + builder = builder.iss(issuer_did.parse().unwrap()); + builder = builder.status( + serde_json::from_value(serde_json::json!({ + "status_list": { + "idx": self.credential_status.index, + "uri": get_status_list_url(self.credential_status.index)?, + } + })) + .unwrap(), + ); + builder = builder.iat(issuance_date); + builder = builder.nbf(issuance_date); + if let Some(holder_kid) = holder_kid.clone() { builder = builder.require_key_binding(RequiredKeyBinding::Kid(holder_kid)); } @@ -472,6 +507,23 @@ impl Aggregate for Credential { credential.raw["id"] = json!(id); }; + #[cfg(feature = "test_utils")] + let iat = 1262304000; // 2010-01-01T00:00:00Z + #[cfg(not(feature = "test_utils"))] + let iat = credential.raw["issuanceDate"] + .as_str() + .unwrap() + .parse::>() + .unwrap() + .timestamp(); + + let exp = credential.raw["expirationDate"].as_str().map(|expiration_date| { + expiration_date + .parse::>() + .expect("Could not parse `expirationDate` to DateTime") + .timestamp() + }); + credential.raw["issuer"] = json!(issuer_did); let credential_subject = credential.raw["credentialSubject"].as_object().unwrap().clone(); diff --git a/agent_secret_manager/Cargo.toml b/agent_secret_manager/Cargo.toml index 41e63eaa9..2b01af93e 100644 --- a/agent_secret_manager/Cargo.toml +++ b/agent_secret_manager/Cargo.toml @@ -13,12 +13,9 @@ agent_shared = { path = "../agent_shared" } # - All components of the `identity_stronghold_ext` module are still active. # # Future work: Migrate the remaining functionality into UniCore. -# did_manager_consumer = { git = "https://github.com/impierce/did-manager", tag = "v1.0.0-beta.7", package = "consumer" } -# did_manager_identity_stronghold_ext = { git = "https://github.com/impierce/did-manager", tag = "v1.0.0-beta.7", package = "identity_stronghold_ext" } -# did_manager_iota = { git = "https://github.com/impierce/did-manager", tag = "v1.0.0-beta.7", package = "did_iota" } -did_manager_consumer = { path = "../../did-manager/consumer", package = "consumer" } -did_manager_identity_stronghold_ext = { path = "../../did-manager/identity_stronghold_ext", package = "identity_stronghold_ext" } -did_manager_iota = { path = "../../did-manager/did_iota", package = "did_iota" } +did_manager_consumer = { git = "https://github.com/impierce/did-manager", rev = "03a2aa4", package = "consumer" } +did_manager_identity_stronghold_ext = { git = "https://github.com/impierce/did-manager", rev = "03a2aa4", package = "identity_stronghold_ext" } +did_manager_iota = { git = "https://github.com/impierce/did-manager", rev = "03a2aa4", package = "did_iota" } anyhow.workspace = true async-trait.workspace = true From b3eb34160de8fdb20eaef701f8bb8a55a9e87972 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Sat, 31 Jan 2026 20:34:02 +0100 Subject: [PATCH 06/35] feat: add issuance and expiration dates to Credential events and views --- agent_issuance/src/credential/aggregate.rs | 184 ++++++++++++--------- agent_issuance/src/credential/event.rs | 3 + agent_issuance/src/credential/views/mod.rs | 4 + 3 files changed, 110 insertions(+), 81 deletions(-) diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index e39acca0a..81c081d3d 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -27,7 +27,7 @@ use oid4vci::credential_format_profiles::{CredentialFormats, Parameters}; use oid4vci::credential_issuer::credential_configurations_supported::CredentialConfigurationsSupportedObject; use oid4vci::notification_request::NotificationRequest; use oid4vci::{Proof, VerifiableCredentialJwt}; -use sd_jwt::{RequiredKeyBinding, SdJwtBuilder}; +use sd_jwt::RequiredKeyBinding; use serde::{Deserialize, Serialize}; use serde_json::json; use std::sync::Arc; @@ -93,6 +93,8 @@ pub struct Credential { pub status: Status, pub holder_notifications: Vec, pub credential_status: CredentialStatus, + pub issuance_date: Option, + pub expiration_date: Option, } #[async_trait] @@ -121,6 +123,24 @@ impl Aggregate for Credential { expires_at, credential_status_index, } => { + #[cfg(feature = "test_utils")] + let issuance_date = "2010-01-01T00:00:00Z".to_string(); + #[cfg(not(feature = "test_utils"))] + let issuance_date = chrono::Utc::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, true); + + let issuance_date = + identity_core::common::Timestamp::parse(&issuance_date).expect("Could not parse issuance_date"); + + let expiration_date = match expires_at { + CredentialExpiry::Fixed(fixed) => { + let fixed = identity_core::common::Timestamp::from_unix(fixed.timestamp()) + .map_err(|_| InvalidExpirationDateError)?; + + Some(fixed) + } + CredentialExpiry::Never => None, + }; + #[cfg(feature = "test_utils")] let notification_id = test_utils::notification_id(); #[cfg(not(feature = "test_utils"))] @@ -134,11 +154,6 @@ impl Aggregate for Credential { .. }, }) => { - #[cfg(feature = "test_utils")] - let issuance_date = "2010-01-01T00:00:00Z".to_string(); - #[cfg(not(feature = "test_utils"))] - let issuance_date = chrono::Utc::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, true); - let name = config() .display .first() @@ -153,19 +168,6 @@ impl Aggregate for Credential { .try_into() .expect("Could not build issuer profile"); - let issuance_date = identity_core::common::Timestamp::parse(&issuance_date) - .expect("Could not parse issuance_date"); - - let expiration_date = match expires_at { - CredentialExpiry::Fixed(fixed) => { - let fixed = identity_core::common::Timestamp::from_unix(fixed.timestamp()) - .map_err(|_| InvalidExpirationDateError)?; - - Some(fixed) - } - CredentialExpiry::Never => None, - }; - let mut credential_types: Vec = type_.clone(); let id = data @@ -246,6 +248,8 @@ impl Aggregate for Credential { credential_configuration, notification_id: Some(notification_id), credential_status, + issuance_date: Some(issuance_date), + expiration_date, }]); } "AchievementCredential" | "OpenBadgeCredential" => { @@ -316,6 +320,8 @@ impl Aggregate for Credential { data: Data { raw }, credential_configuration, credential_status, + issuance_date: Some(issuance_date), + expiration_date, }]); } _ => continue, @@ -327,34 +333,9 @@ impl Aggregate for Credential { CredentialFormats::DcSdJwt(Parameters:: { parameters: DcSdJwtParameters { vct }, }) => { - // FIXME: Properly construct SD-JWT unsigned credential let mut raw = data.raw; raw["vct"] = json!(vct); - // #[cfg(feature = "test_utils")] - // let issuance_date = "2010-01-01T00:00:00Z".to_string(); - // #[cfg(not(feature = "test_utils"))] - // let issuance_date = chrono::Utc::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, true); - - // let issuance_date = identity_core::common::Timestamp::parse(&issuance_date) - // .expect("Could not parse issuance_date"); - - // let expiration_date = match expires_at { - // CredentialExpiry::Fixed(fixed) => { - // let fixed = identity_core::common::Timestamp::from_unix(fixed.timestamp()) - // .map_err(|_| InvalidExpirationDateError)?; - - // Some(fixed) - // } - // CredentialExpiry::Never => None, - // }; - - // raw["iat"] = json!(issuance_date.to_unix()); - // raw["nbf"] = json!(issuance_date.to_unix()); - // if let Some(expiration_date) = expiration_date { - // raw["exp"] = json!(expiration_date); - // } - let credential_status = CredentialStatus { index: credential_status_index, status: StatusType::VALID, @@ -366,6 +347,8 @@ impl Aggregate for Credential { data: Data { raw }, credential_configuration, credential_status, + issuance_date: Some(issuance_date), + expiration_date, }]); } _ => Err(UnsupportedCredentialFormat(serde_json::json!( @@ -431,32 +414,6 @@ impl Aggregate for Credential { jsonwebtoken::decode_header(&proof).ok().and_then(|header| header.kid) }); - println!("{}", serde_json::to_string_pretty(&credential.raw).unwrap()); - - #[cfg(feature = "test_utils")] - let issuance_date = "2010-01-01T00:00:00Z".to_string(); - #[cfg(not(feature = "test_utils"))] - let issuance_date = chrono::Utc::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, true); - - let issuance_date = - identity_core::common::Timestamp::parse(&issuance_date).expect("Could not parse issuance_date"); - - // let expiration_date = match expires_at { - // CredentialExpiry::Fixed(fixed) => { - // let fixed = identity_core::common::Timestamp::from_unix(fixed.timestamp()) - // .map_err(|_| InvalidExpirationDateError)?; - - // Some(fixed) - // } - // CredentialExpiry::Never => None, - // }; - - // raw["iat"] = json!(issuance_date.to_unix()); - // raw["nbf"] = json!(issuance_date.to_unix()); - // if let Some(expiration_date) = expiration_date { - // raw["exp"] = json!(expiration_date); - // } - let kid = issuer .key_id(&get_preferred_did_method().to_string(), algorithm) .await @@ -482,13 +439,20 @@ impl Aggregate for Credential { })) .unwrap(), ); - builder = builder.iat(issuance_date); - builder = builder.nbf(issuance_date); if let Some(holder_kid) = holder_kid.clone() { builder = builder.require_key_binding(RequiredKeyBinding::Kid(holder_kid)); } + if let Some(issuance_date) = self.issuance_date { + builder = builder.iat(issuance_date); + builder = builder.nbf(issuance_date); + } + + if let Some(expiration_date) = self.expiration_date { + builder = builder.exp(expiration_date); + } + // By default, all custom claims are concealable. for path in paths { builder = builder.make_concealable(&format!("/{}", path)).map_err(|e| { @@ -638,12 +602,16 @@ impl Aggregate for Credential { credential_configuration, notification_id, credential_status, + issuance_date, + expiration_date, } => { self.credential_id = credential_id; self.data.replace(data); self.credential_configuration = *credential_configuration; self.notification_id = notification_id; self.credential_status = credential_status; + self.issuance_date = issuance_date; + self.expiration_date = expiration_date; } SignedCredentialCreated { credential_id, @@ -717,15 +685,20 @@ pub mod credential_tests { type CredentialTestFramework = TestFramework; #[rstest] - #[case::openbadges( - OPENBADGE_CREDENTIAL_SUBJECT.clone(), - OPENBADGE_CREDENTIAL_CONFIGURATION.clone(), - UNSIGNED_OPENBADGE_CREDENTIAL.clone() - )] - #[case::w3c_vc( - W3C_VC_CREDENTIAL_SUBJECT.clone(), - W3C_VC_CREDENTIAL_CONFIGURATION.clone(), - UNSIGNED_W3C_VC_CREDENTIAL.clone() + // #[case::openbadges( + // OPENBADGE_CREDENTIAL_SUBJECT.clone(), + // OPENBADGE_CREDENTIAL_CONFIGURATION.clone(), + // UNSIGNED_OPENBADGE_CREDENTIAL.clone() + // )] + // #[case::w3c_vc( + // W3C_VC_CREDENTIAL_SUBJECT.clone(), + // W3C_VC_CREDENTIAL_CONFIGURATION.clone(), + // UNSIGNED_W3C_VC_CREDENTIAL.clone() + // )] + #[case::dc_sd_jwt( + DC_SD_JWT_CREDENTIAL_SUBJECT.clone(), + DC_SD_JWT_CREDENTIAL_CONFIGURATION.clone(), + UNSIGNED_DC_SD_JWT_CREDENTIAL.clone() )] #[serial_test::serial] async fn test_create_unsigned_credential( @@ -734,6 +707,7 @@ pub mod credential_tests { #[case] unsigned_credential: serde_json::Value, credential_id: String, notification_id: String, + issuance_date: identity_core::common::Timestamp, ) { CredentialTestFramework::with(IssuanceServices::default().await) .given_no_previous_events() @@ -757,6 +731,8 @@ pub mod credential_tests { index: 0, status: StatusType::VALID, }, + issuance_date: Some(issuance_date), + expiration_date: None, }]) } @@ -778,6 +754,7 @@ pub mod credential_tests { #[case] credential_configuration: CredentialConfigurationsSupportedObject, #[case] verifiable_credential_jwt: String, credential_id: String, + issuance_date: identity_core::common::Timestamp, ) { CredentialTestFramework::with(IssuanceServices::default().await) .given(vec![CredentialEvent::UnsignedCredentialCreated { @@ -791,6 +768,8 @@ pub mod credential_tests { index: 0, status: StatusType::VALID, }, + issuance_date: Some(issuance_date), + expiration_date: None, }]) .when(CredentialCommand::SignCredential { credential_id: credential_id.clone(), @@ -839,6 +818,11 @@ pub mod test_utils { "notification_id".to_string() } + #[fixture] + pub fn issuance_date() -> identity_core::common::Timestamp { + identity_core::common::Timestamp::parse("2010-01-01T00:00:00Z").unwrap() + } + pub const OPENBADGE_VERIFIABLE_CREDENTIAL_JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsInN1YiI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwibmJmIjoxMjYyMzA0MDAwLCJpYXQiOjEyNjIzMDQwMDAsImp0aSI6Imh0dHBzOi8vZXhhbXBsZS5jb20vY3JlZGVudGlhbHMvMzUyNyIsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIiwiaHR0cHM6Ly9wdXJsLmltc2dsb2JhbC5vcmcvc3BlYy9vYi92M3AwL2NvbnRleHQtMy4wLjMuanNvbiJdLCJpZCI6Imh0dHBzOi8vZXhhbXBsZS5jb20vY3JlZGVudGlhbHMvMzUyNyIsInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJPcGVuQmFkZ2VDcmVkZW50aWFsIl0sImlzc3VlciI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwiaXNzdWFuY2VEYXRlIjoiMjAxMC0wMS0wMVQwMDowMDowMFoiLCJuYW1lIjoiVGVhbXdvcmsgQmFkZ2UiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwidHlwZSI6WyJBY2hpZXZlbWVudFN1YmplY3QiXSwiYWNoaWV2ZW1lbnQiOnsiaWQiOiJodHRwczovL2V4YW1wbGUuY29tL2FjaGlldmVtZW50cy8yMXN0LWNlbnR1cnktc2tpbGxzL3RlYW13b3JrIiwidHlwZSI6IkFjaGlldmVtZW50IiwiY3JpdGVyaWEiOnsibmFycmF0aXZlIjoiVGVhbSBtZW1iZXJzIGFyZSBub21pbmF0ZWQgZm9yIHRoaXMgYmFkZ2UgYnkgdGhlaXIgcGVlcnMgYW5kIHJlY29nbml6ZWQgdXBvbiByZXZpZXcgYnkgRXhhbXBsZSBDb3JwIG1hbmFnZW1lbnQuIn0sImRlc2NyaXB0aW9uIjoiVGhpcyBiYWRnZSByZWNvZ25pemVzIHRoZSBkZXZlbG9wbWVudCBvZiB0aGUgY2FwYWNpdHkgdG8gY29sbGFib3JhdGUgd2l0aGluIGEgZ3JvdXAgZW52aXJvbm1lbnQuIiwibmFtZSI6IlRlYW13b3JrIn19LCJjcmVkZW50aWFsU3RhdHVzIjp7ImlkIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIiwidHlwZSI6InN0YXR1c2xpc3Qrand0IiwidXJpIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIiwiaWR4IjowfX0sInN0YXR1cyI6eyJzdGF0dXNfbGlzdCI6eyJpZHgiOjAsInVyaSI6Imh0dHBzOi8vbXktZG9tYWluLmV4YW1wbGUub3JnL2lldGYtb2F1dGgtdG9rZW4tc3RhdHVzLWxpc3QvMCJ9fX0.FBmcIzSWi10Fvr_r6PLM18seqiavenyuSzryt-CToleTUuy5p4lLzWm1Cj5OmYrEWxwC4dMH46szxEt8YwqsBw"; pub const W3C_VC_VERIFIABLE_CREDENTIAL_JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsInN1YiI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwibmJmIjoxMjYyMzA0MDAwLCJpYXQiOjEyNjIzMDQwMDAsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiXSwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsImZpcnN0X25hbWUiOiJGZXJyaXMiLCJsYXN0X25hbWUiOiJSdXN0YWNlYW4iLCJkZWdyZWUiOnsidHlwZSI6Ik1hc3RlckRlZ3JlZSIsIm5hbWUiOiJNYXN0ZXIgb2YgT2NlYW5vZ3JhcGh5In19LCJpc3N1ZXIiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsImlzc3VhbmNlRGF0ZSI6IjIwMTAtMDEtMDFUMDA6MDA6MDBaIiwiY3JlZGVudGlhbFN0YXR1cyI6eyJpZCI6Imh0dHBzOi8vbXktZG9tYWluLmV4YW1wbGUub3JnL2lldGYtb2F1dGgtdG9rZW4tc3RhdHVzLWxpc3QvMCIsInR5cGUiOiJzdGF0dXNsaXN0K2p3dCIsInVyaSI6Imh0dHBzOi8vbXktZG9tYWluLmV4YW1wbGUub3JnL2lldGYtb2F1dGgtdG9rZW4tc3RhdHVzLWxpc3QvMCIsImlkeCI6MH19LCJzdGF0dXMiOnsic3RhdHVzX2xpc3QiOnsiaWR4IjowLCJ1cmkiOiJodHRwczovL215LWRvbWFpbi5leGFtcGxlLm9yZy9pZXRmLW9hdXRoLXRva2VuLXN0YXR1cy1saXN0LzAifX19.C-nr-XWFgxQsQTFTQ84d2u-88yL7MEalB_QXHdklfvwIeLL_vYWU4wsRpseB67z5l-3s4zb1nF76yXPjm58vCg"; @@ -911,6 +895,33 @@ pub mod test_utils { }], ..Default::default() }; + pub static ref DC_SD_JWT_CREDENTIAL_CONFIGURATION: CredentialConfigurationsSupportedObject = + CredentialConfigurationsSupportedObject { + credential_format: CredentialFormats::DcSdJwt(Parameters { + parameters: ("http://localhost:3033/vct/U0QtSldU/0".to_string()).into() + }), + cryptographic_binding_methods_supported: vec!["did:jwk".to_string(), "did:key".to_string(),], + credential_signing_alg_values_supported: vec!["ES256".to_string(), "EdDSA".to_string()], + proof_types_supported: HashMap::from_iter(vec![( + ProofType::Jwt, + KeyProofMetadata { + proof_signing_alg_values_supported: vec!["ES256".to_string(), "EdDSA".to_string()], + }, + )]), + display: vec![CredentialConfigurationsSupportedDisplay { + name: "SD-JWT Credential".to_string(), + locale: Some("en".to_string()), + logo: Some(Logo { + uri: "https://www.impierce.com/external/impierce-logo.png".parse().unwrap(), + alt_text: Some("Impierce Logo".to_string()), + }), + description: None, + background_image: None, + background_color: None, + text_color: None, + }], + ..Default::default() + }; pub static ref OPENBADGE_CREDENTIAL_SUBJECT: serde_json::Value = json!( { "id": "https://example.com/credentials/3527", @@ -940,6 +951,12 @@ pub mod test_utils { } } ); + pub static ref DC_SD_JWT_CREDENTIAL_SUBJECT: serde_json::Value = json!( + { + "first_name": "Ferris", + "last_name": "Rustacean" + } + ); pub static ref UNSIGNED_OPENBADGE_CREDENTIAL: serde_json::Value = json!({ "@context": [ "https://www.w3.org/2018/credentials/v1", @@ -978,5 +995,10 @@ pub mod test_utils { "idx": 0 } }); + pub static ref UNSIGNED_DC_SD_JWT_CREDENTIAL: serde_json::Value = json!({ + "vct": "http://localhost:3033/vct/U0QtSldU/0", + "first_name": "Ferris", + "last_name": "Rustacean" + }); } } diff --git a/agent_issuance/src/credential/event.rs b/agent_issuance/src/credential/event.rs index f44148ffb..1838a661c 100644 --- a/agent_issuance/src/credential/event.rs +++ b/agent_issuance/src/credential/event.rs @@ -2,6 +2,7 @@ use crate::credential::aggregate::CredentialStatus; use super::{aggregate::Status, entity::Data}; use cqrs_es::DomainEvent; +use identity_core::common::Timestamp; use oid4vci::{ credential_issuer::credential_configurations_supported::CredentialConfigurationsSupportedObject, notification_request::NotificationRequest, @@ -18,6 +19,8 @@ pub enum CredentialEvent { notification_id: Option, credential_configuration: Box, credential_status: CredentialStatus, + issuance_date: Option, + expiration_date: Option, }, SignedCredentialCreated { credential_id: String, diff --git a/agent_issuance/src/credential/views/mod.rs b/agent_issuance/src/credential/views/mod.rs index 9d0d8a1f0..2279970b9 100644 --- a/agent_issuance/src/credential/views/mod.rs +++ b/agent_issuance/src/credential/views/mod.rs @@ -15,12 +15,16 @@ impl View for Credential { credential_configuration, notification_id, credential_status, + issuance_date, + expiration_date, } => { self.credential_id.clone_from(credential_id); self.data.replace(data.clone()); self.credential_configuration = *credential_configuration.clone(); self.notification_id.clone_from(notification_id); self.credential_status.clone_from(credential_status); + self.issuance_date.clone_from(issuance_date); + self.expiration_date.clone_from(expiration_date); } CredentialEvent::SignedCredentialCreated { credential_id, From 3dc688dc7ea9adf68f1f31bf409b039d791b9c3a Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 2 Feb 2026 10:21:14 +0100 Subject: [PATCH 07/35] feat: update dependencies for identity crates and uncomment openbadges and W3C VC test cases --- Cargo.lock | 374 ++++++++++++++++----- Cargo.toml | 12 +- agent_issuance/src/credential/aggregate.rs | 20 +- agent_secret_manager/Cargo.toml | 7 +- 4 files changed, 317 insertions(+), 96 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index de6c9c643..4b8806566 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -97,9 +97,9 @@ dependencies = [ "http-api-problem", "http-body-util", "hyper 1.7.0", - "identity_core", - "identity_credential", - "identity_did", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "jsonwebtoken", "lazy_static", "metrics", @@ -252,8 +252,8 @@ dependencies = [ "axum 0.8.3", "base64 0.22.1", "cqrs-es", - "identity_core", - "identity_credential", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "jsonwebtoken", "lazy_static", "mime", @@ -298,12 +298,12 @@ dependencies = [ "did-jwk", "did-method-key", "futures", - "identity_core", - "identity_credential", - "identity_did", - "identity_document", - "identity_iota", - "identity_storage", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_storage 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "iota-sdk 1.13.1", "itertools 0.14.0", "jsonwebtoken", @@ -348,8 +348,8 @@ dependencies = [ "chrono", "cqrs-es", "derivative", - "identity_core", - "identity_credential", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "jsonwebtoken", "lazy_static", "oauth_tsl", @@ -416,7 +416,7 @@ dependencies = [ "consumer", "did_iota", "futures", - "identity_iota", + "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "identity_stronghold_ext", "iota-sdk 1.1.5", "iota-sdk 1.13.1", @@ -449,7 +449,7 @@ dependencies = [ "cqrs-es", "dotenvy", "http-serde", - "identity_iota", + "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "jsonwebtoken", "oid4vc-core", "oid4vci", @@ -504,8 +504,8 @@ dependencies = [ "cqrs-es", "did-key", "futures", - "identity_core", - "identity_credential", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "jsonwebtoken", "lazy_static", "oid4vc-core", @@ -2402,13 +2402,13 @@ checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "consumer" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" +source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" dependencies = [ "did_iota", "did_jwk", "did_key", "did_web", - "identity_iota", + "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", "rustls 0.23.28", "shared", "signature 2.2.0", @@ -3161,10 +3161,10 @@ dependencies = [ [[package]] name = "did_iota" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" +source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" dependencies = [ "anyhow", - "identity_iota", + "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", "identity_stronghold", "iota-sdk 1.13.1", "log", @@ -3176,10 +3176,10 @@ dependencies = [ [[package]] name = "did_jwk" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" +source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" dependencies = [ "did-jwk", - "identity_iota", + "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", "identity_stronghold", "iota-sdk 1.13.1", "log", @@ -3193,10 +3193,10 @@ dependencies = [ [[package]] name = "did_key" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" +source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" dependencies = [ "did-method-key", - "identity_iota", + "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", "identity_stronghold", "iota-sdk 1.13.1", "jsonwebkey", @@ -3240,10 +3240,10 @@ dependencies = [ [[package]] name = "did_web" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" +source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" dependencies = [ "did-web", - "identity_iota", + "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", "identity_stronghold", "iota-sdk 1.13.1", "log", @@ -4967,6 +4967,24 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "identity_core" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +dependencies = [ + "deranged", + "js-sys", + "multibase 0.9.1", + "nom 8.0.0", + "product_common", + "serde", + "serde_json", + "strum 0.25.0", + "thiserror 1.0.69", + "time", + "url", +] + [[package]] name = "identity_core" version = "1.8.0-beta.2" @@ -4985,6 +5003,31 @@ dependencies = [ "url", ] +[[package]] +name = "identity_credential" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +dependencies = [ + "anyhow", + "async-trait", + "flate2", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "indexmap 2.12.0", + "itertools 0.11.0", + "once_cell", + "roaring 0.10.12", + "serde", + "serde-aux", + "serde_json", + "serde_repr", + "strum 0.25.0", + "thiserror 1.0.69", + "url", +] + [[package]] name = "identity_credential" version = "1.8.0-beta.2" @@ -4994,10 +5037,10 @@ dependencies = [ "async-trait", "flate2", "futures", - "identity_core", - "identity_did", - "identity_document", - "identity_verification", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "indexmap 2.12.0", "itertools 0.11.0", "jsonschema", @@ -5013,6 +5056,20 @@ dependencies = [ "url", ] +[[package]] +name = "identity_did" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +dependencies = [ + "did_url_parser 0.3.0", + "form_urlencoded", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "serde", + "strum 0.25.0", + "thiserror 1.0.69", +] + [[package]] name = "identity_did" version = "1.8.0-beta.2" @@ -5020,8 +5077,23 @@ source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3 dependencies = [ "did_url_parser 0.3.0", "form_urlencoded", - "identity_core", - "identity_jose", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "serde", + "strum 0.25.0", + "thiserror 1.0.69", +] + +[[package]] +name = "identity_document" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +dependencies = [ + "did_url_parser 0.2.0", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "indexmap 2.12.0", "serde", "strum 0.25.0", "thiserror 1.0.69", @@ -5033,40 +5105,110 @@ version = "1.8.0-beta.2" source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "did_url_parser 0.2.0", - "identity_core", - "identity_did", - "identity_verification", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "indexmap 2.12.0", "serde", "strum 0.25.0", "thiserror 1.0.69", ] +[[package]] +name = "identity_eddsa_verifier" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +dependencies = [ + "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "iota-crypto", +] + [[package]] name = "identity_eddsa_verifier" version = "1.8.0-beta.2" source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ - "identity_jose", + "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "iota-crypto", ] +[[package]] +name = "identity_iota" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +dependencies = [ + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_iota_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_resolver 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_storage 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "iota_interaction", +] + [[package]] name = "identity_iota" version = "1.8.0-beta.2" source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ - "identity_core", - "identity_credential", - "identity_did", - "identity_document", - "identity_iota_core", - "identity_resolver", - "identity_storage", - "identity_verification", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_iota_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_resolver 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_storage 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "iota_interaction", ] +[[package]] +name = "identity_iota_core" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +dependencies = [ + "anyhow", + "async-stream", + "async-trait", + "bcs", + "cfg-if", + "fastcrypto", + "futures", + "hyper 1.7.0", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_eddsa_verifier 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "iota-config", + "iota-crypto", + "iota-sdk 1.13.1", + "iota_interaction", + "iota_interaction_rust", + "iota_interaction_ts", + "itertools 0.13.0", + "move-core-types", + "num-derive 0.4.2", + "num-traits", + "once_cell", + "phf", + "prefix-hex", + "product_common", + "rand 0.8.5", + "ref-cast", + "secret-storage", + "serde", + "serde-aux", + "serde_json", + "strum 0.25.0", + "thiserror 1.0.69", + "tokio", +] + [[package]] name = "identity_iota_core" version = "1.8.0-beta.2" @@ -5080,13 +5222,13 @@ dependencies = [ "fastcrypto", "futures", "hyper 1.7.0", - "identity_core", - "identity_credential", - "identity_did", - "identity_document", - "identity_eddsa_verifier", - "identity_jose", - "identity_verification", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_eddsa_verifier 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "iota-config", "iota-crypto", "iota-sdk 1.13.1", @@ -5112,6 +5254,26 @@ dependencies = [ "tokio", ] +[[package]] +name = "identity_jose" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +dependencies = [ + "anyhow", + "bls12_381_plus 0.8.18", + "fastcrypto", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "iota-crypto", + "iota_interaction", + "json-proof-token", + "k256", + "p256 0.13.2", + "serde", + "serde_json", + "thiserror 1.0.69", + "zeroize", +] + [[package]] name = "identity_jose" version = "1.8.0-beta.2" @@ -5120,7 +5282,7 @@ dependencies = [ "anyhow", "bls12_381_plus 0.8.18", "fastcrypto", - "identity_core", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "iota-crypto", "iota_interaction", "json-proof-token", @@ -5132,6 +5294,23 @@ dependencies = [ "zeroize", ] +[[package]] +name = "identity_resolver" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +dependencies = [ + "async-trait", + "futures", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_iota_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "serde", + "strum 0.25.0", + "thiserror 1.0.69", +] + [[package]] name = "identity_resolver" version = "1.8.0-beta.2" @@ -5139,16 +5318,41 @@ source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3 dependencies = [ "async-trait", "futures", - "identity_core", - "identity_credential", - "identity_did", - "identity_document", - "identity_iota_core", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_iota_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "serde", "strum 0.25.0", "thiserror 1.0.69", ] +[[package]] +name = "identity_storage" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +dependencies = [ + "anyhow", + "async-trait", + "bcs", + "fastcrypto", + "futures", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_iota_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "iota-sdk-types", + "iota_interaction", + "seahash", + "secret-storage", + "serde", + "serde_json", + "thiserror 1.0.69", +] + [[package]] name = "identity_storage" version = "1.8.0-beta.2" @@ -5159,12 +5363,12 @@ dependencies = [ "bcs", "fastcrypto", "futures", - "identity_core", - "identity_credential", - "identity_did", - "identity_document", - "identity_iota_core", - "identity_verification", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_iota_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "iota-crypto", "iota-sdk-types", "iota_interaction", @@ -5180,11 +5384,11 @@ dependencies = [ [[package]] name = "identity_stronghold" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" +source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" dependencies = [ "async-trait", - "identity_storage", - "identity_verification", + "identity_storage 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", "iota-crypto", "iota-sdk 1.1.5", "iota_stronghold", @@ -5196,12 +5400,12 @@ dependencies = [ [[package]] name = "identity_stronghold_ext" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" +source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" dependencies = [ "async-trait", "elliptic-curve 0.13.8", - "identity_storage", - "identity_verification", + "identity_storage 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", "iota-sdk 1.1.5", "iota_stronghold", "k256", @@ -5213,14 +5417,28 @@ dependencies = [ "tokio", ] +[[package]] +name = "identity_verification" +version = "1.8.0-beta.2" +source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +dependencies = [ + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "serde", + "serde_json", + "strum 0.25.0", + "thiserror 1.0.69", +] + [[package]] name = "identity_verification" version = "1.8.0-beta.2" source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ - "identity_core", - "identity_did", - "identity_jose", + "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "serde", "serde_json", "strum 0.25.0", @@ -8423,7 +8641,7 @@ dependencies = [ "did_url", "futures", "getset", - "identity_credential", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "jsonwebtoken", "lazy_static", "oid4vc-core", @@ -8478,7 +8696,7 @@ dependencies = [ "chrono", "futures", "getset", - "identity_credential", + "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", "is_empty", "jsonwebtoken", "lazy_static", @@ -11156,10 +11374,10 @@ dependencies = [ [[package]] name = "shared" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=03a2aa4#03a2aa42ba1e3b3d3987028c25991c24c17d7132" +source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" dependencies = [ - "identity_iota", - "identity_storage", + "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_storage 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", "identity_stronghold", "identity_stronghold_ext", "iota-sdk 1.1.5", diff --git a/Cargo.toml b/Cargo.toml index 0434f55cb..b1f764649 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,11 +23,12 @@ edition = "2021" rust-version = "1.76.0" [workspace.dependencies] -siopv2 = { git = "https://github.com/impierce/openid4vc", rev = "31783fd" } -oid4vci = { git = "https://github.com/impierce/openid4vc", rev = "31783fd" } -oid4vc-core = { git = "https://github.com/impierce/openid4vc", rev = "31783fd" } -oid4vc-manager = { git = "https://github.com/impierce/openid4vc", rev = "31783fd" } -oid4vp = { git = "https://github.com/impierce/openid4vc", rev = "31783fd" } +# TODO: For all `openid4vc` dependencies, switch to latest `dev` revision once https://github.com/impierce/openid4vc/pull/118 is merged. +siopv2 = { git = "https://github.com/impierce/openid4vc", rev = "124323e" } +oid4vci = { git = "https://github.com/impierce/openid4vc", rev = "124323e" } +oid4vc-core = { git = "https://github.com/impierce/openid4vc", rev = "124323e" } +oid4vc-manager = { git = "https://github.com/impierce/openid4vc", rev = "124323e" } +oid4vp = { git = "https://github.com/impierce/openid4vc", rev = "124323e" } anyhow = "1.0" async-std = { version = "1.5", features = ["attributes", "tokio1"] } @@ -38,6 +39,7 @@ chrono = { version = "0.4", features = ["serde"] } cqrs-es = "0.4.12" derivative = "2.2" futures = "0.3" +# TODO: For all `identity_*` dependencies, switch to latest `beta` tag once https://github.com/iotaledger/identity/pull/1770 is merged. identity_core = { git = "https://github.com/iotaledger/identity", rev = "88ea775" } identity_credential = { git = "https://github.com/iotaledger/identity", rev = "88ea775", default-features = false, features = [ "credential", diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index 81c081d3d..1db43d3c3 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -685,16 +685,16 @@ pub mod credential_tests { type CredentialTestFramework = TestFramework; #[rstest] - // #[case::openbadges( - // OPENBADGE_CREDENTIAL_SUBJECT.clone(), - // OPENBADGE_CREDENTIAL_CONFIGURATION.clone(), - // UNSIGNED_OPENBADGE_CREDENTIAL.clone() - // )] - // #[case::w3c_vc( - // W3C_VC_CREDENTIAL_SUBJECT.clone(), - // W3C_VC_CREDENTIAL_CONFIGURATION.clone(), - // UNSIGNED_W3C_VC_CREDENTIAL.clone() - // )] + #[case::openbadges( + OPENBADGE_CREDENTIAL_SUBJECT.clone(), + OPENBADGE_CREDENTIAL_CONFIGURATION.clone(), + UNSIGNED_OPENBADGE_CREDENTIAL.clone() + )] + #[case::w3c_vc( + W3C_VC_CREDENTIAL_SUBJECT.clone(), + W3C_VC_CREDENTIAL_CONFIGURATION.clone(), + UNSIGNED_W3C_VC_CREDENTIAL.clone() + )] #[case::dc_sd_jwt( DC_SD_JWT_CREDENTIAL_SUBJECT.clone(), DC_SD_JWT_CREDENTIAL_CONFIGURATION.clone(), diff --git a/agent_secret_manager/Cargo.toml b/agent_secret_manager/Cargo.toml index 2b01af93e..1be3894e2 100644 --- a/agent_secret_manager/Cargo.toml +++ b/agent_secret_manager/Cargo.toml @@ -8,14 +8,15 @@ rust-version.workspace = true agent_shared = { path = "../agent_shared" } # TODO: Fully remove `did_manager`. +# TODO: Use latest `beta` branch once https://github.com/impierce/did-manager/pull/42 is merged. # - The `producer` module has already been eliminated. # - In the `consumer` module, only the `Resolver` struct is still in use. # - All components of the `identity_stronghold_ext` module are still active. # # Future work: Migrate the remaining functionality into UniCore. -did_manager_consumer = { git = "https://github.com/impierce/did-manager", rev = "03a2aa4", package = "consumer" } -did_manager_identity_stronghold_ext = { git = "https://github.com/impierce/did-manager", rev = "03a2aa4", package = "identity_stronghold_ext" } -did_manager_iota = { git = "https://github.com/impierce/did-manager", rev = "03a2aa4", package = "did_iota" } +did_manager_consumer = { git = "https://github.com/impierce/did-manager", rev = "f26da3e", package = "consumer" } +did_manager_identity_stronghold_ext = { git = "https://github.com/impierce/did-manager", rev = "f26da3e", package = "identity_stronghold_ext" } +did_manager_iota = { git = "https://github.com/impierce/did-manager", rev = "f26da3e", package = "did_iota" } anyhow.workspace = true async-trait.workspace = true From db81889d396e4ab8b3efbbb94c12c22130dcb881 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 2 Feb 2026 11:21:35 +0100 Subject: [PATCH 08/35] build: update identity dependencies to use latest revisions --- Cargo.lock | 368 +++++++++++------------------------------------------ Cargo.toml | 14 +- 2 files changed, 82 insertions(+), 300 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4b8806566..60dfc4554 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -97,9 +97,9 @@ dependencies = [ "http-api-problem", "http-body-util", "hyper 1.7.0", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_credential", + "identity_did", "jsonwebtoken", "lazy_static", "metrics", @@ -252,8 +252,8 @@ dependencies = [ "axum 0.8.3", "base64 0.22.1", "cqrs-es", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_credential", "jsonwebtoken", "lazy_static", "mime", @@ -298,12 +298,12 @@ dependencies = [ "did-jwk", "did-method-key", "futures", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_storage 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_credential", + "identity_did", + "identity_document", + "identity_iota", + "identity_storage", "iota-sdk 1.13.1", "itertools 0.14.0", "jsonwebtoken", @@ -348,8 +348,8 @@ dependencies = [ "chrono", "cqrs-es", "derivative", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_credential", "jsonwebtoken", "lazy_static", "oauth_tsl", @@ -416,7 +416,7 @@ dependencies = [ "consumer", "did_iota", "futures", - "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_iota", "identity_stronghold_ext", "iota-sdk 1.1.5", "iota-sdk 1.13.1", @@ -449,7 +449,7 @@ dependencies = [ "cqrs-es", "dotenvy", "http-serde", - "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_iota", "jsonwebtoken", "oid4vc-core", "oid4vci", @@ -504,8 +504,8 @@ dependencies = [ "cqrs-es", "did-key", "futures", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_credential", "jsonwebtoken", "lazy_static", "oid4vc-core", @@ -2408,7 +2408,7 @@ dependencies = [ "did_jwk", "did_key", "did_web", - "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_iota", "rustls 0.23.28", "shared", "signature 2.2.0", @@ -3164,7 +3164,7 @@ version = "0.1.0" source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" dependencies = [ "anyhow", - "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_iota", "identity_stronghold", "iota-sdk 1.13.1", "log", @@ -3179,7 +3179,7 @@ version = "0.1.0" source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" dependencies = [ "did-jwk", - "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_iota", "identity_stronghold", "iota-sdk 1.13.1", "log", @@ -3196,7 +3196,7 @@ version = "0.1.0" source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" dependencies = [ "did-method-key", - "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_iota", "identity_stronghold", "iota-sdk 1.13.1", "jsonwebkey", @@ -3243,7 +3243,7 @@ version = "0.1.0" source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" dependencies = [ "did-web", - "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_iota", "identity_stronghold", "iota-sdk 1.13.1", "log", @@ -4985,62 +4985,19 @@ dependencies = [ "url", ] -[[package]] -name = "identity_core" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" -dependencies = [ - "deranged", - "js-sys", - "multibase 0.9.1", - "nom 8.0.0", - "product_common", - "serde", - "serde_json", - "strum 0.25.0", - "thiserror 1.0.69", - "time", - "url", -] - [[package]] name = "identity_credential" version = "1.8.0-beta.2" source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" -dependencies = [ - "anyhow", - "async-trait", - "flate2", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "indexmap 2.12.0", - "itertools 0.11.0", - "once_cell", - "roaring 0.10.12", - "serde", - "serde-aux", - "serde_json", - "serde_repr", - "strum 0.25.0", - "thiserror 1.0.69", - "url", -] - -[[package]] -name = "identity_credential" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" dependencies = [ "anyhow", "async-trait", "flate2", "futures", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_did", + "identity_document", + "identity_verification", "indexmap 2.12.0", "itertools 0.11.0", "jsonschema", @@ -5063,22 +5020,8 @@ source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb7 dependencies = [ "did_url_parser 0.3.0", "form_urlencoded", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "serde", - "strum 0.25.0", - "thiserror 1.0.69", -] - -[[package]] -name = "identity_did" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" -dependencies = [ - "did_url_parser 0.3.0", - "form_urlencoded", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_jose", "serde", "strum 0.25.0", "thiserror 1.0.69", @@ -5090,24 +5033,9 @@ version = "1.8.0-beta.2" source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" dependencies = [ "did_url_parser 0.2.0", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "indexmap 2.12.0", - "serde", - "strum 0.25.0", - "thiserror 1.0.69", -] - -[[package]] -name = "identity_document" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" -dependencies = [ - "did_url_parser 0.2.0", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_did", + "identity_verification", "indexmap 2.12.0", "serde", "strum 0.25.0", @@ -5119,16 +5047,7 @@ name = "identity_eddsa_verifier" version = "1.8.0-beta.2" source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" dependencies = [ - "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "iota-crypto", -] - -[[package]] -name = "identity_eddsa_verifier" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" -dependencies = [ - "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_jose", "iota-crypto", ] @@ -5137,30 +5056,14 @@ name = "identity_iota" version = "1.8.0-beta.2" source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" dependencies = [ - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_iota_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_resolver 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_storage 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "iota_interaction", -] - -[[package]] -name = "identity_iota" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" -dependencies = [ - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_iota_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_resolver 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_storage 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_credential", + "identity_did", + "identity_document", + "identity_iota_core", + "identity_resolver", + "identity_storage", + "identity_verification", "iota_interaction", ] @@ -5177,58 +5080,13 @@ dependencies = [ "fastcrypto", "futures", "hyper 1.7.0", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_eddsa_verifier 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "iota-config", - "iota-crypto", - "iota-sdk 1.13.1", - "iota_interaction", - "iota_interaction_rust", - "iota_interaction_ts", - "itertools 0.13.0", - "move-core-types", - "num-derive 0.4.2", - "num-traits", - "once_cell", - "phf", - "prefix-hex", - "product_common", - "rand 0.8.5", - "ref-cast", - "secret-storage", - "serde", - "serde-aux", - "serde_json", - "strum 0.25.0", - "thiserror 1.0.69", - "tokio", -] - -[[package]] -name = "identity_iota_core" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" -dependencies = [ - "anyhow", - "async-stream", - "async-trait", - "bcs", - "cfg-if", - "fastcrypto", - "futures", - "hyper 1.7.0", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_eddsa_verifier 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_credential", + "identity_did", + "identity_document", + "identity_eddsa_verifier", + "identity_jose", + "identity_verification", "iota-config", "iota-crypto", "iota-sdk 1.13.1", @@ -5262,27 +5120,7 @@ dependencies = [ "anyhow", "bls12_381_plus 0.8.18", "fastcrypto", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "iota-crypto", - "iota_interaction", - "json-proof-token", - "k256", - "p256 0.13.2", - "serde", - "serde_json", - "thiserror 1.0.69", - "zeroize", -] - -[[package]] -name = "identity_jose" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" -dependencies = [ - "anyhow", - "bls12_381_plus 0.8.18", - "fastcrypto", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", "iota-crypto", "iota_interaction", "json-proof-token", @@ -5301,28 +5139,11 @@ source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb7 dependencies = [ "async-trait", "futures", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_iota_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "serde", - "strum 0.25.0", - "thiserror 1.0.69", -] - -[[package]] -name = "identity_resolver" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" -dependencies = [ - "async-trait", - "futures", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_iota_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_credential", + "identity_did", + "identity_document", + "identity_iota_core", "serde", "strum 0.25.0", "thiserror 1.0.69", @@ -5338,37 +5159,12 @@ dependencies = [ "bcs", "fastcrypto", "futures", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_iota_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "iota-sdk-types", - "iota_interaction", - "seahash", - "secret-storage", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "identity_storage" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" -dependencies = [ - "anyhow", - "async-trait", - "bcs", - "fastcrypto", - "futures", - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_document 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_iota_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_credential", + "identity_did", + "identity_document", + "identity_iota_core", + "identity_verification", "iota-crypto", "iota-sdk-types", "iota_interaction", @@ -5387,8 +5183,8 @@ version = "1.8.0-beta.2" source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" dependencies = [ "async-trait", - "identity_storage 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_storage", + "identity_verification", "iota-crypto", "iota-sdk 1.1.5", "iota_stronghold", @@ -5404,8 +5200,8 @@ source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8 dependencies = [ "async-trait", "elliptic-curve 0.13.8", - "identity_storage 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_verification 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_storage", + "identity_verification", "iota-sdk 1.1.5", "iota_stronghold", "k256", @@ -5422,23 +5218,9 @@ name = "identity_verification" version = "1.8.0-beta.2" source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" dependencies = [ - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "serde", - "serde_json", - "strum 0.25.0", - "thiserror 1.0.69", -] - -[[package]] -name = "identity_verification" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=88ea775#88ea775a39ab9e3fc441c90315d2a9d45e96fd21" -dependencies = [ - "identity_core 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_did 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", - "identity_jose 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_core", + "identity_did", + "identity_jose", "serde", "serde_json", "strum 0.25.0", @@ -8604,7 +8386,7 @@ dependencies = [ [[package]] name = "oid4vc-core" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=31783fd#31783fd5d5c2804c3f0f2051186c1d95b904d0cb" +source = "git+https://github.com/impierce/openid4vc?rev=124323e#124323eea8af568efc84f1da9b67da1e9729ec96" dependencies = [ "anyhow", "async-trait", @@ -8629,7 +8411,7 @@ dependencies = [ [[package]] name = "oid4vc-manager" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=31783fd#31783fd5d5c2804c3f0f2051186c1d95b904d0cb" +source = "git+https://github.com/impierce/openid4vc?rev=124323e#124323eea8af568efc84f1da9b67da1e9729ec96" dependencies = [ "anyhow", "async-trait", @@ -8641,7 +8423,7 @@ dependencies = [ "did_url", "futures", "getset", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_credential", "jsonwebtoken", "lazy_static", "oid4vc-core", @@ -8662,7 +8444,7 @@ dependencies = [ [[package]] name = "oid4vci" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=31783fd#31783fd5d5c2804c3f0f2051186c1d95b904d0cb" +source = "git+https://github.com/impierce/openid4vc?rev=124323e#124323eea8af568efc84f1da9b67da1e9729ec96" dependencies = [ "anyhow", "chrono", @@ -8690,13 +8472,13 @@ dependencies = [ [[package]] name = "oid4vp" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=31783fd#31783fd5d5c2804c3f0f2051186c1d95b904d0cb" +source = "git+https://github.com/impierce/openid4vc?rev=124323e#124323eea8af568efc84f1da9b67da1e9729ec96" dependencies = [ "anyhow", "chrono", "futures", "getset", - "identity_credential 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=88ea775)", + "identity_credential", "is_empty", "jsonwebtoken", "lazy_static", @@ -11376,8 +11158,8 @@ name = "shared" version = "0.1.0" source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" dependencies = [ - "identity_iota 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", - "identity_storage 1.8.0-beta.2 (git+https://github.com/iotaledger/identity?rev=11756ad)", + "identity_iota", + "identity_storage", "identity_stronghold", "identity_stronghold_ext", "iota-sdk 1.1.5", @@ -11480,7 +11262,7 @@ dependencies = [ [[package]] name = "siopv2" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=31783fd#31783fd5d5c2804c3f0f2051186c1d95b904d0cb" +source = "git+https://github.com/impierce/openid4vc?rev=124323e#124323eea8af568efc84f1da9b67da1e9729ec96" dependencies = [ "anyhow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index b1f764649..572968cae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,19 +40,19 @@ cqrs-es = "0.4.12" derivative = "2.2" futures = "0.3" # TODO: For all `identity_*` dependencies, switch to latest `beta` tag once https://github.com/iotaledger/identity/pull/1770 is merged. -identity_core = { git = "https://github.com/iotaledger/identity", rev = "88ea775" } -identity_credential = { git = "https://github.com/iotaledger/identity", rev = "88ea775", default-features = false, features = [ +identity_core = { git = "https://github.com/iotaledger/identity", rev = "11756ad" } +identity_credential = { git = "https://github.com/iotaledger/identity", rev = "11756ad", default-features = false, features = [ "credential", "domain-linkage", "presentation", "sd-jwt-vc", "validator", ] } -identity_did = { git = "https://github.com/iotaledger/identity", rev = "88ea775" } -identity_document = { git = "https://github.com/iotaledger/identity", rev = "88ea775" } -identity_iota = { git = "https://github.com/iotaledger/identity", rev = "88ea775" } -identity_storage = { git = "https://github.com/iotaledger/identity", rev = "88ea775" } -identity_verification = { git = "https://github.com/iotaledger/identity", rev = "88ea775", default-features = false } +identity_did = { git = "https://github.com/iotaledger/identity", rev = "11756ad" } +identity_document = { git = "https://github.com/iotaledger/identity", rev = "11756ad" } +identity_iota = { git = "https://github.com/iotaledger/identity", rev = "11756ad" } +identity_storage = { git = "https://github.com/iotaledger/identity", rev = "11756ad" } +identity_verification = { git = "https://github.com/iotaledger/identity", rev = "11756ad", default-features = false } iota-sdk = { git = "https://github.com/iotaledger/iota", package = "iota-sdk", tag = "v1.13.1" } # TODO: Check if this is still needed. iota-sdk-legacy = { version = "1.0", package = "iota-sdk", default-features = false, features = [ From 38e6125f25d7f5ad093f8efa046d2eddd3af775a Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 2 Feb 2026 11:32:45 +0100 Subject: [PATCH 09/35] feat: add error variants for invalid issuer DID and key identifier retrieval failure --- agent_api_http/src/v0/issuance/error.rs | 2 + agent_issuance/src/credential/aggregate.rs | 324 +++++++++++---------- agent_issuance/src/credential/error.rs | 4 + agent_issuance/src/state.rs | 24 +- 4 files changed, 190 insertions(+), 164 deletions(-) diff --git a/agent_api_http/src/v0/issuance/error.rs b/agent_api_http/src/v0/issuance/error.rs index 9d74f053d..e5f7173ac 100644 --- a/agent_api_http/src/v0/issuance/error.rs +++ b/agent_api_http/src/v0/issuance/error.rs @@ -63,6 +63,8 @@ impl IntoApiErrorExt for CredentialError { // `/openid4vci/credential` endpoint MissingCredentialDataError => ApiError::new(StatusCode::INTERNAL_SERVER_ERROR), + InvalidIssuerDidError => ApiError::new(StatusCode::INTERNAL_SERVER_ERROR), + KeyIdError => ApiError::new(StatusCode::INTERNAL_SERVER_ERROR), } } } diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index 1db43d3c3..b7b8a5d23 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -123,6 +123,11 @@ impl Aggregate for Credential { expires_at, credential_status_index, } => { + #[cfg(feature = "test_utils")] + let notification_id = test_utils::notification_id(); + #[cfg(not(feature = "test_utils"))] + let notification_id = agent_shared::generate_random_string(); + #[cfg(feature = "test_utils")] let issuance_date = "2010-01-01T00:00:00Z".to_string(); #[cfg(not(feature = "test_utils"))] @@ -141,10 +146,12 @@ impl Aggregate for Credential { CredentialExpiry::Never => None, }; - #[cfg(feature = "test_utils")] - let notification_id = test_utils::notification_id(); - #[cfg(not(feature = "test_utils"))] - let notification_id = agent_shared::generate_random_string(); + let credential_status = CredentialStatus { + index: credential_status_index, + status: StatusType::VALID, + }; + + let status_list_url = get_status_list_url(self.credential_status.index)?; match &credential_configuration.credential_format { CredentialFormats::JwtVcJson(Parameters:: { @@ -185,13 +192,6 @@ impl Aggregate for Credential { ) .map_err(|e| InvalidCredentialSubjectError(e.to_string()))?; - let credential_status = CredentialStatus { - index: credential_status_index, - status: StatusType::VALID, - }; - - let status_list_url = get_status_list_url(self.credential_status.index)?; - // Loop through all the items in the `type` array in reverse until we find a match. while let Some(credential_type) = credential_types.pop() { match credential_type.as_str() { @@ -336,11 +336,6 @@ impl Aggregate for Credential { let mut raw = data.raw; raw["vct"] = json!(vct); - let credential_status = CredentialStatus { - index: credential_status_index, - status: StatusType::VALID, - }; - return Ok(vec![UnsignedCredentialCreated { credential_id, notification_id: Some(notification_id), @@ -391,180 +386,195 @@ impl Aggregate for Credential { let default_did_method = get_preferred_did_method(); - let issuer_did = services + let issuer_did: identity_core::common::Url = services .issuer .identifier(&default_did_method.to_string(), get_preferred_signing_algorithm()) .await - .unwrap(); + .ok() + .and_then(|did| did.parse().ok()) + .ok_or(InvalidIssuerDidError)?; let mut credential = self.data.as_ref().ok_or(MissingCredentialDataError)?.clone(); - let signed_credential = if let CredentialFormats::DcSdJwt(Parameters:: { - parameters: DcSdJwtParameters { .. }, - }) = &self.credential_configuration.credential_format - { - let issuer = &services.issuer; + let status_list_url = get_status_list_url(self.credential_status.index)?; - let algorithm = get_preferred_signing_algorithm(); + let signed_credential = match &self.credential_configuration.credential_format { + CredentialFormats::JwtVcJson(_) => { + if let Some(ref id) = id { + credential.raw["id"] = json!(id); + }; - let alg = algorithm.as_str(); + #[cfg(feature = "test_utils")] + let iat = 1262304000; // 2010-01-01T00:00:00Z + #[cfg(not(feature = "test_utils"))] + let iat = credential.raw["issuanceDate"] + .as_str() + .unwrap() + .parse::>() + .unwrap() + .timestamp(); - let holder_kid = proof.and_then(|proof| { - let Proof::Jwt { jwt: proof } = proof; - jsonwebtoken::decode_header(&proof).ok().and_then(|header| header.kid) - }); + let exp = credential.raw["expirationDate"].as_str().map(|expiration_date| { + expiration_date + .parse::>() + .expect("Could not parse `expirationDate` to DateTime") + .timestamp() + }); - let kid = issuer - .key_id(&get_preferred_did_method().to_string(), algorithm) - .await - .unwrap(); + credential.raw["issuer"] = json!(issuer_did); - let sd_jwt_vc_claims = SdJwtVcClaims::from_json_value(credential.raw.clone()) - .map_err(|e| BuildCredentialError(format!("Failed to extract SD-JWT VC claims: {}", e)))?; + let credential_subject = credential.raw["credentialSubject"].as_object().unwrap().clone(); - let paths = sd_jwt_vc_claims.keys().cloned().collect::>(); + // Create a new Map and insert the id field first + let mut new_credential_subject = serde_json::Map::new(); - let mut builder = SdJwtVcBuilder::new(credential.raw.clone()) - .unwrap() - .header("typ", "dc+sd-jwt") - .header("kid", kid); + if let Some(subject_id) = &subject_id { + new_credential_subject.insert("id".to_string(), json!(subject_id)); + } - builder = builder.iss(issuer_did.parse().unwrap()); - builder = builder.status( - serde_json::from_value(serde_json::json!({ - "status_list": { - "idx": self.credential_status.index, - "uri": get_status_list_url(self.credential_status.index)?, + // Insert the rest of the fields + for (key, value) in credential_subject { + if key != "id" { + new_credential_subject.insert(key, value); } - })) - .unwrap(), - ); + } - if let Some(holder_kid) = holder_kid.clone() { - builder = builder.require_key_binding(RequiredKeyBinding::Kid(holder_kid)); - } + info!("Credential subject: {:?}", new_credential_subject); - if let Some(issuance_date) = self.issuance_date { - builder = builder.iat(issuance_date); - builder = builder.nbf(issuance_date); - } + // Replace the original credentialSubject with the new map + credential.raw["credentialSubject"] = serde_json::Value::Object(new_credential_subject); - if let Some(expiration_date) = self.expiration_date { - builder = builder.exp(expiration_date); - } + info!("Credential: {:?}", credential); - // By default, all custom claims are concealable. - for path in paths { - builder = builder.make_concealable(&format!("/{}", path)).map_err(|e| { - BuildCredentialError(format!("Failed to make claim at path `/{}` concealable: {}", path, e)) - })?; - } + // Add standard claims + let mut vc_jwt_builder = VerifiableCredentialJwt::builder() + .iss(issuer_did.to_string()) + .iat(iat) + .nbf(iat); // TODO: setting the `nbf` to `iat` makes the JWT immediately usable - let sd_jwt_credential = builder - .finish(&**issuer, alg) - .await - .map_err(|e| BuildCredentialError(format!("Failed to build SD-JWT credential: {}", e)))?; - - serde_json::json!(sd_jwt_credential.to_string()) - } else { - if let Some(ref id) = id { - credential.raw["id"] = json!(id); - }; - - #[cfg(feature = "test_utils")] - let iat = 1262304000; // 2010-01-01T00:00:00Z - #[cfg(not(feature = "test_utils"))] - let iat = credential.raw["issuanceDate"] - .as_str() - .unwrap() - .parse::>() - .unwrap() - .timestamp(); - - let exp = credential.raw["expirationDate"].as_str().map(|expiration_date| { - expiration_date - .parse::>() - .expect("Could not parse `expirationDate` to DateTime") - .timestamp() - }); + if let Some(subject_id) = subject_id { + vc_jwt_builder = vc_jwt_builder.sub(subject_id); + } - credential.raw["issuer"] = json!(issuer_did); + let vc_jwt_builder = if let Some(exp) = exp { + vc_jwt_builder.exp(exp) + } else { + vc_jwt_builder + }; - let credential_subject = credential.raw["credentialSubject"].as_object().unwrap().clone(); + let vc_jwt_builder = if let Some(id) = id { + vc_jwt_builder.jti(id.to_string()) + } else { + vc_jwt_builder + }; - // Create a new Map and insert the id field first - let mut new_credential_subject = serde_json::Map::new(); + let vc_jwt_built = vc_jwt_builder + .verifiable_credential(credential.raw) + .build() + .map_err(|e| CredentialError::BuildCredentialError(e.to_string()))?; + + let mut vc_jwt_value = serde_json::to_value(&vc_jwt_built) + .map_err(|e| CredentialError::BuildCredentialError(e.to_string()))?; + + let mut vc_jwt_object = vc_jwt_value + .as_object_mut() + .ok_or(CredentialError::BuildCredentialError( + "Failed to convert VC JWT to mutable JSON object".to_string(), + ))? + .clone(); - if let Some(subject_id) = &subject_id { - new_credential_subject.insert("id".to_string(), json!(subject_id)); + vc_jwt_object.insert( + "status".to_string(), + json!({ + "status_list": { + "idx": self.credential_status.index, + "uri": status_list_url, + } + }), + ); + + json!(jwt::encode( + services.issuer.clone(), + Header::new(get_preferred_signing_algorithm()), + vc_jwt_object, + &default_did_method.to_string() + ) + .await + .ok()) } + CredentialFormats::DcSdJwt(_) => { + let issuer = &services.issuer; + + let algorithm = get_preferred_signing_algorithm(); + + let alg = algorithm.as_str(); + + let holder_kid = proof.and_then(|proof| { + let Proof::Jwt { jwt: proof } = proof; + jsonwebtoken::decode_header(&proof).ok().and_then(|header| header.kid) + }); + + let kid = issuer + .key_id(&get_preferred_did_method().to_string(), algorithm) + .await + .ok_or(KeyIdError)?; - // Insert the rest of the fields - for (key, value) in credential_subject { - if key != "id" { - new_credential_subject.insert(key, value); + let sd_jwt_vc_claims = SdJwtVcClaims::from_json_value(credential.raw.clone()) + .map_err(|e| BuildCredentialError(format!("Failed to extract SD-JWT VC claims: {}", e)))?; + + let paths = sd_jwt_vc_claims.keys().cloned().collect::>(); + + let mut builder = SdJwtVcBuilder::new(credential.raw.clone()) + .map_err(|e| BuildCredentialError(format!("Failed to create SD-JWT VC builder: {}", e)))? + .header("typ", "dc+sd-jwt") + .header("kid", kid); + + builder = builder.iss(issuer_did); + builder = builder.status( + serde_json::from_value(serde_json::json!({ + "status_list": { + "idx": self.credential_status.index, + "uri": status_list_url, + } + })) + .unwrap(), + ); + + if let Some(holder_kid) = holder_kid.clone() { + builder = builder.require_key_binding(RequiredKeyBinding::Kid(holder_kid)); } - } - info!("Credential subject: {:?}", new_credential_subject); + if let Some(issuance_date) = self.issuance_date { + builder = builder.iat(issuance_date); + builder = builder.nbf(issuance_date); + } - // Replace the original credentialSubject with the new map - credential.raw["credentialSubject"] = serde_json::Value::Object(new_credential_subject); + if let Some(expiration_date) = self.expiration_date { + builder = builder.exp(expiration_date); + } - info!("Credential: {:?}", credential); + // By default, all custom claims are concealable. + for path in paths { + builder = builder.make_concealable(&format!("/{}", path)).map_err(|e| { + BuildCredentialError(format!( + "Failed to make claim at path `/{}` concealable: {}", + path, e + )) + })?; + } - // Add standard claims - let mut vc_jwt_builder = VerifiableCredentialJwt::builder().iss(issuer_did).iat(iat).nbf(iat); // TODO: setting the `nbf` to `iat` makes the JWT immediately usable + let sd_jwt_credential = builder + .finish(&**issuer, alg) + .await + .map_err(|e| BuildCredentialError(format!("Failed to build SD-JWT credential: {}", e)))?; - if let Some(subject_id) = subject_id { - vc_jwt_builder = vc_jwt_builder.sub(subject_id); + serde_json::json!(sd_jwt_credential.to_string()) + } + _ => { + return Err(UnsupportedCredentialFormat(serde_json::json!( + self.credential_configuration.credential_format + ))); } - - let vc_jwt_builder = if let Some(exp) = exp { - vc_jwt_builder.exp(exp) - } else { - vc_jwt_builder - }; - - let vc_jwt_builder = if let Some(id) = id { - vc_jwt_builder.jti(id.to_string()) - } else { - vc_jwt_builder - }; - - let vc_jwt_built = vc_jwt_builder - .verifiable_credential(credential.raw) - .build() - .map_err(|e| CredentialError::BuildCredentialError(e.to_string()))?; - - let mut vc_jwt_value = serde_json::to_value(&vc_jwt_built) - .map_err(|e| CredentialError::BuildCredentialError(e.to_string()))?; - - let mut vc_jwt_object = vc_jwt_value - .as_object_mut() - .ok_or(CredentialError::BuildCredentialError( - "Failed to convert VC JWT to mutable JSON object".to_string(), - ))? - .clone(); - - vc_jwt_object.insert( - "status".to_string(), - json!({ - "status_list": { - "idx": self.credential_status.index, - "uri": get_status_list_url(self.credential_status.index)?, - } - }), - ); - - json!(jwt::encode( - services.issuer.clone(), - Header::new(get_preferred_signing_algorithm()), - vc_jwt_object, - &default_did_method.to_string() - ) - .await - .ok()) }; Ok(vec![CredentialSigned { diff --git a/agent_issuance/src/credential/error.rs b/agent_issuance/src/credential/error.rs index 95d7ba76a..b1f4f268a 100644 --- a/agent_issuance/src/credential/error.rs +++ b/agent_issuance/src/credential/error.rs @@ -20,4 +20,8 @@ pub enum CredentialError { InvalidCredentialStatus, #[error("Failed to create the credential: {0}")] BuildCredentialError(String), + #[error("Invalid issuer DID")] + InvalidIssuerDidError, + #[error("Failed to get a key identifier for signing the credential")] + KeyIdError, } diff --git a/agent_issuance/src/state.rs b/agent_issuance/src/state.rs index 108937fa3..cb1e3af1b 100644 --- a/agent_issuance/src/state.rs +++ b/agent_issuance/src/state.rs @@ -215,14 +215,14 @@ pub async fn update_credential_configurations(state: &IssuanceState) -> anyhow:: "format": "jwt_vc_json", "type": ["VerifiableCredential"], "display": [ - { - "name": "Verifiable Credential", - "locale": "en", - "logo": { - "uri": "https://www.impierce.com/external/impierce-logo.png", - "alt_text": "Impierce Logo" + { + "name": "Verifiable Credential", + "locale": "en", + "logo": { + "uri": "https://www.impierce.com/external/impierce-logo.png", + "alt_text": "Impierce Logo" + } } - } ], "claims": [ { @@ -251,6 +251,16 @@ pub async fn update_credential_configurations(state: &IssuanceState) -> anyhow:: { "credential_configuration_id": "SD-JWT", "format": "dc+sd-jwt", + "display": [ + { + "name": "SD-JWT VC Credential", + "locale": "en", + "logo": { + "uri": "https://www.impierce.com/external/impierce-logo.png", + "alt_text": "Impierce Logo" + } + } + ], "claims": [ { "path": ["first_name"], From a8e85103b21c18d4f1f5c14b2e4d79d52f4dd12c Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 2 Feb 2026 13:45:03 +0100 Subject: [PATCH 10/35] feat: enhance type metadata handling with display and claims processing --- .../src/v0/issuance/ietf_oauth_sd_jwt_vc.rs | 59 +++++++++++++++++-- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/agent_api_http/src/v0/issuance/ietf_oauth_sd_jwt_vc.rs b/agent_api_http/src/v0/issuance/ietf_oauth_sd_jwt_vc.rs index 3fb5aa64a..9e8e1c1ad 100644 --- a/agent_api_http/src/v0/issuance/ietf_oauth_sd_jwt_vc.rs +++ b/agent_api_http/src/v0/issuance/ietf_oauth_sd_jwt_vc.rs @@ -5,7 +5,12 @@ use axum::{ response::{IntoResponse, Response}, }; use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; -use identity_credential::sd_jwt_vc::metadata::TypeMetadata; +use identity_credential::sd_jwt_vc::metadata::{ + ClaimDisclosability, ClaimDisplay, ClaimMetadata, DisplayMetadata, TypeMetadata, +}; +use oid4vci::credential_issuer::credential_configurations_supported::{ + ClaimDescription, CredentialConfigurationsSupportedDisplay, +}; use std::sync::Arc; #[axum_macros::debug_handler] @@ -20,7 +25,7 @@ pub(crate) async fn type_metadata( .ok_or(PublicError::NotFoundError)?; // Check if the credential configuration IDs are valid. - let _credential_configuration = query_handler(SERVER_CONFIG_ID, &state.query.server_config) + let credential_configuration = query_handler(SERVER_CONFIG_ID, &state.query.server_config) .await? .and_then(|server_config_view| { server_config_view @@ -31,17 +36,61 @@ pub(crate) async fn type_metadata( }) .ok_or(PublicError::NotFoundError)?; + let display = credential_configuration_display_to_display_metadata(credential_configuration.display); + let claims = claim_description_to_claims(credential_configuration.claims); + // TODO: Fill in more of these fields once `agent_library` supports it. + // TODO: instead of contructing `TypeMetadata` here, we should store it as a View/Read Model and simply query it here. let type_metadata = TypeMetadata { name: Some(credential_configuration_id), description: None, extends: None, extends_integrity: None, schema: None, - // TODO: Fill in display and claims once these issues are resolved: https://github.com/iotaledger/identity/pull/1770/changes#r2729345235 - display: vec![], - claims: vec![], + display, + claims, }; Ok((axum::http::StatusCode::OK, axum::Json(type_metadata)).into_response()) } + +fn credential_configuration_display_to_display_metadata( + supported_display: Vec, +) -> Vec { + supported_display + .into_iter() + .map(|display| DisplayMetadata { + locale: display.locale.unwrap_or_default(), + name: display.name, + description: display.description, + rendering: None, + }) + .collect() +} + +fn claim_description_to_claims(claim_descriptions: Vec) -> Vec { + claim_descriptions + .into_iter() + .filter_map(|claim| { + let display = claim + .display + .into_iter() + .map(|display| ClaimDisplay { + locale: display.locale.unwrap_or_default(), + label: display.name, + description: None, + }) + .collect(); + + serde_json::from_value(serde_json::json!(claim.path)) + .ok() + .map(|path| ClaimMetadata { + path, + display, + mandatory: None, + sd: Some(ClaimDisclosability::Always), + svg_id: None, + }) + }) + .collect() +} From 778e8414a716d0e8d752fc1f0f09fdedb2edd513 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 2 Feb 2026 14:12:07 +0100 Subject: [PATCH 11/35] refactor: use typed `status` claim --- Cargo.lock | 48 +++++++++---------- Cargo.toml | 24 +++++----- .../issuance/credential_issuer/credential.rs | 4 +- agent_issuance/src/credential/aggregate.rs | 35 +++++--------- agent_secret_manager/Cargo.toml | 6 +-- 5 files changed, 53 insertions(+), 64 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 60dfc4554..2d42421a8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2402,7 +2402,7 @@ checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "consumer" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" +source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" dependencies = [ "did_iota", "did_jwk", @@ -3161,7 +3161,7 @@ dependencies = [ [[package]] name = "did_iota" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" +source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" dependencies = [ "anyhow", "identity_iota", @@ -3176,7 +3176,7 @@ dependencies = [ [[package]] name = "did_jwk" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" +source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" dependencies = [ "did-jwk", "identity_iota", @@ -3193,7 +3193,7 @@ dependencies = [ [[package]] name = "did_key" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" +source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" dependencies = [ "did-method-key", "identity_iota", @@ -3240,7 +3240,7 @@ dependencies = [ [[package]] name = "did_web" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" +source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" dependencies = [ "did-web", "identity_iota", @@ -4970,7 +4970,7 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "identity_core" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" dependencies = [ "deranged", "js-sys", @@ -4988,7 +4988,7 @@ dependencies = [ [[package]] name = "identity_credential" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" dependencies = [ "anyhow", "async-trait", @@ -5016,7 +5016,7 @@ dependencies = [ [[package]] name = "identity_did" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" dependencies = [ "did_url_parser 0.3.0", "form_urlencoded", @@ -5030,7 +5030,7 @@ dependencies = [ [[package]] name = "identity_document" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" dependencies = [ "did_url_parser 0.2.0", "identity_core", @@ -5045,7 +5045,7 @@ dependencies = [ [[package]] name = "identity_eddsa_verifier" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" dependencies = [ "identity_jose", "iota-crypto", @@ -5054,7 +5054,7 @@ dependencies = [ [[package]] name = "identity_iota" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" dependencies = [ "identity_core", "identity_credential", @@ -5070,7 +5070,7 @@ dependencies = [ [[package]] name = "identity_iota_core" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" dependencies = [ "anyhow", "async-stream", @@ -5115,7 +5115,7 @@ dependencies = [ [[package]] name = "identity_jose" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" dependencies = [ "anyhow", "bls12_381_plus 0.8.18", @@ -5135,7 +5135,7 @@ dependencies = [ [[package]] name = "identity_resolver" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" dependencies = [ "async-trait", "futures", @@ -5152,7 +5152,7 @@ dependencies = [ [[package]] name = "identity_storage" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" dependencies = [ "anyhow", "async-trait", @@ -5180,7 +5180,7 @@ dependencies = [ [[package]] name = "identity_stronghold" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" dependencies = [ "async-trait", "identity_storage", @@ -5196,7 +5196,7 @@ dependencies = [ [[package]] name = "identity_stronghold_ext" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" +source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" dependencies = [ "async-trait", "elliptic-curve 0.13.8", @@ -5216,7 +5216,7 @@ dependencies = [ [[package]] name = "identity_verification" version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=11756ad#11756ad808abeb794f219017ec0c18e16e898cc9" +source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" dependencies = [ "identity_core", "identity_did", @@ -8386,7 +8386,7 @@ dependencies = [ [[package]] name = "oid4vc-core" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=124323e#124323eea8af568efc84f1da9b67da1e9729ec96" +source = "git+https://github.com/impierce/openid4vc?rev=316d7b3#316d7b327e37c136164d29331ec72ee3468dcaea" dependencies = [ "anyhow", "async-trait", @@ -8411,7 +8411,7 @@ dependencies = [ [[package]] name = "oid4vc-manager" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=124323e#124323eea8af568efc84f1da9b67da1e9729ec96" +source = "git+https://github.com/impierce/openid4vc?rev=316d7b3#316d7b327e37c136164d29331ec72ee3468dcaea" dependencies = [ "anyhow", "async-trait", @@ -8444,7 +8444,7 @@ dependencies = [ [[package]] name = "oid4vci" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=124323e#124323eea8af568efc84f1da9b67da1e9729ec96" +source = "git+https://github.com/impierce/openid4vc?rev=316d7b3#316d7b327e37c136164d29331ec72ee3468dcaea" dependencies = [ "anyhow", "chrono", @@ -8472,7 +8472,7 @@ dependencies = [ [[package]] name = "oid4vp" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=124323e#124323eea8af568efc84f1da9b67da1e9729ec96" +source = "git+https://github.com/impierce/openid4vc?rev=316d7b3#316d7b327e37c136164d29331ec72ee3468dcaea" dependencies = [ "anyhow", "chrono", @@ -11156,7 +11156,7 @@ dependencies = [ [[package]] name = "shared" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=f26da3e#f26da3eee0ccd8110f6115c192412ec48191577f" +source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" dependencies = [ "identity_iota", "identity_storage", @@ -11262,7 +11262,7 @@ dependencies = [ [[package]] name = "siopv2" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=124323e#124323eea8af568efc84f1da9b67da1e9729ec96" +source = "git+https://github.com/impierce/openid4vc?rev=316d7b3#316d7b327e37c136164d29331ec72ee3468dcaea" dependencies = [ "anyhow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index 572968cae..ff7c65d74 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,11 +24,11 @@ rust-version = "1.76.0" [workspace.dependencies] # TODO: For all `openid4vc` dependencies, switch to latest `dev` revision once https://github.com/impierce/openid4vc/pull/118 is merged. -siopv2 = { git = "https://github.com/impierce/openid4vc", rev = "124323e" } -oid4vci = { git = "https://github.com/impierce/openid4vc", rev = "124323e" } -oid4vc-core = { git = "https://github.com/impierce/openid4vc", rev = "124323e" } -oid4vc-manager = { git = "https://github.com/impierce/openid4vc", rev = "124323e" } -oid4vp = { git = "https://github.com/impierce/openid4vc", rev = "124323e" } +siopv2 = { git = "https://github.com/impierce/openid4vc", rev = "316d7b3" } +oid4vci = { git = "https://github.com/impierce/openid4vc", rev = "316d7b3" } +oid4vc-core = { git = "https://github.com/impierce/openid4vc", rev = "316d7b3" } +oid4vc-manager = { git = "https://github.com/impierce/openid4vc", rev = "316d7b3" } +oid4vp = { git = "https://github.com/impierce/openid4vc", rev = "316d7b3" } anyhow = "1.0" async-std = { version = "1.5", features = ["attributes", "tokio1"] } @@ -40,19 +40,19 @@ cqrs-es = "0.4.12" derivative = "2.2" futures = "0.3" # TODO: For all `identity_*` dependencies, switch to latest `beta` tag once https://github.com/iotaledger/identity/pull/1770 is merged. -identity_core = { git = "https://github.com/iotaledger/identity", rev = "11756ad" } -identity_credential = { git = "https://github.com/iotaledger/identity", rev = "11756ad", default-features = false, features = [ +identity_core = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5" } +identity_credential = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5", default-features = false, features = [ "credential", "domain-linkage", "presentation", "sd-jwt-vc", "validator", ] } -identity_did = { git = "https://github.com/iotaledger/identity", rev = "11756ad" } -identity_document = { git = "https://github.com/iotaledger/identity", rev = "11756ad" } -identity_iota = { git = "https://github.com/iotaledger/identity", rev = "11756ad" } -identity_storage = { git = "https://github.com/iotaledger/identity", rev = "11756ad" } -identity_verification = { git = "https://github.com/iotaledger/identity", rev = "11756ad", default-features = false } +identity_did = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5" } +identity_document = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5" } +identity_iota = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5" } +identity_storage = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5" } +identity_verification = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5", default-features = false } iota-sdk = { git = "https://github.com/iotaledger/iota", package = "iota-sdk", tag = "v1.13.1" } # TODO: Check if this is still needed. iota-sdk-legacy = { version = "1.0", package = "iota-sdk", default-features = false, features = [ diff --git a/agent_api_http/src/v0/issuance/credential_issuer/credential.rs b/agent_api_http/src/v0/issuance/credential_issuer/credential.rs index 8639b716d..915e1c493 100644 --- a/agent_api_http/src/v0/issuance/credential_issuer/credential.rs +++ b/agent_api_http/src/v0/issuance/credential_issuer/credential.rs @@ -174,8 +174,8 @@ pub mod tests { Mock, MockServer, ResponseTemplate, }; - const CREDENTIAL_JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsInN1YiI6ImRpZDprZXk6ejZNa2lpZXlvTE1TVnNKQVp2N0pqZTV3V1NrREV5bVVna3lGOGtiY3JqWnBYM3FkIiwibmJmIjoxMjYyMzA0MDAwLCJpYXQiOjEyNjIzMDQwMDAsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiXSwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6a2V5Ono2TWtpaWV5b0xNU1ZzSkFadjdKamU1d1dTa0RFeW1VZ2t5RjhrYmNyalpwWDNxZCIsImZpcnN0X25hbWUiOiJGZXJyaXMiLCJsYXN0X25hbWUiOiJSdXN0YWNlYW4ifSwiaXNzdWVyIjoiZGlkOmtleTp6Nk1rZ0U4NE5DTXBNZUF4OWpLOWNmNVc0RzhnY1o5eHV3SnZHMWU3d05rOEtDZ3QiLCJpc3N1YW5jZURhdGUiOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdGF0dXMiOnsiaWQiOiJodHRwczovL215LWRvbWFpbi5leGFtcGxlLm9yZy9pZXRmLW9hdXRoLXRva2VuLXN0YXR1cy1saXN0LzAiLCJ0eXBlIjoic3RhdHVzbGlzdCtqd3QiLCJpZHgiOjEyMywidXJpIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIn19LCJzdGF0dXMiOnsic3RhdHVzX2xpc3QiOnsiaWR4IjoxMjMsInVyaSI6Imh0dHBzOi8vbXktZG9tYWluLmV4YW1wbGUub3JnL2lldGYtb2F1dGgtdG9rZW4tc3RhdHVzLWxpc3QvMCJ9fX0.LpNq8l-qqqCA-htsB8KZLaVoNCfxqTrsPxVmEj0dsPAGFhOqO8lXI7DU0FhNwzWedxJ1ySS_Vq7ChBW-TgY7Bw"; - const ANONYMOUS_CREDENTIAL_JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsIm5iZiI6MTI2MjMwNDAwMCwiaWF0IjoxMjYyMzA0MDAwLCJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSJdLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIl0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImZpcnN0X25hbWUiOiJGZXJyaXMiLCJsYXN0X25hbWUiOiJSdXN0YWNlYW4ifSwiaXNzdWVyIjoiZGlkOmtleTp6Nk1rZ0U4NE5DTXBNZUF4OWpLOWNmNVc0RzhnY1o5eHV3SnZHMWU3d05rOEtDZ3QiLCJpc3N1YW5jZURhdGUiOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdGF0dXMiOnsiaWQiOiJodHRwczovL215LWRvbWFpbi5leGFtcGxlLm9yZy9pZXRmLW9hdXRoLXRva2VuLXN0YXR1cy1saXN0LzAiLCJ0eXBlIjoic3RhdHVzbGlzdCtqd3QiLCJpZHgiOjEyMywidXJpIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIn19LCJzdGF0dXMiOnsic3RhdHVzX2xpc3QiOnsiaWR4IjoxMjMsInVyaSI6Imh0dHBzOi8vbXktZG9tYWluLmV4YW1wbGUub3JnL2lldGYtb2F1dGgtdG9rZW4tc3RhdHVzLWxpc3QvMCJ9fX0.SxT7dwfIdkqTTYnSDzAEE5-csEUb9ucWWEcgIgDEEiK7VwsdW9k7ozLvi79Yfa71Q1buILLJdzLYf1mHE-V2Bg"; + const CREDENTIAL_JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsInN1YiI6ImRpZDprZXk6ejZNa2lpZXlvTE1TVnNKQVp2N0pqZTV3V1NrREV5bVVna3lGOGtiY3JqWnBYM3FkIiwibmJmIjoxMjYyMzA0MDAwLCJpYXQiOjEyNjIzMDQwMDAsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiXSwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6a2V5Ono2TWtpaWV5b0xNU1ZzSkFadjdKamU1d1dTa0RFeW1VZ2t5RjhrYmNyalpwWDNxZCIsImZpcnN0X25hbWUiOiJGZXJyaXMiLCJsYXN0X25hbWUiOiJSdXN0YWNlYW4ifSwiaXNzdWVyIjoiZGlkOmtleTp6Nk1rZ0U4NE5DTXBNZUF4OWpLOWNmNVc0RzhnY1o5eHV3SnZHMWU3d05rOEtDZ3QiLCJpc3N1YW5jZURhdGUiOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdGF0dXMiOnsiaWQiOiJodHRwczovL215LWRvbWFpbi5leGFtcGxlLm9yZy9pZXRmLW9hdXRoLXRva2VuLXN0YXR1cy1saXN0LzAiLCJ0eXBlIjoic3RhdHVzbGlzdCtqd3QiLCJpZHgiOjEyMywidXJpIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIn19LCJzdGF0dXMiOnsic3RhdHVzX2xpc3QiOnsidXJpIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIiwiaWR4IjoxMjN9fX0.hpDfiFRTZPH0XyvmZ9LDq0sPJbvnkJvGsEhZwb-OGoYetkN9zNT6vRKqj2FEoVutF-RfSKjGTNyFPdPI6OvMAg"; + const ANONYMOUS_CREDENTIAL_JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsIm5iZiI6MTI2MjMwNDAwMCwiaWF0IjoxMjYyMzA0MDAwLCJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSJdLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIl0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImZpcnN0X25hbWUiOiJGZXJyaXMiLCJsYXN0X25hbWUiOiJSdXN0YWNlYW4ifSwiaXNzdWVyIjoiZGlkOmtleTp6Nk1rZ0U4NE5DTXBNZUF4OWpLOWNmNVc0RzhnY1o5eHV3SnZHMWU3d05rOEtDZ3QiLCJpc3N1YW5jZURhdGUiOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdGF0dXMiOnsiaWQiOiJodHRwczovL215LWRvbWFpbi5leGFtcGxlLm9yZy9pZXRmLW9hdXRoLXRva2VuLXN0YXR1cy1saXN0LzAiLCJ0eXBlIjoic3RhdHVzbGlzdCtqd3QiLCJpZHgiOjEyMywidXJpIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIn19LCJzdGF0dXMiOnsic3RhdHVzX2xpc3QiOnsidXJpIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIiwiaWR4IjoxMjN9fX0.pn0weAAGWvUzSBiz6vVWfVFFgGYVJH5vBZOqPaRR2yDenuN6oyY5R1K3h4WlRAVKVS0iE8hYYGbAia9svr8eCw"; const DEFAULT_EXTERNAL_SERVER_RESPONSE_TIMEOUT_MS: u64 = 1000; trait CredentialEventTrigger { diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index b7b8a5d23..8f318ca7b 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -14,7 +14,7 @@ use identity_core::convert::FromJson; use identity_credential::credential::{ Credential as W3CVerifiableCredential, CredentialBuilder as W3CVerifiableCredentialBuilder, Issuer, }; -use identity_credential::sd_jwt_vc::{SdJwtVcBuilder, SdJwtVcClaims}; +use identity_credential::sd_jwt_vc::{self, SdJwtVcBuilder, SdJwtVcClaims, StatusListRef, StatusMechanism}; use jsonwebtoken::Header; use oauth_tsl::status_list::StatusType; use oauth_tsl::tokens::status_list_token::StatusListTyp; @@ -398,6 +398,11 @@ impl Aggregate for Credential { let status_list_url = get_status_list_url(self.credential_status.index)?; + let status_claim = sd_jwt_vc::Status(StatusMechanism::StatusList(StatusListRef { + idx: self.credential_status.index, + uri: status_list_url, + })); + let signed_credential = match &self.credential_configuration.credential_format { CredentialFormats::JwtVcJson(_) => { if let Some(ref id) = id { @@ -483,15 +488,7 @@ impl Aggregate for Credential { ))? .clone(); - vc_jwt_object.insert( - "status".to_string(), - json!({ - "status_list": { - "idx": self.credential_status.index, - "uri": status_list_url, - } - }), - ); + vc_jwt_object.insert("status".to_string(), json!(status_claim)); json!(jwt::encode( services.issuer.clone(), @@ -530,15 +527,7 @@ impl Aggregate for Credential { .header("kid", kid); builder = builder.iss(issuer_did); - builder = builder.status( - serde_json::from_value(serde_json::json!({ - "status_list": { - "idx": self.credential_status.index, - "uri": status_list_url, - } - })) - .unwrap(), - ); + builder = builder.status(status_claim); if let Some(holder_kid) = holder_kid.clone() { builder = builder.require_key_binding(RequiredKeyBinding::Kid(holder_kid)); @@ -661,7 +650,7 @@ impl Aggregate for Credential { // Helpers -fn get_status_list_url(index: usize) -> Result { +fn get_status_list_url(index: usize) -> Result { let statuses_per_byte: usize = 8 / BITS_PER_STATUS as usize; let status_list_number = index / ((STATUS_LIST_BYTES_AMOUNT * statuses_per_byte) as f64 * 0.7) as usize; @@ -671,7 +660,7 @@ fn get_status_list_url(index: usize) -> Result { .map_err(|_| CredentialError::InvalidCredentialStatus)? .push(&status_list_number.to_string()); - Ok(status_list_url) + Ok(status_list_url.into()) } #[cfg(test)] @@ -833,9 +822,9 @@ pub mod test_utils { identity_core::common::Timestamp::parse("2010-01-01T00:00:00Z").unwrap() } - pub const OPENBADGE_VERIFIABLE_CREDENTIAL_JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsInN1YiI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwibmJmIjoxMjYyMzA0MDAwLCJpYXQiOjEyNjIzMDQwMDAsImp0aSI6Imh0dHBzOi8vZXhhbXBsZS5jb20vY3JlZGVudGlhbHMvMzUyNyIsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIiwiaHR0cHM6Ly9wdXJsLmltc2dsb2JhbC5vcmcvc3BlYy9vYi92M3AwL2NvbnRleHQtMy4wLjMuanNvbiJdLCJpZCI6Imh0dHBzOi8vZXhhbXBsZS5jb20vY3JlZGVudGlhbHMvMzUyNyIsInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJPcGVuQmFkZ2VDcmVkZW50aWFsIl0sImlzc3VlciI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwiaXNzdWFuY2VEYXRlIjoiMjAxMC0wMS0wMVQwMDowMDowMFoiLCJuYW1lIjoiVGVhbXdvcmsgQmFkZ2UiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwidHlwZSI6WyJBY2hpZXZlbWVudFN1YmplY3QiXSwiYWNoaWV2ZW1lbnQiOnsiaWQiOiJodHRwczovL2V4YW1wbGUuY29tL2FjaGlldmVtZW50cy8yMXN0LWNlbnR1cnktc2tpbGxzL3RlYW13b3JrIiwidHlwZSI6IkFjaGlldmVtZW50IiwiY3JpdGVyaWEiOnsibmFycmF0aXZlIjoiVGVhbSBtZW1iZXJzIGFyZSBub21pbmF0ZWQgZm9yIHRoaXMgYmFkZ2UgYnkgdGhlaXIgcGVlcnMgYW5kIHJlY29nbml6ZWQgdXBvbiByZXZpZXcgYnkgRXhhbXBsZSBDb3JwIG1hbmFnZW1lbnQuIn0sImRlc2NyaXB0aW9uIjoiVGhpcyBiYWRnZSByZWNvZ25pemVzIHRoZSBkZXZlbG9wbWVudCBvZiB0aGUgY2FwYWNpdHkgdG8gY29sbGFib3JhdGUgd2l0aGluIGEgZ3JvdXAgZW52aXJvbm1lbnQuIiwibmFtZSI6IlRlYW13b3JrIn19LCJjcmVkZW50aWFsU3RhdHVzIjp7ImlkIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIiwidHlwZSI6InN0YXR1c2xpc3Qrand0IiwidXJpIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIiwiaWR4IjowfX0sInN0YXR1cyI6eyJzdGF0dXNfbGlzdCI6eyJpZHgiOjAsInVyaSI6Imh0dHBzOi8vbXktZG9tYWluLmV4YW1wbGUub3JnL2lldGYtb2F1dGgtdG9rZW4tc3RhdHVzLWxpc3QvMCJ9fX0.FBmcIzSWi10Fvr_r6PLM18seqiavenyuSzryt-CToleTUuy5p4lLzWm1Cj5OmYrEWxwC4dMH46szxEt8YwqsBw"; + pub const OPENBADGE_VERIFIABLE_CREDENTIAL_JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsInN1YiI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwibmJmIjoxMjYyMzA0MDAwLCJpYXQiOjEyNjIzMDQwMDAsImp0aSI6Imh0dHBzOi8vZXhhbXBsZS5jb20vY3JlZGVudGlhbHMvMzUyNyIsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIiwiaHR0cHM6Ly9wdXJsLmltc2dsb2JhbC5vcmcvc3BlYy9vYi92M3AwL2NvbnRleHQtMy4wLjMuanNvbiJdLCJpZCI6Imh0dHBzOi8vZXhhbXBsZS5jb20vY3JlZGVudGlhbHMvMzUyNyIsInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJPcGVuQmFkZ2VDcmVkZW50aWFsIl0sImlzc3VlciI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwiaXNzdWFuY2VEYXRlIjoiMjAxMC0wMS0wMVQwMDowMDowMFoiLCJuYW1lIjoiVGVhbXdvcmsgQmFkZ2UiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwidHlwZSI6WyJBY2hpZXZlbWVudFN1YmplY3QiXSwiYWNoaWV2ZW1lbnQiOnsiaWQiOiJodHRwczovL2V4YW1wbGUuY29tL2FjaGlldmVtZW50cy8yMXN0LWNlbnR1cnktc2tpbGxzL3RlYW13b3JrIiwidHlwZSI6IkFjaGlldmVtZW50IiwiY3JpdGVyaWEiOnsibmFycmF0aXZlIjoiVGVhbSBtZW1iZXJzIGFyZSBub21pbmF0ZWQgZm9yIHRoaXMgYmFkZ2UgYnkgdGhlaXIgcGVlcnMgYW5kIHJlY29nbml6ZWQgdXBvbiByZXZpZXcgYnkgRXhhbXBsZSBDb3JwIG1hbmFnZW1lbnQuIn0sImRlc2NyaXB0aW9uIjoiVGhpcyBiYWRnZSByZWNvZ25pemVzIHRoZSBkZXZlbG9wbWVudCBvZiB0aGUgY2FwYWNpdHkgdG8gY29sbGFib3JhdGUgd2l0aGluIGEgZ3JvdXAgZW52aXJvbm1lbnQuIiwibmFtZSI6IlRlYW13b3JrIn19LCJjcmVkZW50aWFsU3RhdHVzIjp7ImlkIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIiwidHlwZSI6InN0YXR1c2xpc3Qrand0IiwidXJpIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIiwiaWR4IjowfX0sInN0YXR1cyI6eyJzdGF0dXNfbGlzdCI6eyJ1cmkiOiJodHRwczovL215LWRvbWFpbi5leGFtcGxlLm9yZy9pZXRmLW9hdXRoLXRva2VuLXN0YXR1cy1saXN0LzAiLCJpZHgiOjB9fX0.PDwoMAawtjYr-cn5tfcPpnatf8cLuJMtaGXwsmEGimE-ki_fS8B1itBMGeQZyPhqhJIpD7ZepxYEn7rMXc0fDg"; - pub const W3C_VC_VERIFIABLE_CREDENTIAL_JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsInN1YiI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwibmJmIjoxMjYyMzA0MDAwLCJpYXQiOjEyNjIzMDQwMDAsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiXSwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsImZpcnN0X25hbWUiOiJGZXJyaXMiLCJsYXN0X25hbWUiOiJSdXN0YWNlYW4iLCJkZWdyZWUiOnsidHlwZSI6Ik1hc3RlckRlZ3JlZSIsIm5hbWUiOiJNYXN0ZXIgb2YgT2NlYW5vZ3JhcGh5In19LCJpc3N1ZXIiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsImlzc3VhbmNlRGF0ZSI6IjIwMTAtMDEtMDFUMDA6MDA6MDBaIiwiY3JlZGVudGlhbFN0YXR1cyI6eyJpZCI6Imh0dHBzOi8vbXktZG9tYWluLmV4YW1wbGUub3JnL2lldGYtb2F1dGgtdG9rZW4tc3RhdHVzLWxpc3QvMCIsInR5cGUiOiJzdGF0dXNsaXN0K2p3dCIsInVyaSI6Imh0dHBzOi8vbXktZG9tYWluLmV4YW1wbGUub3JnL2lldGYtb2F1dGgtdG9rZW4tc3RhdHVzLWxpc3QvMCIsImlkeCI6MH19LCJzdGF0dXMiOnsic3RhdHVzX2xpc3QiOnsiaWR4IjowLCJ1cmkiOiJodHRwczovL215LWRvbWFpbi5leGFtcGxlLm9yZy9pZXRmLW9hdXRoLXRva2VuLXN0YXR1cy1saXN0LzAifX19.C-nr-XWFgxQsQTFTQ84d2u-88yL7MEalB_QXHdklfvwIeLL_vYWU4wsRpseB67z5l-3s4zb1nF76yXPjm58vCg"; + pub const W3C_VC_VERIFIABLE_CREDENTIAL_JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsInN1YiI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwibmJmIjoxMjYyMzA0MDAwLCJpYXQiOjEyNjIzMDQwMDAsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiXSwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsImZpcnN0X25hbWUiOiJGZXJyaXMiLCJsYXN0X25hbWUiOiJSdXN0YWNlYW4iLCJkZWdyZWUiOnsidHlwZSI6Ik1hc3RlckRlZ3JlZSIsIm5hbWUiOiJNYXN0ZXIgb2YgT2NlYW5vZ3JhcGh5In19LCJpc3N1ZXIiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsImlzc3VhbmNlRGF0ZSI6IjIwMTAtMDEtMDFUMDA6MDA6MDBaIiwiY3JlZGVudGlhbFN0YXR1cyI6eyJpZCI6Imh0dHBzOi8vbXktZG9tYWluLmV4YW1wbGUub3JnL2lldGYtb2F1dGgtdG9rZW4tc3RhdHVzLWxpc3QvMCIsInR5cGUiOiJzdGF0dXNsaXN0K2p3dCIsInVyaSI6Imh0dHBzOi8vbXktZG9tYWluLmV4YW1wbGUub3JnL2lldGYtb2F1dGgtdG9rZW4tc3RhdHVzLWxpc3QvMCIsImlkeCI6MH19LCJzdGF0dXMiOnsic3RhdHVzX2xpc3QiOnsidXJpIjoiaHR0cHM6Ly9teS1kb21haW4uZXhhbXBsZS5vcmcvaWV0Zi1vYXV0aC10b2tlbi1zdGF0dXMtbGlzdC8wIiwiaWR4IjowfX19.O95yvZmczmZs7-crtkthFgF2YNRHsfaiBfWPe-aL9flxoq-upcpfR2NsvvK5t_EojWgeXICL4XY358HCr_ADCA"; #[fixture] pub fn credential_id() -> String { diff --git a/agent_secret_manager/Cargo.toml b/agent_secret_manager/Cargo.toml index 1be3894e2..8fe55e0b7 100644 --- a/agent_secret_manager/Cargo.toml +++ b/agent_secret_manager/Cargo.toml @@ -14,9 +14,9 @@ agent_shared = { path = "../agent_shared" } # - All components of the `identity_stronghold_ext` module are still active. # # Future work: Migrate the remaining functionality into UniCore. -did_manager_consumer = { git = "https://github.com/impierce/did-manager", rev = "f26da3e", package = "consumer" } -did_manager_identity_stronghold_ext = { git = "https://github.com/impierce/did-manager", rev = "f26da3e", package = "identity_stronghold_ext" } -did_manager_iota = { git = "https://github.com/impierce/did-manager", rev = "f26da3e", package = "did_iota" } +did_manager_consumer = { git = "https://github.com/impierce/did-manager", rev = "a76a2a3", package = "consumer" } +did_manager_identity_stronghold_ext = { git = "https://github.com/impierce/did-manager", rev = "a76a2a3", package = "identity_stronghold_ext" } +did_manager_iota = { git = "https://github.com/impierce/did-manager", rev = "a76a2a3", package = "did_iota" } anyhow.workspace = true async-trait.workspace = true From e6fd31943bdb911c1bcc2afa30cafa6a37587a46 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 2 Feb 2026 14:20:53 +0100 Subject: [PATCH 12/35] feat: add SD-JWT VC credential creation and metadata retrieval requests to Postman collection --- .../postman/ssi-agent.postman_collection.json | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/agent_api_http/postman/ssi-agent.postman_collection.json b/agent_api_http/postman/ssi-agent.postman_collection.json index 25257d78b..ab82ae398 100644 --- a/agent_api_http/postman/ssi-agent.postman_collection.json +++ b/agent_api_http/postman/ssi-agent.postman_collection.json @@ -118,6 +118,60 @@ }, "response": [] }, + { + "name": "Create an SD-JWT VC Credential", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"SD-JWT\",\n \"credential\": {\n \"first_name\": \"Ferris\",\n \"last_name\": \"Crabman\",\n \"dob\": \"1982-01-01\"\n },\n \"expiresAt\": \"never\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, { "name": "ACME Corp Credential", "event": [ @@ -849,6 +903,69 @@ } ] }, + { + "name": "ietf oauth sd-jwt vc", + "item": [ + { + "name": "SD-JWT VC Type Metadata", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"002\",\n \"credential\": {\n \"first_name\": \"Ferris\",\n \"last_name\": \"Crabman\",\n \"dob\": \"1982-01-01\"\n },\n \"expiresAt\": \"never\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/vct/U0QtSldU/0", + "host": [ + "{{HOST}}" + ], + "path": [ + "vct", + "U0QtSldU", + "0" + ] + } + }, + "response": [] + } + ] + }, { "name": "Verification", "item": [ From c997cbb5adfa9ae469039d5409c385fa1ce68074 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 2 Feb 2026 14:28:02 +0100 Subject: [PATCH 13/35] docs: update credential definition structure and add SD-JWT VC configuration to OpenAPI --- agent_api_http/openapi.yaml | 40 +++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/agent_api_http/openapi.yaml b/agent_api_http/openapi.yaml index d1dd3c6f6..ac75de9bf 100644 --- a/agent_api_http/openapi.yaml +++ b/agent_api_http/openapi.yaml @@ -385,16 +385,13 @@ paths: format: type: string example: jwt_vc_json - credential_definition: - type: object - properties: - type: - type: array - items: - type: string - example: VerifiableCredential - example: - - VerifiableCredential + type: + type: array + items: + type: string + example: VerifiableCredential + example: + - VerifiableCredential display: type: array items: @@ -430,10 +427,9 @@ paths: summary: Open Badges 3.0 value: credential_configuration_id: openbadge_credential - credential_definition: - type: - - VerifiableCredential - - OpenBadgeCredential + type: + - VerifiableCredential + - OpenBadgeCredential display: - locale: en logo: @@ -445,9 +441,8 @@ paths: summary: W3C VC Data Model value: credential_configuration_id: w3c_vc_credential - credential_definition: - type: - - VerifiableCredential + type: + - VerifiableCredential display: - locale: en logo: @@ -455,6 +450,17 @@ paths: uri: https://impierce.com/images/logo-blue.png name: Identity Credential format: jwt_vc_json + sd_jwt_vc_credential_configurations: + summary: SD-JWT VC + value: + credential_configuration_id: SD-JWT VC + display: + - locale: en + logo: + alt_text: UniCore Logo + uri: https://impierce.com/images/logo-blue.png + name: Identity Credential + format: dc+sd-jwt responses: "200": description: A Credential Configuration has been successfully added to the Credential Issuer Metadata From 189dde58b09a9621f0cf598ad48f41cdbfc216dd Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 2 Feb 2026 14:32:42 +0100 Subject: [PATCH 14/35] refactor: remove unnecessary clone --- agent_issuance/src/credential/aggregate.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index 8f318ca7b..b7a3292a4 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -529,7 +529,7 @@ impl Aggregate for Credential { builder = builder.iss(issuer_did); builder = builder.status(status_claim); - if let Some(holder_kid) = holder_kid.clone() { + if let Some(holder_kid) = holder_kid { builder = builder.require_key_binding(RequiredKeyBinding::Kid(holder_kid)); } From 3cf286b8e11825319c5b0389870a76b0bd99824a Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 2 Feb 2026 14:57:50 +0100 Subject: [PATCH 15/35] refactor: remove unnecessary `into` --- agent_issuance/src/credential/aggregate.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index b7a3292a4..fc5990f8c 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -211,7 +211,7 @@ impl Aggregate for Credential { .map_err(|_| CredentialError::InvalidCredentialStatus)?; let status = identity_credential::credential::Status { - id: status_list_url.into(), + id: status_list_url, type_: StatusListTyp::Jwt.to_string(), properties: status_uri_idx, }; From d419b485b60cb3a121691824e4ced4de078ed25b Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 3 Feb 2026 09:25:18 +0100 Subject: [PATCH 16/35] fix: remove `credential_definition` property --- agent_application/example.config.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/agent_application/example.config.yaml b/agent_application/example.config.yaml index c4f16c382..7ab2c965d 100644 --- a/agent_application/example.config.yaml +++ b/agent_application/example.config.yaml @@ -57,9 +57,8 @@ display: credential_configurations: - credential_configuration_id: w3c_vc_credential format: jwt_vc_json - credential_definition: - type: - - VerifiableCredential + type: + - VerifiableCredential display: - name: Impierce Credential locale: en From a9b0142cbd1febe4d6c2d5819e4bfbf68defac5c Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 3 Feb 2026 09:32:44 +0100 Subject: [PATCH 17/35] fix: remove request body and script --- .../postman/ssi-agent.postman_collection.json | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/agent_api_http/postman/ssi-agent.postman_collection.json b/agent_api_http/postman/ssi-agent.postman_collection.json index ab82ae398..d3c5e0844 100644 --- a/agent_api_http/postman/ssi-agent.postman_collection.json +++ b/agent_api_http/postman/ssi-agent.postman_collection.json @@ -913,11 +913,6 @@ "listen": "test", "script": { "exec": [ - "const location = pm.response.headers.get(\"LOCATION\");", - "", - "if(location){", - " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", - "}", "" ], "type": "text/javascript", @@ -935,21 +930,9 @@ } } ], - "protocolProfileBehavior": { - "disableBodyPruning": true - }, "request": { "method": "GET", "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"002\",\n \"credential\": {\n \"first_name\": \"Ferris\",\n \"last_name\": \"Crabman\",\n \"dob\": \"1982-01-01\"\n },\n \"expiresAt\": \"never\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, "url": { "raw": "{{HOST}}/vct/U0QtSldU/0", "host": [ From 01cbf3088f7bc41ee4a7d268b33cc1254ba85b0c Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 3 Feb 2026 13:23:26 +0100 Subject: [PATCH 18/35] test: add tests for `JwsSigner` implementation --- .vscode/settings.json | 4 + Cargo.lock | 1 + agent_secret_manager/Cargo.toml | 1 + agent_secret_manager/src/subject.rs | 112 ++++++++++++++++++++++++++-- 4 files changed, 111 insertions(+), 7 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..199c01e4a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "rust-analyzer.cargo.features": ["test_utils"], + "rust-analyzer.runnables.extraArgs": ["--features", "test_utils"] +} diff --git a/Cargo.lock b/Cargo.lock index d99fb81c3..e9bb0cc52 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -409,6 +409,7 @@ dependencies = [ name = "agent_secret_manager" version = "0.1.0" dependencies = [ + "agent_secret_manager", "agent_shared", "anyhow", "async-trait", diff --git a/agent_secret_manager/Cargo.toml b/agent_secret_manager/Cargo.toml index 8fe55e0b7..2ffca1c92 100644 --- a/agent_secret_manager/Cargo.toml +++ b/agent_secret_manager/Cargo.toml @@ -43,6 +43,7 @@ tokio.workspace = true url.workspace = true [dev-dependencies] +agent_secret_manager = { path = ".", features = ["test_utils"] } agent_shared = { path = "../agent_shared", features = ["test_utils"] } futures.workspace = true diff --git a/agent_secret_manager/src/subject.rs b/agent_secret_manager/src/subject.rs index 87f18763b..40ae835e7 100644 --- a/agent_secret_manager/src/subject.rs +++ b/agent_secret_manager/src/subject.rs @@ -299,10 +299,10 @@ impl StorageKey { #[cfg(test)] mod tests { use super::*; - use agent_shared::config::{ - default_issuer_eddsa_key_id, default_issuer_es256_key_id, set_config, SecretManagerConfig, - }; + use agent_shared::config::{default_issuer_eddsa_key_id, default_issuer_es256_key_id, SecretManagerConfig}; + use jsonwebtoken::DecodingKey; use ring::signature::{UnparsedPublicKey, ECDSA_P256_SHA256_FIXED, ED25519}; + use serde_json::json; const ES256_SIGNED_JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6ImRpZDpqd2s6ZXlKaGJHY2lPaUpGVXpJMU5pSXNJbU55ZGlJNklsQXRNalUySWl3aWEybGtJam9pTkVGMVdXaFNRMk5HYkc0eWJuUm5VMTlxT1hCRlFtUkxkekl3VUhRdGJHRnFXVWh0V1RkQk1FMUdUU0lzSW10MGVTSTZJa1ZESWl3aWVDSTZJakpNV0dwT1JFOTZWM1J3WlZOWk0ydGlUbEkyWm14YVRVUjRZV2gxYXpKMlVXMWpkWFprUVRodk5EUWlMQ0o1SWpvaVpFRjJSVlpzV0UxSFVFdGFjMnRXV1RSWlZ6QnpPRUk0UzNZM2Myc3hZemt5VDA1WVJFcHZlRjlJY3lKOSMwIn0.eyJpc3MiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlV6STFOaUlzSW1OeWRpSTZJbEF0TWpVMklpd2lhMmxrSWpvaU5FRjFXV2hTUTJOR2JHNHliblJuVTE5cU9YQkZRbVJMZHpJd1VIUXRiR0ZxV1VodFdUZEJNRTFHVFNJc0ltdDBlU0k2SWtWRElpd2llQ0k2SWpKTVdHcE9SRTk2VjNSd1pWTlpNMnRpVGxJMlpteGFUVVI0WVdoMWF6SjJVVzFqZFhaa1FUaHZORFFpTENKNUlqb2laRUYyUlZac1dFMUhVRXRhYzJ0V1dUUlpWekJ6T0VJNFMzWTNjMnN4WXpreVQwNVlSRXB2ZUY5SWN5SjkiLCJzdWIiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlV6STFOaUlzSW1OeWRpSTZJbEF0TWpVMklpd2lhMmxrSWpvaU5FRjFXV2hTUTJOR2JHNHliblJuVTE5cU9YQkZRbVJMZHpJd1VIUXRiR0ZxV1VodFdUZEJNRTFHVFNJc0ltdDBlU0k2SWtWRElpd2llQ0k2SWpKTVdHcE9SRTk2VjNSd1pWTlpNMnRpVGxJMlpteGFUVVI0WVdoMWF6SjJVVzFqZFhaa1FUaHZORFFpTENKNUlqb2laRUYyUlZac1dFMUhVRXRhYzJ0V1dUUlpWekJ6T0VJNFMzWTNjMnN4WXpreVQwNVlSRXB2ZUY5SWN5SjkiLCJhdWQiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlV6STFOaUlzSW1OeWRpSTZJbEF0TWpVMklpd2lhMmxrSWpvaVlrNDNiSEpaWVhOUlZrNDNMVUpZY0MxMFdFVldTR1l0YVhkTWRsVnRiWHByVUZsc2VHWlRWRkZvVlNJc0ltdDBlU0k2SWtWRElpd2llQ0k2SW1odVkyNU5UM2sxU0dGWGJ6SmFTbmhCWW5sWU1GOW1NVTFHU1dsMlRrRmtUMjFXYjNSWGVWZG9ielFpTENKNUlqb2libE5wYkhwMllsTmFYMUp1VWpOU2RreHdkRWxITmpkVWJWVkVhR1ZQWVZGNlltczJhVFJmWDBkeVFTSjkiLCJleHAiOjE3MjMwMjkyMjUsImlhdCI6MTcyMzAyODYyNSwibm9uY2UiOiJ0aGlzIGlzIGEgbm9uY2UifQ.w202CZKOeGM9k35tysJylksBUGI3fvkOgsPPVrfXYZzurns7KF5plMiR_KHH4H_GpYg57Nf2JWa3YEcXGDTVdw"; const EDDSA_SIGNED_JWT: &str = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDpqd2s6ZXlKaGJHY2lPaUpGWkVSVFFTSXNJbU55ZGlJNklrVmtNalUxTVRraUxDSnJhV1FpT2lKSmJWOVpNRkZQTm05SFgyczVNbTlzY1RWTWRIUTJZVkE0YzE5QmJFRmhWVUl6UzBkelVFY3RlR0kwSWl3aWEzUjVJam9pVDB0UUlpd2llQ0k2SWxaUGFrUjBRblozY0daalNraHlUelpMVjFOUGRYTlZVR1ptUWt3eVIxOUtjWFp0VVRZNFMzaDRWalFpZlEjMCJ9.eyJpc3MiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlpFUlRRU0lzSW1OeWRpSTZJa1ZrTWpVMU1Ua2lMQ0pyYVdRaU9pSkpiVjlaTUZGUE5tOUhYMnM1TW05c2NUVk1kSFEyWVZBNGMxOUJiRUZoVlVJelMwZHpVRWN0ZUdJMElpd2lhM1I1SWpvaVQwdFFJaXdpZUNJNklsWlBha1IwUW5aM2NHWmpTa2h5VHpaTFYxTlBkWE5WVUdabVFrd3lSMTlLY1hadFVUWTRTM2g0VmpRaWZRIiwic3ViIjoiZGlkOmp3azpleUpoYkdjaU9pSkZaRVJUUVNJc0ltTnlkaUk2SWtWa01qVTFNVGtpTENKcmFXUWlPaUpKYlY5Wk1GRlBObTlIWDJzNU1tOXNjVFZNZEhRMllWQTRjMTlCYkVGaFZVSXpTMGR6VUVjdGVHSTBJaXdpYTNSNUlqb2lUMHRRSWl3aWVDSTZJbFpQYWtSMFFuWjNjR1pqU2toeVR6WkxWMU5QZFhOVlVHWm1Ra3d5UjE5S2NYWnRVVFk0UzNoNFZqUWlmUSIsImF1ZCI6ImRpZDpqd2s6ZXlKaGJHY2lPaUpGWkVSVFFTSXNJbU55ZGlJNklrVmtNalUxTVRraUxDSnJhV1FpT2lKdFFqSXhUV2t5Y1V0WVZtTTFOREpVWWt0U09UZ3lUelpUWjFKWVZrWlFaVzV3TTNGWWRIRlRla3R2SWl3aWEzUjVJam9pVDB0UUlpd2llQ0k2SWprM1JVRXpSSE5vUmpONlIwSllTVjlVYnpObVJrUnJNVTFxV1VaYVV6bFZiMUpVYmxCT1NIUlpVV01pZlEiLCJleHAiOjE3MjMwMzE3MTQsImlhdCI6MTcyMzAzMTExNCwibm9uY2UiOiJ0aGlzIGlzIGEgbm9uY2UifQ.oGRYpwH4QvWZs0bZkgAuxq6MqNYdoX44KxNfRl7GzXCnv_0D_c19rhYMwzn04R7udNCthFDr7GUhXLQgROlUDw"; @@ -318,8 +318,6 @@ mod tests { #[tokio::test] async fn es256_signed_jwt_successfully_verified() { - set_config().set_secret_manager_config(SECRET_MANAGER_CONFIG.clone()); - let subject = Arc::new(Subject::test_subject().await); let mut split = ES256_SIGNED_JWT.rsplitn(2, '.'); @@ -338,8 +336,6 @@ mod tests { #[tokio::test] async fn eddsa_signed_jwt_successfully_verified() { - set_config().set_secret_manager_config(SECRET_MANAGER_CONFIG.clone()); - let subject = Arc::new(Subject::test_subject().await); let mut split = EDDSA_SIGNED_JWT.rsplitn(2, '.'); @@ -355,4 +351,106 @@ mod tests { let public_key = UnparsedPublicKey::new(&ED25519, public_key_bytes); assert!(public_key.verify(message.as_bytes(), &signature_bytes).is_ok()); } + + #[tokio::test] + async fn test_jws_signer_with_es256_algorithm() { + let subject = Subject::test_subject().await; + + let preferred_did_method = get_preferred_did_method().to_string(); + let kid = subject.key_id(&preferred_did_method, Algorithm::ES256).await.unwrap(); + + // Create header with ES256 algorithm + let header = json!({ + "alg": "ES256", + "typ": "JWT", + "kid": kid + }); + + // Create a simple payload + let payload = json!({ + "iss": "test-issuer", + "sub": "test-subject", + "iat": 1234567890 + }); + + // Sign using JwsSigner trait + let result = JwsSigner::sign(&subject, header.as_object().unwrap(), payload.as_object().unwrap()).await; + + assert!(result.is_ok()); + + let jwt_bytes = result.unwrap(); + let jwt_string = String::from_utf8(jwt_bytes).unwrap(); + + // Verify JWT has 3 parts (header.payload.signature) + let parts: Vec<&str> = jwt_string.split('.').collect(); + assert_eq!(parts.len(), 3); + + // Verify the header part contains ES256 + let decoded_header = URL_SAFE_NO_PAD.decode(parts[0]).unwrap(); + let header_json: serde_json::Value = serde_json::from_slice(&decoded_header).unwrap(); + assert_eq!(header_json["alg"], "ES256"); + + let public_key = subject.resolve_public_key(&kid).await.unwrap(); + + let jwk = serde_json::from_value(json!(public_key)).unwrap(); + + let decoding_key = DecodingKey::from_jwk(&jwk).unwrap(); + + let mut validation = jsonwebtoken::Validation::new(jsonwebtoken::Algorithm::ES256); + validation.required_spec_claims = Default::default(); + + let token = jsonwebtoken::decode::(&jwt_string, &decoding_key, &validation); + + assert!(token.is_ok()); + } + + #[tokio::test] + async fn test_jws_signer_with_eddsa_algorithm() { + let subject = Subject::test_subject().await; + + let preferred_did_method = get_preferred_did_method().to_string(); + let kid = subject.key_id(&preferred_did_method, Algorithm::EdDSA).await.unwrap(); + + // Create header with EdDSA algorithm + let header = json!({ + "alg": "EdDSA", + "typ": "JWT", + "kid": kid + }); + + // Create a simple payload + let payload = json!({ + "iss": "test-issuer", + "sub": "test-subject", + "iat": 1234567890 + }); + + // Sign using JwsSigner trait + let result = JwsSigner::sign(&subject, header.as_object().unwrap(), payload.as_object().unwrap()).await; + + assert!(result.is_ok()); + + let jwt_bytes = result.unwrap(); + let jwt_string = String::from_utf8(jwt_bytes).unwrap(); + + // Verify JWT has 3 parts (header.payload.signature) + let parts: Vec<&str> = jwt_string.split('.').collect(); + assert_eq!(parts.len(), 3); + + // Verify the header part contains EdDSA + let decoded_header = URL_SAFE_NO_PAD.decode(parts[0]).unwrap(); + let header_json: serde_json::Value = serde_json::from_slice(&decoded_header).unwrap(); + assert_eq!(header_json["alg"], "EdDSA"); + + let public_key = subject.resolve_public_key(&kid).await.unwrap(); + + let decoding_key = DecodingKey::from_jwk(&serde_json::from_value(json!(public_key)).unwrap()).unwrap(); + + let mut validation = jsonwebtoken::Validation::new(jsonwebtoken::Algorithm::EdDSA); + validation.required_spec_claims = Default::default(); + + let token = jsonwebtoken::decode::(&jwt_string, &decoding_key, &validation); + + assert!(token.is_ok()); + } } From 3957a014a174a11aea5116ac22f3062dd8045042 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 3 Feb 2026 15:38:28 +0100 Subject: [PATCH 19/35] refactor: rename issuance_date and expiration_date to created_at and expires_at in Credential struct and related events --- agent_issuance/src/credential/aggregate.rs | 98 +++++++++++----------- agent_issuance/src/credential/event.rs | 4 +- agent_issuance/src/credential/views/mod.rs | 8 +- 3 files changed, 56 insertions(+), 54 deletions(-) diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index fc5990f8c..6c15e77eb 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -93,8 +93,8 @@ pub struct Credential { pub status: Status, pub holder_notifications: Vec, pub credential_status: CredentialStatus, - pub issuance_date: Option, - pub expiration_date: Option, + pub created_at: Option, + pub expires_at: Option, } #[async_trait] @@ -129,14 +129,14 @@ impl Aggregate for Credential { let notification_id = agent_shared::generate_random_string(); #[cfg(feature = "test_utils")] - let issuance_date = "2010-01-01T00:00:00Z".to_string(); + let created_at = "2010-01-01T00:00:00Z".to_string(); #[cfg(not(feature = "test_utils"))] - let issuance_date = chrono::Utc::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, true); + let created_at = chrono::Utc::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, true); - let issuance_date = - identity_core::common::Timestamp::parse(&issuance_date).expect("Could not parse issuance_date"); + let created_at = + identity_core::common::Timestamp::parse(&created_at).expect("Could not parse created_at"); - let expiration_date = match expires_at { + let expires_at = match expires_at { CredentialExpiry::Fixed(fixed) => { let fixed = identity_core::common::Timestamp::from_unix(fixed.timestamp()) .map_err(|_| InvalidExpirationDateError)?; @@ -216,13 +216,16 @@ impl Aggregate for Credential { properties: status_uri_idx, }; - let builder = W3CVerifiableCredentialBuilder::default() + let mut builder = W3CVerifiableCredentialBuilder::default() .issuer(issuer) .subject(credential_subject) - .issuance_date(issuance_date) .status(status); - let builder = if let Some(expiration_date) = expiration_date { + if cfg!(feature = "test_utils") { + builder = builder.issuance_date("2010-01-01T00:00:00Z".parse().unwrap()); + } + + let builder = if let Some(expiration_date) = expires_at { builder.expiration_date(expiration_date) } else { builder @@ -248,8 +251,8 @@ impl Aggregate for Credential { credential_configuration, notification_id: Some(notification_id), credential_status, - issuance_date: Some(issuance_date), - expiration_date, + created_at: Some(created_at), + expires_at, }]); } "AchievementCredential" | "OpenBadgeCredential" => { @@ -270,7 +273,7 @@ impl Aggregate for Credential { type_: StatusListTyp::Jwt.to_string(), }; - let builder = AchievementCredentialBuilder::default() + let mut builder = AchievementCredentialBuilder::default() .context(vec![ "https://www.w3.org/2018/credentials/v1", "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json", @@ -282,10 +285,13 @@ impl Aggregate for Credential { .name(name) .issuer(issuer) .credential_subject(credential_subject) - .issuance_date(issuance_date.to_rfc3339()) .credential_status(builder_credential_status); - let builder = if let Some(expiration_date) = expiration_date { + if cfg!(feature = "test_utils") { + builder = builder.issuance_date("2010-01-01T00:00:00Z"); + } + + let builder = if let Some(expiration_date) = expires_at { builder.expiration_date(expiration_date.to_rfc3339()) } else { builder @@ -320,8 +326,8 @@ impl Aggregate for Credential { data: Data { raw }, credential_configuration, credential_status, - issuance_date: Some(issuance_date), - expiration_date, + created_at: Some(created_at), + expires_at, }]); } _ => continue, @@ -342,8 +348,8 @@ impl Aggregate for Credential { data: Data { raw }, credential_configuration, credential_status, - issuance_date: Some(issuance_date), - expiration_date, + created_at: Some(created_at), + expires_at, }]); } _ => Err(UnsupportedCredentialFormat(serde_json::json!( @@ -377,6 +383,14 @@ impl Aggregate for Credential { return Ok(vec![]); } + #[cfg(feature = "test_utils")] + let issuance_date = "2010-01-01T00:00:00Z".to_string(); + #[cfg(not(feature = "test_utils"))] + let issuance_date = chrono::Utc::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, true); + + let issuance_date = + identity_core::common::Timestamp::parse(&issuance_date).expect("Could not parse issuance_date"); + let id: Option = self .data .as_ref() @@ -412,19 +426,9 @@ impl Aggregate for Credential { #[cfg(feature = "test_utils")] let iat = 1262304000; // 2010-01-01T00:00:00Z #[cfg(not(feature = "test_utils"))] - let iat = credential.raw["issuanceDate"] - .as_str() - .unwrap() - .parse::>() - .unwrap() - .timestamp(); - - let exp = credential.raw["expirationDate"].as_str().map(|expiration_date| { - expiration_date - .parse::>() - .expect("Could not parse `expirationDate` to DateTime") - .timestamp() - }); + let iat = issuance_date.to_unix(); + + let exp = self.expires_at.map(|exp| exp.to_unix()); credential.raw["issuer"] = json!(issuer_did); @@ -533,12 +537,10 @@ impl Aggregate for Credential { builder = builder.require_key_binding(RequiredKeyBinding::Kid(holder_kid)); } - if let Some(issuance_date) = self.issuance_date { - builder = builder.iat(issuance_date); - builder = builder.nbf(issuance_date); - } + builder = builder.iat(issuance_date); + builder = builder.nbf(issuance_date); - if let Some(expiration_date) = self.expiration_date { + if let Some(expiration_date) = self.expires_at { builder = builder.exp(expiration_date); } @@ -601,16 +603,16 @@ impl Aggregate for Credential { credential_configuration, notification_id, credential_status, - issuance_date, - expiration_date, + created_at, + expires_at, } => { self.credential_id = credential_id; self.data.replace(data); self.credential_configuration = *credential_configuration; self.notification_id = notification_id; self.credential_status = credential_status; - self.issuance_date = issuance_date; - self.expiration_date = expiration_date; + self.created_at = created_at; + self.expires_at = expires_at; } SignedCredentialCreated { credential_id, @@ -706,7 +708,7 @@ pub mod credential_tests { #[case] unsigned_credential: serde_json::Value, credential_id: String, notification_id: String, - issuance_date: identity_core::common::Timestamp, + created_at: identity_core::common::Timestamp, ) { CredentialTestFramework::with(IssuanceServices::default().await) .given_no_previous_events() @@ -730,8 +732,8 @@ pub mod credential_tests { index: 0, status: StatusType::VALID, }, - issuance_date: Some(issuance_date), - expiration_date: None, + created_at: Some(created_at), + expires_at: None, }]) } @@ -753,7 +755,7 @@ pub mod credential_tests { #[case] credential_configuration: CredentialConfigurationsSupportedObject, #[case] verifiable_credential_jwt: String, credential_id: String, - issuance_date: identity_core::common::Timestamp, + created_at: identity_core::common::Timestamp, ) { CredentialTestFramework::with(IssuanceServices::default().await) .given(vec![CredentialEvent::UnsignedCredentialCreated { @@ -767,8 +769,8 @@ pub mod credential_tests { index: 0, status: StatusType::VALID, }, - issuance_date: Some(issuance_date), - expiration_date: None, + created_at: Some(created_at), + expires_at: None, }]) .when(CredentialCommand::SignCredential { credential_id: credential_id.clone(), @@ -818,7 +820,7 @@ pub mod test_utils { } #[fixture] - pub fn issuance_date() -> identity_core::common::Timestamp { + pub fn created_at() -> identity_core::common::Timestamp { identity_core::common::Timestamp::parse("2010-01-01T00:00:00Z").unwrap() } diff --git a/agent_issuance/src/credential/event.rs b/agent_issuance/src/credential/event.rs index 1838a661c..1a34577e8 100644 --- a/agent_issuance/src/credential/event.rs +++ b/agent_issuance/src/credential/event.rs @@ -19,8 +19,8 @@ pub enum CredentialEvent { notification_id: Option, credential_configuration: Box, credential_status: CredentialStatus, - issuance_date: Option, - expiration_date: Option, + created_at: Option, + expires_at: Option, }, SignedCredentialCreated { credential_id: String, diff --git a/agent_issuance/src/credential/views/mod.rs b/agent_issuance/src/credential/views/mod.rs index 2279970b9..9db140710 100644 --- a/agent_issuance/src/credential/views/mod.rs +++ b/agent_issuance/src/credential/views/mod.rs @@ -15,16 +15,16 @@ impl View for Credential { credential_configuration, notification_id, credential_status, - issuance_date, - expiration_date, + created_at, + expires_at: expiration_date, } => { self.credential_id.clone_from(credential_id); self.data.replace(data.clone()); self.credential_configuration = *credential_configuration.clone(); self.notification_id.clone_from(notification_id); self.credential_status.clone_from(credential_status); - self.issuance_date.clone_from(issuance_date); - self.expiration_date.clone_from(expiration_date); + self.created_at.clone_from(created_at); + self.expires_at.clone_from(expiration_date); } CredentialEvent::SignedCredentialCreated { credential_id, From 5542286180c0edf615fa73ce1dd1c60ff3cdf6d0 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 3 Feb 2026 20:12:23 +0100 Subject: [PATCH 20/35] chore: add comment to clarify "test_utils" feature in VSCode settings --- .vscode/settings.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.vscode/settings.json b/.vscode/settings.json index 199c01e4a..38abe6fea 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,5 @@ { + // Enable the "test_utils" feature for Rust Analyzer and runnable configurations "rust-analyzer.cargo.features": ["test_utils"], "rust-analyzer.runnables.extraArgs": ["--features", "test_utils"] } From d6a0e322633bee4309346cca4bf6be6c3f1b2df8 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 3 Feb 2026 20:14:45 +0100 Subject: [PATCH 21/35] feat: add "Create a VCDM 2.0 SD-JWT Credential" request to Postman collection --- .../postman/ssi-agent.postman_collection.json | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/agent_api_http/postman/ssi-agent.postman_collection.json b/agent_api_http/postman/ssi-agent.postman_collection.json index d3c5e0844..7e757021c 100644 --- a/agent_api_http/postman/ssi-agent.postman_collection.json +++ b/agent_api_http/postman/ssi-agent.postman_collection.json @@ -172,6 +172,60 @@ }, "response": [] }, + { + "name": "Create a VCDM 2.0 SD-JWT Credential", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"VCDM 2.0 SD-JWT\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"credential\": {\n \"credentialSubject\": {\n \"first_name\": \"Ferris\",\n \"last_name\": \"Crabman\",\n \"dob\": \"1982-01-01\"\n }\n },\n \"expiresAt\": \"never\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, { "name": "ACME Corp Credential", "event": [ From 7a295ecdeccacc3d8efadc042fe47cadd72ae690 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 3 Feb 2026 20:22:49 +0100 Subject: [PATCH 22/35] feat: add SD-JWT VC credential example to OpenAPI specification --- agent_api_http/openapi.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/agent_api_http/openapi.yaml b/agent_api_http/openapi.yaml index ac75de9bf..6b0e55266 100644 --- a/agent_api_http/openapi.yaml +++ b/agent_api_http/openapi.yaml @@ -601,6 +601,16 @@ paths: credentialConfigurationId: w3c_vc_credential offerId: "001" expiresAt: "3025-10-24 11:34:00Z" + sd-jwt-vc: + summary: SD-JWT VC + value: + credential: + dob: "1982-01-01" + first_name: Ferris + last_name: Crabman + credentialConfigurationId: SD-JWT VC + offerId: "001" + expiresAt: "3025-10-24 11:34:00Z" responses: "201": description: Credential successfully created From 24d8d2d2f07654e03b31b82e7d14f63eb7aefa95 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 9 Feb 2026 14:14:59 +0100 Subject: [PATCH 23/35] fix: use `public_url` instead of `application_url` in VCT path segment --- agent_issuance/src/server_config/aggregate.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent_issuance/src/server_config/aggregate.rs b/agent_issuance/src/server_config/aggregate.rs index be4f93ae2..9a80b92f8 100644 --- a/agent_issuance/src/server_config/aggregate.rs +++ b/agent_issuance/src/server_config/aggregate.rs @@ -182,7 +182,7 @@ impl Aggregate for ServerConfig { CredentialFormats::DcSdJwt(_) => { let vct = format!( "{}vct/{}/{version}", - config().application_url, + config().public_url, URL_SAFE_NO_PAD.encode(&credential_configuration.credential_configuration_id), // TODO: support versioning of VCTs once we support versioning of Templates version = 0 From f239d529e9cd41c0ac0eba22d7dd42d13e28ce2f Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 17 Feb 2026 21:37:51 +0100 Subject: [PATCH 24/35] fix: correct variable name for expiration date in Credential update logic --- agent_issuance/src/credential/views/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/agent_issuance/src/credential/views/mod.rs b/agent_issuance/src/credential/views/mod.rs index 9db140710..ad8a4ff0f 100644 --- a/agent_issuance/src/credential/views/mod.rs +++ b/agent_issuance/src/credential/views/mod.rs @@ -16,7 +16,7 @@ impl View for Credential { notification_id, credential_status, created_at, - expires_at: expiration_date, + expires_at, } => { self.credential_id.clone_from(credential_id); self.data.replace(data.clone()); @@ -24,7 +24,7 @@ impl View for Credential { self.notification_id.clone_from(notification_id); self.credential_status.clone_from(credential_status); self.created_at.clone_from(created_at); - self.expires_at.clone_from(expiration_date); + self.expires_at.clone_from(expires_at); } CredentialEvent::SignedCredentialCreated { credential_id, From 6f93c2de97b1993f5c624a8951b0918e37e0485c Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 17 Feb 2026 22:10:17 +0100 Subject: [PATCH 25/35] build: bump identity_* dependencies to `v1.9.1-beta.1` --- Cargo.lock | 472 +++++++++-------------- Cargo.toml | 29 +- agent_identity/src/document/aggregate.rs | 22 +- agent_secret_manager/Cargo.toml | 8 +- 4 files changed, 214 insertions(+), 317 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e9bb0cc52..4a3481082 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -304,7 +304,7 @@ dependencies = [ "identity_document", "identity_iota", "identity_storage", - "iota-sdk 1.13.1", + "iota-sdk 1.16.2", "itertools 0.14.0", "jsonwebtoken", "lazy_static", @@ -420,7 +420,7 @@ dependencies = [ "identity_iota", "identity_stronghold_ext", "iota-sdk 1.1.5", - "iota-sdk 1.13.1", + "iota-sdk 1.16.2", "iota_stronghold", "itertools 0.14.0", "jsonwebtoken", @@ -567,21 +567,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - [[package]] name = "allocator-api2" version = "0.2.21" @@ -724,15 +709,6 @@ dependencies = [ "derive_arbitrary", ] -[[package]] -name = "arc-swap" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d03449bb8ca2cc2ef70869af31463d1ae5ccc8fa3e334b307203fbf815207e" -dependencies = [ - "rustversion", -] - [[package]] name = "ark-bn254" version = "0.4.0" @@ -1059,22 +1035,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-compression" -version = "0.4.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40f6024f3f856663b45fd0c9b6f2024034a702f453549449e0d84a305900dad4" -dependencies = [ - "brotli", - "flate2", - "futures-core", - "memchr", - "pin-project-lite", - "tokio", - "zstd", - "zstd-safe", -] - [[package]] name = "async-executor" version = "1.13.2" @@ -1465,29 +1425,6 @@ dependencies = [ "syn 2.0.104", ] -[[package]] -name = "axum-server" -version = "0.6.1" -source = "git+https://github.com/bmwill/axum-server.git?rev=f44323e271afdd1365fd0c8b0a4c0bbdf4956cb7#f44323e271afdd1365fd0c8b0a4c0bbdf4956cb7" -dependencies = [ - "arc-swap", - "bytes", - "futures-util", - "http 1.3.1", - "http-body 1.0.1", - "http-body-util", - "hyper 1.7.0", - "hyper-util", - "pin-project-lite", - "rustls 0.23.28", - "rustls-pemfile 2.2.0", - "rustls-pki-types", - "tokio", - "tokio-rustls 0.26.2", - "tower 0.4.13", - "tower-service", -] - [[package]] name = "backtrace" version = "0.3.75" @@ -1920,27 +1857,6 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f781dba93de3a5ef6dc5b17c9958b208f6f3f021623b360fb605ea51ce443f10" -[[package]] -name = "brotli" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - [[package]] name = "bs58" version = "0.4.0" @@ -2309,7 +2225,7 @@ dependencies = [ [[package]] name = "consensus-config" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "fastcrypto", "iota-network-stack", @@ -2403,7 +2319,7 @@ checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "consumer" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" +source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" dependencies = [ "did_iota", "did_jwk", @@ -3162,12 +3078,12 @@ dependencies = [ [[package]] name = "did_iota" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" +source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" dependencies = [ "anyhow", "identity_iota", "identity_stronghold", - "iota-sdk 1.13.1", + "iota-sdk 1.16.2", "log", "rustls 0.23.28", "shared", @@ -3177,12 +3093,12 @@ dependencies = [ [[package]] name = "did_jwk" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" +source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" dependencies = [ "did-jwk", "identity_iota", "identity_stronghold", - "iota-sdk 1.13.1", + "iota-sdk 1.16.2", "log", "serde_json", "shared", @@ -3194,12 +3110,12 @@ dependencies = [ [[package]] name = "did_key" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" +source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" dependencies = [ "did-method-key", "identity_iota", "identity_stronghold", - "iota-sdk 1.13.1", + "iota-sdk 1.16.2", "jsonwebkey", "log", "serde_json", @@ -3241,12 +3157,12 @@ dependencies = [ [[package]] name = "did_web" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" +source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" dependencies = [ "did-web", "identity_iota", "identity_stronghold", - "iota-sdk 1.13.1", + "iota-sdk 1.16.2", "log", "serde_json", "shared", @@ -3585,7 +3501,7 @@ dependencies = [ [[package]] name = "enum-compat-util" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "serde_yaml", ] @@ -3608,6 +3524,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "erased-discriminant" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1a6df962265a53221f29081896c412ef325c17fa7d638cd9578febe53d3c82c" +dependencies = [ + "typeid", +] + [[package]] name = "errno" version = "0.3.13" @@ -4701,12 +4626,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" -[[package]] -name = "http-range-header" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" - [[package]] name = "http-serde" version = "2.1.1" @@ -4970,8 +4889,8 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "identity_core" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" +version = "1.9.1-beta.1" +source = "git+https://github.com/iotaledger/identity?tag=v1.9.1-beta.1#e4c79b61c26f20e269abe63ec8adf7eb5ba50305" dependencies = [ "deranged", "js-sys", @@ -4988,8 +4907,8 @@ dependencies = [ [[package]] name = "identity_credential" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" +version = "1.9.1-beta.1" +source = "git+https://github.com/iotaledger/identity?tag=v1.9.1-beta.1#e4c79b61c26f20e269abe63ec8adf7eb5ba50305" dependencies = [ "anyhow", "async-trait", @@ -5016,8 +4935,8 @@ dependencies = [ [[package]] name = "identity_did" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" +version = "1.9.1-beta.1" +source = "git+https://github.com/iotaledger/identity?tag=v1.9.1-beta.1#e4c79b61c26f20e269abe63ec8adf7eb5ba50305" dependencies = [ "did_url_parser 0.3.0", "form_urlencoded", @@ -5030,8 +4949,8 @@ dependencies = [ [[package]] name = "identity_document" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" +version = "1.9.1-beta.1" +source = "git+https://github.com/iotaledger/identity?tag=v1.9.1-beta.1#e4c79b61c26f20e269abe63ec8adf7eb5ba50305" dependencies = [ "did_url_parser 0.2.0", "identity_core", @@ -5045,8 +4964,8 @@ dependencies = [ [[package]] name = "identity_eddsa_verifier" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" +version = "1.9.1-beta.1" +source = "git+https://github.com/iotaledger/identity?tag=v1.9.1-beta.1#e4c79b61c26f20e269abe63ec8adf7eb5ba50305" dependencies = [ "identity_jose", "iota-crypto", @@ -5054,8 +4973,8 @@ dependencies = [ [[package]] name = "identity_iota" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" +version = "1.9.1-beta.1" +source = "git+https://github.com/iotaledger/identity?tag=v1.9.1-beta.1#e4c79b61c26f20e269abe63ec8adf7eb5ba50305" dependencies = [ "identity_core", "identity_credential", @@ -5070,8 +4989,8 @@ dependencies = [ [[package]] name = "identity_iota_core" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" +version = "1.9.1-beta.1" +source = "git+https://github.com/iotaledger/identity?tag=v1.9.1-beta.1#e4c79b61c26f20e269abe63ec8adf7eb5ba50305" dependencies = [ "anyhow", "async-stream", @@ -5090,7 +5009,7 @@ dependencies = [ "identity_verification", "iota-config", "iota-crypto", - "iota-sdk 1.13.1", + "iota-sdk 1.16.2", "iota_interaction", "iota_interaction_rust", "iota_interaction_ts", @@ -5115,8 +5034,8 @@ dependencies = [ [[package]] name = "identity_jose" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" +version = "1.9.1-beta.1" +source = "git+https://github.com/iotaledger/identity?tag=v1.9.1-beta.1#e4c79b61c26f20e269abe63ec8adf7eb5ba50305" dependencies = [ "anyhow", "bls12_381_plus 0.8.18", @@ -5135,8 +5054,8 @@ dependencies = [ [[package]] name = "identity_resolver" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" +version = "1.9.1-beta.1" +source = "git+https://github.com/iotaledger/identity?tag=v1.9.1-beta.1#e4c79b61c26f20e269abe63ec8adf7eb5ba50305" dependencies = [ "async-trait", "futures", @@ -5152,8 +5071,8 @@ dependencies = [ [[package]] name = "identity_storage" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" +version = "1.9.1-beta.1" +source = "git+https://github.com/iotaledger/identity?tag=v1.9.1-beta.1#e4c79b61c26f20e269abe63ec8adf7eb5ba50305" dependencies = [ "anyhow", "async-trait", @@ -5180,8 +5099,8 @@ dependencies = [ [[package]] name = "identity_stronghold" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" +version = "1.9.1-beta.1" +source = "git+https://github.com/iotaledger/identity?tag=v1.9.1-beta.1#e4c79b61c26f20e269abe63ec8adf7eb5ba50305" dependencies = [ "async-trait", "identity_storage", @@ -5197,7 +5116,7 @@ dependencies = [ [[package]] name = "identity_stronghold_ext" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" +source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" dependencies = [ "async-trait", "elliptic-curve 0.13.8", @@ -5216,8 +5135,8 @@ dependencies = [ [[package]] name = "identity_verification" -version = "1.8.0-beta.2" -source = "git+https://github.com/iotaledger/identity?rev=e68d4f5#e68d4f592fdf30b50ce5d8e0a0807403911feeda" +version = "1.9.1-beta.1" +source = "git+https://github.com/iotaledger/identity?tag=v1.9.1-beta.1#e4c79b61c26f20e269abe63ec8adf7eb5ba50305" dependencies = [ "identity_core", "identity_did", @@ -5393,7 +5312,7 @@ dependencies = [ [[package]] name = "iota-adapter-latest" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "bcs", @@ -5420,14 +5339,13 @@ dependencies = [ [[package]] name = "iota-common" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "fastcrypto", "futures", "iota-metrics", - "iota-tls", "iota-types", "parking_lot 0.12.4", "prometheus", @@ -5440,8 +5358,8 @@ dependencies = [ [[package]] name = "iota-config" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anemo", "anyhow", @@ -5505,8 +5423,8 @@ dependencies = [ [[package]] name = "iota-enum-compat-util" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "serde_yaml", ] @@ -5514,7 +5432,7 @@ dependencies = [ [[package]] name = "iota-execution" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "iota-adapter-latest", "iota-move-natives-latest", @@ -5531,8 +5449,8 @@ dependencies = [ [[package]] name = "iota-genesis-common" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "iota-execution", "iota-protocol-config", @@ -5542,8 +5460,8 @@ dependencies = [ [[package]] name = "iota-http" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "bytes", "http 1.3.1", @@ -5562,8 +5480,8 @@ dependencies = [ [[package]] name = "iota-json" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "bcs", @@ -5579,8 +5497,8 @@ dependencies = [ [[package]] name = "iota-json-rpc-api" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "fastcrypto", @@ -5599,8 +5517,8 @@ dependencies = [ [[package]] name = "iota-json-rpc-types" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "bcs", @@ -5634,8 +5552,8 @@ dependencies = [ [[package]] name = "iota-keys" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "bip32", @@ -5655,8 +5573,8 @@ dependencies = [ [[package]] name = "iota-macros" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "futures", "iota-proc-macros", @@ -5666,8 +5584,8 @@ dependencies = [ [[package]] name = "iota-metrics" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anemo", "anemo-tower", @@ -5693,7 +5611,7 @@ dependencies = [ [[package]] name = "iota-move-natives-latest" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "bcs", "better_any", @@ -5715,8 +5633,8 @@ dependencies = [ [[package]] name = "iota-names" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "bcs", @@ -5728,8 +5646,8 @@ dependencies = [ [[package]] name = "iota-network-stack" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anemo", "bcs", @@ -5758,8 +5676,8 @@ dependencies = [ [[package]] name = "iota-open-rpc" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "schemars 0.8.22", "serde", @@ -5769,8 +5687,8 @@ dependencies = [ [[package]] name = "iota-open-rpc-macros" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "derive-syn-parse 0.1.5", "itertools 0.13.0", @@ -5782,8 +5700,8 @@ dependencies = [ [[package]] name = "iota-package-resolver" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "async-trait", "bcs", @@ -5798,8 +5716,8 @@ dependencies = [ [[package]] name = "iota-proc-macros" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "msim-macros", "proc-macro2", @@ -5809,8 +5727,8 @@ dependencies = [ [[package]] name = "iota-protocol-config" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "clap", "iota-protocol-config-macros", @@ -5824,8 +5742,8 @@ dependencies = [ [[package]] name = "iota-protocol-config-macros" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "proc-macro2", "quote", @@ -5834,8 +5752,8 @@ dependencies = [ [[package]] name = "iota-rest-api" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "axum 0.8.3", @@ -5907,8 +5825,8 @@ dependencies = [ [[package]] name = "iota-sdk" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "async-trait", @@ -5943,14 +5861,13 @@ dependencies = [ [[package]] name = "iota-sdk-types" version = "0.0.1-alpha.1" -source = "git+https://github.com/iotaledger/iota-rust-sdk.git?rev=05608b7e4a5b96d85f84e1970a517f6f174beb8b#05608b7e4a5b96d85f84e1970a517f6f174beb8b" +source = "git+https://github.com/iotaledger/iota-rust-sdk.git?rev=d8cdab6ab3f2fd9ba8059ba56e80ba950badc88d#d8cdab6ab3f2fd9ba8059ba56e80ba950badc88d" dependencies = [ "base64ct", "bcs", "blake2", "bnum", "bs58 0.5.1", - "eyre", "hex", "itertools 0.13.0", "paste", @@ -5965,32 +5882,10 @@ dependencies = [ "winnow 0.7.11", ] -[[package]] -name = "iota-tls" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" -dependencies = [ - "anyhow", - "arc-swap", - "axum 0.8.3", - "axum-server", - "ed25519 2.2.3", - "fastcrypto", - "pkcs8 0.10.2", - "rcgen", - "reqwest 0.12.20", - "rustls 0.23.28", - "rustls-webpki 0.103.3", - "tokio", - "tokio-rustls 0.26.2", - "tower-layer", - "x509-parser", -] - [[package]] name = "iota-transaction-builder" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "async-trait", @@ -6006,12 +5901,13 @@ dependencies = [ [[package]] name = "iota-types" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anemo", "anyhow", "async-trait", + "base64 0.21.7", "bcs", "better_any", "bincode", @@ -6031,7 +5927,6 @@ dependencies = [ "iota-macros", "iota-network-stack", "iota-protocol-config", - "iota-sdk 1.1.5", "iota-sdk-types", "itertools 0.13.0", "lru", @@ -6040,15 +5935,15 @@ dependencies = [ "move-core-types", "move-vm-profiler", "move-vm-test-utils", - "nonempty 0.9.0", + "nonempty", "num-bigint 0.4.6", "num-rational", "num-traits", "once_cell", - "packable", "parking_lot 0.12.4", "passkey-types", "prometheus", + "prost-types", "rand 0.8.5", "roaring 0.11.3", "schemars 0.8.22", @@ -6071,8 +5966,9 @@ dependencies = [ [[package]] name = "iota-verifier-latest" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ + "bcs", "iota-types", "move-abstract-interpreter", "move-abstract-stack", @@ -6085,8 +5981,8 @@ dependencies = [ [[package]] name = "iota_interaction" -version = "0.8.8" -source = "git+https://github.com/iotaledger/product-core?tag=v0.8.8#8356931932d1d62e7ac440a4c1b1f4d1b67b75c9" +version = "0.8.11" +source = "git+https://github.com/iotaledger/product-core?tag=v0.8.11#ecaf3d486708dd6f23544f6eabb500f2cb977b45" dependencies = [ "anyhow", "async-trait", @@ -6100,14 +5996,14 @@ dependencies = [ "hex", "hyper 1.7.0", "indexmap 2.12.0", - "iota-sdk 1.13.1", + "iota-sdk 1.16.2", "iota-sdk-types", "itertools 0.13.0", "jsonpath-rust", "jsonrpsee", "leb128", "move-core-types", - "nonempty 0.1.5", + "nonempty", "primitive-types 0.12.2", "rand 0.8.5", "ref-cast", @@ -6126,8 +6022,8 @@ dependencies = [ [[package]] name = "iota_interaction_rust" -version = "0.8.8" -source = "git+https://github.com/iotaledger/product-core?tag=v0.8.8#8356931932d1d62e7ac440a4c1b1f4d1b67b75c9" +version = "0.8.11" +source = "git+https://github.com/iotaledger/product-core?tag=v0.8.11#ecaf3d486708dd6f23544f6eabb500f2cb977b45" dependencies = [ "anyhow", "async-trait", @@ -6139,8 +6035,8 @@ dependencies = [ [[package]] name = "iota_interaction_ts" -version = "0.8.8" -source = "git+https://github.com/iotaledger/product-core?tag=v0.8.8#8356931932d1d62e7ac440a4c1b1f4d1b67b75c9" +version = "0.8.11" +source = "git+https://github.com/iotaledger/product-core?tag=v0.8.11#ecaf3d486708dd6f23544f6eabb500f2cb977b45" dependencies = [ "anyhow", "async-trait", @@ -7551,7 +7447,7 @@ dependencies = [ [[package]] name = "move-abstract-interpreter" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "move-binary-format", "move-bytecode-verifier-meter", @@ -7560,12 +7456,12 @@ dependencies = [ [[package]] name = "move-abstract-stack" version = "0.0.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" [[package]] name = "move-binary-format" version = "0.0.3" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "enum-compat-util", @@ -7580,12 +7476,12 @@ dependencies = [ [[package]] name = "move-borrow-graph" version = "0.0.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" [[package]] name = "move-bytecode-source-map" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "bcs", @@ -7601,7 +7497,7 @@ dependencies = [ [[package]] name = "move-bytecode-utils" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "indexmap 2.12.0", @@ -7615,7 +7511,7 @@ dependencies = [ [[package]] name = "move-bytecode-verifier" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "move-abstract-interpreter", "move-abstract-stack", @@ -7630,7 +7526,7 @@ dependencies = [ [[package]] name = "move-bytecode-verifier-meter" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "move-binary-format", "move-core-types", @@ -7640,7 +7536,7 @@ dependencies = [ [[package]] name = "move-command-line-common" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "bcs", @@ -7660,7 +7556,7 @@ dependencies = [ [[package]] name = "move-compiler" version = "0.0.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "bcs", @@ -7695,7 +7591,7 @@ dependencies = [ [[package]] name = "move-core-types" version = "0.0.4" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "bcs", @@ -7719,7 +7615,7 @@ dependencies = [ [[package]] name = "move-coverage" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "bcs", @@ -7740,7 +7636,7 @@ dependencies = [ [[package]] name = "move-disassembler" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "bcs", @@ -7761,7 +7657,7 @@ dependencies = [ [[package]] name = "move-ir-to-bytecode" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "codespan-reporting", @@ -7779,7 +7675,7 @@ dependencies = [ [[package]] name = "move-ir-to-bytecode-syntax" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "hex", @@ -7792,7 +7688,7 @@ dependencies = [ [[package]] name = "move-ir-types" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "hex", "move-command-line-common", @@ -7805,7 +7701,7 @@ dependencies = [ [[package]] name = "move-proc-macros" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "quote", "syn 2.0.104", @@ -7814,7 +7710,7 @@ dependencies = [ [[package]] name = "move-stdlib-natives" version = "0.1.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "hex", "move-binary-format", @@ -7829,7 +7725,7 @@ dependencies = [ [[package]] name = "move-symbol-pool" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "once_cell", "phf", @@ -7839,7 +7735,7 @@ dependencies = [ [[package]] name = "move-trace-format" version = "0.0.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "move-binary-format", "move-core-types", @@ -7850,7 +7746,7 @@ dependencies = [ [[package]] name = "move-vm-config" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "move-binary-format", "once_cell", @@ -7859,7 +7755,7 @@ dependencies = [ [[package]] name = "move-vm-profiler" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "move-vm-config", "once_cell", @@ -7869,7 +7765,7 @@ dependencies = [ [[package]] name = "move-vm-runtime" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "better_any", "fail", @@ -7889,7 +7785,7 @@ dependencies = [ [[package]] name = "move-vm-test-utils" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "move-binary-format", @@ -7903,7 +7799,7 @@ dependencies = [ [[package]] name = "move-vm-types" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "bcs", "move-binary-format", @@ -8076,12 +7972,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "nonempty" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f962080273ac958f790079cfc886b5b9d722969dbd7b03f473902bdfe5c69b1" - [[package]] name = "nonempty" version = "0.9.0" @@ -8387,7 +8277,7 @@ dependencies = [ [[package]] name = "oid4vc-core" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=20e1fb8#20e1fb83d9e1c9fb0a7858286e3d541d751d6734" +source = "git+https://github.com/impierce/openid4vc?rev=b9dc650#b9dc650951a93f8f97eda6026995c55369aa9ec9" dependencies = [ "anyhow", "async-trait", @@ -8412,7 +8302,7 @@ dependencies = [ [[package]] name = "oid4vc-manager" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=20e1fb8#20e1fb83d9e1c9fb0a7858286e3d541d751d6734" +source = "git+https://github.com/impierce/openid4vc?rev=b9dc650#b9dc650951a93f8f97eda6026995c55369aa9ec9" dependencies = [ "anyhow", "async-trait", @@ -8445,7 +8335,7 @@ dependencies = [ [[package]] name = "oid4vci" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=20e1fb8#20e1fb83d9e1c9fb0a7858286e3d541d751d6734" +source = "git+https://github.com/impierce/openid4vc?rev=b9dc650#b9dc650951a93f8f97eda6026995c55369aa9ec9" dependencies = [ "anyhow", "chrono", @@ -8473,7 +8363,7 @@ dependencies = [ [[package]] name = "oid4vp" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=20e1fb8#20e1fb83d9e1c9fb0a7858286e3d541d751d6734" +source = "git+https://github.com/impierce/openid4vc?rev=b9dc650#b9dc650951a93f8f97eda6026995c55369aa9ec9" dependencies = [ "anyhow", "chrono", @@ -9392,8 +9282,8 @@ dependencies = [ [[package]] name = "product_common" -version = "0.8.8" -source = "git+https://github.com/iotaledger/product-core?tag=v0.8.8#8356931932d1d62e7ac440a4c1b1f4d1b67b75c9" +version = "0.8.11" +source = "git+https://github.com/iotaledger/product-core?tag=v0.8.11#ecaf3d486708dd6f23544f6eabb500f2cb977b45" dependencies = [ "anyhow", "async-trait", @@ -9401,7 +9291,7 @@ dependencies = [ "cfg-if", "fastcrypto", "hyper 1.7.0", - "iota-sdk 1.13.1", + "iota-sdk 1.16.2", "iota-sdk-types", "iota_interaction", "iota_interaction_rust", @@ -9436,8 +9326,8 @@ dependencies = [ [[package]] name = "prometheus-closure-metric" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "anyhow", "prometheus", @@ -9466,6 +9356,15 @@ dependencies = [ "syn 2.0.104", ] +[[package]] +name = "prost-types" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" +dependencies = [ + "prost", +] + [[package]] name = "protobuf" version = "3.7.2" @@ -10816,13 +10715,16 @@ dependencies = [ [[package]] name = "serde-reflection" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b6798a64289ff550d8d79847467789a5fd30b42c9c406a4d6dc0bc9b567e55c" +checksum = "68fb2363ca88876b3e16442b02dde5305646fd50df297c79a4b54fc5f5cf51d4" dependencies = [ + "erased-discriminant", "once_cell", "serde", + "serde_json", "thiserror 1.0.69", + "typeid", ] [[package]] @@ -10899,15 +10801,16 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "indexmap 2.12.0", "itoa", "memchr", - "ryu", "serde", + "serde_core", + "zmij", ] [[package]] @@ -11157,7 +11060,7 @@ dependencies = [ [[package]] name = "shared" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=a76a2a3#a76a2a36f7cfddef7702fa450dca5c34c82f8534" +source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" dependencies = [ "identity_iota", "identity_storage", @@ -11263,7 +11166,7 @@ dependencies = [ [[package]] name = "siopv2" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=20e1fb8#20e1fb83d9e1c9fb0a7858286e3d541d751d6734" +source = "git+https://github.com/impierce/openid4vc?rev=b9dc650#b9dc650951a93f8f97eda6026995c55369aa9ec9" dependencies = [ "anyhow", "async-trait", @@ -11909,7 +11812,7 @@ dependencies = [ [[package]] name = "starfish-config" version = "0.1.0" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "blake3", "fastcrypto", @@ -12719,7 +12622,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "http-range-header 0.3.1", + "http-range-header", "pin-project-lite", "tower-layer", "tower-service", @@ -12731,29 +12634,16 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "async-compression", - "base64 0.21.7", "bitflags 2.9.1", "bytes", - "futures-core", - "futures-util", "http 1.3.1", "http-body 1.0.1", "http-body-util", - "http-range-header 0.4.2", - "httpdate", - "iri-string", - "mime", - "mime_guess", - "percent-encoding", "pin-project-lite", "tokio", - "tokio-util", - "tower 0.4.13", "tower-layer", "tower-service", "tracing", - "uuid", ] [[package]] @@ -12789,9 +12679,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -12801,9 +12691,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", @@ -12812,9 +12702,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -12969,13 +12859,19 @@ dependencies = [ [[package]] name = "typed-store-error" -version = "1.13.1" -source = "git+https://github.com/iotaledger/iota?tag=v1.13.1#7c77b7d8f998d1ac265586763b090c30abddb7e6" +version = "1.16.2" +source = "git+https://github.com/iotaledger/iota?tag=v1.16.2#ec7bb7ef1481feaa9841f7e468866ea6121f6204" dependencies = [ "serde", "thiserror 1.0.69", ] +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + [[package]] name = "typenum" version = "1.18.0" @@ -14286,6 +14182,12 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + [[package]] name = "zopfli" version = "0.8.2" diff --git a/Cargo.toml b/Cargo.toml index c52fb9580..0b65c4c37 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,11 +24,11 @@ rust-version = "1.76.0" [workspace.dependencies] # TODO: For all `openid4vc` dependencies, switch to latest `dev` revision once https://github.com/impierce/openid4vc/pull/118 is merged. -siopv2 = { git = "https://github.com/impierce/openid4vc", rev = "20e1fb8" } -oid4vci = { git = "https://github.com/impierce/openid4vc", rev = "20e1fb8" } -oid4vc-core = { git = "https://github.com/impierce/openid4vc", rev = "20e1fb8" } -oid4vc-manager = { git = "https://github.com/impierce/openid4vc", rev = "20e1fb8" } -oid4vp = { git = "https://github.com/impierce/openid4vc", rev = "20e1fb8" } +siopv2 = { git = "https://github.com/impierce/openid4vc", rev = "b9dc650" } +oid4vci = { git = "https://github.com/impierce/openid4vc", rev = "b9dc650" } +oid4vc-core = { git = "https://github.com/impierce/openid4vc", rev = "b9dc650" } +oid4vc-manager = { git = "https://github.com/impierce/openid4vc", rev = "b9dc650" } +oid4vp = { git = "https://github.com/impierce/openid4vc", rev = "b9dc650" } anyhow = "1.0" async-std = { version = "1.5", features = ["attributes", "tokio1"] } @@ -39,21 +39,20 @@ chrono = { version = "0.4", features = ["serde"] } cqrs-es = "0.4.12" derivative = "2.2" futures = "0.3" -# TODO: For all `identity_*` dependencies, switch to latest `beta` tag once https://github.com/iotaledger/identity/pull/1770 is merged. -identity_core = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5" } -identity_credential = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5", default-features = false, features = [ +identity_core = { git = "https://github.com/iotaledger/identity", tag = "v1.9.1-beta.1" } +identity_credential = { git = "https://github.com/iotaledger/identity", tag = "v1.9.1-beta.1", default-features = false, features = [ "credential", "domain-linkage", "presentation", "sd-jwt-vc", "validator", ] } -identity_did = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5" } -identity_document = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5" } -identity_iota = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5" } -identity_storage = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5" } -identity_verification = { git = "https://github.com/iotaledger/identity", rev = "e68d4f5", default-features = false } -iota-sdk = { git = "https://github.com/iotaledger/iota", package = "iota-sdk", tag = "v1.13.1" } +identity_did = { git = "https://github.com/iotaledger/identity", tag = "v1.9.1-beta.1" } +identity_document = { git = "https://github.com/iotaledger/identity", tag = "v1.9.1-beta.1" } +identity_iota = { git = "https://github.com/iotaledger/identity", tag = "v1.9.1-beta.1" } +identity_storage = { git = "https://github.com/iotaledger/identity", tag = "v1.9.1-beta.1" } +identity_verification = { git = "https://github.com/iotaledger/identity", tag = "v1.9.1-beta.1", default-features = false } +iota-sdk = { git = "https://github.com/iotaledger/iota", package = "iota-sdk", tag = "v1.16.2" } # TODO: Check if this is still needed. iota-sdk-legacy = { version = "1.0", package = "iota-sdk", default-features = false, features = [ "tls", @@ -65,7 +64,7 @@ lazy_static = "1.4" mime = { version = "0.3" } oauth_tsl = { git = "https://github.com/impierce/oauth-token-status-list", rev = "0aa0228" } once_cell = { version = "1.19" } -product_common = { git = "https://github.com/iotaledger/product-core", tag = "v0.8.8", package = "product_common", features = [ +product_common = { git = "https://github.com/iotaledger/product-core", tag = "v0.8.11", package = "product_common", features = [ "gas-station", "default-http-client", ] } diff --git a/agent_identity/src/document/aggregate.rs b/agent_identity/src/document/aggregate.rs index f0aecda8b..e43ff5730 100644 --- a/agent_identity/src/document/aggregate.rs +++ b/agent_identity/src/document/aggregate.rs @@ -7,9 +7,7 @@ use async_trait::async_trait; use cqrs_es::Aggregate; use identity_did::{CoreDID, DIDUrl, DID as _}; use identity_document::document::CoreDocument; -use identity_iota::iota::rebased::client::{ - get_object_id_from_did, IdentityClient, IdentityClientReadOnly, PublishDidDocument, -}; +use identity_iota::iota::rebased::client::{get_object_id_from_did, IdentityClient, PublishDidDocument}; use identity_iota::iota::rebased::migration::{ControllerToken, Identity, OnChainIdentity}; use identity_iota::iota::{rebased, IotaDID}; use identity_iota::storage::{Storage, StorageSigner}; @@ -134,14 +132,13 @@ impl Aggregate for Document { // Create a new IOTA client to interact with the IOTA ledger. let iota_client = get_iota_client(api_endpoint).await?; - let read_only_client = IdentityClientReadOnly::new(iota_client.clone()) - .await - .map_err(|err| GenericError(err.to_string()))?; - // Create an `IdentityClient` instance. // This client is used to interact with the IOTA identity ledger. // It is used to publish the DID Document and to resolve it later. - let identity_client = IdentityClient::new(read_only_client, signer) + let identity_client = IdentityClient::from_iota_client(iota_client.clone(), None) + .await + .map_err(|err| GenericError(err.to_string()))? + .with_signer(signer) .await .map_err(|err| GenericError(err.to_string()))?; @@ -428,14 +425,13 @@ impl Aggregate for Document { // This signer is used to sign the transactions that are sent to the IOTA ledger. let signer = StorageSigner::new(storage, key_id, public_key_jwk.clone()); - let read_only_client = IdentityClientReadOnly::new(iota_client.clone()) - .await - .map_err(|err| GenericError(err.to_string()))?; - // Create an `IdentityClient` instance. // This client is used to interact with the IOTA identity ledger. // It is used to publish the DID Document and to resolve it later. - let identity_client = IdentityClient::new(read_only_client, signer) + let identity_client = IdentityClient::from_iota_client(iota_client.clone(), None) + .await + .map_err(|err| GenericError(err.to_string()))? + .with_signer(signer) .await .map_err(|err| GenericError(err.to_string()))?; diff --git a/agent_secret_manager/Cargo.toml b/agent_secret_manager/Cargo.toml index 2ffca1c92..162227f7f 100644 --- a/agent_secret_manager/Cargo.toml +++ b/agent_secret_manager/Cargo.toml @@ -8,15 +8,15 @@ rust-version.workspace = true agent_shared = { path = "../agent_shared" } # TODO: Fully remove `did_manager`. -# TODO: Use latest `beta` branch once https://github.com/impierce/did-manager/pull/42 is merged. +# TODO: Use latest `beta` branch once https://github.com/impierce/did-manager/pull/43 is merged. # - The `producer` module has already been eliminated. # - In the `consumer` module, only the `Resolver` struct is still in use. # - All components of the `identity_stronghold_ext` module are still active. # # Future work: Migrate the remaining functionality into UniCore. -did_manager_consumer = { git = "https://github.com/impierce/did-manager", rev = "a76a2a3", package = "consumer" } -did_manager_identity_stronghold_ext = { git = "https://github.com/impierce/did-manager", rev = "a76a2a3", package = "identity_stronghold_ext" } -did_manager_iota = { git = "https://github.com/impierce/did-manager", rev = "a76a2a3", package = "did_iota" } +did_manager_consumer = { git = "https://github.com/impierce/did-manager", rev = "049fa77", package = "consumer" } +did_manager_identity_stronghold_ext = { git = "https://github.com/impierce/did-manager", rev = "049fa77", package = "identity_stronghold_ext" } +did_manager_iota = { git = "https://github.com/impierce/did-manager", rev = "049fa77", package = "did_iota" } anyhow.workspace = true async-trait.workspace = true From 603610d94280aba872d46e15b4e9e08d12ba6e2f Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Mon, 2 Feb 2026 08:51:56 +0100 Subject: [PATCH 26/35] feat: init `vc+sd-jwt` --- Cargo.lock | 2 +- agent_issuance/src/credential/aggregate.rs | 103 +++++++++++++++++- agent_issuance/src/server_config/aggregate.rs | 1 + agent_issuance/src/state.rs | 28 +++++ 4 files changed, 131 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4a3481082..8babc7206 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10616,7 +10616,7 @@ dependencies = [ [[package]] name = "secret-storage" version = "0.3.0" -source = "git+https://github.com/iotaledger/secret-storage?tag=v0.3.0#7dc13ddae8a7f2c8a931d3155f3cb9e9a27902fb" +source = "git+https://github.com/iotaledger/secret-storage.git?tag=v0.3.0#7dc13ddae8a7f2c8a931d3155f3cb9e9a27902fb" dependencies = [ "anyhow", "async-trait", diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index 6c15e77eb..455206e06 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -12,7 +12,8 @@ use cqrs_es::Aggregate; use identity_core::common::Timestamp; use identity_core::convert::FromJson; use identity_credential::credential::{ - Credential as W3CVerifiableCredential, CredentialBuilder as W3CVerifiableCredentialBuilder, Issuer, + Credential as W3CVerifiableCredential, CredentialBuilder as W3CVerifiableCredentialBuilder, + CredentialV2 as W3CVerifiableCredentialV2, Issuer, }; use identity_credential::sd_jwt_vc::{self, SdJwtVcBuilder, SdJwtVcClaims, StatusListRef, StatusMechanism}; use jsonwebtoken::Header; @@ -20,6 +21,7 @@ use oauth_tsl::status_list::StatusType; use oauth_tsl::tokens::status_list_token::StatusListTyp; use oid4vc_core::{jwt, Sign as _, Subject as _}; use oid4vci::credential_format_profiles::ietf_sd_jwt_vc::dc_sd_jwt::{DcSdJwt, DcSdJwtParameters}; +use oid4vci::credential_format_profiles::vc_jose_cose::vc_sd_jwt::{VcSdJwt, VcSdJwtParameters}; use oid4vci::credential_format_profiles::w3c_verifiable_credentials::jwt_vc_json::{ CredentialDefinition, JwtVcJson, JwtVcJsonParameters, }; @@ -27,7 +29,7 @@ use oid4vci::credential_format_profiles::{CredentialFormats, Parameters}; use oid4vci::credential_issuer::credential_configurations_supported::CredentialConfigurationsSupportedObject; use oid4vci::notification_request::NotificationRequest; use oid4vci::{Proof, VerifiableCredentialJwt}; -use sd_jwt::RequiredKeyBinding; +use sd_jwt::{RequiredKeyBinding, SdJwtBuilder}; use serde::{Deserialize, Serialize}; use serde_json::json; use std::sync::Arc; @@ -352,6 +354,103 @@ impl Aggregate for Credential { expires_at, }]); } + CredentialFormats::VcSdJwt(Parameters:: { + parameters: VcSdJwtParameters {}, + }) => { + let name = config() + .display + .first() + .expect("Configuration `display.name` missing") + .name + .clone(); + + let issuer: Profile = ProfileBuilder::default() + .id(config().public_url.clone()) + .type_("Profile") + .name(name) + .try_into() + .expect("Could not build issuer profile"); + + let id = data + .raw + .get("id") + .map(|id| { + id.as_str() + .and_then(|id_str| Url::parse(id_str).ok()) + .ok_or(InvalidIdentifierError) + }) + .transpose()?; + + let issuer = match serde_json::from_value::(json!({ + "id": issuer.id, + "name": issuer.name, + })) { + Ok(issuer) => issuer, + Err(_) => unreachable!("Couldn't parse issuer"), + }; + + let credential_subject = identity_credential::credential::Subject::from_json_value( + data.raw["credentialSubject"].clone(), + ) + .map_err(|e| InvalidCredentialSubjectError(e.to_string()))?; + + let credential_status = CredentialStatus { + index: credential_status_index, + status: StatusType::VALID, + }; + + let status_list_url = get_status_list_url(self.credential_status.index)?; + + let status_uri_idx = identity_core::common::Object::from_json_value(json!({ + "uri": status_list_url.clone(), + "idx": credential_status_index + })) + .map_err(|_| CredentialError::InvalidCredentialStatus)?; + + let status = identity_credential::credential::Status { + id: status_list_url.into(), + type_: StatusListTyp::Jwt.to_string(), + properties: status_uri_idx, + }; + + let builder = W3CVerifiableCredentialBuilder::default() + .issuer(issuer) + .subject(credential_subject) + .issuance_date(issuance_date) + .status(status); + + let builder = if let Some(expiration_date) = expiration_date { + builder.expiration_date(expiration_date) + } else { + builder + }; + + let builder = if let Some(id) = id { + builder.id(id.into()) + } else { + builder + }; + + let credential: W3CVerifiableCredentialV2 = builder + .build_v2() + .map_err(|e| InvalidCredentialSubjectError(e.to_string()))?; + + let mut raw = json!(credential); + + // FIXME + let type_ = vec!["VerifiableCredential".to_string()]; + raw["type"] = json!(type_); + + return Ok(vec![UnsignedCredentialCreated { + credential_id, + notification_id: Some(notification_id), + data: Data { raw }, + credential_configuration, + credential_status, + issuance_date: Some(issuance_date), + expiration_date, + }]); + } _ => Err(UnsupportedCredentialFormat(serde_json::json!( credential_configuration.credential_format ))), diff --git a/agent_issuance/src/server_config/aggregate.rs b/agent_issuance/src/server_config/aggregate.rs index 9a80b92f8..ac043218d 100644 --- a/agent_issuance/src/server_config/aggregate.rs +++ b/agent_issuance/src/server_config/aggregate.rs @@ -192,6 +192,7 @@ impl Aggregate for ServerConfig { parameters: (vct).into(), }) } + CredentialFormats::VcSdJwt(_) => CredentialFormats::VcSdJwt(Parameters { parameters: ().into() }), _ => { return Err(UnsupportedCredentialFormatIdentifierError(format!( "{:?}", diff --git a/agent_issuance/src/state.rs b/agent_issuance/src/state.rs index cb1e3af1b..0ed5d6ca0 100644 --- a/agent_issuance/src/state.rs +++ b/agent_issuance/src/state.rs @@ -284,6 +284,34 @@ pub async fn update_credential_configurations(state: &IssuanceState) -> anyhow:: }], } ] + }, + { + "credential_configuration_id": "VCDM 2.0 SD-JWT", + "format": "vc+sd-jwt", + "type": ["VerifiableCredential"], + "claims": [ + { + "path": ["credentialSubject", "first_name"], + "display": [{ + "name": "First Name", + "locale": "en" + }], + }, + { + "path": ["credentialSubject", "last_name"], + "display": [{ + "name": "Last Name", + "locale": "en" + }], + }, + { + "path": ["credentialSubject", "dob"], + "display": [{ + "name": "Date of Birth", + "locale": "en" + }], + } + ] } ])) .expect("Failed to parse default development credential configurations") From 99cbf55b08ad39a65934e3ab44d3da7a5c8536e8 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 3 Feb 2026 20:08:48 +0100 Subject: [PATCH 27/35] feat: issue SD-JWT encoded VCDM 2.0 --- agent_issuance/src/credential/aggregate.rs | 240 +++++++++++++----- agent_issuance/src/server_config/aggregate.rs | 8 +- agent_issuance/src/state.rs | 10 + 3 files changed, 190 insertions(+), 68 deletions(-) diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index 455206e06..d1d86ea59 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -21,7 +21,7 @@ use oauth_tsl::status_list::StatusType; use oauth_tsl::tokens::status_list_token::StatusListTyp; use oid4vc_core::{jwt, Sign as _, Subject as _}; use oid4vci::credential_format_profiles::ietf_sd_jwt_vc::dc_sd_jwt::{DcSdJwt, DcSdJwtParameters}; -use oid4vci::credential_format_profiles::vc_jose_cose::vc_sd_jwt::{VcSdJwt, VcSdJwtParameters}; +use oid4vci::credential_format_profiles::vc_jose_cose::vc_sd_jwt::{self, VcSdJwt, VcSdJwtParameters}; use oid4vci::credential_format_profiles::w3c_verifiable_credentials::jwt_vc_json::{ CredentialDefinition, JwtVcJson, JwtVcJsonParameters, }; @@ -155,6 +155,30 @@ impl Aggregate for Credential { let status_list_url = get_status_list_url(self.credential_status.index)?; + let name = config() + .display + .first() + .expect("Configuration `display.name` missing") + .name + .clone(); + + let issuer: Profile = ProfileBuilder::default() + .id(config().public_url.clone()) + .type_("Profile") + .name(name) + .try_into() + .expect("Could not build issuer profile"); + + let id = data + .raw + .get("id") + .map(|id| { + id.as_str() + .and_then(|id_str| Url::parse(id_str).ok()) + .ok_or(InvalidIdentifierError) + }) + .transpose()?; + match &credential_configuration.credential_format { CredentialFormats::JwtVcJson(Parameters:: { parameters: @@ -163,32 +187,8 @@ impl Aggregate for Credential { .. }, }) => { - let name = config() - .display - .first() - .expect("Configuration `display.name` missing") - .name - .clone(); - - let issuer: Profile = ProfileBuilder::default() - .id(config().public_url.clone()) - .type_("Profile") - .name(name) - .try_into() - .expect("Could not build issuer profile"); - let mut credential_types: Vec = type_.clone(); - let id = data - .raw - .get("id") - .map(|id| { - id.as_str() - .and_then(|id_str| Url::parse(id_str).ok()) - .ok_or(InvalidIdentifierError) - }) - .transpose()?; - let credential_subject = identity_credential::credential::Subject::from_json_value( data.raw["credentialSubject"].clone(), ) @@ -355,32 +355,12 @@ impl Aggregate for Credential { }]); } CredentialFormats::VcSdJwt(Parameters:: { - parameters: VcSdJwtParameters {}, + parameters: + VcSdJwtParameters { + credential_definition: vc_sd_jwt::CredentialDefinition { type_, .. }, + .. + }, }) => { - let name = config() - .display - .first() - .expect("Configuration `display.name` missing") - .name - .clone(); - - let issuer: Profile = ProfileBuilder::default() - .id(config().public_url.clone()) - .type_("Profile") - .name(name) - .try_into() - .expect("Could not build issuer profile"); - - let id = data - .raw - .get("id") - .map(|id| { - id.as_str() - .and_then(|id_str| Url::parse(id_str).ok()) - .ok_or(InvalidIdentifierError) - }) - .transpose()?; - let issuer = match serde_json::from_value::(json!({ "id": issuer.id, "name": issuer.name, @@ -408,22 +388,19 @@ impl Aggregate for Credential { .map_err(|_| CredentialError::InvalidCredentialStatus)?; let status = identity_credential::credential::Status { - id: status_list_url.into(), + id: status_list_url, type_: StatusListTyp::Jwt.to_string(), properties: status_uri_idx, }; - let builder = W3CVerifiableCredentialBuilder::default() + let mut builder = W3CVerifiableCredentialBuilder::default() .issuer(issuer) .subject(credential_subject) - .issuance_date(issuance_date) .status(status); - let builder = if let Some(expiration_date) = expiration_date { - builder.expiration_date(expiration_date) - } else { - builder - }; + if cfg!(feature = "test_utils") { + builder = builder.issuance_date("2010-01-01T00:00:00Z".parse().unwrap()); + } let builder = if let Some(id) = id { builder.id(id.into()) @@ -437,8 +414,6 @@ impl Aggregate for Credential { let mut raw = json!(credential); - // FIXME - let type_ = vec!["VerifiableCredential".to_string()]; raw["type"] = json!(type_); return Ok(vec![UnsignedCredentialCreated { @@ -447,8 +422,8 @@ impl Aggregate for Credential { data: Data { raw }, credential_configuration, credential_status, - issuance_date: Some(issuance_date), - expiration_date, + created_at: Some(created_at), + expires_at, }]); } _ => Err(UnsupportedCredentialFormat(serde_json::json!( @@ -516,17 +491,17 @@ impl Aggregate for Credential { uri: status_list_url, })); + #[cfg(feature = "test_utils")] + let iat = 1262304000; // 2010-01-01T00:00:00Z + #[cfg(not(feature = "test_utils"))] + let iat = issuance_date.to_unix(); + let signed_credential = match &self.credential_configuration.credential_format { CredentialFormats::JwtVcJson(_) => { if let Some(ref id) = id { credential.raw["id"] = json!(id); }; - #[cfg(feature = "test_utils")] - let iat = 1262304000; // 2010-01-01T00:00:00Z - #[cfg(not(feature = "test_utils"))] - let iat = issuance_date.to_unix(); - let exp = self.expires_at.map(|exp| exp.to_unix()); credential.raw["issuer"] = json!(issuer_did); @@ -660,6 +635,74 @@ impl Aggregate for Credential { serde_json::json!(sd_jwt_credential.to_string()) } + CredentialFormats::VcSdJwt(_) => { + let issuer = &services.issuer; + + let algorithm = get_preferred_signing_algorithm(); + + let alg = algorithm.as_str(); + + let holder_kid = proof.and_then(|proof| { + let Proof::Jwt { jwt: proof } = proof; + + jsonwebtoken::decode_header(&proof).ok().and_then(|header| header.kid) + }); + + let kid = issuer + .key_id(&get_preferred_did_method().to_string(), algorithm) + .await + .ok_or(KeyIdError)?; + + let mut w3c_verifiable_credential_v2: W3CVerifiableCredentialV2 = + W3CVerifiableCredentialV2::from_json_value(credential.raw).map_err(|e| { + BuildCredentialError(format!( + "Failed to extract W3C Verifiable Credential V2 claims: {}", + e + )) + })?; + + w3c_verifiable_credential_v2.valid_from = issuance_date; + + if let Some(expiration_date) = self.expires_at { + w3c_verifiable_credential_v2.valid_until = Some(expiration_date); + } + + let paths = w3c_verifiable_credential_v2 + .credential_subject + .first() + .map(|subject| subject.properties.keys().cloned().collect::>()) + .unwrap_or_default(); + + let mut builder = SdJwtBuilder::new(w3c_verifiable_credential_v2) + .map_err(|e| BuildCredentialError(format!("Failed to create SD-JWT VC builder: {}", e)))? + .header("typ", "vc+sd-jwt") + .header("kid", kid) + .insert_claim("status", status_claim) + .map_err(|e| BuildCredentialError(format!("Failed to create SD-JWT VC builder: {}", e)))?; + + if let Some(holder_kid) = holder_kid.clone() { + builder = builder.require_key_binding(RequiredKeyBinding::Kid(holder_kid)); + } + + // By default, all custom claims are concealable. + for path in paths { + builder = builder + .make_concealable(&format!("/credentialSubject/{}", path)) + .map_err(|e| { + BuildCredentialError(format!( + "Failed to make claim at path `/credentialSubject/{}` concealable: {}", + path, e + )) + })?; + } + + let vc_sd_jwt_credential = builder + .finish(&**issuer, alg) + .await + .map_err(|e| BuildCredentialError(format!("Failed to build SD-JWT credential: {}", e)))?; + + serde_json::json!(vc_sd_jwt_credential.to_string()) + } _ => { return Err(UnsupportedCredentialFormat(serde_json::json!( self.credential_configuration.credential_format @@ -800,6 +843,11 @@ pub mod credential_tests { DC_SD_JWT_CREDENTIAL_CONFIGURATION.clone(), UNSIGNED_DC_SD_JWT_CREDENTIAL.clone() )] + #[case::vc_sd_jwt( + VC_SD_JWT_CREDENTIAL_SUBJECT.clone(), + VC_SD_JWT_CREDENTIAL_CONFIGURATION.clone(), + UNSIGNED_VC_SD_JWT_CREDENTIAL.clone() + )] #[serial_test::serial] async fn test_create_unsigned_credential( #[case] credential_subject: serde_json::Value, @@ -1022,6 +1070,36 @@ pub mod test_utils { }], ..Default::default() }; + pub static ref VC_SD_JWT_CREDENTIAL_CONFIGURATION: CredentialConfigurationsSupportedObject = + CredentialConfigurationsSupportedObject { + credential_format: CredentialFormats::VcSdJwt(Parameters { + parameters: (vc_sd_jwt::CredentialDefinition { + type_: vec!["VerifiableCredential".to_string()], + }) + .into() + }), + cryptographic_binding_methods_supported: vec!["did:jwk".to_string(), "did:key".to_string(),], + credential_signing_alg_values_supported: vec!["ES256".to_string(), "EdDSA".to_string()], + proof_types_supported: HashMap::from_iter(vec![( + ProofType::Jwt, + KeyProofMetadata { + proof_signing_alg_values_supported: vec!["ES256".to_string(), "EdDSA".to_string()], + }, + )]), + display: vec![CredentialConfigurationsSupportedDisplay { + name: "VCDM2.0 SD-JWT Credential".to_string(), + locale: Some("en".to_string()), + logo: Some(Logo { + uri: "https://www.impierce.com/external/impierce-logo.png".parse().unwrap(), + alt_text: Some("Impierce Logo".to_string()), + }), + description: None, + background_image: None, + background_color: None, + text_color: None, + }], + ..Default::default() + }; pub static ref OPENBADGE_CREDENTIAL_SUBJECT: serde_json::Value = json!( { "id": "https://example.com/credentials/3527", @@ -1057,6 +1135,18 @@ pub mod test_utils { "last_name": "Rustacean" } ); + pub static ref VC_SD_JWT_CREDENTIAL_SUBJECT: serde_json::Value = json!( + { + "credentialSubject": { + "first_name": "Ferris", + "last_name": "Rustacean", + "degree": { + "type": "MasterDegree", + "name": "Master of Oceanography" + } + } + } + ); pub static ref UNSIGNED_OPENBADGE_CREDENTIAL: serde_json::Value = json!({ "@context": [ "https://www.w3.org/2018/credentials/v1", @@ -1100,5 +1190,21 @@ pub mod test_utils { "first_name": "Ferris", "last_name": "Rustacean" }); + pub static ref UNSIGNED_VC_SD_JWT_CREDENTIAL: serde_json::Value = json!({ + "@context": [ "https://www.w3.org/ns/credentials/v2" ], + "type": [ "VerifiableCredential" ], + "credentialSubject": VC_SD_JWT_CREDENTIAL_SUBJECT["credentialSubject"].clone(), + "issuer": { + "id": "https://my-domain.example.org/", + "name": "UniCore" + }, + "validFrom": "2010-01-01T00:00:00Z", + "credentialStatus": { + "id": "https://my-domain.example.org/ietf-oauth-token-status-list/0", + "type": "statuslist+jwt", + "uri": "https://my-domain.example.org/ietf-oauth-token-status-list/0", + "idx": 0 + } + }); } } diff --git a/agent_issuance/src/server_config/aggregate.rs b/agent_issuance/src/server_config/aggregate.rs index ac043218d..56dab65dd 100644 --- a/agent_issuance/src/server_config/aggregate.rs +++ b/agent_issuance/src/server_config/aggregate.rs @@ -4,6 +4,7 @@ use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; use cqrs_es::Aggregate; use identity_core::convert::ToJson; use jsonwebtoken::Algorithm; +use oid4vci::credential_format_profiles::vc_jose_cose::vc_sd_jwt; use oid4vci::credential_format_profiles::w3c_verifiable_credentials::{jwt_vc_json, CredentialSubject}; use oid4vci::credential_format_profiles::{CredentialFormats, Parameters}; use oid4vci::credential_issuer::credential_configurations_supported::CredentialConfigurationsSupportedObject; @@ -192,7 +193,12 @@ impl Aggregate for ServerConfig { parameters: (vct).into(), }) } - CredentialFormats::VcSdJwt(_) => CredentialFormats::VcSdJwt(Parameters { parameters: ().into() }), + CredentialFormats::VcSdJwt(_) => CredentialFormats::VcSdJwt(Parameters { + parameters: (vc_sd_jwt::CredentialDefinition { + type_: credential_configuration.type_, + }) + .into(), + }), _ => { return Err(UnsupportedCredentialFormatIdentifierError(format!( "{:?}", diff --git a/agent_issuance/src/state.rs b/agent_issuance/src/state.rs index 0ed5d6ca0..52310df71 100644 --- a/agent_issuance/src/state.rs +++ b/agent_issuance/src/state.rs @@ -289,6 +289,16 @@ pub async fn update_credential_configurations(state: &IssuanceState) -> anyhow:: "credential_configuration_id": "VCDM 2.0 SD-JWT", "format": "vc+sd-jwt", "type": ["VerifiableCredential"], + "display": [ + { + "name": "VCDM 2.0 SD-JWT Credential", + "locale": "en", + "logo": { + "uri": "https://www.impierce.com/external/impierce-logo.png", + "alt_text": "Impierce Logo" + } + } + ], "claims": [ { "path": ["credentialSubject", "first_name"], From ef92a2c77503e2d9e1ba39e06b30d67c32545613 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 3 Feb 2026 20:28:34 +0100 Subject: [PATCH 28/35] feat: add VCDM2.0 SD-JWT credential configurations and example requests --- agent_api_http/openapi.yaml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/agent_api_http/openapi.yaml b/agent_api_http/openapi.yaml index 6b0e55266..11041ab2f 100644 --- a/agent_api_http/openapi.yaml +++ b/agent_api_http/openapi.yaml @@ -461,6 +461,19 @@ paths: uri: https://impierce.com/images/logo-blue.png name: Identity Credential format: dc+sd-jwt + vcdm2_sd_jwt_credential_configurations: + summary: VCDM2.0 SD-JWT + value: + credential_configuration_id: VCDM2.0 SD-JWT + type: + - VerifiableCredential + display: + - locale: en + logo: + alt_text: UniCore Logo + uri: https://impierce.com/images/logo-blue.png + name: Identity Credential + format: vc+sd-jwt responses: "200": description: A Credential Configuration has been successfully added to the Credential Issuer Metadata @@ -611,6 +624,17 @@ paths: credentialConfigurationId: SD-JWT VC offerId: "001" expiresAt: "3025-10-24 11:34:00Z" + vcdm2-sd-jwt: + summary: VCDM2.0 SD-JWT + value: + credential: + credentialSubject: + dob: "1982-01-01" + first_name: Ferris + last_name: Crabman + credentialConfigurationId: VCDM2.0 SD-JWT + offerId: "001" + expiresAt: "3025-10-24 11:34:00Z" responses: "201": description: Credential successfully created From a35582bce83d04c98369a0acce63b23878c20447 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 24 Feb 2026 08:51:30 +0100 Subject: [PATCH 29/35] refactor: fix clippy warning, add TODO comment --- agent_issuance/src/credential/aggregate.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index bb3ba6aa2..22f7ca188 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -513,9 +513,10 @@ impl Aggregate for Credential { let alg = algorithm.as_str(); let holder_kid = proofs.and_then(|proofs| { - let proof = proofs.jwt.first()?; - - jsonwebtoken::decode_header(&proof).ok().and_then(|header| header.kid) + // TODO: Support batch credential issuance. See https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html#name-batch-credential-issuance + jsonwebtoken::decode_header(proofs.jwt.first()?) + .ok() + .and_then(|header| header.kid) }); let kid = issuer From 3a16802a5cabed5611e474b6a646c79cecb9de02 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 24 Feb 2026 09:36:26 +0100 Subject: [PATCH 30/35] fix: reset Postman collection format --- .../postman/ssi-agent.postman_collection.json | 718 ++++++++++++++---- 1 file changed, 559 insertions(+), 159 deletions(-) diff --git a/agent_api_http/postman/ssi-agent.postman_collection.json b/agent_api_http/postman/ssi-agent.postman_collection.json index 57582d032..4e7bb8401 100644 --- a/agent_api_http/postman/ssi-agent.postman_collection.json +++ b/agent_api_http/postman/ssi-agent.postman_collection.json @@ -31,7 +31,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -51,8 +53,13 @@ }, "url": { "raw": "{{HOST}}/v0/credentials", - "host": ["{{HOST}}"], - "path": ["v0", "credentials"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] } }, "response": [] @@ -78,7 +85,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -98,8 +107,13 @@ }, "url": { "raw": "{{HOST}}/v0/credentials", - "host": ["{{HOST}}"], - "path": ["v0", "credentials"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] } }, "response": [] @@ -125,7 +139,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -145,8 +161,13 @@ }, "url": { "raw": "{{HOST}}/v0/credentials", - "host": ["{{HOST}}"], - "path": ["v0", "credentials"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] } }, "response": [] @@ -157,7 +178,9 @@ { "listen": "test", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -165,7 +188,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -176,8 +201,13 @@ "header": [], "url": { "raw": "{{HOST}}/v0/credentials", - "host": ["{{HOST}}"], - "path": ["v0", "credentials"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] } }, "response": [] @@ -189,7 +219,9 @@ "header": [], "url": { "raw": "{{HOST}}{{CREDENTIAL_LOCATION}}", - "host": ["{{HOST}}{{CREDENTIAL_LOCATION}}"] + "host": [ + "{{HOST}}{{CREDENTIAL_LOCATION}}" + ] } }, "response": [] @@ -210,7 +242,9 @@ }, "url": { "raw": "{{HOST}}{{CREDENTIAL_LOCATION}}", - "host": ["{{HOST}}{{CREDENTIAL_LOCATION}}"] + "host": [ + "{{HOST}}{{CREDENTIAL_LOCATION}}" + ] } }, "response": [] @@ -221,7 +255,9 @@ { "listen": "test", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -229,7 +265,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -240,8 +278,13 @@ "header": [], "url": { "raw": "{{HOST}}/ietf-oauth-token-status-list/0", - "host": ["{{HOST}}"], - "path": ["ietf-oauth-token-status-list", "0"] + "host": [ + "{{HOST}}" + ], + "path": [ + "ietf-oauth-token-status-list", + "0" + ] } }, "response": [] @@ -269,7 +312,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -289,8 +334,13 @@ }, "url": { "raw": "{{HOST}}/v0/offers", - "host": ["{{HOST}}"], - "path": ["v0", "offers"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers" + ] } }, "response": [] @@ -301,7 +351,9 @@ { "listen": "test", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -309,7 +361,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -320,8 +374,13 @@ "header": [], "url": { "raw": "{{HOST}}/v0/offers", - "host": ["{{HOST}}"], - "path": ["v0", "offers"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers" + ] } }, "response": [] @@ -333,8 +392,14 @@ "header": [], "url": { "raw": "{{HOST}}/v0/offers/{{OFFER_ID}}", - "host": ["{{HOST}}"], - "path": ["v0", "offers", "{{OFFER_ID}}"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers", + "{{OFFER_ID}}" + ] } }, "response": [] @@ -355,8 +420,14 @@ }, "url": { "raw": "{{HOST}}/v0/offers/send-offer-to-organization", - "host": ["{{HOST}}"], - "path": ["v0", "offers", "send-offer-to-organization"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers", + "send-offer-to-organization" + ] } }, "response": [] @@ -377,8 +448,14 @@ }, "url": { "raw": "{{HOST}}/v0/offers/send-offer-to-individual", - "host": ["{{HOST}}"], - "path": ["v0", "offers", "send-offer-to-individual"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers", + "send-offer-to-individual" + ] } }, "response": [] @@ -399,8 +476,13 @@ }, "url": { "raw": "{{HOST}}/v0/credential-configurations", - "host": ["{{HOST}}"], - "path": ["v0", "credential-configurations"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credential-configurations" + ] } }, "response": [] @@ -433,7 +515,9 @@ "header": [], "url": { "raw": "{{CREDENTIAL_OFFER_URI}}", - "host": ["{{CREDENTIAL_OFFER_URI}}"] + "host": [ + "{{CREDENTIAL_OFFER_URI}}" + ] } }, "response": [] @@ -469,8 +553,13 @@ "header": [], "url": { "raw": "{{HOST}}/.well-known/oauth-authorization-server", - "host": ["{{HOST}}"], - "path": [".well-known", "oauth-authorization-server"] + "host": [ + "{{HOST}}" + ], + "path": [ + ".well-known", + "oauth-authorization-server" + ] } }, "response": [] @@ -482,8 +571,13 @@ "header": [], "url": { "raw": "{{HOST}}/.well-known/openid-credential-issuer", - "host": ["{{HOST}}"], - "path": [".well-known", "openid-credential-issuer"] + "host": [ + "{{HOST}}" + ], + "path": [ + ".well-known", + "openid-credential-issuer" + ] } }, "response": [] @@ -529,8 +623,13 @@ }, "url": { "raw": "{{HOST}}/auth/token", - "host": ["{{HOST}}"], - "path": ["auth", "token"] + "host": [ + "{{HOST}}" + ], + "path": [ + "auth", + "token" + ] } }, "response": [] @@ -542,8 +641,13 @@ "header": [], "url": { "raw": "{{HOST}}/openid4vci/nonce", - "host": ["{{HOST}}"], - "path": ["openid4vci", "nonce"] + "host": [ + "{{HOST}}" + ], + "path": [ + "openid4vci", + "nonce" + ] } }, "response": [] @@ -586,8 +690,13 @@ }, "url": { "raw": "{{HOST}}/openid4vci/credential", - "host": ["{{HOST}}"], - "path": ["openid4vci", "credential"] + "host": [ + "{{HOST}}" + ], + "path": [ + "openid4vci", + "credential" + ] } }, "response": [] @@ -630,8 +739,13 @@ }, "url": { "raw": "{{HOST}}/openid4vci/notification", - "host": ["{{HOST}}"], - "path": ["openid4vci", "notification"] + "host": [ + "{{HOST}}" + ], + "path": [ + "openid4vci", + "notification" + ] } }, "response": [] @@ -712,8 +826,13 @@ }, "url": { "raw": "{{HOST}}/auth/par", - "host": ["{{HOST}}"], - "path": ["auth", "par"] + "host": [ + "{{HOST}}" + ], + "path": [ + "auth", + "par" + ] } }, "response": [] @@ -725,8 +844,13 @@ "header": [], "url": { "raw": "{{HOST}}/auth/authorize?client_id=unime&request_uri={{REQUEST_URI}}", - "host": ["{{HOST}}"], - "path": ["auth", "authorize"], + "host": [ + "{{HOST}}" + ], + "path": [ + "auth", + "authorize" + ], "query": [ { "key": "client_id", @@ -794,8 +918,13 @@ }, "url": { "raw": "{{HOST}}/v0/authorization_requests", - "host": ["{{HOST}}"], - "path": ["v0", "authorization_requests"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "authorization_requests" + ] } }, "response": [] @@ -836,7 +965,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -856,8 +987,13 @@ }, "url": { "raw": "{{HOST}}/v0/authorization_requests", - "host": ["{{HOST}}"], - "path": ["v0", "authorization_requests"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "authorization_requests" + ] } }, "response": [] @@ -869,7 +1005,9 @@ "header": [], "url": { "raw": "{{HOST}}{{AUTHORIZATION_REQUEST_LOCATION}}", - "host": ["{{HOST}}{{AUTHORIZATION_REQUEST_LOCATION}}"] + "host": [ + "{{HOST}}{{AUTHORIZATION_REQUEST_LOCATION}}" + ] } }, "response": [] @@ -886,7 +1024,9 @@ "header": [], "url": { "raw": "{{REQUEST_URI}}", - "host": ["{{REQUEST_URI}}"] + "host": [ + "{{REQUEST_URI}}" + ] } }, "response": [] @@ -903,8 +1043,13 @@ "header": [], "url": { "raw": "{{HOST}}/.well-known/did.json", - "host": ["{{HOST}}"], - "path": [".well-known", "did.json"] + "host": [ + "{{HOST}}" + ], + "path": [ + ".well-known", + "did.json" + ] } }, "response": [] @@ -916,8 +1061,13 @@ "header": [], "url": { "raw": "{{HOST}}/.well-known/did-configuration.json", - "host": ["{{HOST}}"], - "path": [".well-known", "did-configuration.json"] + "host": [ + "{{HOST}}" + ], + "path": [ + ".well-known", + "did-configuration.json" + ] } }, "response": [] @@ -956,7 +1106,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -967,8 +1119,14 @@ "header": [], "url": { "raw": "{{HOST}}/v0/holder/offers", - "host": ["{{HOST}}"], - "path": ["v0", "holder", "offers"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "offers" + ] } }, "response": [] @@ -980,8 +1138,15 @@ "header": [], "url": { "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}", - "host": ["{{HOST}}"], - "path": ["v0", "holder", "offers", "{{RECEIVED_OFFER_ID}}"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "offers", + "{{RECEIVED_OFFER_ID}}" + ] } }, "response": [] @@ -993,7 +1158,9 @@ "header": [], "url": { "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}/accept", - "host": ["{{HOST}}"], + "host": [ + "{{HOST}}" + ], "path": [ "v0", "holder", @@ -1012,7 +1179,9 @@ "header": [], "url": { "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}/reject", - "host": ["{{HOST}}"], + "host": [ + "{{HOST}}" + ], "path": [ "v0", "holder", @@ -1063,8 +1232,14 @@ "header": [], "url": { "raw": "{{HOST}}/v0/holder/credentials", - "host": ["{{HOST}}"], - "path": ["v0", "holder", "credentials"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "credentials" + ] } }, "response": [] @@ -1075,7 +1250,9 @@ { "listen": "test", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript" } } @@ -1094,8 +1271,14 @@ }, "url": { "raw": "{{HOST}}/v0/holder/credentials", - "host": ["{{HOST}}"], - "path": ["v0", "holder", "credentials"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "credentials" + ] } }, "response": [] @@ -1107,7 +1290,9 @@ "header": [], "url": { "raw": "{{HOST}}/v0/holder/credentials/{{HOLDER_CREDENTIAL_ID}}", - "host": ["{{HOST}}"], + "host": [ + "{{HOST}}" + ], "path": [ "v0", "holder", @@ -1157,8 +1342,14 @@ "header": [], "url": { "raw": "{{HOST}}/v0/holder/presentations", - "host": ["{{HOST}}"], - "path": ["v0", "holder", "presentations"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "presentations" + ] } }, "response": [] @@ -1170,8 +1361,15 @@ "header": [], "url": { "raw": "{{HOST}}/v0/holder/presentations/{{PRESENTATION_ID}}", - "host": ["{{HOST}}"], - "path": ["v0", "holder", "presentations", "{{PRESENTATION_ID}}"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "presentations", + "{{PRESENTATION_ID}}" + ] } }, "response": [] @@ -1192,8 +1390,14 @@ }, "url": { "raw": "{{HOST}}/v0/holder/presentations", - "host": ["{{HOST}}"], - "path": ["v0", "holder", "presentations"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "presentations" + ] } }, "response": [] @@ -1212,7 +1416,9 @@ { "listen": "test", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -1220,7 +1426,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -1240,8 +1448,13 @@ }, "url": { "raw": "{{HOST}}/v0/connections", - "host": ["{{HOST}}"], - "path": ["v0", "connections"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ] } }, "response": [] @@ -1275,7 +1488,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -1286,8 +1501,13 @@ "header": [], "url": { "raw": "{{HOST}}/v0/connections", - "host": ["{{HOST}}"], - "path": ["v0", "connections"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ] } }, "response": [] @@ -1321,7 +1541,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -1332,8 +1554,13 @@ "header": [], "url": { "raw": "{{HOST}}/v0/connections?did=did:example:123", - "host": ["{{HOST}}"], - "path": ["v0", "connections"], + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ], "query": [ { "key": "did", @@ -1375,8 +1602,13 @@ "header": [], "url": { "raw": "{{HOST}}/v0/connections?alias=My+Connection", - "host": ["{{HOST}}"], - "path": ["v0", "connections"], + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ], "query": [ { "key": "alias", @@ -1416,7 +1648,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -1427,8 +1661,13 @@ "header": [], "url": { "raw": "{{HOST}}/v0/connections?domain=http://example.org", - "host": ["{{HOST}}"], - "path": ["v0", "connections"], + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ], "query": [ { "key": "domain", @@ -1445,7 +1684,9 @@ { "listen": "test", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -1453,7 +1694,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -1477,8 +1720,14 @@ }, "url": { "raw": "{{HOST}}/v0/connections/{{CONNECTION_ID}}", - "host": ["{{HOST}}"], - "path": ["v0", "connections", "{{CONNECTION_ID}}"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections", + "{{CONNECTION_ID}}" + ] } }, "response": [] @@ -1504,8 +1753,14 @@ }, "url": { "raw": "{{HOST}}/v0/services/linked-vp", - "host": ["{{HOST}}"], - "path": ["v0", "services", "linked-vp"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "services", + "linked-vp" + ] } }, "response": [] @@ -1549,8 +1804,13 @@ "header": [], "url": { "raw": "{{HOST}}/v0/services", - "host": ["{{HOST}}"], - "path": ["v0", "services"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "services" + ] } }, "response": [] @@ -1562,8 +1822,14 @@ "header": [], "url": { "raw": "{{HOST}}/v0/services/{{SERVICE_ID}}", - "host": ["{{HOST}}"], - "path": ["v0", "services", "{{SERVICE_ID}}"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "services", + "{{SERVICE_ID}}" + ] } }, "response": [] @@ -1575,7 +1841,9 @@ "header": [], "url": { "raw": "{{HOST}}/v0/services/linked-verifiable-presentation-service", - "host": ["{{HOST}}"], + "host": [ + "{{HOST}}" + ], "path": [ "v0", "services", @@ -1622,8 +1890,13 @@ "header": [], "url": { "raw": "{{HOST}}/v0/documents", - "host": ["{{HOST}}"], - "path": ["v0", "documents"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "documents" + ] } }, "response": [] @@ -1635,8 +1908,14 @@ "header": [], "url": { "raw": "{{HOST}}/v0/documents/{{DOCUMENT_ID}}", - "host": ["{{HOST}}"], - "path": ["v0", "documents", "{{DOCUMENT_ID}}"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "documents", + "{{DOCUMENT_ID}}" + ] } }, "response": [] @@ -1648,8 +1927,13 @@ "header": [], "url": { "raw": "{{HOST}}/v0/documents?did_method=did:jwk", - "host": ["{{HOST}}"], - "path": ["v0", "documents"], + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "documents" + ], "query": [ { "key": "did_method", @@ -1681,8 +1965,13 @@ }, "url": { "raw": "{{HOST}}/v0/profile", - "host": ["{{HOST}}"], - "path": ["v0", "profile"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "profile" + ] } }, "response": [] @@ -1693,7 +1982,9 @@ { "listen": "test", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -1701,7 +1992,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -1712,8 +2005,13 @@ "header": [], "url": { "raw": "{{HOST}}/v0/profile", - "host": ["{{HOST}}"], - "path": ["v0", "profile"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "profile" + ] } }, "response": [] @@ -1744,8 +2042,14 @@ }, "url": { "raw": "{{HOST}}/v0/templates/create-template", - "host": ["{{HOST}}"], - "path": ["v0", "templates", "create-template"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "create-template" + ] } }, "response": [] @@ -1780,7 +2084,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {}, "requests": {} @@ -1792,8 +2098,14 @@ "header": [], "url": { "raw": "{{HOST}}/v0/templates/get-all-templates", - "host": ["{{HOST}}"], - "path": ["v0", "templates", "get-all-templates"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "get-all-templates" + ] } }, "response": [] @@ -1804,7 +2116,9 @@ { "listen": "test", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -1812,7 +2126,9 @@ { "listen": "prerequest", "script": { - "exec": [""], + "exec": [ + "" + ], "type": "text/javascript", "packages": {} } @@ -1830,8 +2146,14 @@ }, "url": { "raw": "{{HOST}}/v0/templates/{{TEMPLATE_ID}}", - "host": ["{{HOST}}"], - "path": ["v0", "templates", "{{TEMPLATE_ID}}"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "{{TEMPLATE_ID}}" + ] } }, "response": [] @@ -1852,8 +2174,14 @@ }, "url": { "raw": "{{HOST}}/v0/templates/update-template", - "host": ["{{HOST}}"], - "path": ["v0", "templates", "update-template"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "update-template" + ] } }, "response": [] @@ -1874,8 +2202,14 @@ }, "url": { "raw": "{{HOST}}/v0/templates/duplicate-template", - "host": ["{{HOST}}"], - "path": ["v0", "templates", "duplicate-template"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "duplicate-template" + ] } }, "response": [] @@ -1896,8 +2230,14 @@ }, "url": { "raw": "{{HOST}}/v0/templates/delete-template", - "host": ["{{HOST}}"], - "path": ["v0", "templates", "delete-template"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "delete-template" + ] } }, "response": [] @@ -1916,8 +2256,12 @@ "header": [], "url": { "raw": "{{HOST}}/healthz", - "host": ["{{HOST}}"], - "path": ["healthz"] + "host": [ + "{{HOST}}" + ], + "path": [ + "healthz" + ] } }, "response": [] @@ -1929,8 +2273,12 @@ "header": [], "url": { "raw": "{{HOST}}/version", - "host": ["{{HOST}}"], - "path": ["version"] + "host": [ + "{{HOST}}" + ], + "path": [ + "version" + ] } }, "response": [] @@ -1942,8 +2290,12 @@ "header": [], "url": { "raw": "{{HOST}}/info", - "host": ["{{HOST}}"], - "path": ["info"] + "host": [ + "{{HOST}}" + ], + "path": [ + "info" + ] } }, "response": [] @@ -1955,8 +2307,13 @@ "header": [], "url": { "raw": "{{HOST}}/v0/configuration", - "host": ["{{HOST}}"], - "path": ["v0", "configuration"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "configuration" + ] } }, "response": [] @@ -1968,8 +2325,13 @@ "header": [], "url": { "raw": "{{HOST}}/v0/configuration?provisioned=true", - "host": ["{{HOST}}"], - "path": ["v0", "configuration"], + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "configuration" + ], "query": [ { "key": "provisioned", @@ -1987,8 +2349,12 @@ "header": [], "url": { "raw": "{{HOST_METRICS}}/metrics", - "host": ["{{HOST_METRICS}}"], - "path": ["metrics"] + "host": [ + "{{HOST_METRICS}}" + ], + "path": [ + "metrics" + ] } }, "response": [] @@ -2020,8 +2386,14 @@ }, "url": { "raw": "{{HOST}}/v0/keys/generate-new-key", - "host": ["{{HOST}}"], - "path": ["v0", "keys", "generate-new-key"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "generate-new-key" + ] } }, "response": [] @@ -2042,8 +2414,14 @@ }, "url": { "raw": "{{HOST}}/v0/keys/remove-key", - "host": ["{{HOST}}"], - "path": ["v0", "keys", "remove-key"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "remove-key" + ] } }, "response": [] @@ -2064,8 +2442,14 @@ }, "url": { "raw": "{{HOST}}/v0/keys/rename-key-alias", - "host": ["{{HOST}}"], - "path": ["v0", "keys", "rename-key-alias"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "rename-key-alias" + ] } }, "response": [] @@ -2086,8 +2470,14 @@ }, "url": { "raw": "{{HOST}}/v0/keys/set-signing-key", - "host": ["{{HOST}}"], - "path": ["v0", "keys", "set-signing-key"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "set-signing-key" + ] } }, "response": [] @@ -2099,8 +2489,14 @@ "header": [], "url": { "raw": "{{HOST}}/v0/keys/list-all", - "host": ["{{HOST}}"], - "path": ["v0", "keys", "list-all"] + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "list-all" + ] } }, "response": [] @@ -2132,14 +2528,18 @@ "listen": "prerequest", "script": { "type": "text/javascript", - "exec": [""] + "exec": [ + "" + ] } }, { "listen": "test", "script": { "type": "text/javascript", - "exec": [""] + "exec": [ + "" + ] } } ], @@ -2235,4 +2635,4 @@ "type": "string" } ] -} +} \ No newline at end of file From badf2144a424b4bd7ed7827ad0dcbea3743fc8a5 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 24 Feb 2026 09:56:04 +0100 Subject: [PATCH 31/35] docs: update Postman Collection --- .../postman/ssi-agent.postman_collection.json | 5371 +++++++++-------- 1 file changed, 2735 insertions(+), 2636 deletions(-) diff --git a/agent_api_http/postman/ssi-agent.postman_collection.json b/agent_api_http/postman/ssi-agent.postman_collection.json index 4e7bb8401..8581de525 100644 --- a/agent_api_http/postman/ssi-agent.postman_collection.json +++ b/agent_api_http/postman/ssi-agent.postman_collection.json @@ -1,2638 +1,2737 @@ { - "info": { - "_postman_id": "bd568b99-121b-438e-afc1-2356f4ab1803", - "name": "ssi-agent", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", - "_exporter_id": "41786572", - "_collection_link": "https://go.postman.co/collection/41786572-bd568b99-121b-438e-afc1-2356f4ab1803?source=collection_link" - }, - "item": [ - { - "name": "Issuance", - "item": [ - { - "name": "openbadgesv3_credentials", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const location = pm.response.headers.get(\"LOCATION\");", - "", - "if(location){", - " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"openbadge_credential\",\n \"credential\": {\n \"credentialSubject\": {\n \"type\": [ \"AchievementSubject\" ],\n \"achievement\": {\n \"id\": \"https://example.com/achievements/21st-century-skills/teamwork\",\n \"type\": \"Achievement\",\n \"criteria\": {\n \"narrative\": \"Team members are nominated for this badge by their peers and recognized upon review by Example Corp management.\"\n },\n \"description\": \"This badge recognizes the development of the capacity to collaborate within a group environment.\",\n \"name\": \"Teamwork\"\n }\n }\n },\n \"expiresAt\": \"2028-04-12T09:15:23Z\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "w3c_vc_credentials", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const location = pm.response.headers.get(\"LOCATION\");", - "", - "if(location){", - " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"001\",\n \"credential\": {\n \"credentialSubject\": {\n \"first_name\": \"Ferris\",\n \"last_name\": \"Crabman\",\n \"dob\": \"1982-01-01\"\n }\n },\n \"expiresAt\": \"never\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "ACME Corp Credential", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const location = pm.response.headers.get(\"LOCATION\");", - "", - "if(location){", - " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"001\",\n \"credential\": {\n \"id\": \"https://acme.example.org/1a2b3c4d5e6f\",\n \"credentialSubject\": {\n \"id\": \"https://ecommerce.impierce.com/\",\n \"image\": \"https://static.wikia.nocookie.net/fictionalcompanies/images/c/c2/ACME_Corporation.png\",\n \"name\": \"VirtualVendors\",\n \"certificaat\": {\n \"type\": \"ACMECorpCredential\",\n \"certificeringsDatum\": \"2024-06-26\",\n \"geldigheidsPeriode\": \"1 jaar\",\n \"garanties\": [\n \"Het bedrijf is echt en bereikbaar.\",\n \"Voldoet aan de Thuiswinkel Algemene Voorwaarden.\",\n \"14 dagen bedenktijd.\",\n \"Veilige betaalmethoden.\",\n \"Duidelijke product/servicebeschrijvingen.\",\n \"Transparant bestelproces.\",\n \"Duidelijke prijzen.\",\n \"Veilige betaalomgeving.\",\n \"Veilige omgang met persoonlijke gegevens.\",\n \"Effectieve klachtenafhandeling en onafhankelijke geschillenbemiddeling.\"\n ]\n }\n }\n },\n \"expiresAt\": \"2035-12-31T23:59:59Z\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "All Credentials", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "Credential by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}{{CREDENTIAL_LOCATION}}", - "host": [ - "{{HOST}}{{CREDENTIAL_LOCATION}}" - ] - } - }, - "response": [] - }, - { - "name": "Credential by ID (credentialStatus)", - "request": { - "method": "PATCH", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"credentialStatus\": \"INVALID\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}{{CREDENTIAL_LOCATION}}", - "host": [ - "{{HOST}}{{CREDENTIAL_LOCATION}}" - ] - } - }, - "response": [] - }, - { - "name": "Status List Token", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/ietf-oauth-token-status-list/0", - "host": [ - "{{HOST}}" - ], - "path": [ - "ietf-oauth-token-status-list", - "0" - ] - } - }, - "response": [] - }, - { - "name": "offers", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const credential_offer = responseBody;", - "const decodedString = decodeURIComponent(credential_offer);", - "const [, secondItem] = decodedString.split('=', 2);", - "var credential_offer_uri = secondItem;", - "", - "if(credential_offer_uri){", - " pm.collectionVariables.set(\"CREDENTIAL_OFFER_URI\", credential_offer_uri)", - "}" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\": \"{{OFFER_ID}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/offers", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "offers" - ] - } - }, - "response": [] - }, - { - "name": "All Offers", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/offers", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "offers" - ] - } - }, - "response": [] - }, - { - "name": "Offer by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/offers/{{OFFER_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "offers", - "{{OFFER_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Send Offer to Organization", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\": \"{{OFFER_ID}}\",\n \"targetUrl\": \"{{HOST}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/offers/send-offer-to-organization", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "offers", - "send-offer-to-organization" - ] - } - }, - "response": [] - }, - { - "name": "Send Offer to Individual", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\": \"{{OFFER_ID}}\",\n \"recipientEmail\": \"email@example.test\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/offers/send-offer-to-individual", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "offers", - "send-offer-to-individual" - ] - } - }, - "response": [] - }, - { - "name": "Create a new Credential Configuration", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"credential_configuration_id\": \"002\",\n \"format\": \"jwt_vc_json\",\n \"credential_definition\": {\n \"type\": [\"VerifiableCredential\"]\n },\n \"display\": [\n {\n \"name\": \"Verifiable Credential\",\n \"locale\": \"en\",\n \"logo\": {\n \"uri\": \"https://www.impierce.com/external/impierce-logo.png\",\n \"alt_text\": \"Impierce Logo\"\n }\n }\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/credential-configurations", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "credential-configurations" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "oid4vci", - "item": [ - { - "name": "Get Credential Offer", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "const pre_authorized_code = jsonData.grants['urn:ietf:params:oauth:grant-type:pre-authorized_code']['pre-authorized_code'];", - "if(pre_authorized_code){", - " pm.collectionVariables.set(\"PRE_AUTHORIZED_CODE\", pre_authorized_code)", - "}" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{CREDENTIAL_OFFER_URI}}", - "host": [ - "{{CREDENTIAL_OFFER_URI}}" - ] - } - }, - "response": [] - }, - { - "name": "oauth-authorization-server", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "const issuer = jsonData?.issuer;", - "const tokenEndpoint = jsonData?.token_endpoint;", - "", - "if(issuer){", - " pm.collectionVariables.set(\"ISSUER\",issuer)", - "}", - "", - "if(tokenEndpoint){", - " pm.collectionVariables.set(\"TOKEN_ENDPOINT\",tokenEndpoint)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/.well-known/oauth-authorization-server", - "host": [ - "{{HOST}}" - ], - "path": [ - ".well-known", - "oauth-authorization-server" - ] - } - }, - "response": [] - }, - { - "name": "openid-credential-issuer", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/.well-known/openid-credential-issuer", - "host": [ - "{{HOST}}" - ], - "path": [ - ".well-known", - "openid-credential-issuer" - ] - } - }, - "response": [] - }, - { - "name": "token", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "const accessToken = jsonData?.access_token;", - "", - "if(accessToken){", - " pm.collectionVariables.set(\"ACCESS_TOKEN\",accessToken)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "urlencoded", - "urlencoded": [ - { - "key": "grant_type", - "value": "urn:ietf:params:oauth:grant-type:pre-authorized_code", - "type": "text" - }, - { - "key": "pre-authorized_code", - "value": "{{PRE_AUTHORIZED_CODE}}", - "type": "text" - } - ] - }, - "url": { - "raw": "{{HOST}}/auth/token", - "host": [ - "{{HOST}}" - ], - "path": [ - "auth", - "token" - ] - } - }, - "response": [] - }, - { - "name": "nonce", - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{HOST}}/openid4vci/nonce", - "host": [ - "{{HOST}}" - ], - "path": [ - "openid4vci", - "nonce" - ] - } - }, - "response": [] - }, - { - "name": "credential", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (jsonData.notification_id) {", - " pm.collectionVariables.set(\"NOTIFICATION_ID\", jsonData.notification_id);", - " console.log(\"Notification ID saved: \" + jsonData.notification_id);", - "}" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{ACCESS_TOKEN}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"credential_configuration_id\": \"001\",\n \"proof\": {\n \"proof_type\": \"jwt\",\n \"jwt\": \"eyJ0eXAiOiJvcGVuaWQ0dmNpLXByb29mK2p3dCIsImFsZyI6IkVkRFNBIiwia2lkIjoiZGlkOmtleTp6Nk1rdWlSS3ExZktyekFYZVNOaUd3cnBKUFB1Z1k4QXhKWUE1Y3BDdlpDWUJEN0IjejZNa3VpUktxMWZLcnpBWGVTTmlHd3JwSlBQdWdZOEF4SllBNWNwQ3ZaQ1lCRDdCIn0.eyJpc3MiOiJkaWQ6a2V5Ono2TWt1aVJLcTFmS3J6QVhlU05pR3dycEpQUHVnWThBeEpZQTVjcEN2WkNZQkQ3QiIsImF1ZCI6Imh0dHA6Ly8xOTIuMTY4LjEuMTI3OjMwMzMvIiwiZXhwIjo5OTk5OTk5OTk5LCJpYXQiOjE1NzEzMjQ4MDAsIm5vbmNlIjoidW5zYWZlX2Nfbm9uY2UifQ.wR2e4VUnVjG6IK9cntcqvc_8KEJQUd3SEjsPZwDYDlYqijZ4ZaQLxyHtzNmLkIS3FpChLrZrcvIUJrZxrWcKAg\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/openid4vci/credential", - "host": [ - "{{HOST}}" - ], - "path": [ - "openid4vci", - "credential" - ] - } - }, - "response": [] - }, - { - "name": "notification", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 204 No Content\", function () {", - " pm.response.to.have.status(204);", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{ACCESS_TOKEN}}", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"notification_id\": \"{{NOTIFICATION_ID}}\",\n \"event\": \"credential_accepted\",\n \"event_description\": \"User accepted the credential in wallet\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/openid4vci/notification", - "host": [ - "{{HOST}}" - ], - "path": [ - "openid4vci", - "notification" - ] - } - }, - "response": [] - }, - { - "name": "par", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "const requestUri = jsonData?.request_uri;", - "", - "if(requestUri){", - " pm.collectionVariables.set(\"REQUEST_URI\",requestUri)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "urlencoded", - "urlencoded": [ - { - "key": "response_type", - "value": "code", - "type": "text" - }, - { - "key": "client_id", - "value": "unime", - "type": "text" - }, - { - "key": "state", - "value": "test_state", - "type": "text" - }, - { - "key": "redirect_uri", - "value": "unime://callback", - "type": "text" - }, - { - "key": "code_challenge", - "value": "HlFaQkK4ul1jGkl6QRsxKGRVeRpaBY8hDja4WwPWTtw", - "type": "text" - }, - { - "key": "code_challenge_method", - "value": "S256", - "type": "text" - }, - { - "key": "scope", - "value": "openid profile", - "type": "text" - }, - { - "key": "issuer_state", - "value": "{{OFFER_ID}}", - "type": "text" - }, - { - "key": "authorization_details", - "value": "[{\"type\":\"openid_credential\",\"credential_configuration_id\":\"001\"}]", - "type": "text" - } - ] - }, - "url": { - "raw": "{{HOST}}/auth/par", - "host": [ - "{{HOST}}" - ], - "path": [ - "auth", - "par" - ] - } - }, - "response": [] - }, - { - "name": "authorize", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/auth/authorize?client_id=unime&request_uri={{REQUEST_URI}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "auth", - "authorize" - ], - "query": [ - { - "key": "client_id", - "value": "unime" - }, - { - "key": "request_uri", - "value": "{{REQUEST_URI}}" - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Verification", - "item": [ - { - "name": "siopv2_authorization_requests", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const location = pm.response.headers.get(\"LOCATION\");", - "", - "if(location){", - " pm.collectionVariables.set(\"AUTHORIZATION_REQUEST_LOCATION\",location)", - "}", - "", - "const authorization_request = responseBody;", - "", - "const decodedString = decodeURIComponent(authorization_request);", - "", - "// Regular expression to match the value of request_uri", - "const regex = /request_uri=([^&]+)/;", - "", - "// Executing the regular expression on the input string", - "const match = regex.exec(decodedString);", - "", - "// Extracting the value of request_uri", - "const requestUri = match ? decodeURIComponent(match[1]) : null;", - "", - "pm.collectionVariables.set(\"REQUEST_URI\",requestUri)", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"nonce\": \"this is a nonce\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/authorization_requests", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "authorization_requests" - ] - } - }, - "response": [] - }, - { - "name": "oid4vp_authorization_requests_with_dcql_query", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const location = pm.response.headers.get(\"LOCATION\");", - "", - "if(location){", - " pm.collectionVariables.set(\"AUTHORIZATION_REQUEST_LOCATION\",location)", - "}", - "", - "const authorization_request = responseBody;", - "", - "const decodedString = decodeURIComponent(authorization_request);", - "", - "// Regular expression to match the value of request_uri", - "const regex = /request_uri=([^&]+)/;", - "", - "// Executing the regular expression on the input string", - "const match = regex.exec(decodedString);", - "", - "// Extracting the value of request_uri", - "const requestUri = match ? decodeURIComponent(match[1]) : null;", - "", - "pm.collectionVariables.set(\"REQUEST_URI\",requestUri)", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"nonce\": \"this is a nonce\",\n \"dcql_query\": {\n \"credentials\": [\n {\n \"id\": \"CredentialQuery\",\n \"format\": \"jwt_vc_json\",\n \"meta\": {\n \"type_values\": [\n [\"VerifiableCredential\"],\n [\"PersonalInformation\"]\n ]\n },\n \"claims\": [\n {\"path\": [\"credentialSubject\", \"givenName\"]},\n {\"path\": [\"credentialSubject\", \"familyName\"]},\n {\"path\": [\"credentialSubject\", \"email\"]},\n {\"path\": [\"credentialSubject\", \"birthdate\"]}\n ]\n }\n ]\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/authorization_requests", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "authorization_requests" - ] - } - }, - "response": [] - }, - { - "name": "Authorization Request by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}{{AUTHORIZATION_REQUEST_LOCATION}}", - "host": [ - "{{HOST}}{{AUTHORIZATION_REQUEST_LOCATION}}" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "siopv2", - "item": [ - { - "name": "request", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{REQUEST_URI}}", - "host": [ - "{{REQUEST_URI}}" - ] - } - }, - "response": [] - } - ] - }, - { - "name": ".well-known", - "item": [ - { - "name": "did:web", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/.well-known/did.json", - "host": [ - "{{HOST}}" - ], - "path": [ - ".well-known", - "did.json" - ] - } - }, - "response": [] - }, - { - "name": "did-configuration", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/.well-known/did-configuration.json", - "host": [ - "{{HOST}}" - ], - "path": [ - ".well-known", - "did-configuration.json" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Holder", - "item": [ - { - "name": "All Received Offers", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const receivedOfferId = lastItem.id;", - "", - " if (receivedOfferId) {", - " pm.collectionVariables.set(\"RECEIVED_OFFER_ID\", receivedOfferId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/offers", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "offers" - ] - } - }, - "response": [] - }, - { - "name": "Received Offer by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "offers", - "{{RECEIVED_OFFER_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Accept Received Offer", - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}/accept", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "offers", - "{{RECEIVED_OFFER_ID}}", - "accept" - ] - } - }, - "response": [] - }, - { - "name": "Reject Received Offer", - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}/reject", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "offers", - "{{RECEIVED_OFFER_ID}}", - "reject" - ] - } - }, - "response": [] - }, - { - "name": "All Holder Credentials", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const holderCredentialId = lastItem.id;", - "", - " if (holderCredentialId) {", - " pm.collectionVariables.set(\"HOLDER_CREDENTIAL_ID\", holderCredentialId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "Add signed Holder Credential", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"credential\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsInN1YiI6ImRpZDprZXk6ejZNa2lpZXlvTE1TVnNKQVp2N0pqZTV3V1NrREV5bVVna3lGOGtiY3JqWnBYM3FkIiwiZXhwIjo5OTk5OTk5OTk5LCJpYXQiOjAsInZjIjp7IkBjb250ZXh0IjoiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvdjEiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIl0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmtleTp6Nk1raWlleW9MTVNWc0pBWnY3SmplNXdXU2tERXltVWdreUY4a2JjcmpacFgzcWQiLCJmaXJzdF9uYW1lIjoiRmVycmlzIiwibGFzdF9uYW1lIjoiUnVzdGFjZWFuIn0sImlzc3VlciI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwiaXNzdWFuY2VEYXRlIjoiMjAxMC0wMS0wMVQwMDowMDowMFoifX0.d4QN73vDtZu79RP6GldHObu6rGsjidkLYp0XMRQNbNPY75LJoSv2iXk2Rz5M-VMBZGSU3YPZHytlrKBjxr1IBQ\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/holder/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "Holder Credential by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/credentials/{{HOLDER_CREDENTIAL_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "credentials", - "{{HOLDER_CREDENTIAL_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "All Presentations", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const presentationId = lastItem.id;", - "", - " if (presentationId) {", - " pm.collectionVariables.set(\"PRESENTATION_ID\", presentationId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/presentations", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "presentations" - ] - } - }, - "response": [] - }, - { - "name": "Presentation by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/presentations/{{PRESENTATION_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "presentations", - "{{PRESENTATION_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Create new Presentation", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"credentialIds\": [\"{{HOLDER_CREDENTIAL_ID}}\"]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/holder/presentations", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "presentations" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Identity", - "item": [ - { - "name": "Connections", - "item": [ - { - "name": "Create a new Connection", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"alias\": \"My Connection\",\n \"domain\": \"http://example.org\",\n \"dids\": [\"did:example:123\"],\n \"credentialOfferEndpoint\": \"{{HOST}}/openid4vci/offers\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/connections", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "connections" - ] - } - }, - "response": [] - }, - { - "name": "List all Connections", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const connectionId = lastItem.id;", - "", - " if (connectionId) {", - " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/connections", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "connections" - ] - } - }, - "response": [] - }, - { - "name": "Query Connection by DID", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const connectionId = lastItem.id;", - "", - " if (connectionId) {", - " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/connections?did=did:example:123", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "connections" - ], - "query": [ - { - "key": "did", - "value": "did:example:123" - } - ] - } - }, - "response": [] - }, - { - "name": "Query Connection by Alias", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const connectionId = lastItem.id;", - "", - " if (connectionId) {", - " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/connections?alias=My+Connection", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "connections" - ], - "query": [ - { - "key": "alias", - "value": "My+Connection" - } - ] - } - }, - "response": [] - }, - { - "name": "Query Connection by Domain", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const connectionId = lastItem.id;", - "", - " if (connectionId) {", - " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/connections?domain=http://example.org", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "connections" - ], - "query": [ - { - "key": "domain", - "value": "http://example.org" - } - ] - } - }, - "response": [] - }, - { - "name": "Connection by ID", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "test", - "value": "test-value", - "type": "text" - } - ] - }, - "url": { - "raw": "{{HOST}}/v0/connections/{{CONNECTION_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "connections", - "{{CONNECTION_ID}}" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Services", - "item": [ - { - "name": "Create new Linked Verifiable Presentation Service", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"presentationIds\": [\"{{PRESENTATION_ID}}\"]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/services/linked-vp", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "services", - "linked-vp" - ] - } - }, - "response": [] - }, - { - "name": "All Services", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const serviceId = lastItem.id;", - "", - " if (serviceId) {", - " pm.collectionVariables.set(\"SERVICE_ID\", serviceId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/services", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "services" - ] - } - }, - "response": [] - }, - { - "name": "Service by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/services/{{SERVICE_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "services", - "{{SERVICE_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Linked Verifiable Presentation Service", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/services/linked-verifiable-presentation-service", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "services", - "linked-verifiable-presentation-service" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Documents", - "item": [ - { - "name": "List all Documents", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const documentId = lastItem.id;", - "", - " if (documentId) {", - " pm.collectionVariables.set(\"DOCUMENT_ID\", documentId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/documents", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "documents" - ] - } - }, - "response": [] - }, - { - "name": "Document by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/documents/{{DOCUMENT_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "documents", - "{{DOCUMENT_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Query Document by DID Method", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/documents?did_method=did:jwk", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "documents" - ], - "query": [ - { - "key": "did_method", - "value": "did:jwk" - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Profile", - "item": [ - { - "name": "Update Profile", - "request": { - "method": "PATCH", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"displayName\": \"My UniCore Instance\",\n \"logo\": {\n \"uri\": \"https://example.org\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/profile", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "profile" - ] - } - }, - "response": [] - }, - { - "name": "Get Profile", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/profile", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "profile" - ] - } - }, - "response": [] - } - ] - } - ] - }, - { - "name": "Library", - "item": [ - { - "name": "Template", - "item": [ - { - "name": "Create a new Template", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"title\": \"My Example Template\",\n \"credentialFormat\": \"w3c_vc_data_model_v1-1\",\n \"holderType\": \"organization\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/templates/create-template", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "templates", - "create-template" - ] - } - }, - "response": [] - }, - { - "name": "List all Templates", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const templateId = lastItem.id;", - "", - " if (templateId) {", - " pm.collectionVariables.set(\"TEMPLATE_ID\", templateId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {}, - "requests": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {}, - "requests": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/templates/get-all-templates", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "templates", - "get-all-templates" - ] - } - }, - "response": [] - }, - { - "name": "Template by ID", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [], - "body": { - "mode": "formdata", - "formdata": [] - }, - "url": { - "raw": "{{HOST}}/v0/templates/{{TEMPLATE_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "templates", - "{{TEMPLATE_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Update Template", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"id\": \"{{TEMPLATE_ID}}\",\n \"status\": \"published\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/templates/update-template", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "templates", - "update-template" - ] - } - }, - "response": [] - }, - { - "name": "Duplicate Template", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{ \n \"sourceTemplateId\": \"{{TEMPLATE_ID}}\"\n} ", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/templates/duplicate-template", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "templates", - "duplicate-template" - ] - } - }, - "response": [] - }, - { - "name": "Delete Template", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"id\": \"{{TEMPLATE_ID}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/templates/delete-template", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "templates", - "delete-template" - ] - } - }, - "response": [] - } - ] - } - ] - }, - { - "name": "_monitoring", - "item": [ - { - "name": "Liveness probe", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/healthz", - "host": [ - "{{HOST}}" - ], - "path": [ - "healthz" - ] - } - }, - "response": [] - }, - { - "name": "Show version", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/version", - "host": [ - "{{HOST}}" - ], - "path": [ - "version" - ] - } - }, - "response": [] - }, - { - "name": "Show info", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/info", - "host": [ - "{{HOST}}" - ], - "path": [ - "info" - ] - } - }, - "response": [] - }, - { - "name": "Show full configuration", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/configuration", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "configuration" - ] - } - }, - "response": [] - }, - { - "name": "Show provisioned configuration", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/configuration?provisioned=true", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "configuration" - ], - "query": [ - { - "key": "provisioned", - "value": "true" - } - ] - } - }, - "response": [] - }, - { - "name": "Metrics", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST_METRICS}}/metrics", - "host": [ - "{{HOST_METRICS}}" - ], - "path": [ - "metrics" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "v1", - "item": [ - { - "name": "Identity", - "item": [ - { - "name": "Keys", - "item": [ - { - "name": "Generate Key", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"alias\": \"An Example Alias\",\n \"signingAlgorithm\": \"ES256\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/keys/generate-new-key", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "keys", - "generate-new-key" - ] - } - }, - "response": [] - }, - { - "name": "Remove Key", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"keyId\": \"zHpgKk3yHlxBomi96kvSoQEHslRzcufx\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/keys/remove-key", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "keys", - "remove-key" - ] - } - }, - "response": [] - }, - { - "name": "Rename Key Alias", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"keyId\": \"your-managed-key-id\",\n \"newAlias\": \"new-key-alias\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/keys/rename-key-alias", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "keys", - "rename-key-alias" - ] - } - }, - "response": [] - }, - { - "name": "Set Signing Key", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"keyId\": \"your-managed-key-id\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/keys/set-signing-key", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "keys", - "set-signing-key" - ] - } - }, - "response": [] - }, - { - "name": "List all Keys", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/keys/list-all", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "keys", - "list-all" - ] - } - }, - "response": [] - } - ] - } - ] - } - ] - } - ], - "auth": { - "type": "apikey", - "apikey": [ - { - "key": "value", - "value": "{{API_KEY}}", - "type": "string" - }, - { - "key": "key", - "value": "X-API-KEY", - "type": "string" - } - ] - }, - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "variable": [ - { - "key": "PRE_AUTHORIZED_CODE", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "OFFER_ID", - "value": "001", - "type": "string" - }, - { - "key": "ISSUER", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "TOKEN_ENDPOINT", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "ACCESS_TOKEN", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "CREDENTIAL_LOCATION", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "AUTHORIZATION_REQUEST_LOCATION", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "REQUEST_URI", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "RECEIVED_OFFER_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "HOLDER_CREDENTIAL_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "PRESENTATION_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "CONNECTION_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "CREDENTIAL_OFFER_URI", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "DOCUMENT_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "NOTIFICATION_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "SERVICE_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "TEMPLATE_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "REQUEST_URI", - "value": "INITIAL_VALUE", - "type": "string" - } - ] + "info": { + "_postman_id": "d83ef4f5-b1c2-47b0-8bd8-765a5aaf29e2", + "name": "ssi-agent", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "38461474" + }, + "item": [ + { + "name": "Issuance", + "item": [ + { + "name": "openbadgesv3_credentials", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"openbadge_credential\",\n \"credential\": {\n \"credentialSubject\": {\n \"type\": [ \"AchievementSubject\" ],\n \"achievement\": {\n \"id\": \"https://example.com/achievements/21st-century-skills/teamwork\",\n \"type\": \"Achievement\",\n \"criteria\": {\n \"narrative\": \"Team members are nominated for this badge by their peers and recognized upon review by Example Corp management.\"\n },\n \"description\": \"This badge recognizes the development of the capacity to collaborate within a group environment.\",\n \"name\": \"Teamwork\"\n }\n }\n },\n \"expiresAt\": \"2028-04-12T09:15:23Z\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "w3c_vc_credentials", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"001\",\n \"credential\": {\n \"credentialSubject\": {\n \"first_name\": \"Ferris\",\n \"last_name\": \"Crabman\",\n \"dob\": \"1982-01-01\"\n }\n },\n \"expiresAt\": \"never\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "Create an SD-JWT VC Credential", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"SD-JWT\",\n \"credential\": {\n \"first_name\": \"Ferris\",\n \"last_name\": \"Crabman\",\n \"dob\": \"1982-01-01\"\n },\n \"expiresAt\": \"never\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "ACME Corp Credential", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"001\",\n \"credential\": {\n \"id\": \"https://acme.example.org/1a2b3c4d5e6f\",\n \"credentialSubject\": {\n \"id\": \"https://ecommerce.impierce.com/\",\n \"image\": \"https://static.wikia.nocookie.net/fictionalcompanies/images/c/c2/ACME_Corporation.png\",\n \"name\": \"VirtualVendors\",\n \"certificaat\": {\n \"type\": \"ACMECorpCredential\",\n \"certificeringsDatum\": \"2024-06-26\",\n \"geldigheidsPeriode\": \"1 jaar\",\n \"garanties\": [\n \"Het bedrijf is echt en bereikbaar.\",\n \"Voldoet aan de Thuiswinkel Algemene Voorwaarden.\",\n \"14 dagen bedenktijd.\",\n \"Veilige betaalmethoden.\",\n \"Duidelijke product/servicebeschrijvingen.\",\n \"Transparant bestelproces.\",\n \"Duidelijke prijzen.\",\n \"Veilige betaalomgeving.\",\n \"Veilige omgang met persoonlijke gegevens.\",\n \"Effectieve klachtenafhandeling en onafhankelijke geschillenbemiddeling.\"\n ]\n }\n }\n },\n \"expiresAt\": \"2035-12-31T23:59:59Z\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "All Credentials", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "Credential by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}{{CREDENTIAL_LOCATION}}", + "host": [ + "{{HOST}}{{CREDENTIAL_LOCATION}}" + ] + } + }, + "response": [] + }, + { + "name": "Credential by ID (credentialStatus)", + "request": { + "method": "PATCH", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"credentialStatus\": \"INVALID\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}{{CREDENTIAL_LOCATION}}", + "host": [ + "{{HOST}}{{CREDENTIAL_LOCATION}}" + ] + } + }, + "response": [] + }, + { + "name": "Status List Token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/ietf-oauth-token-status-list/0", + "host": [ + "{{HOST}}" + ], + "path": [ + "ietf-oauth-token-status-list", + "0" + ] + } + }, + "response": [] + }, + { + "name": "offers", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const credential_offer = responseBody;", + "const decodedString = decodeURIComponent(credential_offer);", + "const [, secondItem] = decodedString.split('=', 2);", + "var credential_offer_uri = secondItem;", + "", + "if(credential_offer_uri){", + " pm.collectionVariables.set(\"CREDENTIAL_OFFER_URI\", credential_offer_uri)", + "}" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\": \"{{OFFER_ID}}\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/offers", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers" + ] + } + }, + "response": [] + }, + { + "name": "All Offers", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/offers", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers" + ] + } + }, + "response": [] + }, + { + "name": "Offer by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/offers/{{OFFER_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers", + "{{OFFER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Send Offer to Organization", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\": \"{{OFFER_ID}}\",\n \"targetUrl\": \"{{HOST}}\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/offers/send-offer-to-organization", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers", + "send-offer-to-organization" + ] + } + }, + "response": [] + }, + { + "name": "Send Offer to Individual", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\": \"{{OFFER_ID}}\",\n \"recipientEmail\": \"email@example.test\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/offers/send-offer-to-individual", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers", + "send-offer-to-individual" + ] + } + }, + "response": [] + }, + { + "name": "Create a new Credential Configuration", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"credential_configuration_id\": \"002\",\n \"format\": \"jwt_vc_json\",\n \"credential_definition\": {\n \"type\": [\"VerifiableCredential\"]\n },\n \"display\": [\n {\n \"name\": \"Verifiable Credential\",\n \"locale\": \"en\",\n \"logo\": {\n \"uri\": \"https://www.impierce.com/external/impierce-logo.png\",\n \"alt_text\": \"Impierce Logo\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credential-configurations", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credential-configurations" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "oid4vci", + "item": [ + { + "name": "Get Credential Offer", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "const pre_authorized_code = jsonData.grants['urn:ietf:params:oauth:grant-type:pre-authorized_code']['pre-authorized_code'];", + "if(pre_authorized_code){", + " pm.collectionVariables.set(\"PRE_AUTHORIZED_CODE\", pre_authorized_code)", + "}" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{CREDENTIAL_OFFER_URI}}", + "host": [ + "{{CREDENTIAL_OFFER_URI}}" + ] + } + }, + "response": [] + }, + { + "name": "oauth-authorization-server", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "const issuer = jsonData?.issuer;", + "const tokenEndpoint = jsonData?.token_endpoint;", + "", + "if(issuer){", + " pm.collectionVariables.set(\"ISSUER\",issuer)", + "}", + "", + "if(tokenEndpoint){", + " pm.collectionVariables.set(\"TOKEN_ENDPOINT\",tokenEndpoint)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/.well-known/oauth-authorization-server", + "host": [ + "{{HOST}}" + ], + "path": [ + ".well-known", + "oauth-authorization-server" + ] + } + }, + "response": [] + }, + { + "name": "openid-credential-issuer", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/.well-known/openid-credential-issuer", + "host": [ + "{{HOST}}" + ], + "path": [ + ".well-known", + "openid-credential-issuer" + ] + } + }, + "response": [] + }, + { + "name": "token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "const accessToken = jsonData?.access_token;", + "", + "if(accessToken){", + " pm.collectionVariables.set(\"ACCESS_TOKEN\",accessToken)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "grant_type", + "value": "urn:ietf:params:oauth:grant-type:pre-authorized_code", + "type": "text" + }, + { + "key": "pre-authorized_code", + "value": "{{PRE_AUTHORIZED_CODE}}", + "type": "text" + } + ] + }, + "url": { + "raw": "{{HOST}}/auth/token", + "host": [ + "{{HOST}}" + ], + "path": [ + "auth", + "token" + ] + } + }, + "response": [] + }, + { + "name": "nonce", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{HOST}}/openid4vci/nonce", + "host": [ + "{{HOST}}" + ], + "path": [ + "openid4vci", + "nonce" + ] + } + }, + "response": [] + }, + { + "name": "credential", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (jsonData.notification_id) {", + " pm.collectionVariables.set(\"NOTIFICATION_ID\", jsonData.notification_id);", + " console.log(\"Notification ID saved: \" + jsonData.notification_id);", + "}" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{ACCESS_TOKEN}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"credential_configuration_id\": \"001\",\n \"proof\": {\n \"proof_type\": \"jwt\",\n \"jwt\": \"eyJ0eXAiOiJvcGVuaWQ0dmNpLXByb29mK2p3dCIsImFsZyI6IkVkRFNBIiwia2lkIjoiZGlkOmtleTp6Nk1rdWlSS3ExZktyekFYZVNOaUd3cnBKUFB1Z1k4QXhKWUE1Y3BDdlpDWUJEN0IjejZNa3VpUktxMWZLcnpBWGVTTmlHd3JwSlBQdWdZOEF4SllBNWNwQ3ZaQ1lCRDdCIn0.eyJpc3MiOiJkaWQ6a2V5Ono2TWt1aVJLcTFmS3J6QVhlU05pR3dycEpQUHVnWThBeEpZQTVjcEN2WkNZQkQ3QiIsImF1ZCI6Imh0dHA6Ly8xOTIuMTY4LjEuMTI3OjMwMzMvIiwiZXhwIjo5OTk5OTk5OTk5LCJpYXQiOjE1NzEzMjQ4MDAsIm5vbmNlIjoidW5zYWZlX2Nfbm9uY2UifQ.wR2e4VUnVjG6IK9cntcqvc_8KEJQUd3SEjsPZwDYDlYqijZ4ZaQLxyHtzNmLkIS3FpChLrZrcvIUJrZxrWcKAg\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/openid4vci/credential", + "host": [ + "{{HOST}}" + ], + "path": [ + "openid4vci", + "credential" + ] + } + }, + "response": [] + }, + { + "name": "notification", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 204 No Content\", function () {", + " pm.response.to.have.status(204);", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{ACCESS_TOKEN}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"notification_id\": \"{{NOTIFICATION_ID}}\",\n \"event\": \"credential_accepted\",\n \"event_description\": \"User accepted the credential in wallet\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/openid4vci/notification", + "host": [ + "{{HOST}}" + ], + "path": [ + "openid4vci", + "notification" + ] + } + }, + "response": [] + }, + { + "name": "par", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "const requestUri = jsonData?.request_uri;", + "", + "if(requestUri){", + " pm.collectionVariables.set(\"REQUEST_URI\",requestUri)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "response_type", + "value": "code", + "type": "text" + }, + { + "key": "client_id", + "value": "unime", + "type": "text" + }, + { + "key": "state", + "value": "test_state", + "type": "text" + }, + { + "key": "redirect_uri", + "value": "unime://callback", + "type": "text" + }, + { + "key": "code_challenge", + "value": "HlFaQkK4ul1jGkl6QRsxKGRVeRpaBY8hDja4WwPWTtw", + "type": "text" + }, + { + "key": "code_challenge_method", + "value": "S256", + "type": "text" + }, + { + "key": "scope", + "value": "openid profile", + "type": "text" + }, + { + "key": "issuer_state", + "value": "{{OFFER_ID}}", + "type": "text" + }, + { + "key": "authorization_details", + "value": "[{\"type\":\"openid_credential\",\"credential_configuration_id\":\"001\"}]", + "type": "text" + } + ] + }, + "url": { + "raw": "{{HOST}}/auth/par", + "host": [ + "{{HOST}}" + ], + "path": [ + "auth", + "par" + ] + } + }, + "response": [] + }, + { + "name": "authorize", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/auth/authorize?client_id=unime&request_uri={{REQUEST_URI}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "auth", + "authorize" + ], + "query": [ + { + "key": "client_id", + "value": "unime" + }, + { + "key": "request_uri", + "value": "{{REQUEST_URI}}" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "ietf oauth sd-jwt vc", + "item": [ + { + "name": "SD-JWT VC Type Metadata", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/vct/U0QtSldU/0", + "host": [ + "{{HOST}}" + ], + "path": [ + "vct", + "U0QtSldU", + "0" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Verification", + "item": [ + { + "name": "siopv2_authorization_requests", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"AUTHORIZATION_REQUEST_LOCATION\",location)", + "}", + "", + "const authorization_request = responseBody;", + "", + "const decodedString = decodeURIComponent(authorization_request);", + "", + "// Regular expression to match the value of request_uri", + "const regex = /request_uri=([^&]+)/;", + "", + "// Executing the regular expression on the input string", + "const match = regex.exec(decodedString);", + "", + "// Extracting the value of request_uri", + "const requestUri = match ? decodeURIComponent(match[1]) : null;", + "", + "pm.collectionVariables.set(\"REQUEST_URI\",requestUri)", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"nonce\": \"this is a nonce\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/authorization_requests", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "authorization_requests" + ] + } + }, + "response": [] + }, + { + "name": "oid4vp_authorization_requests_with_dcql_query", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"AUTHORIZATION_REQUEST_LOCATION\",location)", + "}", + "", + "const authorization_request = responseBody;", + "", + "const decodedString = decodeURIComponent(authorization_request);", + "", + "// Regular expression to match the value of request_uri", + "const regex = /request_uri=([^&]+)/;", + "", + "// Executing the regular expression on the input string", + "const match = regex.exec(decodedString);", + "", + "// Extracting the value of request_uri", + "const requestUri = match ? decodeURIComponent(match[1]) : null;", + "", + "pm.collectionVariables.set(\"REQUEST_URI\",requestUri)", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"nonce\": \"this is a nonce\",\n \"dcql_query\": {\n \"credentials\": [\n {\n \"id\": \"CredentialQuery\",\n \"format\": \"jwt_vc_json\",\n \"meta\": {\n \"type_values\": [\n [\"VerifiableCredential\"],\n [\"PersonalInformation\"]\n ]\n },\n \"claims\": [\n {\"path\": [\"credentialSubject\", \"givenName\"]},\n {\"path\": [\"credentialSubject\", \"familyName\"]},\n {\"path\": [\"credentialSubject\", \"email\"]},\n {\"path\": [\"credentialSubject\", \"birthdate\"]}\n ]\n }\n ]\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/authorization_requests", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "authorization_requests" + ] + } + }, + "response": [] + }, + { + "name": "Authorization Request by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}{{AUTHORIZATION_REQUEST_LOCATION}}", + "host": [ + "{{HOST}}{{AUTHORIZATION_REQUEST_LOCATION}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "siopv2", + "item": [ + { + "name": "request", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{REQUEST_URI}}", + "host": [ + "{{REQUEST_URI}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": ".well-known", + "item": [ + { + "name": "did:web", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/.well-known/did.json", + "host": [ + "{{HOST}}" + ], + "path": [ + ".well-known", + "did.json" + ] + } + }, + "response": [] + }, + { + "name": "did-configuration", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/.well-known/did-configuration.json", + "host": [ + "{{HOST}}" + ], + "path": [ + ".well-known", + "did-configuration.json" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Holder", + "item": [ + { + "name": "All Received Offers", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const receivedOfferId = lastItem.id;", + "", + " if (receivedOfferId) {", + " pm.collectionVariables.set(\"RECEIVED_OFFER_ID\", receivedOfferId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/offers", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "offers" + ] + } + }, + "response": [] + }, + { + "name": "Received Offer by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "offers", + "{{RECEIVED_OFFER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Accept Received Offer", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}/accept", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "offers", + "{{RECEIVED_OFFER_ID}}", + "accept" + ] + } + }, + "response": [] + }, + { + "name": "Reject Received Offer", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}/reject", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "offers", + "{{RECEIVED_OFFER_ID}}", + "reject" + ] + } + }, + "response": [] + }, + { + "name": "All Holder Credentials", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const holderCredentialId = lastItem.id;", + "", + " if (holderCredentialId) {", + " pm.collectionVariables.set(\"HOLDER_CREDENTIAL_ID\", holderCredentialId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "Add signed Holder Credential", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"credential\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsInN1YiI6ImRpZDprZXk6ejZNa2lpZXlvTE1TVnNKQVp2N0pqZTV3V1NrREV5bVVna3lGOGtiY3JqWnBYM3FkIiwiZXhwIjo5OTk5OTk5OTk5LCJpYXQiOjAsInZjIjp7IkBjb250ZXh0IjoiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvdjEiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIl0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmtleTp6Nk1raWlleW9MTVNWc0pBWnY3SmplNXdXU2tERXltVWdreUY4a2JjcmpacFgzcWQiLCJmaXJzdF9uYW1lIjoiRmVycmlzIiwibGFzdF9uYW1lIjoiUnVzdGFjZWFuIn0sImlzc3VlciI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwiaXNzdWFuY2VEYXRlIjoiMjAxMC0wMS0wMVQwMDowMDowMFoifX0.d4QN73vDtZu79RP6GldHObu6rGsjidkLYp0XMRQNbNPY75LJoSv2iXk2Rz5M-VMBZGSU3YPZHytlrKBjxr1IBQ\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/holder/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "Holder Credential by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/credentials/{{HOLDER_CREDENTIAL_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "credentials", + "{{HOLDER_CREDENTIAL_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "All Presentations", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const presentationId = lastItem.id;", + "", + " if (presentationId) {", + " pm.collectionVariables.set(\"PRESENTATION_ID\", presentationId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/presentations", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "presentations" + ] + } + }, + "response": [] + }, + { + "name": "Presentation by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/presentations/{{PRESENTATION_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "presentations", + "{{PRESENTATION_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Create new Presentation", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"credentialIds\": [\"{{HOLDER_CREDENTIAL_ID}}\"]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/holder/presentations", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "presentations" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Identity", + "item": [ + { + "name": "Connections", + "item": [ + { + "name": "Create a new Connection", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"alias\": \"My Connection\",\n \"domain\": \"http://example.org\",\n \"dids\": [\"did:example:123\"],\n \"credentialOfferEndpoint\": \"{{HOST}}/openid4vci/offers\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/connections", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ] + } + }, + "response": [] + }, + { + "name": "List all Connections", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const connectionId = lastItem.id;", + "", + " if (connectionId) {", + " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/connections", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ] + } + }, + "response": [] + }, + { + "name": "Query Connection by DID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const connectionId = lastItem.id;", + "", + " if (connectionId) {", + " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/connections?did=did:example:123", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ], + "query": [ + { + "key": "did", + "value": "did:example:123" + } + ] + } + }, + "response": [] + }, + { + "name": "Query Connection by Alias", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const connectionId = lastItem.id;", + "", + " if (connectionId) {", + " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/connections?alias=My+Connection", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ], + "query": [ + { + "key": "alias", + "value": "My+Connection" + } + ] + } + }, + "response": [] + }, + { + "name": "Query Connection by Domain", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const connectionId = lastItem.id;", + "", + " if (connectionId) {", + " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/connections?domain=http://example.org", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ], + "query": [ + { + "key": "domain", + "value": "http://example.org" + } + ] + } + }, + "response": [] + }, + { + "name": "Connection by ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "test", + "value": "test-value", + "type": "text" + } + ] + }, + "url": { + "raw": "{{HOST}}/v0/connections/{{CONNECTION_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections", + "{{CONNECTION_ID}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Services", + "item": [ + { + "name": "Create new Linked Verifiable Presentation Service", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"presentationIds\": [\"{{PRESENTATION_ID}}\"]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/services/linked-vp", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "services", + "linked-vp" + ] + } + }, + "response": [] + }, + { + "name": "All Services", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const serviceId = lastItem.id;", + "", + " if (serviceId) {", + " pm.collectionVariables.set(\"SERVICE_ID\", serviceId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/services", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "services" + ] + } + }, + "response": [] + }, + { + "name": "Service by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/services/{{SERVICE_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "services", + "{{SERVICE_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Linked Verifiable Presentation Service", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/services/linked-verifiable-presentation-service", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "services", + "linked-verifiable-presentation-service" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Documents", + "item": [ + { + "name": "List all Documents", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const documentId = lastItem.id;", + "", + " if (documentId) {", + " pm.collectionVariables.set(\"DOCUMENT_ID\", documentId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/documents", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "documents" + ] + } + }, + "response": [] + }, + { + "name": "Document by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/documents/{{DOCUMENT_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "documents", + "{{DOCUMENT_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Query Document by DID Method", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/documents?did_method=did:jwk", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "documents" + ], + "query": [ + { + "key": "did_method", + "value": "did:jwk" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Profile", + "item": [ + { + "name": "Update Profile", + "request": { + "method": "PATCH", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"displayName\": \"My UniCore Instance\",\n \"logo\": {\n \"uri\": \"https://example.org\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/profile", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "profile" + ] + } + }, + "response": [] + }, + { + "name": "Get Profile", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/profile", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "profile" + ] + } + }, + "response": [] + } + ] + } + ] + }, + { + "name": "Library", + "item": [ + { + "name": "Template", + "item": [ + { + "name": "Create a new Template", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"title\": \"My Example Template\",\n \"credentialFormat\": \"w3c_vc_data_model_v1-1\",\n \"holderType\": \"organization\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/templates/create-template", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "create-template" + ] + } + }, + "response": [] + }, + { + "name": "List all Templates", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const templateId = lastItem.id;", + "", + " if (templateId) {", + " pm.collectionVariables.set(\"TEMPLATE_ID\", templateId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {}, + "requests": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {}, + "requests": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/templates/get-all-templates", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "get-all-templates" + ] + } + }, + "response": [] + }, + { + "name": "Template by ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "{{HOST}}/v0/templates/{{TEMPLATE_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "{{TEMPLATE_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Update Template", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"id\": \"{{TEMPLATE_ID}}\",\n \"status\": \"published\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/templates/update-template", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "update-template" + ] + } + }, + "response": [] + }, + { + "name": "Duplicate Template", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{ \n \"sourceTemplateId\": \"{{TEMPLATE_ID}}\"\n} ", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/templates/duplicate-template", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "duplicate-template" + ] + } + }, + "response": [] + }, + { + "name": "Delete Template", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"id\": \"{{TEMPLATE_ID}}\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/templates/delete-template", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "delete-template" + ] + } + }, + "response": [] + } + ] + } + ] + }, + { + "name": "_monitoring", + "item": [ + { + "name": "Liveness probe", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/healthz", + "host": [ + "{{HOST}}" + ], + "path": [ + "healthz" + ] + } + }, + "response": [] + }, + { + "name": "Show version", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/version", + "host": [ + "{{HOST}}" + ], + "path": [ + "version" + ] + } + }, + "response": [] + }, + { + "name": "Show info", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/info", + "host": [ + "{{HOST}}" + ], + "path": [ + "info" + ] + } + }, + "response": [] + }, + { + "name": "Show full configuration", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/configuration", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "configuration" + ] + } + }, + "response": [] + }, + { + "name": "Show provisioned configuration", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/configuration?provisioned=true", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "configuration" + ], + "query": [ + { + "key": "provisioned", + "value": "true" + } + ] + } + }, + "response": [] + }, + { + "name": "Metrics", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST_METRICS}}/metrics", + "host": [ + "{{HOST_METRICS}}" + ], + "path": [ + "metrics" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "v1", + "item": [ + { + "name": "Identity", + "item": [ + { + "name": "Keys", + "item": [ + { + "name": "Generate Key", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"alias\": \"An Example Alias\",\n \"signingAlgorithm\": \"ES256\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/keys/generate-new-key", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "generate-new-key" + ] + } + }, + "response": [] + }, + { + "name": "Remove Key", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"keyId\": \"zHpgKk3yHlxBomi96kvSoQEHslRzcufx\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/keys/remove-key", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "remove-key" + ] + } + }, + "response": [] + }, + { + "name": "Rename Key Alias", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"keyId\": \"your-managed-key-id\",\n \"newAlias\": \"new-key-alias\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/keys/rename-key-alias", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "rename-key-alias" + ] + } + }, + "response": [] + }, + { + "name": "Set Signing Key", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"keyId\": \"your-managed-key-id\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/keys/set-signing-key", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "set-signing-key" + ] + } + }, + "response": [] + }, + { + "name": "List all Keys", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/keys/list-all", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "list-all" + ] + } + }, + "response": [] + } + ] + } + ] + } + ] + } + ], + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "value", + "value": "{{API_KEY}}", + "type": "string" + }, + { + "key": "key", + "value": "X-API-KEY", + "type": "string" + } + ] + }, + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "PRE_AUTHORIZED_CODE", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "OFFER_ID", + "value": "001", + "type": "string" + }, + { + "key": "ISSUER", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "TOKEN_ENDPOINT", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "ACCESS_TOKEN", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "CREDENTIAL_LOCATION", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "AUTHORIZATION_REQUEST_LOCATION", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "REQUEST_URI", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "RECEIVED_OFFER_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "HOLDER_CREDENTIAL_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "PRESENTATION_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "CONNECTION_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "CREDENTIAL_OFFER_URI", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "DOCUMENT_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "NOTIFICATION_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "SERVICE_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "TEMPLATE_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "REQUEST_URI", + "value": "INITIAL_VALUE", + "type": "string" + } + ] } \ No newline at end of file From 895ffeef0c9bc1b00acbfcd49e4b7862f9c8a488 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 24 Feb 2026 11:22:11 +0100 Subject: [PATCH 32/35] build: update did-manager and openid4vc dependencies to latest revision --- Cargo.lock | 24 ++++++++++++------------ Cargo.toml | 11 +++++------ agent_secret_manager/Cargo.toml | 7 +++---- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index efd1c2ccf..e6efaacaf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2323,7 +2323,7 @@ checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "consumer" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" +source = "git+https://github.com/impierce/did-manager?rev=a2863a3#a2863a328ece653d9a8f61528bb1cbf96d263858" dependencies = [ "did_iota", "did_jwk", @@ -3082,7 +3082,7 @@ dependencies = [ [[package]] name = "did_iota" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" +source = "git+https://github.com/impierce/did-manager?rev=a2863a3#a2863a328ece653d9a8f61528bb1cbf96d263858" dependencies = [ "anyhow", "identity_iota", @@ -3097,7 +3097,7 @@ dependencies = [ [[package]] name = "did_jwk" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" +source = "git+https://github.com/impierce/did-manager?rev=a2863a3#a2863a328ece653d9a8f61528bb1cbf96d263858" dependencies = [ "did-jwk", "identity_iota", @@ -3114,7 +3114,7 @@ dependencies = [ [[package]] name = "did_key" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" +source = "git+https://github.com/impierce/did-manager?rev=a2863a3#a2863a328ece653d9a8f61528bb1cbf96d263858" dependencies = [ "did-method-key", "identity_iota", @@ -3161,7 +3161,7 @@ dependencies = [ [[package]] name = "did_web" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" +source = "git+https://github.com/impierce/did-manager?rev=a2863a3#a2863a328ece653d9a8f61528bb1cbf96d263858" dependencies = [ "did-web", "identity_iota", @@ -5120,7 +5120,7 @@ dependencies = [ [[package]] name = "identity_stronghold_ext" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" +source = "git+https://github.com/impierce/did-manager?rev=a2863a3#a2863a328ece653d9a8f61528bb1cbf96d263858" dependencies = [ "async-trait", "elliptic-curve 0.13.8", @@ -8281,7 +8281,7 @@ dependencies = [ [[package]] name = "oid4vc-core" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=0dc679a#0dc679a0c1722fbc2fc0192f78e9b67c8a7d27c1" +source = "git+https://github.com/impierce/openid4vc?rev=dc2c388#dc2c38846dcee5da35ef8592f647179de12a8e56" dependencies = [ "anyhow", "async-trait", @@ -8306,7 +8306,7 @@ dependencies = [ [[package]] name = "oid4vc-manager" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=0dc679a#0dc679a0c1722fbc2fc0192f78e9b67c8a7d27c1" +source = "git+https://github.com/impierce/openid4vc?rev=dc2c388#dc2c38846dcee5da35ef8592f647179de12a8e56" dependencies = [ "anyhow", "async-trait", @@ -8339,7 +8339,7 @@ dependencies = [ [[package]] name = "oid4vci" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=0dc679a#0dc679a0c1722fbc2fc0192f78e9b67c8a7d27c1" +source = "git+https://github.com/impierce/openid4vc?rev=dc2c388#dc2c38846dcee5da35ef8592f647179de12a8e56" dependencies = [ "anyhow", "chrono", @@ -8367,7 +8367,7 @@ dependencies = [ [[package]] name = "oid4vp" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=0dc679a#0dc679a0c1722fbc2fc0192f78e9b67c8a7d27c1" +source = "git+https://github.com/impierce/openid4vc?rev=dc2c388#dc2c38846dcee5da35ef8592f647179de12a8e56" dependencies = [ "anyhow", "chrono", @@ -11077,7 +11077,7 @@ dependencies = [ [[package]] name = "shared" version = "0.1.0" -source = "git+https://github.com/impierce/did-manager?rev=049fa77#049fa77c7e1e17aebfd424af1523110e37c8200a" +source = "git+https://github.com/impierce/did-manager?rev=a2863a3#a2863a328ece653d9a8f61528bb1cbf96d263858" dependencies = [ "identity_iota", "identity_storage", @@ -11183,7 +11183,7 @@ dependencies = [ [[package]] name = "siopv2" version = "0.1.0" -source = "git+https://github.com/impierce/openid4vc?rev=0dc679a#0dc679a0c1722fbc2fc0192f78e9b67c8a7d27c1" +source = "git+https://github.com/impierce/openid4vc?rev=dc2c388#dc2c38846dcee5da35ef8592f647179de12a8e56" dependencies = [ "anyhow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index ca1b67c1a..27e7049a1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,12 +23,11 @@ edition = "2021" rust-version = "1.76.0" [workspace.dependencies] -# TODO: For all `openid4vc` dependencies, switch to latest `dev` revision once https://github.com/impierce/openid4vc/pull/118 is merged. -siopv2 = { git = "https://github.com/impierce/openid4vc", rev = "0dc679a" } -oid4vci = { git = "https://github.com/impierce/openid4vc", rev = "0dc679a" } -oid4vc-core = { git = "https://github.com/impierce/openid4vc", rev = "0dc679a" } -oid4vc-manager = { git = "https://github.com/impierce/openid4vc", rev = "0dc679a" } -oid4vp = { git = "https://github.com/impierce/openid4vc", rev = "0dc679a" } +siopv2 = { git = "https://github.com/impierce/openid4vc", rev = "dc2c388" } +oid4vci = { git = "https://github.com/impierce/openid4vc", rev = "dc2c388" } +oid4vc-core = { git = "https://github.com/impierce/openid4vc", rev = "dc2c388" } +oid4vc-manager = { git = "https://github.com/impierce/openid4vc", rev = "dc2c388" } +oid4vp = { git = "https://github.com/impierce/openid4vc", rev = "dc2c388" } anyhow = "1.0" async-std = { version = "1.5", features = ["attributes", "tokio1"] } diff --git a/agent_secret_manager/Cargo.toml b/agent_secret_manager/Cargo.toml index 162227f7f..4f7fabbee 100644 --- a/agent_secret_manager/Cargo.toml +++ b/agent_secret_manager/Cargo.toml @@ -8,15 +8,14 @@ rust-version.workspace = true agent_shared = { path = "../agent_shared" } # TODO: Fully remove `did_manager`. -# TODO: Use latest `beta` branch once https://github.com/impierce/did-manager/pull/43 is merged. # - The `producer` module has already been eliminated. # - In the `consumer` module, only the `Resolver` struct is still in use. # - All components of the `identity_stronghold_ext` module are still active. # # Future work: Migrate the remaining functionality into UniCore. -did_manager_consumer = { git = "https://github.com/impierce/did-manager", rev = "049fa77", package = "consumer" } -did_manager_identity_stronghold_ext = { git = "https://github.com/impierce/did-manager", rev = "049fa77", package = "identity_stronghold_ext" } -did_manager_iota = { git = "https://github.com/impierce/did-manager", rev = "049fa77", package = "did_iota" } +did_manager_consumer = { git = "https://github.com/impierce/did-manager", rev = "a2863a3", package = "consumer" } +did_manager_identity_stronghold_ext = { git = "https://github.com/impierce/did-manager", rev = "a2863a3", package = "identity_stronghold_ext" } +did_manager_iota = { git = "https://github.com/impierce/did-manager", rev = "a2863a3", package = "did_iota" } anyhow.workspace = true async-trait.workspace = true From e67f36054c7dc0fcb2de995c6fe1ee918a60ea27 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 24 Feb 2026 12:09:59 +0100 Subject: [PATCH 33/35] fix: change indentation --- .../postman/ssi-agent.postman_collection.json | 5471 +++++++++-------- 1 file changed, 2736 insertions(+), 2735 deletions(-) diff --git a/agent_api_http/postman/ssi-agent.postman_collection.json b/agent_api_http/postman/ssi-agent.postman_collection.json index 8581de525..301db6829 100644 --- a/agent_api_http/postman/ssi-agent.postman_collection.json +++ b/agent_api_http/postman/ssi-agent.postman_collection.json @@ -1,2737 +1,2738 @@ { - "info": { - "_postman_id": "d83ef4f5-b1c2-47b0-8bd8-765a5aaf29e2", - "name": "ssi-agent", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", - "_exporter_id": "38461474" - }, - "item": [ - { - "name": "Issuance", - "item": [ - { - "name": "openbadgesv3_credentials", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const location = pm.response.headers.get(\"LOCATION\");", - "", - "if(location){", - " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"openbadge_credential\",\n \"credential\": {\n \"credentialSubject\": {\n \"type\": [ \"AchievementSubject\" ],\n \"achievement\": {\n \"id\": \"https://example.com/achievements/21st-century-skills/teamwork\",\n \"type\": \"Achievement\",\n \"criteria\": {\n \"narrative\": \"Team members are nominated for this badge by their peers and recognized upon review by Example Corp management.\"\n },\n \"description\": \"This badge recognizes the development of the capacity to collaborate within a group environment.\",\n \"name\": \"Teamwork\"\n }\n }\n },\n \"expiresAt\": \"2028-04-12T09:15:23Z\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "w3c_vc_credentials", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const location = pm.response.headers.get(\"LOCATION\");", - "", - "if(location){", - " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"001\",\n \"credential\": {\n \"credentialSubject\": {\n \"first_name\": \"Ferris\",\n \"last_name\": \"Crabman\",\n \"dob\": \"1982-01-01\"\n }\n },\n \"expiresAt\": \"never\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "Create an SD-JWT VC Credential", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const location = pm.response.headers.get(\"LOCATION\");", - "", - "if(location){", - " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"SD-JWT\",\n \"credential\": {\n \"first_name\": \"Ferris\",\n \"last_name\": \"Crabman\",\n \"dob\": \"1982-01-01\"\n },\n \"expiresAt\": \"never\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "ACME Corp Credential", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const location = pm.response.headers.get(\"LOCATION\");", - "", - "if(location){", - " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"001\",\n \"credential\": {\n \"id\": \"https://acme.example.org/1a2b3c4d5e6f\",\n \"credentialSubject\": {\n \"id\": \"https://ecommerce.impierce.com/\",\n \"image\": \"https://static.wikia.nocookie.net/fictionalcompanies/images/c/c2/ACME_Corporation.png\",\n \"name\": \"VirtualVendors\",\n \"certificaat\": {\n \"type\": \"ACMECorpCredential\",\n \"certificeringsDatum\": \"2024-06-26\",\n \"geldigheidsPeriode\": \"1 jaar\",\n \"garanties\": [\n \"Het bedrijf is echt en bereikbaar.\",\n \"Voldoet aan de Thuiswinkel Algemene Voorwaarden.\",\n \"14 dagen bedenktijd.\",\n \"Veilige betaalmethoden.\",\n \"Duidelijke product/servicebeschrijvingen.\",\n \"Transparant bestelproces.\",\n \"Duidelijke prijzen.\",\n \"Veilige betaalomgeving.\",\n \"Veilige omgang met persoonlijke gegevens.\",\n \"Effectieve klachtenafhandeling en onafhankelijke geschillenbemiddeling.\"\n ]\n }\n }\n },\n \"expiresAt\": \"2035-12-31T23:59:59Z\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "All Credentials", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "Credential by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}{{CREDENTIAL_LOCATION}}", - "host": [ - "{{HOST}}{{CREDENTIAL_LOCATION}}" - ] - } - }, - "response": [] - }, - { - "name": "Credential by ID (credentialStatus)", - "request": { - "method": "PATCH", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"credentialStatus\": \"INVALID\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}{{CREDENTIAL_LOCATION}}", - "host": [ - "{{HOST}}{{CREDENTIAL_LOCATION}}" - ] - } - }, - "response": [] - }, - { - "name": "Status List Token", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/ietf-oauth-token-status-list/0", - "host": [ - "{{HOST}}" - ], - "path": [ - "ietf-oauth-token-status-list", - "0" - ] - } - }, - "response": [] - }, - { - "name": "offers", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const credential_offer = responseBody;", - "const decodedString = decodeURIComponent(credential_offer);", - "const [, secondItem] = decodedString.split('=', 2);", - "var credential_offer_uri = secondItem;", - "", - "if(credential_offer_uri){", - " pm.collectionVariables.set(\"CREDENTIAL_OFFER_URI\", credential_offer_uri)", - "}" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\": \"{{OFFER_ID}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/offers", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "offers" - ] - } - }, - "response": [] - }, - { - "name": "All Offers", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/offers", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "offers" - ] - } - }, - "response": [] - }, - { - "name": "Offer by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/offers/{{OFFER_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "offers", - "{{OFFER_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Send Offer to Organization", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\": \"{{OFFER_ID}}\",\n \"targetUrl\": \"{{HOST}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/offers/send-offer-to-organization", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "offers", - "send-offer-to-organization" - ] - } - }, - "response": [] - }, - { - "name": "Send Offer to Individual", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"offerId\": \"{{OFFER_ID}}\",\n \"recipientEmail\": \"email@example.test\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/offers/send-offer-to-individual", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "offers", - "send-offer-to-individual" - ] - } - }, - "response": [] - }, - { - "name": "Create a new Credential Configuration", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"credential_configuration_id\": \"002\",\n \"format\": \"jwt_vc_json\",\n \"credential_definition\": {\n \"type\": [\"VerifiableCredential\"]\n },\n \"display\": [\n {\n \"name\": \"Verifiable Credential\",\n \"locale\": \"en\",\n \"logo\": {\n \"uri\": \"https://www.impierce.com/external/impierce-logo.png\",\n \"alt_text\": \"Impierce Logo\"\n }\n }\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/credential-configurations", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "credential-configurations" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "oid4vci", - "item": [ - { - "name": "Get Credential Offer", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "const pre_authorized_code = jsonData.grants['urn:ietf:params:oauth:grant-type:pre-authorized_code']['pre-authorized_code'];", - "if(pre_authorized_code){", - " pm.collectionVariables.set(\"PRE_AUTHORIZED_CODE\", pre_authorized_code)", - "}" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{CREDENTIAL_OFFER_URI}}", - "host": [ - "{{CREDENTIAL_OFFER_URI}}" - ] - } - }, - "response": [] - }, - { - "name": "oauth-authorization-server", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "const issuer = jsonData?.issuer;", - "const tokenEndpoint = jsonData?.token_endpoint;", - "", - "if(issuer){", - " pm.collectionVariables.set(\"ISSUER\",issuer)", - "}", - "", - "if(tokenEndpoint){", - " pm.collectionVariables.set(\"TOKEN_ENDPOINT\",tokenEndpoint)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/.well-known/oauth-authorization-server", - "host": [ - "{{HOST}}" - ], - "path": [ - ".well-known", - "oauth-authorization-server" - ] - } - }, - "response": [] - }, - { - "name": "openid-credential-issuer", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/.well-known/openid-credential-issuer", - "host": [ - "{{HOST}}" - ], - "path": [ - ".well-known", - "openid-credential-issuer" - ] - } - }, - "response": [] - }, - { - "name": "token", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "const accessToken = jsonData?.access_token;", - "", - "if(accessToken){", - " pm.collectionVariables.set(\"ACCESS_TOKEN\",accessToken)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "urlencoded", - "urlencoded": [ - { - "key": "grant_type", - "value": "urn:ietf:params:oauth:grant-type:pre-authorized_code", - "type": "text" - }, - { - "key": "pre-authorized_code", - "value": "{{PRE_AUTHORIZED_CODE}}", - "type": "text" - } - ] - }, - "url": { - "raw": "{{HOST}}/auth/token", - "host": [ - "{{HOST}}" - ], - "path": [ - "auth", - "token" - ] - } - }, - "response": [] - }, - { - "name": "nonce", - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{HOST}}/openid4vci/nonce", - "host": [ - "{{HOST}}" - ], - "path": [ - "openid4vci", - "nonce" - ] - } - }, - "response": [] - }, - { - "name": "credential", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (jsonData.notification_id) {", - " pm.collectionVariables.set(\"NOTIFICATION_ID\", jsonData.notification_id);", - " console.log(\"Notification ID saved: \" + jsonData.notification_id);", - "}" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{ACCESS_TOKEN}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"credential_configuration_id\": \"001\",\n \"proof\": {\n \"proof_type\": \"jwt\",\n \"jwt\": \"eyJ0eXAiOiJvcGVuaWQ0dmNpLXByb29mK2p3dCIsImFsZyI6IkVkRFNBIiwia2lkIjoiZGlkOmtleTp6Nk1rdWlSS3ExZktyekFYZVNOaUd3cnBKUFB1Z1k4QXhKWUE1Y3BDdlpDWUJEN0IjejZNa3VpUktxMWZLcnpBWGVTTmlHd3JwSlBQdWdZOEF4SllBNWNwQ3ZaQ1lCRDdCIn0.eyJpc3MiOiJkaWQ6a2V5Ono2TWt1aVJLcTFmS3J6QVhlU05pR3dycEpQUHVnWThBeEpZQTVjcEN2WkNZQkQ3QiIsImF1ZCI6Imh0dHA6Ly8xOTIuMTY4LjEuMTI3OjMwMzMvIiwiZXhwIjo5OTk5OTk5OTk5LCJpYXQiOjE1NzEzMjQ4MDAsIm5vbmNlIjoidW5zYWZlX2Nfbm9uY2UifQ.wR2e4VUnVjG6IK9cntcqvc_8KEJQUd3SEjsPZwDYDlYqijZ4ZaQLxyHtzNmLkIS3FpChLrZrcvIUJrZxrWcKAg\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/openid4vci/credential", - "host": [ - "{{HOST}}" - ], - "path": [ - "openid4vci", - "credential" - ] - } - }, - "response": [] - }, - { - "name": "notification", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 204 No Content\", function () {", - " pm.response.to.have.status(204);", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{ACCESS_TOKEN}}", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"notification_id\": \"{{NOTIFICATION_ID}}\",\n \"event\": \"credential_accepted\",\n \"event_description\": \"User accepted the credential in wallet\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/openid4vci/notification", - "host": [ - "{{HOST}}" - ], - "path": [ - "openid4vci", - "notification" - ] - } - }, - "response": [] - }, - { - "name": "par", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "const requestUri = jsonData?.request_uri;", - "", - "if(requestUri){", - " pm.collectionVariables.set(\"REQUEST_URI\",requestUri)", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "urlencoded", - "urlencoded": [ - { - "key": "response_type", - "value": "code", - "type": "text" - }, - { - "key": "client_id", - "value": "unime", - "type": "text" - }, - { - "key": "state", - "value": "test_state", - "type": "text" - }, - { - "key": "redirect_uri", - "value": "unime://callback", - "type": "text" - }, - { - "key": "code_challenge", - "value": "HlFaQkK4ul1jGkl6QRsxKGRVeRpaBY8hDja4WwPWTtw", - "type": "text" - }, - { - "key": "code_challenge_method", - "value": "S256", - "type": "text" - }, - { - "key": "scope", - "value": "openid profile", - "type": "text" - }, - { - "key": "issuer_state", - "value": "{{OFFER_ID}}", - "type": "text" - }, - { - "key": "authorization_details", - "value": "[{\"type\":\"openid_credential\",\"credential_configuration_id\":\"001\"}]", - "type": "text" - } - ] - }, - "url": { - "raw": "{{HOST}}/auth/par", - "host": [ - "{{HOST}}" - ], - "path": [ - "auth", - "par" - ] - } - }, - "response": [] - }, - { - "name": "authorize", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/auth/authorize?client_id=unime&request_uri={{REQUEST_URI}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "auth", - "authorize" - ], - "query": [ - { - "key": "client_id", - "value": "unime" - }, - { - "key": "request_uri", - "value": "{{REQUEST_URI}}" - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "ietf oauth sd-jwt vc", - "item": [ - { - "name": "SD-JWT VC Type Metadata", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/vct/U0QtSldU/0", - "host": [ - "{{HOST}}" - ], - "path": [ - "vct", - "U0QtSldU", - "0" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Verification", - "item": [ - { - "name": "siopv2_authorization_requests", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const location = pm.response.headers.get(\"LOCATION\");", - "", - "if(location){", - " pm.collectionVariables.set(\"AUTHORIZATION_REQUEST_LOCATION\",location)", - "}", - "", - "const authorization_request = responseBody;", - "", - "const decodedString = decodeURIComponent(authorization_request);", - "", - "// Regular expression to match the value of request_uri", - "const regex = /request_uri=([^&]+)/;", - "", - "// Executing the regular expression on the input string", - "const match = regex.exec(decodedString);", - "", - "// Extracting the value of request_uri", - "const requestUri = match ? decodeURIComponent(match[1]) : null;", - "", - "pm.collectionVariables.set(\"REQUEST_URI\",requestUri)", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"nonce\": \"this is a nonce\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/authorization_requests", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "authorization_requests" - ] - } - }, - "response": [] - }, - { - "name": "oid4vp_authorization_requests_with_dcql_query", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const location = pm.response.headers.get(\"LOCATION\");", - "", - "if(location){", - " pm.collectionVariables.set(\"AUTHORIZATION_REQUEST_LOCATION\",location)", - "}", - "", - "const authorization_request = responseBody;", - "", - "const decodedString = decodeURIComponent(authorization_request);", - "", - "// Regular expression to match the value of request_uri", - "const regex = /request_uri=([^&]+)/;", - "", - "// Executing the regular expression on the input string", - "const match = regex.exec(decodedString);", - "", - "// Extracting the value of request_uri", - "const requestUri = match ? decodeURIComponent(match[1]) : null;", - "", - "pm.collectionVariables.set(\"REQUEST_URI\",requestUri)", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"nonce\": \"this is a nonce\",\n \"dcql_query\": {\n \"credentials\": [\n {\n \"id\": \"CredentialQuery\",\n \"format\": \"jwt_vc_json\",\n \"meta\": {\n \"type_values\": [\n [\"VerifiableCredential\"],\n [\"PersonalInformation\"]\n ]\n },\n \"claims\": [\n {\"path\": [\"credentialSubject\", \"givenName\"]},\n {\"path\": [\"credentialSubject\", \"familyName\"]},\n {\"path\": [\"credentialSubject\", \"email\"]},\n {\"path\": [\"credentialSubject\", \"birthdate\"]}\n ]\n }\n ]\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/authorization_requests", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "authorization_requests" - ] - } - }, - "response": [] - }, - { - "name": "Authorization Request by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}{{AUTHORIZATION_REQUEST_LOCATION}}", - "host": [ - "{{HOST}}{{AUTHORIZATION_REQUEST_LOCATION}}" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "siopv2", - "item": [ - { - "name": "request", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{REQUEST_URI}}", - "host": [ - "{{REQUEST_URI}}" - ] - } - }, - "response": [] - } - ] - }, - { - "name": ".well-known", - "item": [ - { - "name": "did:web", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/.well-known/did.json", - "host": [ - "{{HOST}}" - ], - "path": [ - ".well-known", - "did.json" - ] - } - }, - "response": [] - }, - { - "name": "did-configuration", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/.well-known/did-configuration.json", - "host": [ - "{{HOST}}" - ], - "path": [ - ".well-known", - "did-configuration.json" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Holder", - "item": [ - { - "name": "All Received Offers", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const receivedOfferId = lastItem.id;", - "", - " if (receivedOfferId) {", - " pm.collectionVariables.set(\"RECEIVED_OFFER_ID\", receivedOfferId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/offers", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "offers" - ] - } - }, - "response": [] - }, - { - "name": "Received Offer by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "offers", - "{{RECEIVED_OFFER_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Accept Received Offer", - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}/accept", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "offers", - "{{RECEIVED_OFFER_ID}}", - "accept" - ] - } - }, - "response": [] - }, - { - "name": "Reject Received Offer", - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}/reject", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "offers", - "{{RECEIVED_OFFER_ID}}", - "reject" - ] - } - }, - "response": [] - }, - { - "name": "All Holder Credentials", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const holderCredentialId = lastItem.id;", - "", - " if (holderCredentialId) {", - " pm.collectionVariables.set(\"HOLDER_CREDENTIAL_ID\", holderCredentialId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "Add signed Holder Credential", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"credential\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsInN1YiI6ImRpZDprZXk6ejZNa2lpZXlvTE1TVnNKQVp2N0pqZTV3V1NrREV5bVVna3lGOGtiY3JqWnBYM3FkIiwiZXhwIjo5OTk5OTk5OTk5LCJpYXQiOjAsInZjIjp7IkBjb250ZXh0IjoiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvdjEiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIl0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmtleTp6Nk1raWlleW9MTVNWc0pBWnY3SmplNXdXU2tERXltVWdreUY4a2JjcmpacFgzcWQiLCJmaXJzdF9uYW1lIjoiRmVycmlzIiwibGFzdF9uYW1lIjoiUnVzdGFjZWFuIn0sImlzc3VlciI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwiaXNzdWFuY2VEYXRlIjoiMjAxMC0wMS0wMVQwMDowMDowMFoifX0.d4QN73vDtZu79RP6GldHObu6rGsjidkLYp0XMRQNbNPY75LJoSv2iXk2Rz5M-VMBZGSU3YPZHytlrKBjxr1IBQ\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/holder/credentials", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "credentials" - ] - } - }, - "response": [] - }, - { - "name": "Holder Credential by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/credentials/{{HOLDER_CREDENTIAL_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "credentials", - "{{HOLDER_CREDENTIAL_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "All Presentations", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const presentationId = lastItem.id;", - "", - " if (presentationId) {", - " pm.collectionVariables.set(\"PRESENTATION_ID\", presentationId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/presentations", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "presentations" - ] - } - }, - "response": [] - }, - { - "name": "Presentation by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/holder/presentations/{{PRESENTATION_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "presentations", - "{{PRESENTATION_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Create new Presentation", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"credentialIds\": [\"{{HOLDER_CREDENTIAL_ID}}\"]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/holder/presentations", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "holder", - "presentations" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Identity", - "item": [ - { - "name": "Connections", - "item": [ - { - "name": "Create a new Connection", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"alias\": \"My Connection\",\n \"domain\": \"http://example.org\",\n \"dids\": [\"did:example:123\"],\n \"credentialOfferEndpoint\": \"{{HOST}}/openid4vci/offers\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/connections", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "connections" - ] - } - }, - "response": [] - }, - { - "name": "List all Connections", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const connectionId = lastItem.id;", - "", - " if (connectionId) {", - " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/connections", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "connections" - ] - } - }, - "response": [] - }, - { - "name": "Query Connection by DID", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const connectionId = lastItem.id;", - "", - " if (connectionId) {", - " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/connections?did=did:example:123", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "connections" - ], - "query": [ - { - "key": "did", - "value": "did:example:123" - } - ] - } - }, - "response": [] - }, - { - "name": "Query Connection by Alias", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const connectionId = lastItem.id;", - "", - " if (connectionId) {", - " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/connections?alias=My+Connection", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "connections" - ], - "query": [ - { - "key": "alias", - "value": "My+Connection" - } - ] - } - }, - "response": [] - }, - { - "name": "Query Connection by Domain", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const connectionId = lastItem.id;", - "", - " if (connectionId) {", - " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/connections?domain=http://example.org", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "connections" - ], - "query": [ - { - "key": "domain", - "value": "http://example.org" - } - ] - } - }, - "response": [] - }, - { - "name": "Connection by ID", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "test", - "value": "test-value", - "type": "text" - } - ] - }, - "url": { - "raw": "{{HOST}}/v0/connections/{{CONNECTION_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "connections", - "{{CONNECTION_ID}}" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Services", - "item": [ - { - "name": "Create new Linked Verifiable Presentation Service", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"presentationIds\": [\"{{PRESENTATION_ID}}\"]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/services/linked-vp", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "services", - "linked-vp" - ] - } - }, - "response": [] - }, - { - "name": "All Services", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const serviceId = lastItem.id;", - "", - " if (serviceId) {", - " pm.collectionVariables.set(\"SERVICE_ID\", serviceId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/services", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "services" - ] - } - }, - "response": [] - }, - { - "name": "Service by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/services/{{SERVICE_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "services", - "{{SERVICE_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Linked Verifiable Presentation Service", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/services/linked-verifiable-presentation-service", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "services", - "linked-verifiable-presentation-service" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Documents", - "item": [ - { - "name": "List all Documents", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const documentId = lastItem.id;", - "", - " if (documentId) {", - " pm.collectionVariables.set(\"DOCUMENT_ID\", documentId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/documents", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "documents" - ] - } - }, - "response": [] - }, - { - "name": "Document by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/documents/{{DOCUMENT_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "documents", - "{{DOCUMENT_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Query Document by DID Method", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/documents?did_method=did:jwk", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "documents" - ], - "query": [ - { - "key": "did_method", - "value": "did:jwk" - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Profile", - "item": [ - { - "name": "Update Profile", - "request": { - "method": "PATCH", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"displayName\": \"My UniCore Instance\",\n \"logo\": {\n \"uri\": \"https://example.org\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/profile", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "profile" - ] - } - }, - "response": [] - }, - { - "name": "Get Profile", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/profile", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "profile" - ] - } - }, - "response": [] - } - ] - } - ] - }, - { - "name": "Library", - "item": [ - { - "name": "Template", - "item": [ - { - "name": "Create a new Template", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"title\": \"My Example Template\",\n \"credentialFormat\": \"w3c_vc_data_model_v1-1\",\n \"holderType\": \"organization\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/templates/create-template", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "templates", - "create-template" - ] - } - }, - "response": [] - }, - { - "name": "List all Templates", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "const jsonData = JSON.parse(responseBody);", - "", - "if (Array.isArray(jsonData) && jsonData.length > 0) {", - " const lastItem = jsonData[jsonData.length - 1];", - "", - " if (lastItem && typeof lastItem === 'object') {", - " const templateId = lastItem.id;", - "", - " if (templateId) {", - " pm.collectionVariables.set(\"TEMPLATE_ID\", templateId);", - " }", - " }", - "}", - "" - ], - "type": "text/javascript", - "packages": {}, - "requests": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {}, - "requests": {} - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/templates/get-all-templates", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "templates", - "get-all-templates" - ] - } - }, - "response": [] - }, - { - "name": "Template by ID", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [], - "body": { - "mode": "formdata", - "formdata": [] - }, - "url": { - "raw": "{{HOST}}/v0/templates/{{TEMPLATE_ID}}", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "templates", - "{{TEMPLATE_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Update Template", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"id\": \"{{TEMPLATE_ID}}\",\n \"status\": \"published\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/templates/update-template", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "templates", - "update-template" - ] - } - }, - "response": [] - }, - { - "name": "Duplicate Template", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{ \n \"sourceTemplateId\": \"{{TEMPLATE_ID}}\"\n} ", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/templates/duplicate-template", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "templates", - "duplicate-template" - ] - } - }, - "response": [] - }, - { - "name": "Delete Template", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"id\": \"{{TEMPLATE_ID}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/templates/delete-template", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "templates", - "delete-template" - ] - } - }, - "response": [] - } - ] - } - ] - }, - { - "name": "_monitoring", - "item": [ - { - "name": "Liveness probe", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/healthz", - "host": [ - "{{HOST}}" - ], - "path": [ - "healthz" - ] - } - }, - "response": [] - }, - { - "name": "Show version", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/version", - "host": [ - "{{HOST}}" - ], - "path": [ - "version" - ] - } - }, - "response": [] - }, - { - "name": "Show info", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/info", - "host": [ - "{{HOST}}" - ], - "path": [ - "info" - ] - } - }, - "response": [] - }, - { - "name": "Show full configuration", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/configuration", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "configuration" - ] - } - }, - "response": [] - }, - { - "name": "Show provisioned configuration", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/configuration?provisioned=true", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "configuration" - ], - "query": [ - { - "key": "provisioned", - "value": "true" - } - ] - } - }, - "response": [] - }, - { - "name": "Metrics", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST_METRICS}}/metrics", - "host": [ - "{{HOST_METRICS}}" - ], - "path": [ - "metrics" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "v1", - "item": [ - { - "name": "Identity", - "item": [ - { - "name": "Keys", - "item": [ - { - "name": "Generate Key", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"alias\": \"An Example Alias\",\n \"signingAlgorithm\": \"ES256\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/keys/generate-new-key", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "keys", - "generate-new-key" - ] - } - }, - "response": [] - }, - { - "name": "Remove Key", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"keyId\": \"zHpgKk3yHlxBomi96kvSoQEHslRzcufx\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/keys/remove-key", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "keys", - "remove-key" - ] - } - }, - "response": [] - }, - { - "name": "Rename Key Alias", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"keyId\": \"your-managed-key-id\",\n \"newAlias\": \"new-key-alias\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/keys/rename-key-alias", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "keys", - "rename-key-alias" - ] - } - }, - "response": [] - }, - { - "name": "Set Signing Key", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"keyId\": \"your-managed-key-id\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{HOST}}/v0/keys/set-signing-key", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "keys", - "set-signing-key" - ] - } - }, - "response": [] - }, - { - "name": "List all Keys", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{HOST}}/v0/keys/list-all", - "host": [ - "{{HOST}}" - ], - "path": [ - "v0", - "keys", - "list-all" - ] - } - }, - "response": [] - } - ] - } - ] - } - ] - } - ], - "auth": { - "type": "apikey", - "apikey": [ - { - "key": "value", - "value": "{{API_KEY}}", - "type": "string" - }, - { - "key": "key", - "value": "X-API-KEY", - "type": "string" - } - ] - }, - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "variable": [ - { - "key": "PRE_AUTHORIZED_CODE", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "OFFER_ID", - "value": "001", - "type": "string" - }, - { - "key": "ISSUER", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "TOKEN_ENDPOINT", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "ACCESS_TOKEN", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "CREDENTIAL_LOCATION", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "AUTHORIZATION_REQUEST_LOCATION", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "REQUEST_URI", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "RECEIVED_OFFER_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "HOLDER_CREDENTIAL_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "PRESENTATION_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "CONNECTION_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "CREDENTIAL_OFFER_URI", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "DOCUMENT_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "NOTIFICATION_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "SERVICE_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "TEMPLATE_ID", - "value": "INITIAL_VALUE", - "type": "string" - }, - { - "key": "REQUEST_URI", - "value": "INITIAL_VALUE", - "type": "string" - } - ] + "info": { + "_postman_id": "d83ef4f5-b1c2-47b0-8bd8-765a5aaf29e2", + "name": "ssi-agent", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "38461474", + "_collection_link": "https://go.postman.co/collection/41786572-bd568b99-121b-438e-afc1-2356f4ab1803?source=collection_link" + }, + "item": [ + { + "name": "Issuance", + "item": [ + { + "name": "openbadgesv3_credentials", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"openbadge_credential\",\n \"credential\": {\n \"credentialSubject\": {\n \"type\": [ \"AchievementSubject\" ],\n \"achievement\": {\n \"id\": \"https://example.com/achievements/21st-century-skills/teamwork\",\n \"type\": \"Achievement\",\n \"criteria\": {\n \"narrative\": \"Team members are nominated for this badge by their peers and recognized upon review by Example Corp management.\"\n },\n \"description\": \"This badge recognizes the development of the capacity to collaborate within a group environment.\",\n \"name\": \"Teamwork\"\n }\n }\n },\n \"expiresAt\": \"2028-04-12T09:15:23Z\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "w3c_vc_credentials", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"001\",\n \"credential\": {\n \"credentialSubject\": {\n \"first_name\": \"Ferris\",\n \"last_name\": \"Crabman\",\n \"dob\": \"1982-01-01\"\n }\n },\n \"expiresAt\": \"never\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "Create an SD-JWT VC Credential", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"SD-JWT\",\n \"credential\": {\n \"first_name\": \"Ferris\",\n \"last_name\": \"Crabman\",\n \"dob\": \"1982-01-01\"\n },\n \"expiresAt\": \"never\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "ACME Corp Credential", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"001\",\n \"credential\": {\n \"id\": \"https://acme.example.org/1a2b3c4d5e6f\",\n \"credentialSubject\": {\n \"id\": \"https://ecommerce.impierce.com/\",\n \"image\": \"https://static.wikia.nocookie.net/fictionalcompanies/images/c/c2/ACME_Corporation.png\",\n \"name\": \"VirtualVendors\",\n \"certificaat\": {\n \"type\": \"ACMECorpCredential\",\n \"certificeringsDatum\": \"2024-06-26\",\n \"geldigheidsPeriode\": \"1 jaar\",\n \"garanties\": [\n \"Het bedrijf is echt en bereikbaar.\",\n \"Voldoet aan de Thuiswinkel Algemene Voorwaarden.\",\n \"14 dagen bedenktijd.\",\n \"Veilige betaalmethoden.\",\n \"Duidelijke product/servicebeschrijvingen.\",\n \"Transparant bestelproces.\",\n \"Duidelijke prijzen.\",\n \"Veilige betaalomgeving.\",\n \"Veilige omgang met persoonlijke gegevens.\",\n \"Effectieve klachtenafhandeling en onafhankelijke geschillenbemiddeling.\"\n ]\n }\n }\n },\n \"expiresAt\": \"2035-12-31T23:59:59Z\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "All Credentials", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "Credential by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}{{CREDENTIAL_LOCATION}}", + "host": [ + "{{HOST}}{{CREDENTIAL_LOCATION}}" + ] + } + }, + "response": [] + }, + { + "name": "Credential by ID (credentialStatus)", + "request": { + "method": "PATCH", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"credentialStatus\": \"INVALID\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}{{CREDENTIAL_LOCATION}}", + "host": [ + "{{HOST}}{{CREDENTIAL_LOCATION}}" + ] + } + }, + "response": [] + }, + { + "name": "Status List Token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/ietf-oauth-token-status-list/0", + "host": [ + "{{HOST}}" + ], + "path": [ + "ietf-oauth-token-status-list", + "0" + ] + } + }, + "response": [] + }, + { + "name": "offers", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const credential_offer = responseBody;", + "const decodedString = decodeURIComponent(credential_offer);", + "const [, secondItem] = decodedString.split('=', 2);", + "var credential_offer_uri = secondItem;", + "", + "if(credential_offer_uri){", + " pm.collectionVariables.set(\"CREDENTIAL_OFFER_URI\", credential_offer_uri)", + "}" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\": \"{{OFFER_ID}}\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/offers", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers" + ] + } + }, + "response": [] + }, + { + "name": "All Offers", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/offers", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers" + ] + } + }, + "response": [] + }, + { + "name": "Offer by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/offers/{{OFFER_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers", + "{{OFFER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Send Offer to Organization", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\": \"{{OFFER_ID}}\",\n \"targetUrl\": \"{{HOST}}\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/offers/send-offer-to-organization", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers", + "send-offer-to-organization" + ] + } + }, + "response": [] + }, + { + "name": "Send Offer to Individual", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\": \"{{OFFER_ID}}\",\n \"recipientEmail\": \"email@example.test\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/offers/send-offer-to-individual", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "offers", + "send-offer-to-individual" + ] + } + }, + "response": [] + }, + { + "name": "Create a new Credential Configuration", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"credential_configuration_id\": \"002\",\n \"format\": \"jwt_vc_json\",\n \"credential_definition\": {\n \"type\": [\"VerifiableCredential\"]\n },\n \"display\": [\n {\n \"name\": \"Verifiable Credential\",\n \"locale\": \"en\",\n \"logo\": {\n \"uri\": \"https://www.impierce.com/external/impierce-logo.png\",\n \"alt_text\": \"Impierce Logo\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credential-configurations", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credential-configurations" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "oid4vci", + "item": [ + { + "name": "Get Credential Offer", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "const pre_authorized_code = jsonData.grants['urn:ietf:params:oauth:grant-type:pre-authorized_code']['pre-authorized_code'];", + "if(pre_authorized_code){", + " pm.collectionVariables.set(\"PRE_AUTHORIZED_CODE\", pre_authorized_code)", + "}" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{CREDENTIAL_OFFER_URI}}", + "host": [ + "{{CREDENTIAL_OFFER_URI}}" + ] + } + }, + "response": [] + }, + { + "name": "oauth-authorization-server", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "const issuer = jsonData?.issuer;", + "const tokenEndpoint = jsonData?.token_endpoint;", + "", + "if(issuer){", + " pm.collectionVariables.set(\"ISSUER\",issuer)", + "}", + "", + "if(tokenEndpoint){", + " pm.collectionVariables.set(\"TOKEN_ENDPOINT\",tokenEndpoint)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/.well-known/oauth-authorization-server", + "host": [ + "{{HOST}}" + ], + "path": [ + ".well-known", + "oauth-authorization-server" + ] + } + }, + "response": [] + }, + { + "name": "openid-credential-issuer", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/.well-known/openid-credential-issuer", + "host": [ + "{{HOST}}" + ], + "path": [ + ".well-known", + "openid-credential-issuer" + ] + } + }, + "response": [] + }, + { + "name": "token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "const accessToken = jsonData?.access_token;", + "", + "if(accessToken){", + " pm.collectionVariables.set(\"ACCESS_TOKEN\",accessToken)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "grant_type", + "value": "urn:ietf:params:oauth:grant-type:pre-authorized_code", + "type": "text" + }, + { + "key": "pre-authorized_code", + "value": "{{PRE_AUTHORIZED_CODE}}", + "type": "text" + } + ] + }, + "url": { + "raw": "{{HOST}}/auth/token", + "host": [ + "{{HOST}}" + ], + "path": [ + "auth", + "token" + ] + } + }, + "response": [] + }, + { + "name": "nonce", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{HOST}}/openid4vci/nonce", + "host": [ + "{{HOST}}" + ], + "path": [ + "openid4vci", + "nonce" + ] + } + }, + "response": [] + }, + { + "name": "credential", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (jsonData.notification_id) {", + " pm.collectionVariables.set(\"NOTIFICATION_ID\", jsonData.notification_id);", + " console.log(\"Notification ID saved: \" + jsonData.notification_id);", + "}" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{ACCESS_TOKEN}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"credential_configuration_id\": \"001\",\n \"proof\": {\n \"proof_type\": \"jwt\",\n \"jwt\": \"eyJ0eXAiOiJvcGVuaWQ0dmNpLXByb29mK2p3dCIsImFsZyI6IkVkRFNBIiwia2lkIjoiZGlkOmtleTp6Nk1rdWlSS3ExZktyekFYZVNOaUd3cnBKUFB1Z1k4QXhKWUE1Y3BDdlpDWUJEN0IjejZNa3VpUktxMWZLcnpBWGVTTmlHd3JwSlBQdWdZOEF4SllBNWNwQ3ZaQ1lCRDdCIn0.eyJpc3MiOiJkaWQ6a2V5Ono2TWt1aVJLcTFmS3J6QVhlU05pR3dycEpQUHVnWThBeEpZQTVjcEN2WkNZQkQ3QiIsImF1ZCI6Imh0dHA6Ly8xOTIuMTY4LjEuMTI3OjMwMzMvIiwiZXhwIjo5OTk5OTk5OTk5LCJpYXQiOjE1NzEzMjQ4MDAsIm5vbmNlIjoidW5zYWZlX2Nfbm9uY2UifQ.wR2e4VUnVjG6IK9cntcqvc_8KEJQUd3SEjsPZwDYDlYqijZ4ZaQLxyHtzNmLkIS3FpChLrZrcvIUJrZxrWcKAg\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/openid4vci/credential", + "host": [ + "{{HOST}}" + ], + "path": [ + "openid4vci", + "credential" + ] + } + }, + "response": [] + }, + { + "name": "notification", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 204 No Content\", function () {", + " pm.response.to.have.status(204);", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{ACCESS_TOKEN}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"notification_id\": \"{{NOTIFICATION_ID}}\",\n \"event\": \"credential_accepted\",\n \"event_description\": \"User accepted the credential in wallet\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/openid4vci/notification", + "host": [ + "{{HOST}}" + ], + "path": [ + "openid4vci", + "notification" + ] + } + }, + "response": [] + }, + { + "name": "par", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "const requestUri = jsonData?.request_uri;", + "", + "if(requestUri){", + " pm.collectionVariables.set(\"REQUEST_URI\",requestUri)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "response_type", + "value": "code", + "type": "text" + }, + { + "key": "client_id", + "value": "unime", + "type": "text" + }, + { + "key": "state", + "value": "test_state", + "type": "text" + }, + { + "key": "redirect_uri", + "value": "unime://callback", + "type": "text" + }, + { + "key": "code_challenge", + "value": "HlFaQkK4ul1jGkl6QRsxKGRVeRpaBY8hDja4WwPWTtw", + "type": "text" + }, + { + "key": "code_challenge_method", + "value": "S256", + "type": "text" + }, + { + "key": "scope", + "value": "openid profile", + "type": "text" + }, + { + "key": "issuer_state", + "value": "{{OFFER_ID}}", + "type": "text" + }, + { + "key": "authorization_details", + "value": "[{\"type\":\"openid_credential\",\"credential_configuration_id\":\"001\"}]", + "type": "text" + } + ] + }, + "url": { + "raw": "{{HOST}}/auth/par", + "host": [ + "{{HOST}}" + ], + "path": [ + "auth", + "par" + ] + } + }, + "response": [] + }, + { + "name": "authorize", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/auth/authorize?client_id=unime&request_uri={{REQUEST_URI}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "auth", + "authorize" + ], + "query": [ + { + "key": "client_id", + "value": "unime" + }, + { + "key": "request_uri", + "value": "{{REQUEST_URI}}" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "ietf oauth sd-jwt vc", + "item": [ + { + "name": "SD-JWT VC Type Metadata", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/vct/U0QtSldU/0", + "host": [ + "{{HOST}}" + ], + "path": [ + "vct", + "U0QtSldU", + "0" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Verification", + "item": [ + { + "name": "siopv2_authorization_requests", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"AUTHORIZATION_REQUEST_LOCATION\",location)", + "}", + "", + "const authorization_request = responseBody;", + "", + "const decodedString = decodeURIComponent(authorization_request);", + "", + "// Regular expression to match the value of request_uri", + "const regex = /request_uri=([^&]+)/;", + "", + "// Executing the regular expression on the input string", + "const match = regex.exec(decodedString);", + "", + "// Extracting the value of request_uri", + "const requestUri = match ? decodeURIComponent(match[1]) : null;", + "", + "pm.collectionVariables.set(\"REQUEST_URI\",requestUri)", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"nonce\": \"this is a nonce\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/authorization_requests", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "authorization_requests" + ] + } + }, + "response": [] + }, + { + "name": "oid4vp_authorization_requests_with_dcql_query", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"AUTHORIZATION_REQUEST_LOCATION\",location)", + "}", + "", + "const authorization_request = responseBody;", + "", + "const decodedString = decodeURIComponent(authorization_request);", + "", + "// Regular expression to match the value of request_uri", + "const regex = /request_uri=([^&]+)/;", + "", + "// Executing the regular expression on the input string", + "const match = regex.exec(decodedString);", + "", + "// Extracting the value of request_uri", + "const requestUri = match ? decodeURIComponent(match[1]) : null;", + "", + "pm.collectionVariables.set(\"REQUEST_URI\",requestUri)", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"nonce\": \"this is a nonce\",\n \"dcql_query\": {\n \"credentials\": [\n {\n \"id\": \"CredentialQuery\",\n \"format\": \"jwt_vc_json\",\n \"meta\": {\n \"type_values\": [\n [\"VerifiableCredential\"],\n [\"PersonalInformation\"]\n ]\n },\n \"claims\": [\n {\"path\": [\"credentialSubject\", \"givenName\"]},\n {\"path\": [\"credentialSubject\", \"familyName\"]},\n {\"path\": [\"credentialSubject\", \"email\"]},\n {\"path\": [\"credentialSubject\", \"birthdate\"]}\n ]\n }\n ]\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/authorization_requests", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "authorization_requests" + ] + } + }, + "response": [] + }, + { + "name": "Authorization Request by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}{{AUTHORIZATION_REQUEST_LOCATION}}", + "host": [ + "{{HOST}}{{AUTHORIZATION_REQUEST_LOCATION}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "siopv2", + "item": [ + { + "name": "request", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{REQUEST_URI}}", + "host": [ + "{{REQUEST_URI}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": ".well-known", + "item": [ + { + "name": "did:web", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/.well-known/did.json", + "host": [ + "{{HOST}}" + ], + "path": [ + ".well-known", + "did.json" + ] + } + }, + "response": [] + }, + { + "name": "did-configuration", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/.well-known/did-configuration.json", + "host": [ + "{{HOST}}" + ], + "path": [ + ".well-known", + "did-configuration.json" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Holder", + "item": [ + { + "name": "All Received Offers", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const receivedOfferId = lastItem.id;", + "", + " if (receivedOfferId) {", + " pm.collectionVariables.set(\"RECEIVED_OFFER_ID\", receivedOfferId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/offers", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "offers" + ] + } + }, + "response": [] + }, + { + "name": "Received Offer by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "offers", + "{{RECEIVED_OFFER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Accept Received Offer", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}/accept", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "offers", + "{{RECEIVED_OFFER_ID}}", + "accept" + ] + } + }, + "response": [] + }, + { + "name": "Reject Received Offer", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/offers/{{RECEIVED_OFFER_ID}}/reject", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "offers", + "{{RECEIVED_OFFER_ID}}", + "reject" + ] + } + }, + "response": [] + }, + { + "name": "All Holder Credentials", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const holderCredentialId = lastItem.id;", + "", + " if (holderCredentialId) {", + " pm.collectionVariables.set(\"HOLDER_CREDENTIAL_ID\", holderCredentialId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "Add signed Holder Credential", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"credential\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0I3o2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnRTg0TkNNcE1lQXg5aks5Y2Y1VzRHOGdjWjl4dXdKdkcxZTd3Tms4S0NndCIsInN1YiI6ImRpZDprZXk6ejZNa2lpZXlvTE1TVnNKQVp2N0pqZTV3V1NrREV5bVVna3lGOGtiY3JqWnBYM3FkIiwiZXhwIjo5OTk5OTk5OTk5LCJpYXQiOjAsInZjIjp7IkBjb250ZXh0IjoiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvdjEiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIl0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmtleTp6Nk1raWlleW9MTVNWc0pBWnY3SmplNXdXU2tERXltVWdreUY4a2JjcmpacFgzcWQiLCJmaXJzdF9uYW1lIjoiRmVycmlzIiwibGFzdF9uYW1lIjoiUnVzdGFjZWFuIn0sImlzc3VlciI6ImRpZDprZXk6ejZNa2dFODROQ01wTWVBeDlqSzljZjVXNEc4Z2NaOXh1d0p2RzFlN3dOazhLQ2d0IiwiaXNzdWFuY2VEYXRlIjoiMjAxMC0wMS0wMVQwMDowMDowMFoifX0.d4QN73vDtZu79RP6GldHObu6rGsjidkLYp0XMRQNbNPY75LJoSv2iXk2Rz5M-VMBZGSU3YPZHytlrKBjxr1IBQ\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/holder/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "credentials" + ] + } + }, + "response": [] + }, + { + "name": "Holder Credential by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/credentials/{{HOLDER_CREDENTIAL_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "credentials", + "{{HOLDER_CREDENTIAL_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "All Presentations", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const presentationId = lastItem.id;", + "", + " if (presentationId) {", + " pm.collectionVariables.set(\"PRESENTATION_ID\", presentationId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/presentations", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "presentations" + ] + } + }, + "response": [] + }, + { + "name": "Presentation by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/holder/presentations/{{PRESENTATION_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "presentations", + "{{PRESENTATION_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Create new Presentation", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"credentialIds\": [\"{{HOLDER_CREDENTIAL_ID}}\"]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/holder/presentations", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "holder", + "presentations" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Identity", + "item": [ + { + "name": "Connections", + "item": [ + { + "name": "Create a new Connection", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"alias\": \"My Connection\",\n \"domain\": \"http://example.org\",\n \"dids\": [\"did:example:123\"],\n \"credentialOfferEndpoint\": \"{{HOST}}/openid4vci/offers\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/connections", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ] + } + }, + "response": [] + }, + { + "name": "List all Connections", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const connectionId = lastItem.id;", + "", + " if (connectionId) {", + " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/connections", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ] + } + }, + "response": [] + }, + { + "name": "Query Connection by DID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const connectionId = lastItem.id;", + "", + " if (connectionId) {", + " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/connections?did=did:example:123", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ], + "query": [ + { + "key": "did", + "value": "did:example:123" + } + ] + } + }, + "response": [] + }, + { + "name": "Query Connection by Alias", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const connectionId = lastItem.id;", + "", + " if (connectionId) {", + " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/connections?alias=My+Connection", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ], + "query": [ + { + "key": "alias", + "value": "My+Connection" + } + ] + } + }, + "response": [] + }, + { + "name": "Query Connection by Domain", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const connectionId = lastItem.id;", + "", + " if (connectionId) {", + " pm.collectionVariables.set(\"CONNECTION_ID\", connectionId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/connections?domain=http://example.org", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections" + ], + "query": [ + { + "key": "domain", + "value": "http://example.org" + } + ] + } + }, + "response": [] + }, + { + "name": "Connection by ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "test", + "value": "test-value", + "type": "text" + } + ] + }, + "url": { + "raw": "{{HOST}}/v0/connections/{{CONNECTION_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "connections", + "{{CONNECTION_ID}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Services", + "item": [ + { + "name": "Create new Linked Verifiable Presentation Service", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"presentationIds\": [\"{{PRESENTATION_ID}}\"]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/services/linked-vp", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "services", + "linked-vp" + ] + } + }, + "response": [] + }, + { + "name": "All Services", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const serviceId = lastItem.id;", + "", + " if (serviceId) {", + " pm.collectionVariables.set(\"SERVICE_ID\", serviceId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/services", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "services" + ] + } + }, + "response": [] + }, + { + "name": "Service by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/services/{{SERVICE_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "services", + "{{SERVICE_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Linked Verifiable Presentation Service", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/services/linked-verifiable-presentation-service", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "services", + "linked-verifiable-presentation-service" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Documents", + "item": [ + { + "name": "List all Documents", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const documentId = lastItem.id;", + "", + " if (documentId) {", + " pm.collectionVariables.set(\"DOCUMENT_ID\", documentId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/documents", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "documents" + ] + } + }, + "response": [] + }, + { + "name": "Document by ID", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/documents/{{DOCUMENT_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "documents", + "{{DOCUMENT_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Query Document by DID Method", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/documents?did_method=did:jwk", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "documents" + ], + "query": [ + { + "key": "did_method", + "value": "did:jwk" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Profile", + "item": [ + { + "name": "Update Profile", + "request": { + "method": "PATCH", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"displayName\": \"My UniCore Instance\",\n \"logo\": {\n \"uri\": \"https://example.org\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/profile", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "profile" + ] + } + }, + "response": [] + }, + { + "name": "Get Profile", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/profile", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "profile" + ] + } + }, + "response": [] + } + ] + } + ] + }, + { + "name": "Library", + "item": [ + { + "name": "Template", + "item": [ + { + "name": "Create a new Template", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"title\": \"My Example Template\",\n \"credentialFormat\": \"w3c_vc_data_model_v1-1\",\n \"holderType\": \"organization\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/templates/create-template", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "create-template" + ] + } + }, + "response": [] + }, + { + "name": "List all Templates", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonData = JSON.parse(responseBody);", + "", + "if (Array.isArray(jsonData) && jsonData.length > 0) {", + " const lastItem = jsonData[jsonData.length - 1];", + "", + " if (lastItem && typeof lastItem === 'object') {", + " const templateId = lastItem.id;", + "", + " if (templateId) {", + " pm.collectionVariables.set(\"TEMPLATE_ID\", templateId);", + " }", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {}, + "requests": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {}, + "requests": {} + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/templates/get-all-templates", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "get-all-templates" + ] + } + }, + "response": [] + }, + { + "name": "Template by ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "{{HOST}}/v0/templates/{{TEMPLATE_ID}}", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "{{TEMPLATE_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Update Template", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"id\": \"{{TEMPLATE_ID}}\",\n \"status\": \"published\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/templates/update-template", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "update-template" + ] + } + }, + "response": [] + }, + { + "name": "Duplicate Template", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{ \n \"sourceTemplateId\": \"{{TEMPLATE_ID}}\"\n} ", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/templates/duplicate-template", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "duplicate-template" + ] + } + }, + "response": [] + }, + { + "name": "Delete Template", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"id\": \"{{TEMPLATE_ID}}\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/templates/delete-template", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "templates", + "delete-template" + ] + } + }, + "response": [] + } + ] + } + ] + }, + { + "name": "_monitoring", + "item": [ + { + "name": "Liveness probe", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/healthz", + "host": [ + "{{HOST}}" + ], + "path": [ + "healthz" + ] + } + }, + "response": [] + }, + { + "name": "Show version", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/version", + "host": [ + "{{HOST}}" + ], + "path": [ + "version" + ] + } + }, + "response": [] + }, + { + "name": "Show info", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/info", + "host": [ + "{{HOST}}" + ], + "path": [ + "info" + ] + } + }, + "response": [] + }, + { + "name": "Show full configuration", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/configuration", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "configuration" + ] + } + }, + "response": [] + }, + { + "name": "Show provisioned configuration", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/configuration?provisioned=true", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "configuration" + ], + "query": [ + { + "key": "provisioned", + "value": "true" + } + ] + } + }, + "response": [] + }, + { + "name": "Metrics", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST_METRICS}}/metrics", + "host": [ + "{{HOST_METRICS}}" + ], + "path": [ + "metrics" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "v1", + "item": [ + { + "name": "Identity", + "item": [ + { + "name": "Keys", + "item": [ + { + "name": "Generate Key", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"alias\": \"An Example Alias\",\n \"signingAlgorithm\": \"ES256\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/keys/generate-new-key", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "generate-new-key" + ] + } + }, + "response": [] + }, + { + "name": "Remove Key", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"keyId\": \"zHpgKk3yHlxBomi96kvSoQEHslRzcufx\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/keys/remove-key", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "remove-key" + ] + } + }, + "response": [] + }, + { + "name": "Rename Key Alias", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"keyId\": \"your-managed-key-id\",\n \"newAlias\": \"new-key-alias\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/keys/rename-key-alias", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "rename-key-alias" + ] + } + }, + "response": [] + }, + { + "name": "Set Signing Key", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"keyId\": \"your-managed-key-id\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/keys/set-signing-key", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "set-signing-key" + ] + } + }, + "response": [] + }, + { + "name": "List all Keys", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{HOST}}/v0/keys/list-all", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "keys", + "list-all" + ] + } + }, + "response": [] + } + ] + } + ] + } + ] + } + ], + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "value", + "value": "{{API_KEY}}", + "type": "string" + }, + { + "key": "key", + "value": "X-API-KEY", + "type": "string" + } + ] + }, + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "PRE_AUTHORIZED_CODE", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "OFFER_ID", + "value": "001", + "type": "string" + }, + { + "key": "ISSUER", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "TOKEN_ENDPOINT", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "ACCESS_TOKEN", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "CREDENTIAL_LOCATION", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "AUTHORIZATION_REQUEST_LOCATION", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "REQUEST_URI", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "RECEIVED_OFFER_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "HOLDER_CREDENTIAL_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "PRESENTATION_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "CONNECTION_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "CREDENTIAL_OFFER_URI", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "DOCUMENT_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "NOTIFICATION_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "SERVICE_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "TEMPLATE_ID", + "value": "INITIAL_VALUE", + "type": "string" + }, + { + "key": "REQUEST_URI", + "value": "INITIAL_VALUE", + "type": "string" + } + ] } \ No newline at end of file From 2056d41cab933ffc3dda768c5b7f68546484ef35 Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Tue, 24 Feb 2026 12:44:41 +0100 Subject: [PATCH 34/35] docs: add Create a VCDM 2.0 SD-JWT Credential request to Postman collection --- .../postman/ssi-agent.postman_collection.json | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/agent_api_http/postman/ssi-agent.postman_collection.json b/agent_api_http/postman/ssi-agent.postman_collection.json index 301db6829..b418f868b 100644 --- a/agent_api_http/postman/ssi-agent.postman_collection.json +++ b/agent_api_http/postman/ssi-agent.postman_collection.json @@ -1,6 +1,6 @@ { "info": { - "_postman_id": "d83ef4f5-b1c2-47b0-8bd8-765a5aaf29e2", + "_postman_id": "246c2e0c-a79a-4cb1-af6a-06476e3616db", "name": "ssi-agent", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "_exporter_id": "38461474", @@ -172,6 +172,60 @@ }, "response": [] }, + { + "name": "Create a VCDM 2.0 SD-JWT Credential", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const location = pm.response.headers.get(\"LOCATION\");", + "", + "if(location){", + " pm.collectionVariables.set(\"CREDENTIAL_LOCATION\",location)", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"offerId\":\"{{OFFER_ID}}\",\n \"credentialConfigurationId\": \"VCDM 2.0 SD-JWT\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"credential\": {\n \"credentialSubject\": {\n \"first_name\": \"Ferris\",\n \"last_name\": \"Crabman\",\n \"dob\": \"1982-01-01\"\n }\n },\n \"expiresAt\": \"never\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{HOST}}/v0/credentials", + "host": [ + "{{HOST}}" + ], + "path": [ + "v0", + "credentials" + ] + } + }, + "response": [] + }, { "name": "ACME Corp Credential", "event": [ From 27e094b62e2e384c501fe50199c691e019d425af Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Wed, 25 Feb 2026 16:31:40 +0100 Subject: [PATCH 35/35] fix: set `issuanceDate`during `SignCredential` --- agent_issuance/src/credential/aggregate.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/agent_issuance/src/credential/aggregate.rs b/agent_issuance/src/credential/aggregate.rs index 5c3514968..61149528a 100644 --- a/agent_issuance/src/credential/aggregate.rs +++ b/agent_issuance/src/credential/aggregate.rs @@ -507,6 +507,7 @@ impl Aggregate for Credential { let exp = self.expires_at.map(|exp| exp.to_unix()); credential.raw["issuer"] = json!(issuer_did); + credential.raw["issuanceDate"] = json!(issuance_date); let credential_subject = credential.raw["credentialSubject"].as_object().unwrap().clone();