Skip to content

Commit e9adaad

Browse files
authored
Merge pull request openwallet-foundation#1924 from andrewwhitehead/filter-reg-created
Pre-populate revoc_reg_id on IssuerRevRegRecord
2 parents 4e5ed0f + e806bde commit e9adaad

5 files changed

Lines changed: 24 additions & 6 deletions

File tree

aries_cloudagent/revocation/indy.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Indy revocation registry management."""
22

33
from typing import Optional, Sequence, Tuple
4+
from uuid import uuid4
45

56
from ..core.profile import Profile
67
from ..ledger.base import BaseLedger
@@ -44,7 +45,7 @@ async def init_issuer_registry(
4445
create_pending_rev_reg: bool = False,
4546
endorser_connection_id: str = None,
4647
notify: bool = True,
47-
) -> "IssuerRevRegRecord":
48+
) -> IssuerRevRegRecord:
4849
"""Create a new revocation registry record for a credential definition."""
4950
multitenant_mgr = self._profile.inject_or(BaseMultitenantManager)
5051
if multitenant_mgr:
@@ -72,13 +73,20 @@ async def init_issuer_registry(
7273
f"Bad revocation registry size: {max_cred_num}"
7374
)
7475

76+
record_id = str(uuid4())
77+
issuer_did = cred_def_id.split(":")[0]
7578
record = IssuerRevRegRecord(
79+
new_with_id=True,
80+
record_id=record_id,
7681
cred_def_id=cred_def_id,
77-
issuer_did=cred_def_id.split(":")[0],
82+
issuer_did=issuer_did,
7883
max_cred_num=max_cred_num,
7984
revoc_def_type=revoc_def_type,
8085
tag=tag,
8186
)
87+
revoc_def_type = record.revoc_def_type
88+
rtag = record.tag or record_id
89+
record.revoc_reg_id = f"{issuer_did}:4:{cred_def_id}:{revoc_def_type}:{rtag}"
8290
async with self._profile.session() as session:
8391
await record.save(session, reason="Init revocation registry")
8492

aries_cloudagent/revocation/models/issuer_rev_reg_record.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,8 @@ async def generate_registry(self, profile: Profile):
202202
except IndyIssuerError as err:
203203
raise RevocationError() from err
204204

205+
if self.revoc_reg_id and revoc_reg_id != self.revoc_reg_id:
206+
raise RevocationError("Generated registry ID does not match assigned value")
205207
self.revoc_reg_id = revoc_reg_id
206208
self.revoc_reg_def = json.loads(revoc_reg_def_json)
207209
self.revoc_reg_entry = json.loads(revoc_reg_entry_json)

aries_cloudagent/revocation/routes.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -585,9 +585,19 @@ async def rev_regs_created(request: web.BaseRequest):
585585
tag: request.query[tag] for tag in search_tags if tag in request.query
586586
}
587587
async with context.profile.session() as session:
588-
found = await IssuerRevRegRecord.query(session, tag_filter)
588+
found = await IssuerRevRegRecord.query(
589+
session,
590+
tag_filter,
591+
post_filter_negative={"state": IssuerRevRegRecord.STATE_INIT},
592+
)
589593

590-
return web.json_response({"rev_reg_ids": [record.revoc_reg_id for record in found]})
594+
return web.json_response(
595+
{
596+
"rev_reg_ids": [
597+
record.revoc_reg_id for record in found if record.revoc_reg_id
598+
]
599+
}
600+
)
591601

592602

593603
@docs(

aries_cloudagent/revocation/tests/test_indy.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
from ..models.revocation_registry import RevocationRegistry
2121

2222

23-
@pytest.mark.indy
2423
class TestIndyRevocation(AsyncTestCase):
2524
def setUp(self):
2625
self.profile = InMemoryProfile.test_profile()

aries_cloudagent/revocation/tests/test_routes.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,6 @@ async def test_create_rev_reg_no_revo_support(self):
282282

283283
async def test_rev_regs_created(self):
284284
CRED_DEF_ID = f"{self.test_did}:3:CL:1234:default"
285-
STATE = "active"
286285
self.request.query = {
287286
"cred_def_id": CRED_DEF_ID,
288287
"state": test_module.IssuerRevRegRecord.STATE_ACTIVE,

0 commit comments

Comments
 (0)