Say I have control of addresses A and B, and I am writing contract C. When I deploy C on the blockchain, it will have it's own address, that can send and receive ether. But I want to have a method on C which, when called, sends ether from address A to address B, not to or from C.
Of course I could do this by storing the private key for A in C, but then anyone could look at C, copy the key out, and use it themselves. I want to allow only C to send ether from A, not anyone else.
Is there any way to allow a contract to control another address, without making the key for that address publicly accessible?