It is possible to verify, whether a user holds a principal, by him signing a random string by his private key.
Is there a similar way to check that a principal is controlled by a canister?
The only way of this, that I know, is to run an update method of the canister (which would for example return true to signify that the canister is consent to an act).
Running an update methods is slow. Can agreement of a canister to do something be obtained without running an update method?
Also, securely checking whether a user agrees to an action (to be done in the outside-of-IC backend) checking whether a canister agrees to an action is, as I described above, done by two different methods (key signing and update method, correspondingly), what is probably not mathematically elegant.