solana_keypair/
signable.rs1use {
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}