I’d like to be able to used a chained message signature from canister API that uses ICP’s caller-based authentiation.
Here’s the use case:
- User A signs message M
- User B approves and signs message M (now Mprime?)
- User B then sends message Mp to Canister C via API
- Canister C uses ICP’s caller based auth to see that the
caller
is B. - Canister C then wants to take Mp and deconstruct it to M, proving that it was signed by A.
Essentially, I’m looking for some way of allowing multiple parties to sign a message such that I can know the initial principal that wrote the message, and can verify that another principal has signed off on the initial message. The ordering (knowing that A wrote M) is important.
Ideally this operation would be atomic and not require calls to the management canister to fetch a principal’s public key. It would be lovely if some of these operations could be abstracted away, similar to ICP’s caller based authentication.