MCPcopy Create free account
hub / github.com/cowprotocol/services / sign

Method sign

crates/e2e/src/setup/solver/solution.rs:43–98  ·  view source on GitHub ↗
(
        self,
        signing_scheme: EcdsaSigningScheme,
        domain: &DomainSeparator,
        key: &PrivateKeySigner,
    )

Source from the content-addressed store, hash-verified

41
42 #[allow(deprecated)]
43 pub fn sign(
44 self,
45 signing_scheme: EcdsaSigningScheme,
46 domain: &DomainSeparator,
47 key: &PrivateKeySigner,
48 ) -> (solvers_dto::solution::JitOrder, OrderUid) {
49 let data = self.data();
50 let signature = model::signature::EcdsaSignature::sign(
51 signing_scheme,
52 domain,
53 &data.hash_struct(),
54 key,
55 )
56 .to_signature(signing_scheme);
57 let order_uid = data.uid(
58 domain,
59 signature
60 .recover_owner(&signature.to_bytes(), domain, &data.hash_struct())
61 .unwrap(),
62 );
63 let signature = match signature {
64 model::signature::Signature::Eip712(signature) => signature.to_bytes().to_vec(),
65 model::signature::Signature::EthSign(signature) => signature.to_bytes().to_vec(),
66 model::signature::Signature::Eip1271(signature) => signature,
67 model::signature::Signature::PreSign => panic!("Not supported PreSigned JIT orders"),
68 };
69 let order = solvers_dto::solution::JitOrder {
70 sell_token: data.sell_token,
71 buy_token: data.buy_token,
72 receiver: data.receiver.unwrap_or_default(),
73 sell_amount: data.sell_amount,
74 buy_amount: data.buy_amount,
75 partially_fillable: data.partially_fillable,
76 valid_to: data.valid_to,
77 app_data: data.app_data.0,
78 kind: match data.kind {
79 OrderKind::Buy => Kind::Buy,
80 OrderKind::Sell => Kind::Sell,
81 },
82 sell_token_balance: match data.sell_token_balance {
83 SellTokenSource::Erc20 => solvers_dto::solution::SellTokenBalance::Erc20,
84 SellTokenSource::External => solvers_dto::solution::SellTokenBalance::External,
85 SellTokenSource::Internal => solvers_dto::solution::SellTokenBalance::Internal,
86 },
87 buy_token_balance: match data.buy_token_balance {
88 BuyTokenDestination::Erc20 => solvers_dto::solution::BuyTokenBalance::Erc20,
89 BuyTokenDestination::Internal => solvers_dto::solution::BuyTokenBalance::Internal,
90 },
91 signing_scheme: match signing_scheme {
92 EcdsaSigningScheme::Eip712 => solvers_dto::solution::SigningScheme::Eip712,
93 EcdsaSigningScheme::EthSign => solvers_dto::solution::SigningScheme::EthSign,
94 },
95 signature,
96 };
97 (order, order_uid)
98 }
99}

Calls 7

to_signatureMethod · 0.80
unwrapMethod · 0.80
recover_ownerMethod · 0.80
dataMethod · 0.45
hash_structMethod · 0.45
uidMethod · 0.45
to_bytesMethod · 0.45