From 80d294d8bf41f5e985f854825bcdfd6da36c8a46 Mon Sep 17 00:00:00 2001 From: Patrik Date: Sun, 17 Mar 2024 23:27:34 +0100 Subject: [PATCH] Delete `did_parser`, use `did_parser_nom` instead (#1150) Delete `did_parser`, use `did_parser_nom` instead (#1150) Signed-off-by: Patrik Stas --- Cargo.lock | 31 +- Cargo.toml | 1 - README.md | 2 +- .../src/controllers/credential_definition.rs | 2 +- .../src/controllers/did_exchange.rs | 2 +- aries/agents/aath-backchannel/src/error.rs | 2 +- .../agents/aries-vcx-agent/src/agent/init.rs | 2 +- .../aries-vcx-agent/src/error/convertors.rs | 4 +- .../src/handlers/credential_definition.rs | 2 +- .../src/handlers/did_exchange.rs | 2 +- .../aries-vcx-agent/src/handlers/holder.rs | 2 +- .../src/handlers/revocation_registry.rs | 2 +- .../aries-vcx-agent/src/handlers/schema.rs | 2 +- aries/aries_vcx/Cargo.toml | 2 +- aries/aries_vcx/src/common/keys.rs | 2 +- .../src/common/ledger/transactions.rs | 2 +- .../primitives/credential_definition.rs | 2 +- .../common/primitives/credential_schema.rs | 2 +- .../common/primitives/revocation_registry.rs | 2 +- aries/aries_vcx/src/errors/mapping_others.rs | 4 +- .../aries_vcx/src/handlers/issuance/holder.rs | 2 +- aries/aries_vcx/src/lib.rs | 2 +- .../src/protocols/did_exchange/mod.rs | 2 +- .../did_exchange/state_machine/generic/mod.rs | 2 +- .../did_exchange/state_machine/helpers.rs | 2 +- .../state_machine/requester/helpers.rs | 2 +- .../requester/request_sent/mod.rs | 2 +- .../issuance/holder/state_machine.rs | 2 +- aries/aries_vcx/tests/test_did_exchange.rs | 2 +- aries/aries_vcx/tests/test_pool.rs | 2 +- aries/aries_vcx/tests/test_verifier.rs | 2 +- aries/aries_vcx/tests/utils/mod.rs | 2 +- .../utils/scenarios/credential_issuance.rs | 2 +- aries/aries_vcx/tests/utils/scenarios/data.rs | 2 +- aries/aries_vcx/tests/utils/test_agent.rs | 2 +- aries/aries_vcx_core/Cargo.toml | 2 +- .../src/anoncreds/anoncreds/mod.rs | 2 +- .../src/anoncreds/base_anoncreds.rs | 2 +- .../src/anoncreds/credx_anoncreds/mod.rs | 2 +- .../credx_anoncreds/type_conversion.rs | 2 +- .../src/errors/mapping_others.rs | 2 +- .../aries_vcx_core/src/ledger/base_ledger.rs | 2 +- aries/aries_vcx_core/src/ledger/common.rs | 2 +- .../src/ledger/indy_vdr_ledger.rs | 2 +- .../src/ledger/type_conversion.rs | 2 +- aries/messages/Cargo.toml | 2 +- .../protocols/connection/invitation/mod.rs | 2 +- .../connection/invitation/pairwise.rs | 2 +- aries/misc/test_utils/Cargo.toml | 2 +- aries/misc/test_utils/src/devsetup.rs | 2 +- .../test_utils/src/mockdata/mock_anoncreds.rs | 2 +- .../test_utils/src/mockdata/mock_ledger.rs | 2 +- .../wrappers/uniffi-aries-vcx/core/Cargo.toml | 2 +- .../core/src/errors/mapping_from_others.rs | 4 +- did_core/did_doc/Cargo.toml | 8 +- did_core/did_doc/src/lib.rs | 2 +- did_core/did_doc/src/schema/did_doc.rs | 5 +- did_core/did_doc/src/schema/legacy.rs | 2 +- did_core/did_doc/src/schema/service/mod.rs | 2 +- .../src/schema/service/service_key_kind.rs | 2 +- .../src/schema/verification_method/mod.rs | 2 +- .../verification_method_kind.rs | 3 +- did_core/did_methods/did_key/Cargo.toml | 2 +- did_core/did_methods/did_key/src/error.rs | 2 +- did_core/did_methods/did_key/src/lib.rs | 2 +- did_core/did_methods/did_peer/Cargo.toml | 5 +- .../did_methods/did_peer/examples/demo.rs | 2 +- did_core/did_methods/did_peer/src/error.rs | 2 +- .../did_peer/src/peer_did/generic.rs | 2 +- .../did_methods/did_peer/src/peer_did/mod.rs | 2 +- .../did_peer/src/peer_did/numalgos/mod.rs | 2 +- .../peer_did/numalgos/numalgo2/encoding.rs | 40 ++- .../src/peer_did/numalgos/numalgo2/helpers.rs | 2 +- .../numalgos/numalgo2/verification_method.rs | 4 +- .../did_peer/src/peer_did/numalgos/traits.rs | 2 +- .../did_peer/src/peer_did/parse.rs | 2 +- .../did_peer/src/peer_did/validate.rs | 2 +- .../did_methods/did_peer/src/resolver/mod.rs | 2 +- did_core/did_methods/did_peer/tests/demo.rs | 2 +- .../src/dereferencing/dereferencer.rs | 2 +- .../src/dereferencing/utils.rs | 4 +- .../did_resolver_sov/src/error/parsing.rs | 8 +- .../did_resolver_sov/src/reader/mod.rs | 2 +- .../src/resolution/resolver.rs | 2 +- .../did_resolver_sov/src/resolution/utils.rs | 2 +- .../did_resolver_sov/tests/resolution.rs | 2 +- .../src/resolution/resolver.rs | 2 +- .../did_resolver_web/tests/resolution.rs | 2 +- did_core/did_parser/Cargo.toml | 10 - did_core/did_parser/README.md | 23 -- did_core/did_parser/examples/demo.rs | 19 - did_core/did_parser/src/did.rs | 122 ------- did_core/did_parser/src/did_url.rs | 250 -------------- did_core/did_parser/src/error.rs | 16 - did_core/did_parser/src/lib.rs | 12 - did_core/did_parser/src/utils/mod.rs | 1 - did_core/did_parser/src/utils/parse.rs | 183 ---------- did_core/did_parser/tests/did/mod.rs | 2 - did_core/did_parser/tests/did/negative.rs | 20 -- did_core/did_parser/tests/did/positive.rs | 35 -- did_core/did_parser/tests/did_url/mod.rs | 2 - did_core/did_parser/tests/did_url/negative.rs | 28 -- did_core/did_parser/tests/did_url/positive.rs | 326 ------------------ did_core/did_parser/tests/lib.rs | 2 - did_core/did_parser_nom/src/did/mod.rs | 2 +- did_core/did_parser_nom/src/error.rs | 2 +- did_core/did_resolver/Cargo.toml | 2 +- did_core/did_resolver/src/lib.rs | 2 +- .../src/shared_types/did_document_metadata.rs | 2 +- .../src/traits/dereferenceable/mod.rs | 2 +- .../did_resolver/src/traits/resolvable/mod.rs | 2 +- did_core/did_resolver_registry/src/lib.rs | 2 +- justfile | 2 +- 113 files changed, 152 insertions(+), 1188 deletions(-) delete mode 100644 did_core/did_parser/Cargo.toml delete mode 100644 did_core/did_parser/README.md delete mode 100644 did_core/did_parser/examples/demo.rs delete mode 100644 did_core/did_parser/src/did.rs delete mode 100644 did_core/did_parser/src/did_url.rs delete mode 100644 did_core/did_parser/src/error.rs delete mode 100644 did_core/did_parser/src/lib.rs delete mode 100644 did_core/did_parser/src/utils/mod.rs delete mode 100644 did_core/did_parser/src/utils/parse.rs delete mode 100644 did_core/did_parser/tests/did/mod.rs delete mode 100644 did_core/did_parser/tests/did/negative.rs delete mode 100644 did_core/did_parser/tests/did/positive.rs delete mode 100644 did_core/did_parser/tests/did_url/mod.rs delete mode 100644 did_core/did_parser/tests/did_url/negative.rs delete mode 100644 did_core/did_parser/tests/did_url/positive.rs delete mode 100644 did_core/did_parser/tests/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 3854e8ce77..e56bc1bd66 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -492,7 +492,7 @@ dependencies = [ "derive_builder", "did_doc", "did_key", - "did_parser", + "did_parser_nom", "did_peer", "did_resolver", "did_resolver_registry", @@ -533,7 +533,7 @@ dependencies = [ "async-trait", "bitvec", "bs58 0.5.0", - "did_parser", + "did_parser_nom", "futures", "indy-api-types", "indy-credx", @@ -1788,11 +1788,14 @@ dependencies = [ "base64", "bs58 0.5.0", "did_key", - "did_parser", + "did_parser_nom", "display_as_json", + "env_logger 0.10.0", "hex", + "log", "multibase", "pem", + "pretty_assertions", "public_key", "serde", "serde_json", @@ -1806,21 +1809,13 @@ dependencies = [ name = "did_key" version = "0.1.0" dependencies = [ - "did_parser", + "did_parser_nom", "public_key", "serde", "serde_json", "thiserror", ] -[[package]] -name = "did_parser" -version = "0.1.0" -dependencies = [ - "serde", - "shared", -] - [[package]] name = "did_parser_nom" version = "0.1.0" @@ -1838,9 +1833,11 @@ dependencies = [ "base64", "bs58 0.5.0", "did_doc", - "did_parser", + "did_parser_nom", "did_resolver", "display_as_json", + "env_logger 0.10.0", + "log", "multibase", "once_cell", "pretty_assertions", @@ -1862,7 +1859,7 @@ dependencies = [ "async-trait", "chrono", "did_doc", - "did_parser", + "did_parser_nom", "serde", "serde_json", ] @@ -3414,7 +3411,7 @@ version = "0.62.0" dependencies = [ "chrono", "derive_more", - "did_parser", + "did_parser_nom", "diddoc_legacy", "display_as_json", "isolang", @@ -5251,7 +5248,7 @@ dependencies = [ "aries_vcx_core", "async-trait", "chrono", - "did_parser", + "did_parser_nom", "env_logger 0.10.0", "lazy_static", "log", @@ -5655,7 +5652,7 @@ dependencies = [ "android_logger", "aries_vcx", "async-trait", - "did_parser", + "did_parser_nom", "diddoc_legacy", "log", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index 596fc7dd09..3fb5c94cb1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,6 @@ members = [ "did_core/did_doc", "did_core/did_methods/did_peer", "did_core/did_methods/did_key", - "did_core/did_parser", "did_core/did_parser_nom", "did_core/did_resolver", "did_core/did_resolver_registry", diff --git a/README.md b/README.md index dbde69e6dd..a48f4d268b 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ The repository contains Rust crates to build - [`did_doc`](did_core/did_doc) - Building and parsing [DID Documents](https://w3c.github.io/did-core/) ## Did methods implementation - - [`did_parser`](did_core/did_parser) - Building and parsing [DIDs](https://w3c.github.io/did-core/) + - [`did_parser`](did_core/did_parser_nom) - Building and parsing [DIDs](https://w3c.github.io/did-core/) - [`did_peer`](did_core/did_methods/did_peer) - https://identity.foundation/peer-did-method-spec/ - [`did_sov`](did_core/did_methods/did_resolver_sov) - https://sovrin-foundation.github.io/sovrin/spec/did-method-spec-template.html - [`did_web`](did_core/did_methods/did_resolver_web) - https://w3c-ccg.github.io/did-method-web/ diff --git a/aries/agents/aath-backchannel/src/controllers/credential_definition.rs b/aries/agents/aath-backchannel/src/controllers/credential_definition.rs index 63818fcb5b..dfd58229d3 100644 --- a/aries/agents/aath-backchannel/src/controllers/credential_definition.rs +++ b/aries/agents/aath-backchannel/src/controllers/credential_definition.rs @@ -4,7 +4,7 @@ use actix_web::{get, post, web, Responder}; use anoncreds_types::data_types::identifiers::{ cred_def_id::CredentialDefinitionId, schema_id::SchemaId, }; -use aries_vcx_agent::aries_vcx::did_parser::Did; +use aries_vcx_agent::aries_vcx::did_parser_nom::Did; use reqwest::multipart; use crate::{ diff --git a/aries/agents/aath-backchannel/src/controllers/did_exchange.rs b/aries/agents/aath-backchannel/src/controllers/did_exchange.rs index 3903154e99..62bd3d6273 100644 --- a/aries/agents/aath-backchannel/src/controllers/did_exchange.rs +++ b/aries/agents/aath-backchannel/src/controllers/did_exchange.rs @@ -2,7 +2,7 @@ use std::sync::RwLock; use actix_web::{get, post, web, Responder}; use aries_vcx_agent::aries_vcx::{ - did_parser::Did, + did_parser_nom::Did, messages::{msg_fields::protocols::did_exchange::DidExchange, AriesMessage}, protocols::did_exchange::state_machine::requester::helpers::invitation_get_first_did_service, }; diff --git a/aries/agents/aath-backchannel/src/error.rs b/aries/agents/aath-backchannel/src/error.rs index 39c152f950..8aa2ee7a3f 100644 --- a/aries/agents/aath-backchannel/src/error.rs +++ b/aries/agents/aath-backchannel/src/error.rs @@ -1,7 +1,7 @@ use actix_web::{error, http::StatusCode, HttpResponse, HttpResponseBuilder}; use aries_vcx_agent::{ aries_vcx, - aries_vcx::{did_parser::ParseError, messages::error::MsgTypeError}, + aries_vcx::{did_parser_nom::ParseError, messages::error::MsgTypeError}, AgentError, }; use derive_more::{Display, Error}; diff --git a/aries/agents/aries-vcx-agent/src/agent/init.rs b/aries/agents/aries-vcx-agent/src/agent/init.rs index 60fff5510c..f18e5004c9 100644 --- a/aries/agents/aries-vcx-agent/src/agent/init.rs +++ b/aries/agents/aries-vcx-agent/src/agent/init.rs @@ -6,7 +6,7 @@ use aries_vcx::{ transactions::{add_new_did, write_endpoint}, }, did_doc::schema::service::typed::ServiceType, - did_parser::Did, + did_parser_nom::Did, global::settings::DEFAULT_LINK_SECRET_ALIAS, }; use aries_vcx_core::{ diff --git a/aries/agents/aries-vcx-agent/src/error/convertors.rs b/aries/agents/aries-vcx-agent/src/error/convertors.rs index 195acb16db..eeff0147a2 100644 --- a/aries/agents/aries-vcx-agent/src/error/convertors.rs +++ b/aries/agents/aries-vcx-agent/src/error/convertors.rs @@ -46,8 +46,8 @@ impl From for AgentError { } } -impl From for AgentError { - fn from(err: aries_vcx::did_parser::ParseError) -> Self { +impl From for AgentError { + fn from(err: aries_vcx::did_parser_nom::ParseError) -> Self { let kind = AgentErrorKind::GenericAriesVcxError; let message = format!("DidParseError; err: {:?}", err.to_string()); AgentError { message, kind } diff --git a/aries/agents/aries-vcx-agent/src/handlers/credential_definition.rs b/aries/agents/aries-vcx-agent/src/handlers/credential_definition.rs index acc61e9556..39fc67b0a3 100644 --- a/aries/agents/aries-vcx-agent/src/handlers/credential_definition.rs +++ b/aries/agents/aries-vcx-agent/src/handlers/credential_definition.rs @@ -1,7 +1,7 @@ use std::sync::{Arc, Mutex}; use anoncreds_types::data_types::identifiers::schema_id::SchemaId; -use aries_vcx::{common::primitives::credential_definition::CredentialDef, did_parser::Did}; +use aries_vcx::{common::primitives::credential_definition::CredentialDef, did_parser_nom::Did}; use aries_vcx_core::{ anoncreds::credx_anoncreds::IndyCredxAnonCreds, ledger::indy_vdr_ledger::{DefaultIndyLedgerRead, DefaultIndyLedgerWrite}, diff --git a/aries/agents/aries-vcx-agent/src/handlers/did_exchange.rs b/aries/agents/aries-vcx-agent/src/handlers/did_exchange.rs index ef5b81e5e2..cb81274fab 100644 --- a/aries/agents/aries-vcx-agent/src/handlers/did_exchange.rs +++ b/aries/agents/aries-vcx-agent/src/handlers/did_exchange.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use aries_vcx::{ did_doc::schema::{service::typed::ServiceType, types::uri::Uri}, - did_parser::Did, + did_parser_nom::Did, messages::{ msg_fields::protocols::{ did_exchange::{ diff --git a/aries/agents/aries-vcx-agent/src/handlers/holder.rs b/aries/agents/aries-vcx-agent/src/handlers/holder.rs index 1285e2c434..53d70dc62b 100644 --- a/aries/agents/aries-vcx-agent/src/handlers/holder.rs +++ b/aries/agents/aries-vcx-agent/src/handlers/holder.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use aries_vcx::{ - did_parser::Did, + did_parser_nom::Did, handlers::issuance::holder::Holder, messages::{ msg_fields::protocols::cred_issuance::v1::{ diff --git a/aries/agents/aries-vcx-agent/src/handlers/revocation_registry.rs b/aries/agents/aries-vcx-agent/src/handlers/revocation_registry.rs index eb67bba357..2032f3b98f 100644 --- a/aries/agents/aries-vcx-agent/src/handlers/revocation_registry.rs +++ b/aries/agents/aries-vcx-agent/src/handlers/revocation_registry.rs @@ -4,7 +4,7 @@ use std::{ }; use anoncreds_types::data_types::identifiers::cred_def_id::CredentialDefinitionId; -use aries_vcx::{common::primitives::revocation_registry::RevocationRegistry, did_parser::Did}; +use aries_vcx::{common::primitives::revocation_registry::RevocationRegistry, did_parser_nom::Did}; use aries_vcx_core::{ anoncreds::credx_anoncreds::IndyCredxAnonCreds, ledger::indy_vdr_ledger::{DefaultIndyLedgerRead, DefaultIndyLedgerWrite}, diff --git a/aries/agents/aries-vcx-agent/src/handlers/schema.rs b/aries/agents/aries-vcx-agent/src/handlers/schema.rs index 95e1f9baf8..155573e65c 100644 --- a/aries/agents/aries-vcx-agent/src/handlers/schema.rs +++ b/aries/agents/aries-vcx-agent/src/handlers/schema.rs @@ -1,6 +1,6 @@ use std::sync::{Arc, Mutex}; -use aries_vcx::{common::primitives::credential_schema::Schema, did_parser::Did}; +use aries_vcx::{common::primitives::credential_schema::Schema, did_parser_nom::Did}; use aries_vcx_core::{ anoncreds::credx_anoncreds::IndyCredxAnonCreds, ledger::{ diff --git a/aries/aries_vcx/Cargo.toml b/aries/aries_vcx/Cargo.toml index 3241a99309..d4ad97e267 100644 --- a/aries/aries_vcx/Cargo.toml +++ b/aries/aries_vcx/Cargo.toml @@ -43,7 +43,7 @@ diddoc_legacy = { path = "../misc/legacy/diddoc_legacy" } aries_vcx_core = { path = "../aries_vcx_core" } shared = { path = "../misc/shared" } anoncreds_types = { path = "../misc/anoncreds_types" } -did_parser = { path = "../../did_core/did_parser" } +did_parser_nom = { path = "../../did_core/did_parser_nom" } did_resolver = { path = "../../did_core/did_resolver" } did_doc = { path = "../../did_core/did_doc" } did_key = { path = "../../did_core/did_methods/did_key" } diff --git a/aries/aries_vcx/src/common/keys.rs b/aries/aries_vcx/src/common/keys.rs index 4e65789763..158a2d13d2 100644 --- a/aries/aries_vcx/src/common/keys.rs +++ b/aries/aries_vcx/src/common/keys.rs @@ -2,7 +2,7 @@ use aries_vcx_core::{ ledger::base_ledger::{IndyLedgerRead, IndyLedgerWrite}, wallet::base_wallet::BaseWallet, }; -use did_parser::Did; +use did_parser_nom::Did; use public_key::{Key, KeyType}; use serde_json::Value; diff --git a/aries/aries_vcx/src/common/ledger/transactions.rs b/aries/aries_vcx/src/common/ledger/transactions.rs index a3798ce5dd..182024476e 100644 --- a/aries/aries_vcx/src/common/ledger/transactions.rs +++ b/aries/aries_vcx/src/common/ledger/transactions.rs @@ -8,7 +8,7 @@ use aries_vcx_core::{ wallet::base_wallet::BaseWallet, }; use did_doc::schema::service::Service; -use did_parser::Did; +use did_parser_nom::Did; use diddoc_legacy::aries::service::AriesService; use messages::msg_fields::protocols::out_of_band::invitation::OobService; use public_key::{Key, KeyType}; diff --git a/aries/aries_vcx/src/common/primitives/credential_definition.rs b/aries/aries_vcx/src/common/primitives/credential_definition.rs index 11b9cb6eb5..60ab4f5bb0 100644 --- a/aries/aries_vcx/src/common/primitives/credential_definition.rs +++ b/aries/aries_vcx/src/common/primitives/credential_definition.rs @@ -13,7 +13,7 @@ use aries_vcx_core::{ ledger::base_ledger::{AnoncredsLedgerRead, AnoncredsLedgerWrite}, wallet::base_wallet::BaseWallet, }; -use did_parser::Did; +use did_parser_nom::Did; use crate::{ errors::error::{AriesVcxError, AriesVcxErrorKind, VcxResult}, diff --git a/aries/aries_vcx/src/common/primitives/credential_schema.rs b/aries/aries_vcx/src/common/primitives/credential_schema.rs index feae661ebf..0ba87c5c7c 100644 --- a/aries/aries_vcx/src/common/primitives/credential_schema.rs +++ b/aries/aries_vcx/src/common/primitives/credential_schema.rs @@ -5,7 +5,7 @@ use aries_vcx_core::{ anoncreds::base_anoncreds::BaseAnonCreds, global::settings::DEFAULT_SERIALIZE_VERSION, ledger::base_ledger::AnoncredsLedgerWrite, wallet::base_wallet::BaseWallet, }; -use did_parser::Did; +use did_parser_nom::Did; use super::credential_definition::PublicEntityStateType; use crate::{ diff --git a/aries/aries_vcx/src/common/primitives/revocation_registry.rs b/aries/aries_vcx/src/common/primitives/revocation_registry.rs index e577ac1699..bb1bd2f7b9 100644 --- a/aries/aries_vcx/src/common/primitives/revocation_registry.rs +++ b/aries/aries_vcx/src/common/primitives/revocation_registry.rs @@ -10,7 +10,7 @@ use aries_vcx_core::{ ledger::base_ledger::{AnoncredsLedgerRead, AnoncredsLedgerWrite}, wallet::base_wallet::BaseWallet, }; -use did_parser::Did; +use did_parser_nom::Did; use super::credential_definition::PublicEntityStateType; use crate::errors::error::{AriesVcxError, AriesVcxErrorKind, VcxResult}; diff --git a/aries/aries_vcx/src/errors/mapping_others.rs b/aries/aries_vcx/src/errors/mapping_others.rs index 6be3052e92..a8a0e5af55 100644 --- a/aries/aries_vcx/src/errors/mapping_others.rs +++ b/aries/aries_vcx/src/errors/mapping_others.rs @@ -34,8 +34,8 @@ impl From for AriesVcxError { } } -impl From for AriesVcxError { - fn from(err: did_parser::ParseError) -> Self { +impl From for AriesVcxError { + fn from(err: did_parser_nom::ParseError) -> Self { AriesVcxError::from_msg(AriesVcxErrorKind::InvalidState, err.to_string()) } } diff --git a/aries/aries_vcx/src/handlers/issuance/holder.rs b/aries/aries_vcx/src/handlers/issuance/holder.rs index d1fd135f3c..3e34741e4a 100644 --- a/aries/aries_vcx/src/handlers/issuance/holder.rs +++ b/aries/aries_vcx/src/handlers/issuance/holder.rs @@ -3,7 +3,7 @@ use aries_vcx_core::{ wallet::base_wallet::BaseWallet, }; use chrono::Utc; -use did_parser::Did; +use did_parser_nom::Did; use messages::{ decorators::{thread::Thread, timing::Timing}, msg_fields::protocols::{ diff --git a/aries/aries_vcx/src/lib.rs b/aries/aries_vcx/src/lib.rs index a5e03f47c5..a9604cb599 100644 --- a/aries/aries_vcx/src/lib.rs +++ b/aries/aries_vcx/src/lib.rs @@ -21,7 +21,7 @@ extern crate derive_builder; pub extern crate aries_vcx_core; pub extern crate did_doc; -pub extern crate did_parser; +pub extern crate did_parser_nom; pub extern crate did_peer; pub extern crate messages; diff --git a/aries/aries_vcx/src/protocols/did_exchange/mod.rs b/aries/aries_vcx/src/protocols/did_exchange/mod.rs index 71769b1408..d146ff29a5 100644 --- a/aries/aries_vcx/src/protocols/did_exchange/mod.rs +++ b/aries/aries_vcx/src/protocols/did_exchange/mod.rs @@ -4,7 +4,7 @@ use did_doc::schema::{ did_doc::DidDocument, verification_method::{VerificationMethod, VerificationMethodKind}, }; -use did_parser::DidUrl; +use did_parser_nom::DidUrl; use did_resolver_registry::ResolverRegistry; use messages::msg_fields::protocols::out_of_band::invitation::{ Invitation as OobInvitation, OobService, diff --git a/aries/aries_vcx/src/protocols/did_exchange/state_machine/generic/mod.rs b/aries/aries_vcx/src/protocols/did_exchange/state_machine/generic/mod.rs index d680262937..22de7d031c 100644 --- a/aries/aries_vcx/src/protocols/did_exchange/state_machine/generic/mod.rs +++ b/aries/aries_vcx/src/protocols/did_exchange/state_machine/generic/mod.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use aries_vcx_core::wallet::base_wallet::BaseWallet; use did_doc::schema::did_doc::DidDocument; -use did_parser::Did; +use did_parser_nom::Did; use did_peer::peer_did::{numalgos::numalgo2::Numalgo2, PeerDid}; use did_resolver_registry::ResolverRegistry; use messages::msg_fields::protocols::did_exchange::{ diff --git a/aries/aries_vcx/src/protocols/did_exchange/state_machine/helpers.rs b/aries/aries_vcx/src/protocols/did_exchange/state_machine/helpers.rs index 2b054d4e37..fe35f59295 100644 --- a/aries/aries_vcx/src/protocols/did_exchange/state_machine/helpers.rs +++ b/aries/aries_vcx/src/protocols/did_exchange/state_machine/helpers.rs @@ -10,7 +10,7 @@ use did_doc::schema::{ verification_method::{VerificationMethod, VerificationMethodType}, }; use did_key::DidKey; -use did_parser::{Did, DidUrl}; +use did_parser_nom::{Did, DidUrl}; use did_peer::peer_did::{numalgos::numalgo2::Numalgo2, PeerDid}; use messages::{ decorators::{ diff --git a/aries/aries_vcx/src/protocols/did_exchange/state_machine/requester/helpers.rs b/aries/aries_vcx/src/protocols/did_exchange/state_machine/requester/helpers.rs index b6e75c416e..e658130832 100644 --- a/aries/aries_vcx/src/protocols/did_exchange/state_machine/requester/helpers.rs +++ b/aries/aries_vcx/src/protocols/did_exchange/state_machine/requester/helpers.rs @@ -1,5 +1,5 @@ use chrono::Utc; -use did_parser::Did; +use did_parser_nom::Did; use messages::{ decorators::{ thread::{Thread, ThreadGoalCode}, diff --git a/aries/aries_vcx/src/protocols/did_exchange/state_machine/requester/request_sent/mod.rs b/aries/aries_vcx/src/protocols/did_exchange/state_machine/requester/request_sent/mod.rs index 51a049ca8d..be668153e5 100644 --- a/aries/aries_vcx/src/protocols/did_exchange/state_machine/requester/request_sent/mod.rs +++ b/aries/aries_vcx/src/protocols/did_exchange/state_machine/requester/request_sent/mod.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use did_parser::Did; +use did_parser_nom::Did; use did_peer::{ peer_did::{numalgos::numalgo2::Numalgo2, PeerDid}, resolver::options::PublicKeyEncoding, diff --git a/aries/aries_vcx/src/protocols/issuance/holder/state_machine.rs b/aries/aries_vcx/src/protocols/issuance/holder/state_machine.rs index bb5de08afa..1788c36f68 100644 --- a/aries/aries_vcx/src/protocols/issuance/holder/state_machine.rs +++ b/aries/aries_vcx/src/protocols/issuance/holder/state_machine.rs @@ -5,7 +5,7 @@ use aries_vcx_core::{ wallet::base_wallet::BaseWallet, }; use chrono::Utc; -use did_parser::Did; +use did_parser_nom::Did; use messages::{ decorators::{thread::Thread, timing::Timing}, msg_fields::protocols::{ diff --git a/aries/aries_vcx/tests/test_did_exchange.rs b/aries/aries_vcx/tests/test_did_exchange.rs index 79dc1a323d..46f9f88dbb 100644 --- a/aries/aries_vcx/tests/test_did_exchange.rs +++ b/aries/aries_vcx/tests/test_did_exchange.rs @@ -22,7 +22,7 @@ use did_doc::schema::{ service::typed::{didcommv1::ServiceDidCommV1, ServiceType}, types::uri::Uri, }; -use did_parser::Did; +use did_parser_nom::Did; use did_peer::{ peer_did::{numalgos::numalgo2::Numalgo2, PeerDid}, resolver::{options::PublicKeyEncoding, PeerDidResolutionOptions, PeerDidResolver}, diff --git a/aries/aries_vcx/tests/test_pool.rs b/aries/aries_vcx/tests/test_pool.rs index a8adff3a34..2a1074f92f 100644 --- a/aries/aries_vcx/tests/test_pool.rs +++ b/aries/aries_vcx/tests/test_pool.rs @@ -29,7 +29,7 @@ use aries_vcx_core::{ }, wallet::base_wallet::{did_wallet::DidWallet, BaseWallet}, }; -use did_parser::Did; +use did_parser_nom::Did; use diddoc_legacy::aries::service::AriesService; use serde_json::json; use test_utils::{ diff --git a/aries/aries_vcx/tests/test_verifier.rs b/aries/aries_vcx/tests/test_verifier.rs index 13afa134f9..8abf6568c6 100644 --- a/aries/aries_vcx/tests/test_verifier.rs +++ b/aries/aries_vcx/tests/test_verifier.rs @@ -24,7 +24,7 @@ use aries_vcx_core::{ ledger::base_ledger::{AnoncredsLedgerRead, AnoncredsLedgerWrite}, wallet::base_wallet::BaseWallet, }; -use did_parser::Did; +use did_parser_nom::Did; use serde_json::json; use test_utils::{constants::DEFAULT_SCHEMA_ATTRS, devsetup::build_setup_profile}; diff --git a/aries/aries_vcx/tests/utils/mod.rs b/aries/aries_vcx/tests/utils/mod.rs index aeea26c033..90032d0d3b 100644 --- a/aries/aries_vcx/tests/utils/mod.rs +++ b/aries/aries_vcx/tests/utils/mod.rs @@ -23,7 +23,7 @@ use aries_vcx_core::{ }, wallet::base_wallet::BaseWallet, }; -use did_parser::Did; +use did_parser_nom::Did; use test_utils::{ constants::TEST_TAILS_URL, random::{generate_random_schema_name, generate_random_schema_version}, diff --git a/aries/aries_vcx/tests/utils/scenarios/credential_issuance.rs b/aries/aries_vcx/tests/utils/scenarios/credential_issuance.rs index dcf51802ff..79504a7139 100644 --- a/aries/aries_vcx/tests/utils/scenarios/credential_issuance.rs +++ b/aries/aries_vcx/tests/utils/scenarios/credential_issuance.rs @@ -24,7 +24,7 @@ use aries_vcx_core::{ }, wallet::base_wallet::BaseWallet, }; -use did_parser::Did; +use did_parser_nom::Did; use messages::msg_fields::protocols::{ cred_issuance::v1::{ offer_credential::OfferCredentialV1, propose_credential::ProposeCredentialV1, diff --git a/aries/aries_vcx/tests/utils/scenarios/data.rs b/aries/aries_vcx/tests/utils/scenarios/data.rs index c4fdfd72de..828a455acd 100644 --- a/aries/aries_vcx/tests/utils/scenarios/data.rs +++ b/aries/aries_vcx/tests/utils/scenarios/data.rs @@ -7,7 +7,7 @@ use anoncreds_types::{ }, utils::query::Query, }; -use did_parser::Did; +use did_parser_nom::Did; use messages::{ misc::MimeType, msg_fields::protocols::{ diff --git a/aries/aries_vcx/tests/utils/test_agent.rs b/aries/aries_vcx/tests/utils/test_agent.rs index 684d82a0aa..774a3da7bd 100644 --- a/aries/aries_vcx/tests/utils/test_agent.rs +++ b/aries/aries_vcx/tests/utils/test_agent.rs @@ -10,7 +10,7 @@ use aries_vcx_core::{ }, wallet::base_wallet::{did_wallet::DidWallet, BaseWallet}, }; -use did_parser::Did; +use did_parser_nom::Did; use test_utils::{ constants::TRUSTEE_SEED, devsetup::{ diff --git a/aries/aries_vcx_core/Cargo.toml b/aries/aries_vcx_core/Cargo.toml index 348f3b1d44..7bd931b00c 100644 --- a/aries/aries_vcx_core/Cargo.toml +++ b/aries/aries_vcx_core/Cargo.toml @@ -25,7 +25,7 @@ anoncreds = { git = "https://github.com/mirgee/anoncreds-rs.git", rev = "a85d739 anoncreds_types = { path = "../misc/anoncreds_types" } libvdrtools = { path = "../misc/legacy/libvdrtools", optional = true } indy-api-types = { path = "../misc/legacy/libvdrtools/indy-api-types", optional = true } -did_parser = { path = "../../did_core/did_parser" } +did_parser_nom = { path = "../../did_core/did_parser_nom" } async-trait = "0.1.68" futures = { version = "0.3", default-features = false } serde_json = "1.0.95" diff --git a/aries/aries_vcx_core/src/anoncreds/anoncreds/mod.rs b/aries/aries_vcx_core/src/anoncreds/anoncreds/mod.rs index ec29799aa3..b81c798f59 100644 --- a/aries/aries_vcx_core/src/anoncreds/anoncreds/mod.rs +++ b/aries/aries_vcx_core/src/anoncreds/anoncreds/mod.rs @@ -62,7 +62,7 @@ use anoncreds_types::data_types::{ }; use async_trait::async_trait; use bitvec::bitvec; -use did_parser::Did; +use did_parser_nom::Did; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use serde_json::{json, Value}; use time::OffsetDateTime; diff --git a/aries/aries_vcx_core/src/anoncreds/base_anoncreds.rs b/aries/aries_vcx_core/src/anoncreds/base_anoncreds.rs index acfe1a84d9..836c93e5f2 100644 --- a/aries/aries_vcx_core/src/anoncreds/base_anoncreds.rs +++ b/aries/aries_vcx_core/src/anoncreds/base_anoncreds.rs @@ -25,7 +25,7 @@ use anoncreds_types::data_types::{ }, }; use async_trait::async_trait; -use did_parser::Did; +use did_parser_nom::Did; use crate::{errors::error::VcxCoreResult, wallet::base_wallet::BaseWallet}; diff --git a/aries/aries_vcx_core/src/anoncreds/credx_anoncreds/mod.rs b/aries/aries_vcx_core/src/anoncreds/credx_anoncreds/mod.rs index 06978f96af..826d76ca8c 100644 --- a/aries/aries_vcx_core/src/anoncreds/credx_anoncreds/mod.rs +++ b/aries/aries_vcx_core/src/anoncreds/credx_anoncreds/mod.rs @@ -50,7 +50,7 @@ use credx::{ SchemaId as CredxSchemaId, }, }; -use did_parser::Did; +use did_parser_nom::Did; use indy_credx as credx; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use serde_json::{json, Value}; diff --git a/aries/aries_vcx_core/src/anoncreds/credx_anoncreds/type_conversion.rs b/aries/aries_vcx_core/src/anoncreds/credx_anoncreds/type_conversion.rs index e7f08f360b..be3a370dc8 100644 --- a/aries/aries_vcx_core/src/anoncreds/credx_anoncreds/type_conversion.rs +++ b/aries/aries_vcx_core/src/anoncreds/credx_anoncreds/type_conversion.rs @@ -32,7 +32,7 @@ use anoncreds_types::data_types::{ revocation_state::CredentialRevocationState as OurCredentialRevocationState, }, }; -use did_parser::Did; +use did_parser_nom::Did; use indy_credx::{ issuer::create_schema, types::{ diff --git a/aries/aries_vcx_core/src/errors/mapping_others.rs b/aries/aries_vcx_core/src/errors/mapping_others.rs index 922546f63e..be611c87f0 100644 --- a/aries/aries_vcx_core/src/errors/mapping_others.rs +++ b/aries/aries_vcx_core/src/errors/mapping_others.rs @@ -1,6 +1,6 @@ use std::sync::PoisonError; -use did_parser::ParseError; +use did_parser_nom::ParseError; use public_key::PublicKeyError; use crate::errors::error::{AriesVcxCoreError, AriesVcxCoreErrorKind}; diff --git a/aries/aries_vcx_core/src/ledger/base_ledger.rs b/aries/aries_vcx_core/src/ledger/base_ledger.rs index 3d574fe8f1..12a6f80b7f 100644 --- a/aries/aries_vcx_core/src/ledger/base_ledger.rs +++ b/aries/aries_vcx_core/src/ledger/base_ledger.rs @@ -12,7 +12,7 @@ use anoncreds_types::data_types::{ }, }; use async_trait::async_trait; -use did_parser::Did; +use did_parser_nom::Did; use indy_vdr::ledger::constants::UpdateRole; use public_key::Key; use serde::Serialize; diff --git a/aries/aries_vcx_core/src/ledger/common.rs b/aries/aries_vcx_core/src/ledger/common.rs index 726642eb97..c320d109f4 100644 --- a/aries/aries_vcx_core/src/ledger/common.rs +++ b/aries/aries_vcx_core/src/ledger/common.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use did_parser::Did; +use did_parser_nom::Did; use serde::Deserialize; use crate::errors::error::{AriesVcxCoreError, AriesVcxCoreErrorKind, VcxCoreResult}; diff --git a/aries/aries_vcx_core/src/ledger/indy_vdr_ledger.rs b/aries/aries_vcx_core/src/ledger/indy_vdr_ledger.rs index 2d52ead797..9017198de6 100644 --- a/aries/aries_vcx_core/src/ledger/indy_vdr_ledger.rs +++ b/aries/aries_vcx_core/src/ledger/indy_vdr_ledger.rs @@ -16,7 +16,7 @@ use anoncreds_types::data_types::{ }, }; use async_trait::async_trait; -use did_parser::Did; +use did_parser_nom::Did; pub use indy_ledger_response_parser::GetTxnAuthorAgreementData; use indy_ledger_response_parser::{ ResponseParser, RevocationRegistryDeltaInfo, RevocationRegistryInfo, diff --git a/aries/aries_vcx_core/src/ledger/type_conversion.rs b/aries/aries_vcx_core/src/ledger/type_conversion.rs index c9740c82a4..7676af4786 100644 --- a/aries/aries_vcx_core/src/ledger/type_conversion.rs +++ b/aries/aries_vcx_core/src/ledger/type_conversion.rs @@ -20,7 +20,7 @@ use anoncreds_types::data_types::{ schema::Schema as OurSchema, }, }; -use did_parser::Did; +use did_parser_nom::Did; use indy_vdr::{ ledger::{ identifiers::{ diff --git a/aries/messages/Cargo.toml b/aries/messages/Cargo.toml index 3674b26aaf..58267b9e32 100644 --- a/aries/messages/Cargo.toml +++ b/aries/messages/Cargo.toml @@ -24,5 +24,5 @@ typed-builder = "0.16.0" messages_macros = { path = "../messages_macros" } diddoc_legacy = { path = "../misc/legacy/diddoc_legacy" } shared = { path = "../misc/shared" } -did_parser = { path = "../../did_core/did_parser" } +did_parser_nom = { path = "../../did_core/did_parser_nom" } display_as_json = { path = "../../misc/display_as_json" } diff --git a/aries/messages/src/msg_fields/protocols/connection/invitation/mod.rs b/aries/messages/src/msg_fields/protocols/connection/invitation/mod.rs index 120e2d7c53..c41204e50f 100644 --- a/aries/messages/src/msg_fields/protocols/connection/invitation/mod.rs +++ b/aries/messages/src/msg_fields/protocols/connection/invitation/mod.rs @@ -2,7 +2,7 @@ pub mod pairwise; pub mod public; use derive_more::From; -use did_parser::Did; +use did_parser_nom::Did; use serde::{Deserialize, Serialize}; use typed_builder::TypedBuilder; use url::Url; diff --git a/aries/messages/src/msg_fields/protocols/connection/invitation/pairwise.rs b/aries/messages/src/msg_fields/protocols/connection/invitation/pairwise.rs index 2dbcfb04ad..ac3fe8c828 100644 --- a/aries/messages/src/msg_fields/protocols/connection/invitation/pairwise.rs +++ b/aries/messages/src/msg_fields/protocols/connection/invitation/pairwise.rs @@ -1,4 +1,4 @@ -use did_parser::Did; +use did_parser_nom::Did; use serde::{Deserialize, Serialize}; use typed_builder::TypedBuilder; use url::Url; diff --git a/aries/misc/test_utils/Cargo.toml b/aries/misc/test_utils/Cargo.toml index 87d05da471..f152ad888b 100644 --- a/aries/misc/test_utils/Cargo.toml +++ b/aries/misc/test_utils/Cargo.toml @@ -17,7 +17,7 @@ anoncreds = ["aries_vcx_core/anoncreds"] [dependencies] anoncreds_types = { path = "../../misc/anoncreds_types" } aries_vcx_core = { path = "../../aries_vcx_core" } -did_parser = { path = "../../../did_core/did_parser" } +did_parser_nom = { path = "../../../did_core/did_parser_nom" } public_key = { path = "../../../did_core/public_key" } lazy_static = "1" serde_json = "1" diff --git a/aries/misc/test_utils/src/devsetup.rs b/aries/misc/test_utils/src/devsetup.rs index 019426b223..4ddb2235a1 100644 --- a/aries/misc/test_utils/src/devsetup.rs +++ b/aries/misc/test_utils/src/devsetup.rs @@ -21,7 +21,7 @@ use aries_vcx_core::{ wallet::base_wallet::BaseWallet, }; use chrono::{DateTime, Duration, Utc}; -use did_parser::Did; +use did_parser_nom::Did; use log::{debug, info}; use crate::constants::{POOL1_TXN, TRUSTEE_SEED}; diff --git a/aries/misc/test_utils/src/mockdata/mock_anoncreds.rs b/aries/misc/test_utils/src/mockdata/mock_anoncreds.rs index 33d325908e..b1b71b2f0e 100644 --- a/aries/misc/test_utils/src/mockdata/mock_anoncreds.rs +++ b/aries/misc/test_utils/src/mockdata/mock_anoncreds.rs @@ -33,7 +33,7 @@ use aries_vcx_core::{ wallet::base_wallet::BaseWallet, }; use async_trait::async_trait; -use did_parser::Did; +use did_parser_nom::Did; use crate::constants::{ CREDENTIAL_JSON, CREDENTIAL_REQ_METADATA, CREDENTIAL_REQ_STRING, LARGE_NONCE, diff --git a/aries/misc/test_utils/src/mockdata/mock_ledger.rs b/aries/misc/test_utils/src/mockdata/mock_ledger.rs index 0b1a90a8d5..00a22ffb69 100644 --- a/aries/misc/test_utils/src/mockdata/mock_ledger.rs +++ b/aries/misc/test_utils/src/mockdata/mock_ledger.rs @@ -18,7 +18,7 @@ use aries_vcx_core::{ wallet::base_wallet::BaseWallet, }; use async_trait::async_trait; -use did_parser::Did; +use did_parser_nom::Did; use public_key::Key; use crate::constants::{ diff --git a/aries/wrappers/uniffi-aries-vcx/core/Cargo.toml b/aries/wrappers/uniffi-aries-vcx/core/Cargo.toml index d897d898f6..002eed95cf 100644 --- a/aries/wrappers/uniffi-aries-vcx/core/Cargo.toml +++ b/aries/wrappers/uniffi-aries-vcx/core/Cargo.toml @@ -31,7 +31,7 @@ thiserror = "1.0.38" serde_json = "1.0.91" serde = { version = "1.0.188", features = ["derive"] } async-trait = "0.1.64" -did_parser = { path = "../../../../did_core/did_parser" } +did_parser_nom = { path = "../../../../did_core/did_parser_nom" } diddoc_legacy = { path = "../../../misc/legacy/diddoc_legacy" } shared = { path = "../../../misc/shared" } url = "2.3.1" diff --git a/aries/wrappers/uniffi-aries-vcx/core/src/errors/mapping_from_others.rs b/aries/wrappers/uniffi-aries-vcx/core/src/errors/mapping_from_others.rs index c6cad85517..47676cf159 100644 --- a/aries/wrappers/uniffi-aries-vcx/core/src/errors/mapping_from_others.rs +++ b/aries/wrappers/uniffi-aries-vcx/core/src/errors/mapping_from_others.rs @@ -26,8 +26,8 @@ impl From for VcxUniFFIError { } } -impl From for VcxUniFFIError { - fn from(e: did_parser::ParseError) -> Self { +impl From for VcxUniFFIError { + fn from(e: did_parser_nom::ParseError) -> Self { VcxUniFFIError::StringParseError { error_msg: e.to_string(), } diff --git a/did_core/did_doc/Cargo.toml b/did_core/did_doc/Cargo.toml index 5743f444a7..9e2d293c47 100644 --- a/did_core/did_doc/Cargo.toml +++ b/did_core/did_doc/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [dependencies] base64 = "0.21.2" bs58 = "0.5.0" -did_parser = { path = "../did_parser" } +did_parser_nom = { path = "../did_parser_nom" } public_key = { path = "../public_key" } hex = "0.4.3" multibase = "0.9.1" @@ -19,3 +19,9 @@ display_as_json = { path = "../../misc/display_as_json" } did_key = { path = "../did_methods/did_key" } thiserror = "1.0.40" typed-builder = "0.16.0" +log = "0.4" + +[dev-dependencies] +pretty_assertions = "1.4.0" +env_logger = "0.10" + diff --git a/did_core/did_doc/src/lib.rs b/did_core/did_doc/src/lib.rs index 72b4934403..ef809985ec 100644 --- a/did_core/did_doc/src/lib.rs +++ b/did_core/did_doc/src/lib.rs @@ -5,4 +5,4 @@ extern crate serde_json; pub mod error; pub mod schema; -pub use did_parser; +pub use did_parser_nom; diff --git a/did_core/did_doc/src/schema/did_doc.rs b/did_core/did_doc/src/schema/did_doc.rs index 4b150d41e8..bfe509bf9c 100644 --- a/did_core/did_doc/src/schema/did_doc.rs +++ b/did_core/did_doc/src/schema/did_doc.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use did_parser::{Did, DidUrl}; +use did_parser_nom::{Did, DidUrl}; use display_as_json::Display; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -94,7 +94,6 @@ impl DidDocument { } pub fn dereference_key(&self, reference: &DidUrl) -> Option<&VerificationMethod> { - // TODO: Should check controller (if present) self.verification_method .iter() .find(|vm| vm.id().fragment() == reference.fragment()) @@ -369,7 +368,7 @@ mod tests { use std::str::FromStr; - use did_parser::{Did, DidUrl}; + use did_parser_nom::{Did, DidUrl}; use serde_json::Value; use crate::schema::{ diff --git a/did_core/did_doc/src/schema/legacy.rs b/did_core/did_doc/src/schema/legacy.rs index 4bc71bf0da..d335e5319e 100644 --- a/did_core/did_doc/src/schema/legacy.rs +++ b/did_core/did_doc/src/schema/legacy.rs @@ -1,5 +1,5 @@ use base64::{engine::general_purpose::STANDARD_NO_PAD, Engine}; -use did_parser::{Did, DidUrl}; +use did_parser_nom::{Did, DidUrl}; use public_key::{Key, KeyType}; use serde::{Deserialize, Serialize}; use serde_json::{json, Value}; diff --git a/did_core/did_doc/src/schema/service/mod.rs b/did_core/did_doc/src/schema/service/mod.rs index f1bab97f70..206e460378 100644 --- a/did_core/did_doc/src/schema/service/mod.rs +++ b/did_core/did_doc/src/schema/service/mod.rs @@ -162,7 +162,7 @@ impl Service { mod tests { use std::collections::HashMap; - use did_parser::DidUrl; + use did_parser_nom::DidUrl; use serde_json::json; use crate::schema::{ diff --git a/did_core/did_doc/src/schema/service/service_key_kind.rs b/did_core/did_doc/src/schema/service/service_key_kind.rs index 9f16100a89..17f14bace8 100644 --- a/did_core/did_doc/src/schema/service/service_key_kind.rs +++ b/did_core/did_doc/src/schema/service/service_key_kind.rs @@ -1,7 +1,7 @@ use std::fmt::Display; use did_key::DidKey; -use did_parser::DidUrl; +use did_parser_nom::DidUrl; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] diff --git a/did_core/did_doc/src/schema/verification_method/mod.rs b/did_core/did_doc/src/schema/verification_method/mod.rs index 013e1078fc..87ad93fec6 100644 --- a/did_core/did_doc/src/schema/verification_method/mod.rs +++ b/did_core/did_doc/src/schema/verification_method/mod.rs @@ -4,7 +4,7 @@ mod verification_method_kind; mod verification_method_type; use ::public_key::Key; -use did_parser::{Did, DidUrl}; +use did_parser_nom::{Did, DidUrl}; use serde::{Deserialize, Serialize}; pub use verification_method_kind::VerificationMethodKind; pub use verification_method_type::VerificationMethodType; diff --git a/did_core/did_doc/src/schema/verification_method/verification_method_kind.rs b/did_core/did_doc/src/schema/verification_method/verification_method_kind.rs index 2764e9c879..20b11b33f0 100644 --- a/did_core/did_doc/src/schema/verification_method/verification_method_kind.rs +++ b/did_core/did_doc/src/schema/verification_method/verification_method_kind.rs @@ -1,10 +1,11 @@ -use did_parser::DidUrl; +use did_parser_nom::DidUrl; use serde::{Deserialize, Serialize}; use super::VerificationMethod; // Either a set of verification methods maps or DID URLs // https://www.w3.org/TR/did-core/#did-document-properties +#[allow(clippy::large_enum_variant)] #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] #[serde(untagged)] pub enum VerificationMethodKind { diff --git a/did_core/did_methods/did_key/Cargo.toml b/did_core/did_methods/did_key/Cargo.toml index 1d7fc651b4..61579bd793 100644 --- a/did_core/did_methods/did_key/Cargo.toml +++ b/did_core/did_methods/did_key/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" [dependencies] public_key = { path = "../../public_key" } -did_parser = { path = "../../did_parser" } +did_parser_nom = { path = "../../did_parser_nom" } serde = "1.0.175" serde_json = "1.0.103" thiserror = "1.0.44" diff --git a/did_core/did_methods/did_key/src/error.rs b/did_core/did_methods/did_key/src/error.rs index b235b91674..b1586755af 100644 --- a/did_core/did_methods/did_key/src/error.rs +++ b/did_core/did_methods/did_key/src/error.rs @@ -5,5 +5,5 @@ pub enum DidKeyError { #[error("Public key error: {0}")] PublicKeyError(#[from] public_key::PublicKeyError), #[error("DID parser error: {0}")] - DidParserError(#[from] did_parser::ParseError), + DidParserError(#[from] did_parser_nom::ParseError), } diff --git a/did_core/did_methods/did_key/src/lib.rs b/did_core/did_methods/did_key/src/lib.rs index 65973a3c35..23238f8426 100644 --- a/did_core/did_methods/did_key/src/lib.rs +++ b/did_core/did_methods/did_key/src/lib.rs @@ -3,7 +3,7 @@ pub mod error; use core::fmt; use std::fmt::Display; -use did_parser::Did; +use did_parser_nom::Did; use error::DidKeyError; use public_key::Key; use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; diff --git a/did_core/did_methods/did_peer/Cargo.toml b/did_core/did_methods/did_peer/Cargo.toml index 3edc2e69c2..57dbcb9bcd 100644 --- a/did_core/did_methods/did_peer/Cargo.toml +++ b/did_core/did_methods/did_peer/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -did_parser = { path = "../../did_parser" } +did_parser_nom = { path = "../../did_parser_nom" } did_doc = { path = "../../did_doc" } did_resolver = { path = "../../did_resolver" } public_key = { path = "../../public_key" } @@ -21,9 +21,12 @@ multibase = "0.9.1" unsigned-varint = "0.7.1" once_cell = "1.18.0" sha256 = "1.1.4" +log = "0.4.16" url = { version = "2.3.1", features = ["serde"] } display_as_json = { path = "../../../misc/display_as_json" } [dev-dependencies] tokio = { version = "1.27.0", default-features = false, features = ["macros", "rt"] } pretty_assertions = "1.4.0" +env_logger = "0.10" +log = "0.4" diff --git a/did_core/did_methods/did_peer/examples/demo.rs b/did_core/did_methods/did_peer/examples/demo.rs index a02f0cf842..c543e7ee2c 100644 --- a/did_core/did_methods/did_peer/examples/demo.rs +++ b/did_core/did_methods/did_peer/examples/demo.rs @@ -4,7 +4,7 @@ use did_doc::schema::{ did_doc::DidDocument, verification_method::{VerificationMethod, VerificationMethodType}, }; -use did_parser::{Did, DidUrl}; +use did_parser_nom::{Did, DidUrl}; use did_peer::{ peer_did::{ numalgos::{numalgo2::Numalgo2, numalgo3::Numalgo3}, diff --git a/did_core/did_methods/did_peer/src/error.rs b/did_core/did_methods/did_peer/src/error.rs index 11f1576110..d84c30e440 100644 --- a/did_core/did_methods/did_peer/src/error.rs +++ b/did_core/did_methods/did_peer/src/error.rs @@ -10,7 +10,7 @@ use crate::peer_did::numalgos::kind::NumalgoKind; #[derive(Debug, thiserror::Error)] pub enum DidPeerError { #[error("DID parser error: {0}")] - DidParserError(#[from] did_parser::ParseError), + DidParserError(#[from] did_parser_nom::ParseError), #[error("Parsing error: {0}")] ParsingError(String), #[error("DID validation error: {0}")] diff --git a/did_core/did_methods/did_peer/src/peer_did/generic.rs b/did_core/did_methods/did_peer/src/peer_did/generic.rs index b3e8d63005..12e8ff36e4 100644 --- a/did_core/did_methods/did_peer/src/peer_did/generic.rs +++ b/did_core/did_methods/did_peer/src/peer_did/generic.rs @@ -1,4 +1,4 @@ -use did_parser::Did; +use did_parser_nom::Did; use serde::{Deserialize, Deserializer, Serialize, Serializer}; use super::PeerDid; diff --git a/did_core/did_methods/did_peer/src/peer_did/mod.rs b/did_core/did_methods/did_peer/src/peer_did/mod.rs index 5a94d258b0..c6cbfb5c5d 100644 --- a/did_core/did_methods/did_peer/src/peer_did/mod.rs +++ b/did_core/did_methods/did_peer/src/peer_did/mod.rs @@ -9,7 +9,7 @@ use core::fmt; use std::{fmt::Display, marker::PhantomData}; use did_doc::schema::did_doc::DidDocument; -use did_parser::Did; +use did_parser_nom::Did; use serde::{ de::{self, Visitor}, Deserialize, Deserializer, Serialize, Serializer, diff --git a/did_core/did_methods/did_peer/src/peer_did/numalgos/mod.rs b/did_core/did_methods/did_peer/src/peer_did/numalgos/mod.rs index d7079be668..91054f76ab 100644 --- a/did_core/did_methods/did_peer/src/peer_did/numalgos/mod.rs +++ b/did_core/did_methods/did_peer/src/peer_did/numalgos/mod.rs @@ -5,7 +5,7 @@ pub mod numalgo2; pub mod numalgo3; use did_doc::schema::did_doc::DidDocument; -use did_parser::Did; +use did_parser_nom::Did; use crate::{ error::DidPeerError, diff --git a/did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/encoding.rs b/did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/encoding.rs index fceb6ecfd2..8df3ae8117 100644 --- a/did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/encoding.rs +++ b/did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/encoding.rs @@ -23,11 +23,9 @@ pub(crate) fn append_encoded_key_segments( for am in did_document.assertion_method() { did = append_encoded_key_segment(did, did_document, am, ElementPurpose::Assertion)?; } - for ka in did_document.key_agreement() { did = append_encoded_key_segment(did, did_document, ka, ElementPurpose::Encryption)?; } - for vm in did_document.verification_method() { did = append_encoded_key_segment( did, @@ -36,11 +34,9 @@ pub(crate) fn append_encoded_key_segments( ElementPurpose::Verification, )?; } - for a in did_document.authentication() { did = append_encoded_key_segment(did, did_document, a, ElementPurpose::Verification)?; } - for ci in did_document.capability_invocation() { did = append_encoded_key_segment( did, @@ -49,7 +45,6 @@ pub(crate) fn append_encoded_key_segments( ElementPurpose::CapabilityInvocation, )?; } - for cd in did_document.capability_delegation() { did = append_encoded_key_segment( did, @@ -58,7 +53,6 @@ pub(crate) fn append_encoded_key_segments( ElementPurpose::CapabilityDelegation, )?; } - Ok(did) } @@ -111,9 +105,14 @@ fn resolve_verification_method<'a>( ) -> Result<&'a VerificationMethod, DidPeerError> { match vm { VerificationMethodKind::Resolved(vm) => Ok(vm), - VerificationMethodKind::Resolvable(did_url) => did_document - .dereference_key(did_url) - .ok_or(DidPeerError::InvalidKeyReference(did_url.to_string())), + VerificationMethodKind::Resolvable(did_url) => { + did_document + .dereference_key(did_url) + .ok_or(DidPeerError::InvalidKeyReference(format!( + "Could not resolve verification method: {} on DID document: {}", + did_url, did_document + ))) + } } } @@ -135,7 +134,7 @@ mod tests { utils::OneOrList, verification_method::{VerificationMethod, VerificationMethodType}, }; - use did_parser::DidUrl; + use did_parser_nom::DidUrl; use pretty_assertions::assert_eq; use super::*; @@ -146,13 +145,14 @@ mod tests { }; fn create_verification_method( - did_full: String, + verification_method_id: String, + controller_did: String, key: String, verification_type: VerificationMethodType, ) -> VerificationMethod { VerificationMethod::builder( - did_full.parse().unwrap(), - did_full.parse().unwrap(), + verification_method_id.parse().unwrap(), + controller_did.parse().unwrap(), verification_type, ) .add_public_key_multibase(key) @@ -167,11 +167,13 @@ mod tests { let did_full = format!("{}.E{}.V{}", did, key_0, key_1); let vm_0 = create_verification_method( + "#key-1".to_string(), did_full.to_string(), key_0.to_string(), VerificationMethodType::X25519KeyAgreementKey2020, ); let vm_1 = create_verification_method( + "#key-2".to_string(), did_full.to_string(), key_1.to_string(), VerificationMethodType::Ed25519VerificationKey2020, @@ -235,6 +237,7 @@ mod tests { let did_full = format!("{}.E{}", did, key); let vm = create_verification_method( + "#key-1".to_string(), did_full.to_string(), key.to_string(), VerificationMethodType::X25519KeyAgreementKey2020, @@ -257,16 +260,19 @@ mod tests { let did_full = format!("{}.A{}.E{}.V{}", did, key_0, key_1, key_2); let vm_0 = create_verification_method( + "#key-1".to_string(), did_full.to_string(), key_0.to_string(), VerificationMethodType::X25519KeyAgreementKey2020, ); let vm_1 = create_verification_method( + "#key-2".to_string(), did_full.to_string(), key_1.to_string(), VerificationMethodType::Ed25519VerificationKey2020, ); let vm_2 = create_verification_method( + "#key-3".to_string(), did_full.to_string(), key_2.to_string(), VerificationMethodType::Ed25519VerificationKey2020, @@ -284,13 +290,17 @@ mod tests { #[test] fn test_append_encoded_key_segments_resolvable_key() { + let env = env_logger::Env::default().default_filter_or("info"); + env_logger::init_from_env(env); + let did = "did:peer:2"; let key = "z6LSbysY2xFMRpGMhb7tFTLMpeuPRaqaWM1yECx2AtzE3KCc"; let did_full = format!("{}.E{}.V{}", did, key, key); - let reference = "ref-1"; + let reference = "key-1"; let vm = create_verification_method( - format!("{did_full}#{reference}"), + format!("#{}", reference), + did_full.to_string(), key.to_string(), VerificationMethodType::X25519KeyAgreementKey2020, ); diff --git a/did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/helpers.rs b/did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/helpers.rs index 05e0758e25..3e1c06fffd 100644 --- a/did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/helpers.rs +++ b/did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/helpers.rs @@ -1,6 +1,6 @@ use base64::{engine::general_purpose::STANDARD_NO_PAD, Engine}; use did_doc::schema::did_doc::DidDocumentBuilder; -use did_parser::Did; +use did_parser_nom::Did; use public_key::Key; use crate::{ diff --git a/did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/verification_method.rs b/did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/verification_method.rs index 1efca5b3e1..7ff0b0397c 100644 --- a/did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/verification_method.rs +++ b/did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/verification_method.rs @@ -1,7 +1,7 @@ use did_doc::schema::verification_method::{ IncompleteVerificationMethodBuilder, VerificationMethod, VerificationMethodType, }; -use did_parser::{Did, DidUrl}; +use did_parser_nom::{Did, DidUrl}; use public_key::{Key, KeyType}; use crate::{error::DidPeerError, resolver::options::PublicKeyEncoding}; @@ -119,7 +119,7 @@ fn to_did_url_reference(key: &Key) -> Result { #[cfg(test)] mod tests { use did_doc::schema::verification_method::{VerificationMethod, VerificationMethodType}; - use did_parser::Did; + use did_parser_nom::Did; use public_key::Key; fn did() -> Did { diff --git a/did_core/did_methods/did_peer/src/peer_did/numalgos/traits.rs b/did_core/did_methods/did_peer/src/peer_did/numalgos/traits.rs index ac96e7e523..451f08e823 100644 --- a/did_core/did_methods/did_peer/src/peer_did/numalgos/traits.rs +++ b/did_core/did_methods/did_peer/src/peer_did/numalgos/traits.rs @@ -1,5 +1,5 @@ use did_doc::schema::did_doc::DidDocument; -use did_parser::Did; +use did_parser_nom::Did; use crate::{ error::DidPeerError, diff --git a/did_core/did_methods/did_peer/src/peer_did/parse.rs b/did_core/did_methods/did_peer/src/peer_did/parse.rs index 2376838f08..4c7e610260 100644 --- a/did_core/did_methods/did_peer/src/peer_did/parse.rs +++ b/did_core/did_methods/did_peer/src/peer_did/parse.rs @@ -1,4 +1,4 @@ -use did_parser::Did; +use did_parser_nom::Did; use crate::{error::DidPeerError, peer_did::numalgos::kind::NumalgoKind}; diff --git a/did_core/did_methods/did_peer/src/peer_did/validate.rs b/did_core/did_methods/did_peer/src/peer_did/validate.rs index bdff2d22eb..b86fb2265f 100644 --- a/did_core/did_methods/did_peer/src/peer_did/validate.rs +++ b/did_core/did_methods/did_peer/src/peer_did/validate.rs @@ -1,4 +1,4 @@ -use did_parser::Did; +use did_parser_nom::Did; use once_cell::sync::Lazy; use regex::Regex; diff --git a/did_core/did_methods/did_peer/src/resolver/mod.rs b/did_core/did_methods/did_peer/src/resolver/mod.rs index d7b8c195c4..ddd6e80cd5 100644 --- a/did_core/did_methods/did_peer/src/resolver/mod.rs +++ b/did_core/did_methods/did_peer/src/resolver/mod.rs @@ -1,6 +1,6 @@ use async_trait::async_trait; use did_doc::schema::did_doc::DidDocumentBuilder; -use did_parser::Did; +use did_parser_nom::Did; use did_resolver::{ error::GenericError, traits::resolvable::{ diff --git a/did_core/did_methods/did_peer/tests/demo.rs b/did_core/did_methods/did_peer/tests/demo.rs index a0668ea9d1..f996b3d188 100644 --- a/did_core/did_methods/did_peer/tests/demo.rs +++ b/did_core/did_methods/did_peer/tests/demo.rs @@ -7,7 +7,7 @@ use did_doc::schema::{ utils::OneOrList, verification_method::{VerificationMethod, VerificationMethodType}, }; -use did_parser::{Did, DidUrl}; +use did_parser_nom::{Did, DidUrl}; use did_peer::peer_did::{ numalgos::{numalgo2::Numalgo2, numalgo3::Numalgo3}, PeerDid, diff --git a/did_core/did_methods/did_resolver_sov/src/dereferencing/dereferencer.rs b/did_core/did_methods/did_resolver_sov/src/dereferencing/dereferencer.rs index fe57852af2..e6eae258be 100644 --- a/did_core/did_methods/did_resolver_sov/src/dereferencing/dereferencer.rs +++ b/did_core/did_methods/did_resolver_sov/src/dereferencing/dereferencer.rs @@ -2,7 +2,7 @@ use std::{borrow::Borrow, io::Cursor}; use async_trait::async_trait; use did_resolver::{ - did_parser::DidUrl, + did_parser_nom::DidUrl, error::GenericError, traits::{ dereferenceable::{ diff --git a/did_core/did_methods/did_resolver_sov/src/dereferencing/utils.rs b/did_core/did_methods/did_resolver_sov/src/dereferencing/utils.rs index 3af8aef24e..6995cb4013 100644 --- a/did_core/did_methods/did_resolver_sov/src/dereferencing/utils.rs +++ b/did_core/did_methods/did_resolver_sov/src/dereferencing/utils.rs @@ -4,7 +4,7 @@ use did_resolver::{ did_doc::schema::{ did_doc::DidDocument, service::Service, verification_method::VerificationMethod, }, - did_parser::DidUrl, + did_parser_nom::DidUrl, traits::{ dereferenceable::{ dereferencing_metadata::DidDereferencingMetadata, @@ -95,7 +95,7 @@ mod tests { did_doc::DidDocumentBuilder, service::typed::ServiceType, utils::OneOrList, verification_method::VerificationMethodType, }, - did_parser::DidUrl, + did_parser_nom::DidUrl, traits::resolvable::resolution_output::DidResolutionOutput, }; use serde_json::Value; diff --git a/did_core/did_methods/did_resolver_sov/src/error/parsing.rs b/did_core/did_methods/did_resolver_sov/src/error/parsing.rs index 40bd133cd0..d43a1c1857 100644 --- a/did_core/did_methods/did_resolver_sov/src/error/parsing.rs +++ b/did_core/did_methods/did_resolver_sov/src/error/parsing.rs @@ -1,4 +1,4 @@ -use did_resolver::{did_doc::schema::types::uri::UriWrapperError, did_parser}; +use did_resolver::{did_doc::schema::types::uri::UriWrapperError, did_parser_nom}; use thiserror::Error; use super::DidSovError; @@ -6,7 +6,7 @@ use super::DidSovError; #[derive(Error, Debug)] pub enum ParsingErrorSource { #[error("DID document parsing error: {0}")] - DidDocumentParsingError(#[from] did_parser::ParseError), + DidDocumentParsingError(#[from] did_parser_nom::ParseError), #[error("DID document parsing URI error: {0}")] DidDocumentParsingUriError(#[from] UriWrapperError), #[error("Serde error: {0}")] @@ -15,8 +15,8 @@ pub enum ParsingErrorSource { LedgerResponseParsingError(String), } -impl From for DidSovError { - fn from(error: did_parser::ParseError) -> Self { +impl From for DidSovError { + fn from(error: did_parser_nom::ParseError) -> Self { DidSovError::ParsingError(ParsingErrorSource::DidDocumentParsingError(error)) } } diff --git a/did_core/did_methods/did_resolver_sov/src/reader/mod.rs b/did_core/did_methods/did_resolver_sov/src/reader/mod.rs index af58707bb0..e79869d59e 100644 --- a/did_core/did_methods/did_resolver_sov/src/reader/mod.rs +++ b/did_core/did_methods/did_resolver_sov/src/reader/mod.rs @@ -1,6 +1,6 @@ use aries_vcx_core::ledger::base_ledger::IndyLedgerRead; use async_trait::async_trait; -use did_resolver::did_parser::Did; +use did_resolver::did_parser_nom::Did; use crate::error::DidSovError; diff --git a/did_core/did_methods/did_resolver_sov/src/resolution/resolver.rs b/did_core/did_methods/did_resolver_sov/src/resolution/resolver.rs index 0e70df9f8f..2ce386b4a9 100644 --- a/did_core/did_methods/did_resolver_sov/src/resolution/resolver.rs +++ b/did_core/did_methods/did_resolver_sov/src/resolution/resolver.rs @@ -2,7 +2,7 @@ use std::{borrow::Borrow, marker::PhantomData}; use async_trait::async_trait; use did_resolver::{ - did_parser::Did, + did_parser_nom::Did, error::GenericError, traits::resolvable::{resolution_output::DidResolutionOutput, DidResolvable}, }; diff --git a/did_core/did_methods/did_resolver_sov/src/resolution/utils.rs b/did_core/did_methods/did_resolver_sov/src/resolution/utils.rs index 789089ad9c..556bba9718 100644 --- a/did_core/did_methods/did_resolver_sov/src/resolution/utils.rs +++ b/did_core/did_methods/did_resolver_sov/src/resolution/utils.rs @@ -7,7 +7,7 @@ use did_resolver::{ utils::OneOrList, verification_method::{VerificationMethod, VerificationMethodType}, }, - did_parser::{Did, DidUrl}, + did_parser_nom::{Did, DidUrl}, shared_types::did_document_metadata::DidDocumentMetadata, traits::resolvable::{ resolution_metadata::DidResolutionMetadata, resolution_output::DidResolutionOutput, diff --git a/did_core/did_methods/did_resolver_sov/tests/resolution.rs b/did_core/did_methods/did_resolver_sov/tests/resolution.rs index 9062d76696..79df0b9254 100644 --- a/did_core/did_methods/did_resolver_sov/tests/resolution.rs +++ b/did_core/did_methods/did_resolver_sov/tests/resolution.rs @@ -4,7 +4,7 @@ use aries_vcx::common::ledger::{service_didsov::EndpointDidSov, transactions::wr use aries_vcx_core::{ledger::base_ledger::IndyLedgerWrite, wallet::base_wallet::BaseWallet}; use did_resolver::{ did_doc::schema::service::typed::ServiceType, - did_parser::Did, + did_parser_nom::Did, traits::resolvable::{resolution_output::DidResolutionOutput, DidResolvable}, }; use did_resolver_sov::resolution::DidSovResolver; diff --git a/did_core/did_methods/did_resolver_web/src/resolution/resolver.rs b/did_core/did_methods/did_resolver_web/src/resolution/resolver.rs index f82aa899de..bbd19497d6 100644 --- a/did_core/did_methods/did_resolver_web/src/resolution/resolver.rs +++ b/did_core/did_methods/did_resolver_web/src/resolution/resolver.rs @@ -1,6 +1,6 @@ use async_trait::async_trait; use did_resolver::{ - did_parser::Did, + did_parser_nom::Did, error::GenericError, shared_types::did_document_metadata::DidDocumentMetadata, traits::resolvable::{ diff --git a/did_core/did_methods/did_resolver_web/tests/resolution.rs b/did_core/did_methods/did_resolver_web/tests/resolution.rs index a415ed92f1..76681c8cf3 100644 --- a/did_core/did_methods/did_resolver_web/tests/resolution.rs +++ b/did_core/did_methods/did_resolver_web/tests/resolution.rs @@ -2,7 +2,7 @@ use std::{convert::Infallible, net::SocketAddr}; use did_resolver::{ did_doc::schema::did_doc::DidDocument, - did_parser::Did, + did_parser_nom::Did, traits::resolvable::{resolution_output::DidResolutionOutput, DidResolvable}, }; use did_resolver_web::resolution::resolver::DidWebResolver; diff --git a/did_core/did_parser/Cargo.toml b/did_core/did_parser/Cargo.toml deleted file mode 100644 index bc0cf2c062..0000000000 --- a/did_core/did_parser/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "did_parser" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -serde = "1.0.160" -shared = { path = "../../aries/misc/shared" } # TODO: Remove as soon as migration to qualified DIDs is complete diff --git a/did_core/did_parser/README.md b/did_core/did_parser/README.md deleted file mode 100644 index 92642dc970..0000000000 --- a/did_core/did_parser/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# did_parser - -## Overview -Rust crate for parsing [DIDs](https://www.w3.org/TR/did-core/#did-syntax) and [DID URLs](https://www.w3.org/TR/did-core/#did-url-syntax). - -## Features -- **DID Parsing**: Capability to parse `did:` strings, ensuring they comply with the DID specifications. -- **DID URL**: Functionality to parse DID URLs. - -## Getting Started -### Installation -Add the did_parser library as a dependency in your `Cargo.toml` file: -```toml -[dependencies] -did_parser = { tag = "0.62.0", git = "https://github.com/hyperledger/aries-vcx" } -``` - -## Demo -To get you off the ground, have a look at the [demo](examples/demo.rs). It demonstrates a basic functionality. You can run the demo with the following command: -```bash -cargo run --example demo -``` - diff --git a/did_core/did_parser/examples/demo.rs b/did_core/did_parser/examples/demo.rs deleted file mode 100644 index 729a40aa83..0000000000 --- a/did_core/did_parser/examples/demo.rs +++ /dev/null @@ -1,19 +0,0 @@ -use did_parser::{Did, DidUrl}; - -fn main() { - // parse a string into DID - let did = Did::parse("did:web:w3c-ccg.github.io".into()).unwrap(); - println!("{:?}", did.did()); - println!("{:?}", did.method()); - println!("{:?}", did.id()); - - // parse a string into DID URL - let did_url = - DidUrl::parse("did:example:123456789abcdefghi/foo;param=value?query=value".into()).unwrap(); - println!("{:?}", did_url.did()); - println!("{:?}", did_url.did_url()); - println!("{:?}", did_url.method()); - println!("{:?}", did_url.id()); - println!("{:?}", did_url.path()); - println!("{:?}", did_url.queries()); -} diff --git a/did_core/did_parser/src/did.rs b/did_core/did_parser/src/did.rs deleted file mode 100644 index ce8d58fa34..0000000000 --- a/did_core/did_parser/src/did.rs +++ /dev/null @@ -1,122 +0,0 @@ -use std::{ - convert::TryFrom, - fmt::{Display, Formatter}, - str::FromStr, -}; - -use serde::{Deserialize, Deserializer, Serialize, Serializer}; - -use crate::{error::ParseError, utils::parse::parse_did_method_id, DidRange, DidUrl}; - -#[derive(Clone, PartialEq, Eq, Hash)] -pub struct Did { - did: String, - method: Option, - id: DidRange, -} - -// TODO: Add a builder / constructor so that we don't have to create strings and parse them? -impl Did { - pub fn parse(did: String) -> Result { - let (_, method, id) = parse_did_method_id(&did)?; - - if id.end > did.len() { - return Err(ParseError::InvalidInput("Invalid DID")); - } - - Ok(Self { did, method, id }) - } - - pub fn did(&self) -> &str { - self.did.as_ref() - } - - pub fn method(&self) -> Option<&str> { - self.method.as_ref().map(|range| &self.did[range.clone()]) - } - - pub fn id(&self) -> &str { - self.did[self.id.clone()].as_ref() - } - - pub(crate) fn from_parts(did: String, method: DidRange, id: DidRange) -> Self { - Self { - did, - method: Some(method), - id, - } - } -} - -impl AsRef for Did { - fn as_ref(&self) -> &Did { - self - } -} - -impl TryFrom for Did { - type Error = ParseError; - - fn try_from(did: String) -> Result { - Self::parse(did) - } -} - -impl FromStr for Did { - type Err = ParseError; - - fn from_str(did: &str) -> Result { - Self::parse(did.to_string()) - } -} - -impl Display for Did { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", self.did) - } -} - -impl std::fmt::Debug for Did { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - f.debug_struct("Did") - .field("did", &self.did) - .field("method", &self.method()) - .field("id", &self.id()) - .finish() - } -} - -impl Default for Did { - fn default() -> Self { - Self { - did: "did:example:123456789abcdefghi".to_string(), - method: Some(4..11), - id: 12..30, - } - } -} - -impl Serialize for Did { - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - serializer.serialize_str(self.did()) - } -} - -impl<'de> Deserialize<'de> for Did { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let did = String::deserialize(deserializer)?; - Self::parse(did).map_err(serde::de::Error::custom) - } -} - -impl From for DidUrl { - fn from(did: Did) -> Self { - Self::from_did_parts(did.did().to_string(), 0..did.did.len(), did.method, did.id) - } -} diff --git a/did_core/did_parser/src/did_url.rs b/did_core/did_parser/src/did_url.rs deleted file mode 100644 index d023dfdf72..0000000000 --- a/did_core/did_parser/src/did_url.rs +++ /dev/null @@ -1,250 +0,0 @@ -use std::{collections::HashMap, fmt::Display, str::FromStr}; - -use serde::{Deserialize, Deserializer, Serialize, Serializer}; - -use crate::{ - error::ParseError, - utils::parse::{parse_did_method_id, parse_key_value, parse_path}, - Did, DidRange, -}; - -#[derive(Default, Debug, Clone, PartialEq)] -pub struct DidUrl { - did_url: String, - did: Option, - method: Option, - id: Option, - path: Option, - fragment: Option, - queries: HashMap, - params: HashMap, -} - -impl DidUrl { - pub fn parse(did_url: String) -> Result { - let (did, method, id) = if did_url.starts_with('#') - || did_url.starts_with('/') - || did_url.starts_with('?') - || did_url.starts_with(';') - { - (None, None, None) - } else { - let (did, method, id) = parse_did_method_id(&did_url)?; - (Some(did), method, Some(id)) - }; - - let mut path = None; - let mut fragment = None; - let mut queries = HashMap::new(); - let mut params = HashMap::new(); - - let mut current_pos = id.clone().map_or(0, |id| id.end); - - while current_pos < did_url.len() { - match did_url.chars().nth(current_pos) { - Some(';') => { - let (key_start, value_start, next_pos) = - parse_key_value(&did_url, current_pos, did_url.len())?; - params.insert(key_start..value_start - 1, value_start..next_pos); - current_pos = next_pos; - } - Some('/') => { - if path.is_none() { - path = Some(parse_path(&did_url, current_pos)?); - current_pos = path.as_ref().unwrap().end; - } else { - current_pos += 1; - } - } - Some('?') | Some('&') => { - let (key_start, value_start, next_pos) = - parse_key_value(&did_url, current_pos, did_url.len())?; - queries.insert(key_start..value_start - 1, value_start..next_pos); - current_pos = next_pos; - } - Some('#') => { - if fragment.is_none() { - fragment = Some(current_pos + 1..did_url.len()); - } - current_pos += 1; - } - _ => break, - }; - } - - if did.is_none() - && method.is_none() - && id.is_none() - && path.is_none() - && fragment.is_none() - && queries.is_empty() - && params.is_empty() - { - return Err(ParseError::InvalidInput("Empty DID URL")); - } - - Ok(DidUrl { - did_url, - did, - method, - id, - path, - queries, - fragment, - params, - }) - } - - pub fn did_url(&self) -> &str { - self.did_url.as_ref() - } - - pub fn did(&self) -> Option<&str> { - self.did.clone().map(|range| self.did_url[range].as_ref()) - } - - pub fn method(&self) -> Option<&str> { - self.method - .clone() - .map(|range| self.did_url[range].as_ref()) - } - - pub fn id(&self) -> Option<&str> { - self.id.clone().map(|range| self.did_url[range].as_ref()) - } - - pub fn path(&self) -> Option<&str> { - self.path.as_ref().map(|path| &self.did_url[path.clone()]) - } - - pub fn queries(&self) -> HashMap { - self.queries - .iter() - .map(|(k, v)| { - ( - self.did_url[k.clone()].to_string(), - self.did_url[v.clone()].to_string(), - ) - }) - .collect() - } - - pub fn fragment(&self) -> Option<&str> { - self.fragment - .as_ref() - .map(|fragment| &self.did_url[fragment.clone()]) - } - - pub fn params(&self) -> HashMap { - self.params - .iter() - .map(|(k, v)| { - ( - self.did_url[k.clone()].to_string(), - self.did_url[v.clone()].to_string(), - ) - }) - .collect() - } - - // TODO: Ideally we would have a builder instead of purpose-specific constructors - pub fn from_fragment(fragment: String) -> Result { - // TODO: Better validation - if fragment.contains('#') { - return Err(ParseError::InvalidInput( - "Fragment cannot contain '#' character", - )); - } - if fragment.is_empty() { - return Err(ParseError::InvalidInput("Empty fragment")); - } - let len = fragment.len(); - Ok(Self { - did_url: format!("#{}", fragment), - did: None, - method: None, - id: None, - path: None, - fragment: Some(1..len + 1), - queries: HashMap::new(), - params: HashMap::new(), - }) - } - - pub(crate) fn from_did_parts( - did_url: String, - did: DidRange, - method: Option, - id: DidRange, - ) -> Self { - Self { - did_url, - did: Some(did), - method, - id: Some(id), - path: None, - fragment: None, - queries: HashMap::new(), - params: HashMap::new(), - } - } -} - -impl TryFrom for DidUrl { - type Error = ParseError; - - fn try_from(did_url: String) -> Result { - Self::parse(did_url) - } -} - -impl FromStr for DidUrl { - type Err = ParseError; - - fn from_str(did: &str) -> Result { - Self::parse(did.to_string()) - } -} - -impl Display for DidUrl { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", self.did_url) - } -} - -impl Serialize for DidUrl { - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - serializer.serialize_str(&self.did_url) - } -} - -impl<'de> Deserialize<'de> for DidUrl { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let did_url = String::deserialize(deserializer)?; - DidUrl::parse(did_url).map_err(serde::de::Error::custom) - } -} - -impl TryFrom<&DidUrl> for Did { - type Error = ParseError; - - fn try_from(did_url: &DidUrl) -> Result { - if let (Some(did), Some(method), Some(id)) = (did_url.did(), &did_url.method, &did_url.id) { - Ok(Did::from_parts( - did.to_owned(), - method.to_owned(), - id.to_owned(), - )) - } else { - Err(ParseError::InvalidInput( - "Unable to construct a DID from relative DID URL", - )) - } - } -} diff --git a/did_core/did_parser/src/error.rs b/did_core/did_parser/src/error.rs deleted file mode 100644 index 717c78212d..0000000000 --- a/did_core/did_parser/src/error.rs +++ /dev/null @@ -1,16 +0,0 @@ -use std::fmt; - -#[derive(Debug)] -pub enum ParseError { - InvalidInput(&'static str), -} - -impl std::error::Error for ParseError {} - -impl fmt::Display for ParseError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match self { - ParseError::InvalidInput(input) => write!(f, "Invalid input: {}", input), - } - } -} diff --git a/did_core/did_parser/src/lib.rs b/did_core/did_parser/src/lib.rs deleted file mode 100644 index d9708afbca..0000000000 --- a/did_core/did_parser/src/lib.rs +++ /dev/null @@ -1,12 +0,0 @@ -mod did; -mod did_url; -mod error; -mod utils; - -use std::ops::Range; - -type DidRange = Range; - -pub use did::Did; -pub use did_url::DidUrl; -pub use error::ParseError; diff --git a/did_core/did_parser/src/utils/mod.rs b/did_core/did_parser/src/utils/mod.rs deleted file mode 100644 index 1560a79aff..0000000000 --- a/did_core/did_parser/src/utils/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub(crate) mod parse; diff --git a/did_core/did_parser/src/utils/parse.rs b/did_core/did_parser/src/utils/parse.rs deleted file mode 100644 index 5bce59ee39..0000000000 --- a/did_core/did_parser/src/utils/parse.rs +++ /dev/null @@ -1,183 +0,0 @@ -use crate::{error::ParseError, DidRange}; - -pub(crate) fn parse_key_value( - did_url: &str, - start: usize, - end: usize, -) -> Result<(usize, usize, usize), ParseError> { - // Skip separator - let key_start = start + 1; - - // Value starts after equal sign - // No equal sign is an error - let value_start = did_url[key_start..end] - .find('=') - .map(|i| key_start + i + 1) - .ok_or(ParseError::InvalidInput( - "No value found when parsing key value pair", - ))?; - - // Empty key or value is an error - if value_start == key_start || value_start == end { - return Err(ParseError::InvalidInput("Empty key or value")); - } - - // Value ends at end of string or next separator - let next_pos = did_url[value_start..end] - .find(|c: char| c == ';' || c == '?' || c == '#' || c == '/' || c == '&') - .map_or(end, |i| value_start + i); - - Ok((key_start, value_start, next_pos)) -} - -fn find_method_start_and_end(did_url: &str) -> Result<(usize, usize), ParseError> { - // DID = "did:" method ":" method-specific-id - let method_start = did_url - .find(':') - .ok_or(ParseError::InvalidInput("Failed to find method start"))?; - if &did_url[..method_start] != "did" { - return Err(ParseError::InvalidInput("Invalid scheme")); - } - let method_end = did_url[method_start + 1..] - .find(':') - .map(|i| i + method_start + 1) - .ok_or(ParseError::InvalidInput("Failed to find method end"))?; - - Ok((method_start, method_end)) -} - -fn find_id_start_and_end(did_url: &str, method_end: usize) -> Result<(usize, usize), ParseError> { - // method-specific-id = *( *idchar ":" ) 1*idchar - let id_start = method_end + 1; - let id_end = did_url[id_start..] - .find(|c: char| c == ';' || c == '/' || c == '?' || c == '#' || c == '&') - .map_or(did_url.len(), |i| i + id_start); - - Ok((id_start, id_end)) -} - -fn validate_did_url(did_url: &str, id_range: DidRange) -> Result<(), ParseError> { - // No method-specific-id is an error - if id_range.is_empty() { - return Err(ParseError::InvalidInput("Empty method-specific-id")); - } - - // idchar = ALPHA / DIGIT / "." / "-" / "_" / pct-encoded - if !did_url[id_range] - .chars() - .all(|c| c.is_ascii_alphanumeric() || ".-_%:".contains(c)) - { - return Err(ParseError::InvalidInput( - "Invalid characters in method-specific-id", - )); - } - - Ok(()) -} - -fn parse_qualified(did_url: &str) -> Result<(DidRange, Option, DidRange), ParseError> { - let (method_start, method_end) = find_method_start_and_end(did_url)?; - let (id_start, id_end) = find_id_start_and_end(did_url, method_end)?; - - let did_range = 0..id_end; - let method_range = method_start + 1..method_end; - let id_range = id_start..id_end; - - validate_did_url(did_url, id_range.clone())?; - - Ok((did_range, Some(method_range), id_range)) -} - -// TODO: Remove as soon as migration to qualified DIDs is complete -fn parse_unqualified(did_url: &str) -> Result<(DidRange, Option, DidRange), ParseError> { - if did_url.contains(':') { - return Err(ParseError::InvalidInput( - "Unqualified did cannot contain ':'", - )); - } - - let id = did_url.split('#').next().unwrap_or(did_url); - shared::validation::did::validate_did(id) - .map_err(|_| ParseError::InvalidInput("Unqualified DID failed validation"))?; - - let id_range = 0..id.len(); - - validate_did_url(did_url, id_range.clone())?; - - Ok((id_range.clone(), None, id_range)) -} - -// TODO: Support tunnel methods -pub fn parse_did_method_id( - did_url: &str, -) -> Result<(DidRange, Option, DidRange), ParseError> { - if !did_url.starts_with("did:") { - parse_unqualified(did_url) - } else { - parse_qualified(did_url) - } -} - -pub(crate) fn parse_path(did_url: &str, current_pos: usize) -> Result { - if !did_url[current_pos..].starts_with('/') { - return Err(ParseError::InvalidInput("Path must start with '/'")); - } - // Path ends with query, fragment, param or end of string - let path_end = did_url[current_pos..] - .find(|c: char| c == '?' || c == '#' || c == ';') - .map_or(did_url.len(), |i| i + current_pos); - - if path_end - current_pos <= 1 { - return Err(ParseError::InvalidInput("Empty path")); - } - - Ok(current_pos..path_end) -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_parse_key_value() { - let did_url = "?key1=value1&key2=value2"; - let start = 0; - let end = did_url.len(); - - let result = parse_key_value(did_url, start, end).unwrap(); - assert_eq!((1, 6, 12), result); - - let start = 12; - let result = parse_key_value(did_url, start, end).unwrap(); - assert_eq!((13, 18, did_url.len()), result); - } - - #[test] - fn test_parse_did_method_id() { - let valid_did = "did:example:123456789abcdefghi"; - let result = parse_did_method_id(valid_did).unwrap(); - - assert_eq!(0..valid_did.len(), result.0); - assert_eq!(Some(4..11), result.1); - assert_eq!(12..valid_did.len(), result.2); - - let invalid_did = "did-example:123456789abcdefghi"; - let result = parse_did_method_id(invalid_did); - assert!(result.is_err()); - } - - #[test] - fn test_parse_path() { - let did_url = - "did:example:123456789abcdefghi/path1/path2?param1=value1¶m2=value2#fragment"; - let path_start = did_url.find('/').unwrap(); - - let result = parse_path(did_url, path_start).unwrap(); - assert_eq!(path_start..(did_url.find('?').unwrap()), result); - - let no_path_did_url = "did:example:123456789abcdefghi?param1=value1¶m2=value2#fragment"; - - let result = parse_path(no_path_did_url, 0); - assert!(result.is_err()); - } -} diff --git a/did_core/did_parser/tests/did/mod.rs b/did_core/did_parser/tests/did/mod.rs deleted file mode 100644 index 742ad65885..0000000000 --- a/did_core/did_parser/tests/did/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -mod negative; -mod positive; diff --git a/did_core/did_parser/tests/did/negative.rs b/did_core/did_parser/tests/did/negative.rs deleted file mode 100644 index 6a2bd27712..0000000000 --- a/did_core/did_parser/tests/did/negative.rs +++ /dev/null @@ -1,20 +0,0 @@ -use did_parser::Did; - -macro_rules! test_cases_negative { - ($($name:ident: $input:expr)*) => { - $( - #[test] - fn $name() { - println!("Testing {}", $input); - assert!(Did::parse($input.to_string()).is_err()); - } - )* - }; -} - -test_cases_negative! { - test_failure_case1: "" - test_failure_case2: "not-a-did" - test_failure_case3: "did:example" - test_failure_case4: "2ZHFFhtTD6hJqzux" -} diff --git a/did_core/did_parser/tests/did/positive.rs b/did_core/did_parser/tests/did/positive.rs deleted file mode 100644 index 63e2fcac66..0000000000 --- a/did_core/did_parser/tests/did/positive.rs +++ /dev/null @@ -1,35 +0,0 @@ -use did_parser::Did; - -macro_rules! test_cases_positive { - ($($name:ident: $input:expr, $expected_did:expr, $expected_method:expr, $expected_id:expr)*) => { - $( - #[test] - fn $name() { - println!("Testing {}", $input); - let parsed_did = Did::parse($input.to_string()).unwrap(); - - assert_eq!(parsed_did.did(), $expected_did, "DID"); - assert_eq!(parsed_did.method(), $expected_method, "Method"); - assert_eq!(parsed_did.id(), $expected_id, "ID"); - } - )* - }; -} - -test_cases_positive! { - test_case1: - "did:example:123456789abcdefghi", - "did:example:123456789abcdefghi", - Some("example"), - "123456789abcdefghi" - test_case2: - "did:web:w3c-ccg.github.io", - "did:web:w3c-ccg.github.io", - Some("web"), - "w3c-ccg.github.io" - test_case3: - "2ZHFFhzA2XtTD6hJqzL7ux", - "2ZHFFhzA2XtTD6hJqzL7ux", - None, - "2ZHFFhzA2XtTD6hJqzL7ux" -} diff --git a/did_core/did_parser/tests/did_url/mod.rs b/did_core/did_parser/tests/did_url/mod.rs deleted file mode 100644 index 742ad65885..0000000000 --- a/did_core/did_parser/tests/did_url/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -mod negative; -mod positive; diff --git a/did_core/did_parser/tests/did_url/negative.rs b/did_core/did_parser/tests/did_url/negative.rs deleted file mode 100644 index 2b64e377c9..0000000000 --- a/did_core/did_parser/tests/did_url/negative.rs +++ /dev/null @@ -1,28 +0,0 @@ -use did_parser::DidUrl; - -macro_rules! test_cases_negative { - ($($name:ident: $input:expr)*) => { - $( - #[test] - fn $name() { - println!("Testing {}", $input); - assert!(DidUrl::parse($input.to_string()).is_err()); - } - )* - }; -} - -test_cases_negative! { - test_failure_case1: "" - test_failure_case2: "not-a-did" - test_failure_case3: "did:example" - test_failure_case4: "did:example:123456789abcdefghi;param=" - test_failure_case5: "did:example:123456789abcdefghi?query=" - test_failure_case6: "did:example:123456789abcdefghi/path?query1=value1&query2" - test_failure_case7: "/" - test_failure_case8: "/?" - test_failure_case9: "/#" - test_failure_case10: ";" - test_failure_case11: ";?" - test_failure_case12: ";#" -} diff --git a/did_core/did_parser/tests/did_url/positive.rs b/did_core/did_parser/tests/did_url/positive.rs deleted file mode 100644 index 5fde90ec2a..0000000000 --- a/did_core/did_parser/tests/did_url/positive.rs +++ /dev/null @@ -1,326 +0,0 @@ -use std::collections::HashMap; - -use did_parser::DidUrl; - -macro_rules! test_cases_positive { - ($($name:ident: $input:expr, $expected_did:expr, $expected_method:expr, $expected_id:expr, $expected_path:expr, $expected_fragment:expr, $expected_queries:expr, $expected_params:expr)*) => { - $( - #[test] - fn $name() { - println!("Testing {}", $input); - let parsed_did = DidUrl::parse($input.to_string()).unwrap(); - - assert_eq!(parsed_did.did(), $expected_did, "DID"); - assert_eq!(parsed_did.method(), $expected_method, "Method"); - assert_eq!(parsed_did.id(), $expected_id, "ID"); - assert_eq!(parsed_did.path(), $expected_path, "Path"); - assert_eq!(parsed_did.fragment(), $expected_fragment, "Fragment"); - assert_eq!(parsed_did.queries(), $expected_queries, "Queries"); - assert_eq!(parsed_did.params(), $expected_params, "Params"); - } - )* - }; -} - -test_cases_positive! { - test_case1: - "did:example:123456789abcdefghi", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - None, - None, - HashMap::new(), - HashMap::new() - - test_case2: - "did:example:123456789abcdefghi/path", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - Some("/path"), - None, - HashMap::new(), - HashMap::new() - - test_case3: - "did:example:123456789abcdefghi/path?query1=value1&query2=value2", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - Some("/path"), - None, - { - let mut queries = HashMap::new(); - queries.extend(vec![ - ("query1".to_string(), "value1".to_string()), - ("query2".to_string(), "value2".to_string()), - ]); - queries - }, - HashMap::new() - - test_case4: - "did:example:123456789abcdefghi/path?query=value#fragment", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - Some("/path"), - Some("fragment"), - { - let mut queries = HashMap::new(); - queries.extend(vec![("query".to_string(), "value".to_string())]); - queries - }, - HashMap::new() - - test_case5: - "did:example:123456789abcdefghi;param1=value1;param2=value2#fragment", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - None, - Some("fragment"), - HashMap::new(), - { - let mut params = HashMap::new(); - params.extend(vec![ - ("param1".to_string(), "value1".to_string()), - ("param2".to_string(), "value2".to_string()) - ]); - params - } - - test_case6: - "did:example:123456789abcdefghi#fragment", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - None, - Some("fragment"), - HashMap::new(), - HashMap::new() - - test_case7: - "did:example:123456789abcdefghi?query=value", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - None, - None, - { - let mut queries = HashMap::new(); - queries.insert("query".to_string(), "value".to_string()); - queries - }, - HashMap::new() - - test_case8: - "did:example:123456789abcdefghi/path#fragment", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - Some("/path"), - Some("fragment"), - HashMap::new(), - HashMap::new() - - test_case9: - "did:example:123456789abcdefghi;param=value", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - None, - None, - HashMap::new(), - { - let mut params = HashMap::new(); - params.extend(vec![("param".to_string(), "value".to_string())]); - params - } - - test_case10: - "did:example:123456789abcdefghi;param=value?query=value", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - None, - None, - { - let mut queries = HashMap::new(); - queries.insert("query".to_string(), "value".to_string()); - queries - }, - { - let mut params = HashMap::new(); - params.insert("param".to_string(), "value".to_string()); - params - } - - test_case11: - "did:example:123456789abcdefghi/path;param=value", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - Some("/path"), - None, - HashMap::new(), - { - let mut params = HashMap::new(); - params.insert("param".to_string(), "value".to_string()); - params - } - - test_case12: - "did:example:123456789abcdefghi/path?query1=value1;param1=value1&query2=value2#fragment", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - Some("/path"), - Some("fragment"), - { - let mut queries = HashMap::new(); - queries.extend(vec![ - ("query1".to_string(), "value1".to_string()), - ("query2".to_string(), "value2".to_string()), - ]); - queries - }, - { - let mut params = HashMap::new(); - params.insert("param1".to_string(), "value1".to_string()); - params - } - - test_case13: - "did:example:123456789abcdefghi?query=value&query2=#fragment", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - None, - Some("fragment"), - { - let mut queries = HashMap::new(); - queries.extend(vec![ - ("query".to_string(), "value".to_string()), - ("query2".to_string(), "".to_string()), - ]); - queries - }, - HashMap::new() - - test_case14: - "did:example:123456789abcdefghi;param1=value1;param2=value2?query1=value1&query2=value2#fragment", - Some("did:example:123456789abcdefghi"), - Some("example"), - Some("123456789abcdefghi"), - None, - Some("fragment"), - { - let mut queries = HashMap::new(); - queries.extend(vec![ - ("query1".to_string(), "value1".to_string()), - ("query2".to_string(), "value2".to_string()), - ]); - queries - }, - { - let mut params = HashMap::new(); - params.extend(vec![ - ("param1".to_string(), "value1".to_string()), - ("param2".to_string(), "value2".to_string()), - ]); - params - } - test_case15: - "/path", - None, - None, - None, - Some("/path"), - None, - HashMap::new(), - HashMap::new() - - test_case16: - "?query=value", - None, - None, - None, - None, - None, - { - let mut queries = HashMap::new(); - queries.insert("query".to_string(), "value".to_string()); - queries - }, - HashMap::new() - - test_case17: - "#fragment", - None, - None, - None, - None, - Some("fragment"), - HashMap::new(), - HashMap::new() - - test_case18: - ";param=value", - None, - None, - None, - None, - None, - HashMap::new(), - { - let mut params = HashMap::new(); - params.insert("param".to_string(), "value".to_string()); - params - } - - test_case19: - "/path?query=value", - None, - None, - None, - Some("/path"), - None, - { - let mut queries = HashMap::new(); - queries.insert("query".to_string(), "value".to_string()); - queries - }, - HashMap::new() - - test_case20: - "/path#fragment", - None, - None, - None, - Some("/path"), - Some("fragment"), - HashMap::new(), - HashMap::new() - - test_case21: - "did:web:w3c-ccg.github.io:user:alice", - Some("did:web:w3c-ccg.github.io:user:alice"), - Some("web"), - Some("w3c-ccg.github.io:user:alice"), - None, - None, - HashMap::new(), - HashMap::new() - - test_case22: - "2ZHFFhzA2XtTD6hJqzL7ux#1", - Some("2ZHFFhzA2XtTD6hJqzL7ux"), - None, - Some("2ZHFFhzA2XtTD6hJqzL7ux"), - None, - Some("1"), - HashMap::new(), - HashMap::new() -} diff --git a/did_core/did_parser/tests/lib.rs b/did_core/did_parser/tests/lib.rs deleted file mode 100644 index 567254e393..0000000000 --- a/did_core/did_parser/tests/lib.rs +++ /dev/null @@ -1,2 +0,0 @@ -mod did; -mod did_url; diff --git a/did_core/did_parser_nom/src/did/mod.rs b/did_core/did_parser_nom/src/did/mod.rs index b2289fc6b7..39e3d332a0 100644 --- a/did_core/did_parser_nom/src/did/mod.rs +++ b/did_core/did_parser_nom/src/did/mod.rs @@ -11,7 +11,7 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer}; use self::parsing::parse_did; use crate::{error::ParseError, DidRange, DidUrl}; -#[derive(Clone, PartialEq, Eq, Hash)] +#[derive(Clone, PartialEq, Eq, Hash, Default)] pub struct Did { did: String, method: Option, diff --git a/did_core/did_parser_nom/src/error.rs b/did_core/did_parser_nom/src/error.rs index 19099329db..3990d68b38 100644 --- a/did_core/did_parser_nom/src/error.rs +++ b/did_core/did_parser_nom/src/error.rs @@ -3,7 +3,7 @@ use std::fmt; #[derive(Debug)] pub enum ParseError { InvalidInput(&'static str), - ParserError(Box), + ParserError(Box), } impl std::error::Error for ParseError { diff --git a/did_core/did_resolver/Cargo.toml b/did_core/did_resolver/Cargo.toml index fd3c0e50fe..aebe69e1ed 100644 --- a/did_core/did_resolver/Cargo.toml +++ b/did_core/did_resolver/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" default = [] [dependencies] -did_parser = { path = "../did_parser" } +did_parser_nom = { path = "../did_parser_nom" } did_doc = { path = "../did_doc" } async-trait = "0.1.68" chrono = { version = "0.4.24", default-features = false, features = ["serde"] } diff --git a/did_core/did_resolver/src/lib.rs b/did_core/did_resolver/src/lib.rs index 4fd744d8e0..4c243735c1 100644 --- a/did_core/did_resolver/src/lib.rs +++ b/did_core/did_resolver/src/lib.rs @@ -1,5 +1,5 @@ pub extern crate did_doc; -pub extern crate did_parser; +pub extern crate did_parser_nom; pub mod error; pub mod shared_types; diff --git a/did_core/did_resolver/src/shared_types/did_document_metadata.rs b/did_core/did_resolver/src/shared_types/did_document_metadata.rs index 38d323d196..eb0a72df11 100644 --- a/did_core/did_resolver/src/shared_types/did_document_metadata.rs +++ b/did_core/did_resolver/src/shared_types/did_document_metadata.rs @@ -1,7 +1,7 @@ use std::collections::HashSet; use chrono::{DateTime, Utc}; -use did_parser::Did; +use did_parser_nom::Did; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)] diff --git a/did_core/did_resolver/src/traits/dereferenceable/mod.rs b/did_core/did_resolver/src/traits/dereferenceable/mod.rs index 22b30580a0..b4c548c84d 100644 --- a/did_core/did_resolver/src/traits/dereferenceable/mod.rs +++ b/did_core/did_resolver/src/traits/dereferenceable/mod.rs @@ -6,7 +6,7 @@ pub mod dereferencing_output; use std::io::Read; use async_trait::async_trait; -use did_parser::DidUrl; +use did_parser_nom::DidUrl; use self::{ dereferencing_options::DidDereferencingOptions, dereferencing_output::DidDereferencingOutput, diff --git a/did_core/did_resolver/src/traits/resolvable/mod.rs b/did_core/did_resolver/src/traits/resolvable/mod.rs index 9f48e02ba7..36a038ac43 100644 --- a/did_core/did_resolver/src/traits/resolvable/mod.rs +++ b/did_core/did_resolver/src/traits/resolvable/mod.rs @@ -3,7 +3,7 @@ pub mod resolution_metadata; pub mod resolution_output; use async_trait::async_trait; -use did_parser::Did; +use did_parser_nom::Did; use self::resolution_output::DidResolutionOutput; use crate::error::GenericError; diff --git a/did_core/did_resolver_registry/src/lib.rs b/did_core/did_resolver_registry/src/lib.rs index 20da57f687..8e245c3fe7 100644 --- a/did_core/did_resolver_registry/src/lib.rs +++ b/did_core/did_resolver_registry/src/lib.rs @@ -5,7 +5,7 @@ use std::collections::HashMap; use async_trait::async_trait; use did_resolver::{ did_doc::schema::did_doc::DidDocument, - did_parser::Did, + did_parser_nom::Did, error::GenericError, traits::resolvable::{resolution_output::DidResolutionOutput, DidResolvable}, }; diff --git a/justfile b/justfile index ae938d3bbe..95634ae22f 100644 --- a/justfile +++ b/justfile @@ -59,4 +59,4 @@ test-integration-aries-vcx-vdrproxy test_name="": cargo test --manifest-path="aries/aries_vcx/Cargo.toml" -F vdr_proxy_ledger,credx -- --ignored {{test_name}} test-integration-did-crate test_name="": - cargo test --examples -p did_doc -p did_parser -p did_resolver -p did_resolver_registry -p did_resolver_sov -p did_resolver_web -p did_key -p did_peer --test "*" + cargo test --examples -p did_doc -p did_parser_nom -p did_resolver -p did_resolver_registry -p did_resolver_sov -p did_resolver_web -p did_key -p did_peer --test "*"