Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
Signed-off-by: jamshale <[email protected]>
  • Loading branch information
jamshale committed Feb 28, 2024
1 parent 3c4a200 commit 6caca6f
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 57 deletions.
36 changes: 24 additions & 12 deletions aries_cloudagent/anoncreds/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ class SchemaPostRequestSchema(OpenAPISchema):
options = fields.Nested(SchemaPostOptionSchema())


@docs(tags=["anoncreds"], summary="Create a schema on the connected ledger")
@docs(tags=["anoncreds - schemas"], summary="Create a schema on the connected ledger")
@request_schema(SchemaPostRequestSchema())
@response_schema(SchemaResultSchema(), 200, description="")
async def schemas_post(request: web.BaseRequest):
Expand Down Expand Up @@ -205,7 +205,7 @@ async def schemas_post(request: web.BaseRequest):
raise web.HTTPBadRequest(reason=e.roll_up) from e


@docs(tags=["anoncreds"], summary="Retrieve an individual schemas details")
@docs(tags=["anoncreds - schemas"], summary="Retrieve an individual schemas details")
@match_info_schema(SchemaIdMatchInfo())
@response_schema(GetSchemaResultSchema(), 200, description="")
async def schema_get(request: web.BaseRequest):
Expand All @@ -230,7 +230,7 @@ async def schema_get(request: web.BaseRequest):
raise web.HTTPBadRequest(reason=e.roll_up) from e


@docs(tags=["anoncreds"], summary="Retrieve all schema ids")
@docs(tags=["anoncreds - schemas"], summary="Retrieve all schema ids")
@querystring_schema(SchemasQueryStringSchema())
@response_schema(GetSchemasResponseSchema(), 200, description="")
async def schemas_get(request: web.BaseRequest):
Expand Down Expand Up @@ -364,7 +364,8 @@ class CredDefsQueryStringSchema(OpenAPISchema):


@docs(
tags=["anoncreds"], summary="Create a credential definition on the connected ledger"
tags=["anoncreds - credential definitions"],
summary="Create a credential definition on the connected ledger",
)
@request_schema(CredDefPostRequestSchema())
@response_schema(CredDefResultSchema(), 200, description="")
Expand Down Expand Up @@ -409,7 +410,8 @@ async def cred_def_post(request: web.BaseRequest):


@docs(
tags=["anoncreds"], summary="Retrieve an individual credential definition details"
tags=["anoncreds - credential definitions"],
summary="Retrieve an individual credential definition details",
)
@match_info_schema(CredIdMatchInfo())
@response_schema(GetCredDefResultSchema(), 200, description="")
Expand Down Expand Up @@ -450,7 +452,10 @@ class GetCredDefsResponseSchema(OpenAPISchema):
)


@docs(tags=["anoncreds"], summary="Retrieve all credential definition ids")
@docs(
tags=["anoncreds - credential definitions"],
summary="Retrieve all credential definition ids",
)
@querystring_schema(CredDefsQueryStringSchema())
@response_schema(GetCredDefsResponseSchema(), 200, description="")
async def cred_defs_get(request: web.BaseRequest):
Expand Down Expand Up @@ -531,7 +536,7 @@ class RevRegCreateRequestSchema(OpenAPISchema):


@docs(
tags=["anoncreds"],
tags=["anoncreds - revocation"],
summary="Create and publish a registration revocation on the connected ledger",
)
@request_schema(RevRegCreateRequestSchema())
Expand Down Expand Up @@ -611,7 +616,7 @@ class RevListCreateRequestSchema(OpenAPISchema):


@docs(
tags=["anoncreds"],
tags=["anoncreds - revocation"],
summary="Create and publish a revocation status list on the connected ledger",
)
@request_schema(RevListCreateRequestSchema())
Expand Down Expand Up @@ -640,7 +645,7 @@ async def rev_list_post(request: web.BaseRequest):


@docs(
tags=["anoncreds"],
tags=["anoncreds - revocation"],
summary="Upload local tails file to server",
)
@match_info_schema(RevRegIdMatchInfoSchema())
Expand Down Expand Up @@ -670,7 +675,7 @@ async def upload_tails_file(request: web.BaseRequest):


@docs(
tags=["anoncreds"],
tags=["anoncreds - revocation"],
summary="Update the active registry",
)
@match_info_schema(RevRegIdMatchInfoSchema())
Expand Down Expand Up @@ -734,8 +739,15 @@ def post_process_routes(app: web.Application):
app._state["swagger_dict"]["tags"] = []
app._state["swagger_dict"]["tags"].append(
{
"name": "anoncreds",
"description": "Anoncreds management",
"name": "anoncreds - schemas",
"description": "Anoncreds schema management",
"externalDocs": {"description": "Specification", "url": SPEC_URI},
}
)
app._state["swagger_dict"]["tags"].append(
{
"name": "anoncreds - credential definitions",
"description": "Anoncreds credential definition management",
"externalDocs": {"description": "Specification", "url": SPEC_URI},
}
)
41 changes: 24 additions & 17 deletions aries_cloudagent/config/default_context.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
from ..utils.dependencies import is_indy_sdk_module_installed
from ..utils.stats import Collector
from ..wallet.default_verification_key_strategy import (
DefaultVerificationKeyStrategy,
BaseVerificationKeyStrategy,
DefaultVerificationKeyStrategy,
)
from ..wallet.did_method import DIDMethods
from ..wallet.key_type import KeyTypes
Expand Down Expand Up @@ -143,27 +143,34 @@ async def load_plugins(self, context: InjectionContext):
plugin_registry.register_plugin("aries_cloudagent.settings")
plugin_registry.register_plugin("aries_cloudagent.vc")
plugin_registry.register_plugin("aries_cloudagent.wallet")

anoncreds_plugins = [
"aries_cloudagent.anoncreds",
"aries_cloudagent.anoncreds.default.did_indy",
"aries_cloudagent.anoncreds.default.did_web",
"aries_cloudagent.anoncreds.default.legacy_indy",
"aries_cloudagent.revocation_anoncreds",
]

askar_plugins = [
"aries_cloudagent.messaging.credential_definitions",
"aries_cloudagent.messaging.schemas",
"aries_cloudagent.revocation",
]

if wallet_type == "askar-anoncreds":
plugin_registry.register_plugin("aries_cloudagent.anoncreds")
plugin_registry.register_plugin(
"aries_cloudagent.anoncreds.default.did_indy"
)
plugin_registry.register_plugin(
"aries_cloudagent.anoncreds.default.did_web"
)
plugin_registry.register_plugin(
"aries_cloudagent.anoncreds.default.legacy_indy"
)
plugin_registry.register_plugin("aries_cloudagent.revocation_anoncreds")
for plugin in anoncreds_plugins:
plugin_registry.register_plugin(plugin)
else:
plugin_registry.register_plugin(
"aries_cloudagent.messaging.credential_definitions"
)
plugin_registry.register_plugin("aries_cloudagent.messaging.schemas")
plugin_registry.register_plugin("aries_cloudagent.revocation")
for plugin in askar_plugins:
plugin_registry.register_plugin(plugin)

if context.settings.get("multitenant.admin_enabled"):
plugin_registry.register_plugin("aries_cloudagent.multitenant.admin")
for plugin in anoncreds_plugins:
plugin_registry.register_plugin(plugin)
for plugin in askar_plugins:
plugin_registry.register_plugin(plugin)

# Register external plugins
for plugin_path in self.settings.get("external_plugins", []):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
from ....messaging.responder import BaseResponder
from ....revocation.util import (
REVOCATION_CLEAR_PENDING_EVENT,
REVOCATION_PUBLISHED_EVENT,
REVOCATION_EVENT_PREFIX,
REVOCATION_PUBLISHED_EVENT,
)
from ....storage.error import StorageError, StorageNotFoundError
from .models.rev_notification_record import RevNotificationRecord
Expand Down
62 changes: 35 additions & 27 deletions aries_cloudagent/revocation_anoncreds/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@

LOGGER = logging.getLogger(__name__)

TAG_TITLE = "anoncreds - revocation"


class RevocationAnoncredsModuleResponseSchema(OpenAPISchema):
"""Response schema for Revocation Module."""
Expand Down Expand Up @@ -516,7 +518,7 @@ def validate_fields(self, data, **kwargs):


@docs(
tags=["revocation"],
tags=[TAG_TITLE],
summary="Revoke an issued credential",
)
@request_schema(RevokeRequestSchema())
Expand Down Expand Up @@ -567,7 +569,7 @@ async def revoke(request: web.BaseRequest):
raise web.HTTPBadRequest(reason=err.roll_up) from err


@docs(tags=["revocation"], summary="Publish pending revocations to ledger")
@docs(tags=[TAG_TITLE], summary="Publish pending revocations to ledger")
@request_schema(PublishRevocationsSchema())
@response_schema(PublishRevocationsResultSchema(), 200, description="")
async def publish_revocations(request: web.BaseRequest):
Expand Down Expand Up @@ -600,7 +602,7 @@ async def publish_revocations(request: web.BaseRequest):


@docs(
tags=["revocation"],
tags=[TAG_TITLE],
summary="Search for matching revocation registries that current agent created",
)
@querystring_schema(RevRegsCreatedQueryStringSchema())
Expand Down Expand Up @@ -636,7 +638,7 @@ async def rev_regs_created(request: web.BaseRequest):


@docs(
tags=["revocation"],
tags=[TAG_TITLE],
summary="Get revocation registry by revocation registry id",
)
@match_info_schema(RevRegIdMatchInfoSchema())
Expand Down Expand Up @@ -707,7 +709,7 @@ async def _get_issuer_rev_reg_record(


@docs(
tags=["revocation"],
tags=[TAG_TITLE],
summary="Get current active revocation registry by credential definition id",
)
@match_info_schema(RevocationCredDefIdMatchInfoSchema())
Expand Down Expand Up @@ -735,7 +737,7 @@ async def get_active_rev_reg(request: web.BaseRequest):
return web.json_response({"result": rev_reg.serialize()})


@docs(tags=["revocation"], summary="Rotate revocation registry")
@docs(tags=[TAG_TITLE], summary="Rotate revocation registry")
@match_info_schema(RevocationCredDefIdMatchInfoSchema())
@response_schema(RevRegsCreatedSchema(), 200, description="")
async def rotate_rev_reg(request: web.BaseRequest):
Expand All @@ -762,7 +764,7 @@ async def rotate_rev_reg(request: web.BaseRequest):


@docs(
tags=["revocation"],
tags=[TAG_TITLE],
summary="Get number of credentials issued against revocation registry",
)
@match_info_schema(RevRegIdMatchInfoSchema())
Expand Down Expand Up @@ -799,7 +801,7 @@ async def get_rev_reg_issued_count(request: web.BaseRequest):


@docs(
tags=["revocation"],
tags=[TAG_TITLE],
summary="Get details of credentials issued against revocation registry",
)
@match_info_schema(RevRegIdMatchInfoSchema())
Expand Down Expand Up @@ -837,7 +839,7 @@ async def get_rev_reg_issued(request: web.BaseRequest):


@docs(
tags=["revocation"],
tags=[TAG_TITLE],
summary="Get details of revoked credentials from ledger",
)
@match_info_schema(RevRegIdMatchInfoSchema())
Expand Down Expand Up @@ -877,7 +879,7 @@ async def get_rev_reg_indy_recs(request: web.BaseRequest):


@docs(
tags=["revocation"],
tags=[TAG_TITLE],
summary="Fix revocation state in wallet and return number of updated entries",
)
@match_info_schema(RevRegIdMatchInfoSchema())
Expand Down Expand Up @@ -970,7 +972,7 @@ async def update_rev_reg_revoked_state(request: web.BaseRequest):


@docs(
tags=["revocation"],
tags=[TAG_TITLE],
summary="Get credential revocation status",
)
@querystring_schema(CredRevRecordQueryStringSchema())
Expand Down Expand Up @@ -1008,7 +1010,7 @@ async def get_cred_rev_record(request: web.BaseRequest):


@docs(
tags=["revocation"],
tags=[TAG_TITLE],
summary="Download tails file",
produces=["application/octet-stream"],
)
Expand Down Expand Up @@ -1045,7 +1047,7 @@ async def get_tails_file(request: web.BaseRequest) -> web.FileResponse:
return web.FileResponse(path=tails_local_path, status=200)


@docs(tags=["revocation"], summary="Set revocation registry state manually")
@docs(tags=[TAG_TITLE], summary="Set revocation registry state manually")
@match_info_schema(RevRegIdMatchInfoSchema())
@querystring_schema(SetRevRegStateQueryStringSchema())
@response_schema(RevRegResultSchema(), 200, description="")
Expand Down Expand Up @@ -1087,52 +1089,58 @@ async def register(app: web.Application):
"""Register routes."""
app.add_routes(
[
web.post("/revocation/revoke", revoke),
web.post("/revocation/publish-revocations", publish_revocations),
web.post("/anoncreds/revocation/revoke", revoke),
web.post("/anoncreds/revocation/publish-revocations", publish_revocations),
web.get(
"/revocation/credential-record", get_cred_rev_record, allow_head=False
"/anoncreds/revocation/credential-record",
get_cred_rev_record,
allow_head=False,
),
web.get(
"/revocation/registries/created",
"/anoncreds/revocation/registries/created",
rev_regs_created,
allow_head=False,
),
web.get("/revocation/registry/{rev_reg_id}", get_rev_reg, allow_head=False),
web.get(
"/revocation/active-registry/{cred_def_id}",
"/anoncreds/revocation/registry/{rev_reg_id}",
get_rev_reg,
allow_head=False,
),
web.get(
"/anoncreds/revocation/active-registry/{cred_def_id}",
get_active_rev_reg,
allow_head=False,
),
web.post(
"/revocation/active-registry/{cred_def_id}/rotate",
"/anoncreds/revocation/active-registry/{cred_def_id}/rotate",
rotate_rev_reg,
),
web.get(
"/revocation/registry/{rev_reg_id}/issued",
"/anoncreds/revocation/registry/{rev_reg_id}/issued",
get_rev_reg_issued_count,
allow_head=False,
),
web.get(
"/revocation/registry/{rev_reg_id}/issued/details",
"/anoncreds/revocation/registry/{rev_reg_id}/issued/details",
get_rev_reg_issued,
allow_head=False,
),
web.get(
"/revocation/registry/{rev_reg_id}/issued/indy_recs",
"/anoncreds/revocation/registry/{rev_reg_id}/issued/indy_recs",
get_rev_reg_indy_recs,
allow_head=False,
),
web.get(
"/revocation/registry/{rev_reg_id}/tails-file",
"/anoncreds/revocation/registry/{rev_reg_id}/tails-file",
get_tails_file,
allow_head=False,
),
web.patch(
"/revocation/registry/{rev_reg_id}/set-state",
"/anoncreds/revocation/registry/{rev_reg_id}/set-state",
set_rev_reg_state,
),
web.put(
"/revocation/registry/{rev_reg_id}/fix-revocation-entry-state",
"/anoncreds/revocation/registry/{rev_reg_id}/fix-revocation-entry-state",
update_rev_reg_revoked_state,
),
]
Expand All @@ -1147,7 +1155,7 @@ def post_process_routes(app: web.Application):
app._state["swagger_dict"]["tags"] = []
app._state["swagger_dict"]["tags"].append(
{
"name": "revocation",
"name": TAG_TITLE,
"description": "Revocation registry management",
"externalDocs": {
"description": "Overview",
Expand Down

0 comments on commit 6caca6f

Please sign in to comment.