sdk: add is_interactive()
method Signer
trait
This commit is contained in:
committed by
mergify[bot]
parent
d5c2c72360
commit
2af5ec4f57
@ -2450,6 +2450,10 @@ mod tests {
|
|||||||
fn try_sign_message(&self, _message: &[u8]) -> Result<Signature, SignerError> {
|
fn try_sign_message(&self, _message: &[u8]) -> Result<Signature, SignerError> {
|
||||||
Ok(Signature::new(&[1u8; 64]))
|
Ok(Signature::new(&[1u8; 64]))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn is_interactive(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let present: Box<dyn Signer> = Box::new(keypair_from_seed(&[2u8; 32]).unwrap());
|
let present: Box<dyn Signer> = Box::new(keypair_from_seed(&[2u8; 32]).unwrap());
|
||||||
|
@ -53,6 +53,10 @@ impl Signer for RemoteKeypair {
|
|||||||
.map_err(|e| e.into()),
|
.map_err(|e| e.into()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn is_interactive(&self) -> bool {
|
||||||
|
true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn generate_remote_keypair(
|
pub fn generate_remote_keypair(
|
||||||
|
@ -80,6 +80,10 @@ impl Signer for Keypair {
|
|||||||
fn try_sign_message(&self, message: &[u8]) -> Result<Signature, SignerError> {
|
fn try_sign_message(&self, message: &[u8]) -> Result<Signature, SignerError> {
|
||||||
Ok(self.sign_message(message))
|
Ok(self.sign_message(message))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn is_interactive(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> PartialEq<T> for Keypair
|
impl<T> PartialEq<T> for Keypair
|
||||||
|
@ -68,6 +68,8 @@ pub trait Signer {
|
|||||||
}
|
}
|
||||||
/// Fallibly produces an Ed25519 signature over the provided `message` bytes.
|
/// Fallibly produces an Ed25519 signature over the provided `message` bytes.
|
||||||
fn try_sign_message(&self, message: &[u8]) -> Result<Signature, SignerError>;
|
fn try_sign_message(&self, message: &[u8]) -> Result<Signature, SignerError>;
|
||||||
|
/// Whether the impelmentation requires user interaction to sign
|
||||||
|
fn is_interactive(&self) -> bool;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> From<T> for Box<dyn Signer>
|
impl<T> From<T> for Box<dyn Signer>
|
||||||
|
@ -28,6 +28,10 @@ impl Signer for NullSigner {
|
|||||||
fn try_sign_message(&self, _message: &[u8]) -> Result<Signature, SignerError> {
|
fn try_sign_message(&self, _message: &[u8]) -> Result<Signature, SignerError> {
|
||||||
Ok(Signature::default())
|
Ok(Signature::default())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn is_interactive(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> PartialEq<T> for NullSigner
|
impl<T> PartialEq<T> for NullSigner
|
||||||
|
@ -46,6 +46,10 @@ impl Signer for Presigner {
|
|||||||
Err(PresignerError::VerificationFailure.into())
|
Err(PresignerError::VerificationFailure.into())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn is_interactive(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> PartialEq<T> for Presigner
|
impl<T> PartialEq<T> for Presigner
|
||||||
|
@ -10,6 +10,7 @@ pub trait Signers {
|
|||||||
fn try_pubkeys(&self) -> Result<Vec<Pubkey>, SignerError>;
|
fn try_pubkeys(&self) -> Result<Vec<Pubkey>, SignerError>;
|
||||||
fn sign_message(&self, message: &[u8]) -> Vec<Signature>;
|
fn sign_message(&self, message: &[u8]) -> Vec<Signature>;
|
||||||
fn try_sign_message(&self, message: &[u8]) -> Result<Vec<Signature>, SignerError>;
|
fn try_sign_message(&self, message: &[u8]) -> Result<Vec<Signature>, SignerError>;
|
||||||
|
fn is_interactive(&self) -> bool;
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! default_keypairs_impl {
|
macro_rules! default_keypairs_impl {
|
||||||
@ -39,6 +40,10 @@ macro_rules! default_keypairs_impl {
|
|||||||
}
|
}
|
||||||
Ok(signatures)
|
Ok(signatures)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn is_interactive(&self) -> bool {
|
||||||
|
self.iter().any(|s| s.is_interactive())
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,6 +123,9 @@ mod tests {
|
|||||||
fn try_sign_message(&self, _message: &[u8]) -> Result<Signature, SignerError> {
|
fn try_sign_message(&self, _message: &[u8]) -> Result<Signature, SignerError> {
|
||||||
Ok(Signature::default())
|
Ok(Signature::default())
|
||||||
}
|
}
|
||||||
|
fn is_interactive(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Bar;
|
struct Bar;
|
||||||
@ -128,6 +136,9 @@ mod tests {
|
|||||||
fn try_sign_message(&self, _message: &[u8]) -> Result<Signature, SignerError> {
|
fn try_sign_message(&self, _message: &[u8]) -> Result<Signature, SignerError> {
|
||||||
Ok(Signature::default())
|
Ok(Signature::default())
|
||||||
}
|
}
|
||||||
|
fn is_interactive(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
Reference in New Issue
Block a user