casper_rust_wasm_sdk/sdk/deploy_utils/
sign_deploy.rs1use crate::{types::deploy::Deploy, SDK};
2#[cfg(target_arch = "wasm32")]
3use wasm_bindgen::prelude::*;
4
5#[cfg(target_arch = "wasm32")]
7#[wasm_bindgen]
8impl SDK {
9 #[deprecated(note = "prefer sign_transaction")]
20 #[allow(deprecated)]
21 #[wasm_bindgen(js_name = "sign_deploy")]
22 pub fn sign_deploy_js_alias(&self, deploy: Deploy, secret_key: &str) -> Deploy {
23 sign_deploy(deploy, secret_key)
24 }
25}
26
27impl SDK {
28 #[deprecated(note = "prefer sign_transaction")]
39 #[allow(deprecated)]
40 pub fn sign_deploy(&self, deploy: Deploy, secret_key: &str) -> Deploy {
41 sign_deploy(deploy, secret_key)
42 }
43}
44
45#[deprecated(note = "prefer sign_transaction")]
47#[allow(deprecated)]
48pub(crate) fn sign_deploy(mut deploy: Deploy, secret_key: &str) -> Deploy {
49 deploy.sign(secret_key)
51}
52
53#[cfg(test)]
54#[allow(deprecated)]
55mod tests {
56 use super::*;
57 use crate::{
58 helpers::public_key_from_secret_key,
59 types::deploy_params::{
60 deploy_str_params::DeployStrParams, payment_str_params::PaymentStrParams,
61 session_str_params::SessionStrParams,
62 },
63 };
64 use sdk_tests::{
65 config::{ENTRYPOINT_MINT, PAYMENT_AMOUNT},
66 tests::helpers::{get_network_constants, get_user_secret_key},
67 };
68
69 #[tokio::test]
70 async fn test_sign_deploy_with_valid_params() {
71 let sdk = SDK::new(None, None, None);
73 let (_, _, _, _, chain_name) = get_network_constants();
74
75 let secret_key = get_user_secret_key(None).unwrap();
76 let account = public_key_from_secret_key(&secret_key).unwrap();
77
78 let deploy_params = DeployStrParams::new(&chain_name, &account, None, None, None, None);
79 let session_params = SessionStrParams::default();
80 session_params.set_session_hash(
81 "hash-cfa781f5eb69c3eee952c2944ce9670a049f88c5e46b83fb5881ebe13fb98e6d",
82 );
83 session_params.set_session_entry_point(ENTRYPOINT_MINT);
84 let payment_params = PaymentStrParams::default();
85 payment_params.set_payment_amount(PAYMENT_AMOUNT);
86
87 let deploy = sdk
89 .make_deploy(deploy_params, session_params, payment_params)
90 .unwrap();
91
92 let signed_deploy = sdk.sign_deploy(deploy, &secret_key);
93
94 assert!(signed_deploy.is_valid());
96 assert!(signed_deploy.has_valid_hash());
97 assert!(!signed_deploy
98 .compute_approvals_hash()
99 .unwrap()
100 .to_string()
101 .is_empty());
102 assert_eq!(signed_deploy.account(), account);
103 }
104
105 #[tokio::test]
106 async fn test_sign_deploy_with_invalid_signature() {
107 let sdk = SDK::new(None, None, None);
109 let (_, _, _, _, chain_name) = get_network_constants();
110
111 let secret_key = get_user_secret_key(None).unwrap();
112 let account = public_key_from_secret_key(&secret_key).unwrap();
113
114 let deploy_params = DeployStrParams::new(&chain_name, &account, None, None, None, None);
115 let session_params = SessionStrParams::default();
116 session_params.set_session_hash(
117 "hash-cfa781f5eb69c3eee952c2944ce9670a049f88c5e46b83fb5881ebe13fb98e6d",
118 );
119 session_params.set_session_entry_point(ENTRYPOINT_MINT);
120 let payment_params = PaymentStrParams::default();
121 payment_params.set_payment_amount(PAYMENT_AMOUNT);
122
123 let deploy = sdk
125 .make_deploy(deploy_params, session_params, payment_params)
126 .unwrap();
127
128 let signed_deploy = sdk.sign_deploy(deploy, "test_wrong_signature");
129
130 assert!(signed_deploy.has_valid_hash());
132 assert!(!signed_deploy.is_valid());
133 assert!(!signed_deploy
134 .compute_approvals_hash()
135 .unwrap()
136 .to_string()
137 .is_empty());
138 assert_eq!(signed_deploy.account(), account);
139 }
140}