solana_keypair/
signable.rs

1use {
2    crate::Keypair,
3    solana_pubkey::Pubkey,
4    solana_signature::Signature,
5    solana_signer::Signer,
6    std::borrow::{Borrow, Cow},
7};
8
9pub trait Signable {
10    fn sign(&mut self, keypair: &Keypair) {
11        let signature = keypair.sign_message(self.signable_data().borrow());
12        self.set_signature(signature);
13    }
14    fn verify(&self) -> bool {
15        self.get_signature()
16            .verify(self.pubkey().as_ref(), self.signable_data().borrow())
17    }
18
19    fn pubkey(&self) -> Pubkey;
20    fn signable_data(&self) -> Cow<[u8]>;
21    fn get_signature(&self) -> Signature;
22    fn set_signature(&mut self, signature: Signature);
23}