Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Connection Reuse in edge wallets #2010

Open
sairanjit opened this issue Aug 23, 2024 · 5 comments
Open

Connection Reuse in edge wallets #2010

sairanjit opened this issue Aug 23, 2024 · 5 comments

Comments

@sairanjit
Copy link
Contributor

sairanjit commented Aug 23, 2024

The scenario is User 1 and User 2 connection with reuse works fine with passing invitationDid. But it fails if I create invitation from User 1 using invitationDid and try to accept it with User 3 . The error I am getting is

ERROR: Error handling message with type https://didcomm.org/didexchange/1.1/request

{
    "message": {
        "@type": "https://didcomm.org/didexchange/1.1/request",
        "@id": "be1bce6d-ae00-4fa0-9c01-5addb3767c7b",
        "label": "Holder Agent 2",
        "did": "did:peer:1zQmRYToLZF56Xd5itnQ954cLLncVDsPV656mx8pWqo9dp9C",
        "~thread": {
            "pthid": "301e9db3-d422-4c4e-8c3e-8b6b8c2ec421"
        },
        "did_doc~attach": {
            "@id": "490e4548-7136-4cb5-a54a-107e1b877d67",
            "mime-type": "application/json",
            "data": {
                "base64": "eyJAY29udGV4dCI6WyJodHRwczovL3czaWQub3JnL2RpZC92MSJdLCJpZCI6ImRpZDpwZWVyOjF6UW1SWVRvTFpGNTZYZDVpdG5ROTU0Y0xMbmNWRHNQVjY1Nm14OHBXcW85ZHA5QyIsInNlcnZpY2UiOlt7ImlkIjoiI2lubGluZS0wIiwic2VydmljZUVuZHBvaW50IjoiaHR0cDovLzE5Mi4xNjguMS4yNzozMDAwIiwidHlwZSI6ImRpZC1jb21tdW5pY2F0aW9uIiwicHJpb3JpdHkiOjAsInJlY2lwaWVudEtleXMiOlsiI2tleS0xIl0sInJvdXRpbmdLZXlzIjpbImRpZDprZXk6ejZNa3VQTHB4N01Vb2tNSmZCNGhKd2E4UjVETHAxMWlTZGtRVmNMN0RhTmZ1dG5XI3o2TWt1UExweDdNVW9rTUpmQjRoSndhOFI1RExwMTFpU2RrUVZjTDdEYU5mdXRuVyJdfV0sImF1dGhlbnRpY2F0aW9uIjpbeyJpZCI6IiNrZXktMSIsInR5cGUiOiJFZDI1NTE5VmVyaWZpY2F0aW9uS2V5MjAxOCIsImNvbnRyb2xsZXIiOiIjaWQiLCJwdWJsaWNLZXlCYXNlNTgiOiI1N1cxSGR4cmExclJxMUI5cVJLNE1lRTY5dlFzRjJNblJnTDU0VmszZVJZSyJ9XSwia2V5QWdyZWVtZW50IjpbeyJpZCI6IiNrZXktMiIsInR5cGUiOiJYMjU1MTlLZXlBZ3JlZW1lbnRLZXkyMDE5IiwiY29udHJvbGxlciI6IiNpZCIsInB1YmxpY0tleUJhc2U1OCI6Ijk4ZE55eDJocm1SNUpuanNZajRqeUtEdkRTNFQ3YlN5akJhNFJLdTZpNldQIn1dfQ==",
                "jws": {
                    "protected": "eyJhbGciOiJFZERTQSIsImp3ayI6eyJrdHkiOiJPS1AiLCJjcnYiOiJFZDI1NTE5IiwieCI6IlBSa0hUM3FqVzJLVGNYR1E1bmJCZXNJUDdjRzRNSHFHYVpvWWp2eEowc0EifX0",
                    "signature": "EB0sccSGFsYsaXEKtOVSJ1SydsugAdE-SYq47xzl_0DSYm7id7YSe5QTgpEsgiu97wzBuF0L_yzCoDcvxBBDBg",
                    "header": {
                        "kid": "did:key:z6MkiZm3stDHuZLtwW1rWzGuCjn5yVgieuc97hEztmi4ZeKh"
                    }
                }
            }
        }
    },
    "error": {
        "name": "TimeoutError",
        "message": "Timeout has occurred",
        "info": {
            "meta": "MediationRecipientService.keylistUpdateAndAwait",
            "lastValue": null,
            "seen": 0
        }
    },
    "senderKey": "z6MkiZm3stDHuZLtwW1rWzGuCjn5yVgieuc97hEztmi4ZeKh",
    "recipientKey": "z6MkohvcgmP4JTtAoeYMogsBRtSVc5p63CLPAYg4qakRL2jV"
}

I have created a repro for the same here https://github.com/sairanjit/credo-askar-wallet-react-native/tree/connection-reuse

@TimoGlastra
Copy link
Contributor

Does this also happen in Node.JS? If so, could you please provide the repro in Node? That makes it easier to test

@sairanjit
Copy link
Contributor Author

Yes @TimoGlastra This is also happening in the Node.JS as well. I have created a repro for the same here
https://github.com/sairanjit/credo-ts-examples/tree/connection-reuse

@sairanjit
Copy link
Contributor Author

One observation is that after the timeout Error has occurred then we receive the keylist response message that it was waiting for

{
  "@type": "https://didcomm.org/coordinate-mediation/1.0/keylist-update-response",
  "@id": "311c73dd-df95-413b-9724-347f91f5e88b",
  "~thread": {
    "thid": "a8aee7d9-65e3-4049-a211-d23657cbf175"
  },
  "updated": [
    {
      "recipient_key": "FAMBvTH1PnvzaxPV42h9hXF46ruAiPdiQm8FFYMoxj4g",
      "action": "add",
      "result": "success"
    }
  ]
}

@sairanjit
Copy link
Contributor Author

@TimoGlastra @genaris
Changing the message receiving logic from concatMap to tap fixes this issue
https://github.com/openwallet-foundation/credo-ts/blob/main/packages/core/src/agent/Agent.ts#L155

@sairanjit
Copy link
Contributor Author

@TimoGlastra There is already a PR #1276 That addresses the required changes for this issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants