File tree Expand file tree Collapse file tree
cmd/soroban-cli/src/commands/tx Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -164,4 +164,15 @@ impl Args {
164164 pub fn resolve_asset ( & self , asset : & builder:: Asset ) -> Result < xdr:: Asset , Error > {
165165 Ok ( asset. resolve ( & self . config . locator ) ?)
166166 }
167+
168+ pub fn resolve_signer_key (
169+ & self ,
170+ signer_account : & UnresolvedMuxedAccount ,
171+ ) -> Result < xdr:: SignerKey , Error > {
172+ let resolved_account = self . resolve_account_id ( signer_account) ?;
173+ let signer_key = match resolved_account. 0 {
174+ xdr:: PublicKey :: PublicKeyTypeEd25519 ( uint256) => xdr:: SignerKey :: Ed25519 ( uint256) ,
175+ } ;
176+ Ok ( signer_key)
177+ }
167178}
Original file line number Diff line number Diff line change @@ -96,13 +96,10 @@ impl TryFrom<&Cmd> for xdr::OperationBody {
9696
9797 let revoke_op = if let Some ( signer_key) = & cmd. op . signer_key {
9898 // Signer sponsorship
99- let resolved_account = cmd. tx . resolve_account_id ( signer_key) ?;
100- let signer_key = match resolved_account. 0 {
101- xdr:: PublicKey :: PublicKeyTypeEd25519 ( uint256) => xdr:: SignerKey :: Ed25519 ( uint256) ,
102- } ;
99+ let resolved_signer_key = cmd. tx . resolve_signer_key ( signer_key) ?;
103100 xdr:: RevokeSponsorshipOp :: Signer ( xdr:: RevokeSponsorshipOpSigner {
104101 account_id : account_id_key,
105- signer_key,
102+ signer_key : resolved_signer_key ,
106103 } )
107104 } else if let Some ( asset) = & cmd. op . asset {
108105 // Trustline sponsorship
Original file line number Diff line number Diff line change @@ -37,7 +37,7 @@ pub struct Args {
3737 pub home_domain : Option < xdr:: StringM < 32 > > ,
3838 #[ arg( long, requires = "signer_weight" ) ]
3939 /// Add, update, or remove a signer from an account.
40- pub signer : Option < xdr :: SignerKey > ,
40+ pub signer : Option < address :: UnresolvedMuxedAccount > ,
4141 #[ arg( long = "signer-weight" , requires = "signer" ) ]
4242 /// Signer weight is a number from 0-255 (inclusive). The signer is deleted if the weight is 0.
4343 pub signer_weight : Option < u8 > ,
@@ -107,11 +107,12 @@ impl TryFrom<&Cmd> for xdr::OperationBody {
107107 clear_flag ( xdr:: AccountFlags :: ClawbackEnabledFlag ) ;
108108 }
109109
110- let signer = if let ( Some ( key ) , Some ( signer_weight) ) =
111- ( cmd. signer . clone ( ) , cmd. signer_weight . as_ref ( ) )
110+ let signer = if let ( Some ( signer_account ) , Some ( signer_weight) ) =
111+ ( cmd. signer . as_ref ( ) , cmd. signer_weight . as_ref ( ) )
112112 {
113+ let signer_key = tx. resolve_signer_key ( signer_account) ?;
113114 Some ( xdr:: Signer {
114- key,
115+ key : signer_key ,
115116 weight : u32:: from ( * signer_weight) ,
116117 } )
117118 } else {
You can’t perform that action at this time.
0 commit comments