diff --git a/acapy_agent/messaging/valid.py b/acapy_agent/messaging/valid.py index c5026ca382..3089fd25ff 100644 --- a/acapy_agent/messaging/valid.py +++ b/acapy_agent/messaging/valid.py @@ -363,16 +363,20 @@ def __init__(self): class AnoncredsDID(Regexp): - """Validate value against indy DID.""" + """Validate value against anoncreds DID.""" + + METHOD = r"([a-zA-Z0-9_]+)" + NETWORK = r"(:[a-zA-Z0-9_.%-]+)?" # Optional network + METHOD_ID = r"([a-zA-Z0-9_.%-]+(:[a-zA-Z0-9_.%-]+)*)" EXAMPLE = "did:(method):WgWxqztrNooG92RXvxSTWv" - PATTERN = re.compile("^(did:[a-z]:.+$)?$") + PATTERN = re.compile(rf"^did:{METHOD}{NETWORK}:{METHOD_ID}") def __init__(self): """Initialize the instance.""" super().__init__( - IndyDID.PATTERN, + DIDValidation.PATTERN, error="Value {input} is not an decentralized identifier (DID)", ) @@ -381,6 +385,7 @@ class DIDValidation(Regexp): """Validate value against any valid DID spec.""" METHOD = r"([a-zA-Z0-9_]+)" + NETWORK = r"(:[a-zA-Z0-9_.%-]+)?" # Optional network METHOD_ID = r"([a-zA-Z0-9_.%-]+(:[a-zA-Z0-9_.%-]+)*)" PARAMS = r"((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)" PATH = r"(\/[^#?]*)?" @@ -388,7 +393,9 @@ class DIDValidation(Regexp): FRAGMENT = r"(\#.*)?$" EXAMPLE = "did:peer:WgWxqztrNooG92RXvxSTWv" - PATTERN = re.compile(rf"^did:{METHOD}:{METHOD_ID}{PARAMS}{PATH}{QUERY}{FRAGMENT}$") + PATTERN = re.compile( + rf"^did:{METHOD}{NETWORK}:{METHOD_ID}{PARAMS}{PATH}{QUERY}{FRAGMENT}$" + ) def __init__(self): """Initialize the instance.""" @@ -485,7 +492,7 @@ def __init__(self): """Initialize the instance.""" super().__init__( - IndyCredDefId.PATTERN, + AnoncredsCredDefId.PATTERN, error="Value {input} is not an anoncreds credential definition identifier", ) @@ -530,7 +537,7 @@ def __init__(self): """Initialize the instance.""" super().__init__( - IndySchemaId.PATTERN, + AnoncredsSchemaId.PATTERN, error="Value {input} is not an anoncreds schema identifier", ) diff --git a/acapy_agent/revocation_anoncreds/routes.py b/acapy_agent/revocation_anoncreds/routes.py index 4c5b3bd8b0..ccda33a5f1 100644 --- a/acapy_agent/revocation_anoncreds/routes.py +++ b/acapy_agent/revocation_anoncreds/routes.py @@ -38,12 +38,12 @@ from ..ledger.multiple_ledger.base_manager import BaseMultipleLedgerManager from ..messaging.models.openapi import OpenAPISchema from ..messaging.valid import ( - INDY_CRED_DEF_ID_EXAMPLE, - INDY_CRED_DEF_ID_VALIDATE, + ANONCREDS_CRED_DEF_ID_EXAMPLE, + ANONCREDS_CRED_DEF_ID_VALIDATE, INDY_CRED_REV_ID_EXAMPLE, INDY_CRED_REV_ID_VALIDATE, - INDY_REV_REG_ID_EXAMPLE, - INDY_REV_REG_ID_VALIDATE, + ANONCREDS_REV_REG_ID_EXAMPLE, + ANONCREDS_REV_REG_ID_VALIDATE, UUID4_EXAMPLE, UUID4_VALIDATE, WHOLE_NUM_EXAMPLE, @@ -99,10 +99,10 @@ def validate_fields(self, data, **kwargs): rev_reg_id = fields.Str( required=False, - validate=INDY_REV_REG_ID_VALIDATE, + validate=ANONCREDS_REV_REG_ID_VALIDATE, metadata={ "description": "Revocation registry identifier", - "example": INDY_REV_REG_ID_EXAMPLE, + "example": ANONCREDS_REV_REG_ID_EXAMPLE, }, ) cred_rev_id = fields.Str( @@ -138,18 +138,18 @@ def validate_fields(self, data, **kwargs): rev_reg_id = fields.Str( required=False, - validate=INDY_REV_REG_ID_VALIDATE, + validate=ANONCREDS_REV_REG_ID_VALIDATE, metadata={ "description": "Revocation registry identifier", - "example": INDY_REV_REG_ID_EXAMPLE, + "example": ANONCREDS_REV_REG_ID_EXAMPLE, }, ) cred_def_id = fields.Str( required=False, - validate=INDY_CRED_DEF_ID_VALIDATE, + validate=ANONCREDS_CRED_DEF_ID_VALIDATE, metadata={ "description": "Credential definition identifier", - "example": INDY_CRED_DEF_ID_EXAMPLE, + "example": ANONCREDS_CRED_DEF_ID_EXAMPLE, }, ) @@ -215,10 +215,10 @@ class RevRegsCreatedSchemaAnoncreds(OpenAPISchema): rev_reg_ids = fields.List( fields.Str( - validate=INDY_REV_REG_ID_VALIDATE, + validate=ANONCREDS_REV_REG_ID_VALIDATE, metadata={ "description": "Revocation registry identifiers", - "example": INDY_REV_REG_ID_EXAMPLE, + "example": ANONCREDS_REV_REG_ID_EXAMPLE, }, ) ) @@ -233,7 +233,7 @@ class RevRegUpdateTailsFileUriSchema(OpenAPISchema): "description": "Public URI to the tails file", "example": ( "http://192.168.56.133:6543/revocation/registry/" - f"{INDY_REV_REG_ID_EXAMPLE}/tails-file" + f"{ANONCREDS_REV_REG_ID_EXAMPLE}/tails-file" ), }, ) @@ -244,10 +244,10 @@ class RevRegsCreatedQueryStringSchema(OpenAPISchema): cred_def_id = fields.Str( required=False, - validate=INDY_CRED_DEF_ID_VALIDATE, + validate=ANONCREDS_CRED_DEF_ID_VALIDATE, metadata={ "description": "Credential definition identifier", - "example": INDY_CRED_DEF_ID_EXAMPLE, + "example": ANONCREDS_CRED_DEF_ID_EXAMPLE, }, ) state = fields.Str( @@ -284,10 +284,10 @@ class RevRegIdMatchInfoSchema(OpenAPISchema): rev_reg_id = fields.Str( required=True, - validate=INDY_REV_REG_ID_VALIDATE, + validate=ANONCREDS_REV_REG_ID_VALIDATE, metadata={ "description": "Revocation Registry identifier", - "example": INDY_REV_REG_ID_EXAMPLE, + "example": ANONCREDS_REV_REG_ID_EXAMPLE, }, ) @@ -297,10 +297,10 @@ class RevocationCredDefIdMatchInfoSchema(OpenAPISchema): cred_def_id = fields.Str( required=True, - validate=INDY_CRED_DEF_ID_VALIDATE, + validate=ANONCREDS_CRED_DEF_ID_VALIDATE, metadata={ "description": "Credential definition identifier", - "example": INDY_CRED_DEF_ID_EXAMPLE, + "example": ANONCREDS_CRED_DEF_ID_EXAMPLE, }, ) @@ -348,7 +348,7 @@ class PublishRevocationsSchemaAnoncreds(OpenAPISchema): rrid2crid = fields.Dict( required=False, - keys=fields.Str(metadata={"example": INDY_REV_REG_ID_EXAMPLE}), + keys=fields.Str(metadata={"example": ANONCREDS_REV_REG_ID_EXAMPLE}), values=fields.List( fields.Str( validate=INDY_CRED_REV_ID_VALIDATE, @@ -368,7 +368,7 @@ class PublishRevocationsResultSchemaAnoncreds(OpenAPISchema): rrid2crid = fields.Dict( required=False, - keys=fields.Str(metadata={"example": INDY_REV_REG_ID_EXAMPLE}), + keys=fields.Str(metadata={"example": ANONCREDS_REV_REG_ID_EXAMPLE}), values=fields.List( fields.Str( validate=INDY_CRED_REV_ID_VALIDATE, diff --git a/acapy_agent/revocation_anoncreds/tests/test_routes.py b/acapy_agent/revocation_anoncreds/tests/test_routes.py index 6f0ea1577b..ae8d806b1a 100644 --- a/acapy_agent/revocation_anoncreds/tests/test_routes.py +++ b/acapy_agent/revocation_anoncreds/tests/test_routes.py @@ -42,7 +42,7 @@ async def test_validate_cred_rev_rec_qs_and_revoke_req(self): ): req.validate_fields( { - "rev_reg_id": test_module.INDY_REV_REG_ID_EXAMPLE, + "rev_reg_id": test_module.ANONCREDS_REV_REG_ID_EXAMPLE, "cred_rev_id": test_module.INDY_CRED_REV_ID_EXAMPLE, } ) @@ -50,13 +50,15 @@ async def test_validate_cred_rev_rec_qs_and_revoke_req(self): with self.assertRaises(test_module.ValidationError): req.validate_fields({}) with self.assertRaises(test_module.ValidationError): - req.validate_fields({"rev_reg_id": test_module.INDY_REV_REG_ID_EXAMPLE}) + req.validate_fields( + {"rev_reg_id": test_module.ANONCREDS_REV_REG_ID_EXAMPLE} + ) with self.assertRaises(test_module.ValidationError): req.validate_fields({"cred_rev_id": test_module.INDY_CRED_REV_ID_EXAMPLE}) with self.assertRaises(test_module.ValidationError): req.validate_fields( { - "rev_reg_id": test_module.INDY_REV_REG_ID_EXAMPLE, + "rev_reg_id": test_module.ANONCREDS_REV_REG_ID_EXAMPLE, "cred_ex_id": test_module.UUID4_EXAMPLE, } ) @@ -70,7 +72,7 @@ async def test_validate_cred_rev_rec_qs_and_revoke_req(self): with self.assertRaises(test_module.ValidationError): req.validate_fields( { - "rev_reg_id": test_module.INDY_REV_REG_ID_EXAMPLE, + "rev_reg_id": test_module.ANONCREDS_REV_REG_ID_EXAMPLE, "cred_rev_id": test_module.INDY_CRED_REV_ID_EXAMPLE, "cred_ex_id": test_module.UUID4_EXAMPLE, } diff --git a/acapy_agent/wallet/routes.py b/acapy_agent/wallet/routes.py index cf539d61ac..0b33f1bd80 100644 --- a/acapy_agent/wallet/routes.py +++ b/acapy_agent/wallet/routes.py @@ -70,7 +70,15 @@ ) from .base import BaseWallet from .did_info import DIDInfo -from .did_method import KEY, PEER2, PEER4, SOV, DIDMethod, DIDMethods, HolderDefinedDid +from .did_method import ( + KEY, + PEER2, + PEER4, + SOV, + DIDMethod, + DIDMethods, + HolderDefinedDid, +) from .did_posture import DIDPosture from .error import WalletError, WalletNotFoundError from .key_type import BLS12381G2, ED25519, KeyTypes @@ -311,9 +319,6 @@ class DIDListQueryStringSchema(OpenAPISchema): ) method = fields.Str( required=False, - validate=validate.OneOf( - [KEY.method_name, SOV.method_name, PEER2.method_name, PEER4.method_name] - ), metadata={ "example": KEY.method_name, "description": (