Skip to content

Commit d98154d

Browse files
authored
Merge branch 'main' into fix/4077-verify-kid-from-jws-header
2 parents cd6ea71 + 0b192ce commit d98154d

File tree

3 files changed

+133
-95
lines changed

3 files changed

+133
-95
lines changed

acapy_agent/wallet/anoncreds_upgrade.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
from ..anoncreds.models.schema import SchemaState
3636
from ..cache.base import BaseCache
3737
from ..core.profile import Profile, ProfileSession
38+
from ..indy.constants import CATEGORY_REV_REG
3839
from ..indy.credx.holder import CATEGORY_LINK_SECRET, IndyCredxHolder
3940
from ..ledger.multiple_ledger.ledger_requests_executor import (
4041
GET_CRED_DEF,
@@ -119,12 +120,14 @@ def __init__(
119120
rev_reg_def: RevRegDef,
120121
rev_reg_def_private: RevocationRegistryDefinitionPrivate,
121122
active: bool = False,
123+
accum: Optional[str] = None,
122124
):
123125
"""Initialize rev reg def upgrade object."""
124126
self.rev_reg_def_id = rev_reg_def_id
125127
self.rev_reg_def = rev_reg_def
126128
self.rev_reg_def_private = rev_reg_def_private
127129
self.active = active
130+
self.accum = accum
128131

129132

130133
class RevListUpgradeObj:
@@ -242,6 +245,8 @@ async def get_rev_reg_def_upgrade_object(
242245
askar_reg_rev_def_private = await storage.get_record(
243246
CATEGORY_REV_REG_DEF_PRIVATE, rev_reg_def_id
244247
)
248+
accum_record = await storage.get_record(CATEGORY_REV_REG, rev_reg_def_id)
249+
accum_value = json.loads(accum_record.value)["value"]["accum"]
245250

246251
revoc_reg_def_values = json.loads(askar_issuer_rev_reg_def.value)
247252

@@ -261,7 +266,11 @@ async def get_rev_reg_def_upgrade_object(
261266
)
262267

263268
return RevRegDefUpgradeObj(
264-
rev_reg_def_id, rev_reg_def, askar_reg_rev_def_private.value, is_active
269+
rev_reg_def_id,
270+
rev_reg_def,
271+
askar_reg_rev_def_private.value,
272+
is_active,
273+
accum_value,
265274
)
266275

267276

@@ -277,18 +286,19 @@ async def get_rev_list_upgrade_object(
277286
{"rev_reg_id": rev_reg_def_upgrade_obj.rev_reg_def_id},
278287
)
279288

280-
revocation_list = [0] * rev_reg.value.max_cred_num
289+
# We need to increase the list by 1 here because the first index
290+
# is reserved by the cryptographic algorithm and the previous record
291+
# goes up to max_cred_num as numbers and not a list of truthy values
292+
revocation_list = [0] * (rev_reg.value.max_cred_num + 1)
281293
for askar_cred_rev_record in askar_cred_rev_records:
282294
if askar_cred_rev_record.tags.get("state") == "revoked":
283-
revocation_list[int(askar_cred_rev_record.tags.get("cred_rev_id")) - 1] = 1
295+
revocation_list[int(askar_cred_rev_record.tags.get("cred_rev_id"))] = 1
284296

285297
rev_list = RevList(
286298
issuer_id=rev_reg.issuer_id,
287299
rev_reg_def_id=rev_reg_def_upgrade_obj.rev_reg_def_id,
288300
revocation_list=revocation_list,
289-
current_accumulator=json.loads(
290-
rev_reg_def_upgrade_obj.askar_issuer_rev_reg_def.value
291-
)["revoc_reg_entry"]["value"]["accum"],
301+
current_accumulator=rev_reg_def_upgrade_obj.accum,
292302
)
293303

294304
return RevListUpgradeObj(
@@ -400,7 +410,8 @@ async def upgrade_and_delete_rev_entry_records(
400410
txn: ProfileSession, rev_list_upgrade_obj: RevListUpgradeObj
401411
) -> None:
402412
"""Upgrade and delete revocation entry records."""
403-
next_index = 0
413+
# 0 index is reserved by the crypto algorithm
414+
next_index = 1
404415
for cred_rev_record in rev_list_upgrade_obj.cred_rev_records:
405416
if int(cred_rev_record.tags.get("cred_rev_id")) > next_index:
406417
next_index = int(cred_rev_record.tags.get("cred_rev_id"))
@@ -467,6 +478,7 @@ async def get_rev_reg_def_upgrade_objs(
467478
),
468479
key=lambda x: json.loads(x.value)["created_at"],
469480
)
481+
470482
found_active = False
471483
is_active = False
472484
for askar_issuer_rev_reg_def in askar_issuer_rev_reg_def_records:

0 commit comments

Comments
 (0)