Skip to content

AttributeError: 'NoneType' object has no attribute 'issuer' - presenting revoked OOR credential fails #45

@kentbull

Description

@kentbull

Presenting a revoked OOR credential fails with the below error and stack trace:

2025-05-15 14:22:41 [sally] ERROR    revocation received for unknown credential ELSmY2plM7OBpLsn2r5QgNrWT0XYClQpS4Q5m1N7T_pF
Traceback (most recent call last):
  File "/sally/src/sally/app/cli/kli.py", line 22, in main
    args.handler(args)
  File "/sally/src/sally/app/cli/commands/server/start.py", line 18, in <lambda>
    parser.set_defaults(handler=lambda args: launch(args),
                                             ^^^^^^^^^^^^
  File "/sally/src/sally/app/cli/commands/server/start.py", line 129, in launch
    directing.runController(doers=doers, expire=expire)
  File "/keripy/venv/lib/python3.12/site-packages/keri/app/directing.py", line 665, in runController
    doist.do(doers=doers)
  File "/keripy/venv/lib/python3.12/site-packages/hio/base/doing.py", line 156, in do
    self.recur()  # increments .tyme runs recur context
    ^^^^^^^^^^^^
  File "/keripy/venv/lib/python3.12/site-packages/hio/base/doing.py", line 275, in recur
    tock = dog.send(self.tyme)  # yielded tock == 0.0 means re-run asap
           ^^^^^^^^^^^^^^^^^^^
  File "/sally/src/sally/core/credentials.py", line 49, in do
    prefixer = coring.Prefixer(qb64=creder.issuer)
                                    ^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'issuer'

Instead of failing then when a revoked credential is received then the original, unrevoked credential should be processed first followed by the revocation.

WARNING:
This assumes that the original issued credential arrives in the CESR stream of the revoked credential. Validate this assumption before working on this issue. If the original issuance is not present in the CESR stream sent during the IPEX Grant of the revoked credential then work with the KERIpy maintainers to change this behavior of IPEX. An IPEX Grant should send both the original issuance and the revocation of a credential.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions