From c76e8be39f83295f11b1621e5ff4e6ff5aacbb92 Mon Sep 17 00:00:00 2001 From: driftluo Date: Mon, 6 May 2024 23:31:57 +0800 Subject: [PATCH] test: support dl test --- Cargo.toml | 14 +- src/lib.rs | 2 - src/tests/mod.rs | 43 ++-- src/tests/transaction/omnilock.rs | 206 ++++++++++++++++-- src/tests/tx_builder/cycle.rs | 2 +- src/transaction/signer/omnilock.rs | 57 +---- src/types/address.rs | 14 +- src/unlock/omni_lock.rs | 8 +- src/unlock/signer.rs | 7 +- src/util.rs | 6 + {src/test-data => test-data}/Makefile | 0 {src/test-data => test-data}/always_success | Bin test-data/always_success_dl | Bin 0 -> 4904 bytes {src/test-data => test-data}/anyone_can_pay | Bin .../test-data => test-data}/ckb-cheque-script | Bin {src/test-data => test-data}/ckb_syscalls.h | 0 {src/test-data => test-data}/cycle | Bin {src/test-data => test-data}/cycle.c | 0 {src/test-data => test-data}/cycle.debug | Bin {src/test-data => test-data}/cycle.md | 0 .../genesis_block.json | 0 {src/test-data => test-data}/omni_lock | Bin {src/test-data => test-data}/simple_udt | Bin test-data/validate_signature_rsa | Bin 0 -> 70928 bytes 24 files changed, 251 insertions(+), 108 deletions(-) rename {src/test-data => test-data}/Makefile (100%) rename {src/test-data => test-data}/always_success (100%) create mode 100755 test-data/always_success_dl rename {src/test-data => test-data}/anyone_can_pay (100%) rename {src/test-data => test-data}/ckb-cheque-script (100%) rename {src/test-data => test-data}/ckb_syscalls.h (100%) rename {src/test-data => test-data}/cycle (100%) rename {src/test-data => test-data}/cycle.c (100%) rename {src/test-data => test-data}/cycle.debug (100%) rename {src/test-data => test-data}/cycle.md (100%) rename {src/test-data => test-data}/genesis_block.json (100%) rename {src/test-data => test-data}/omni_lock (100%) rename {src/test-data => test-data}/simple_udt (100%) create mode 100755 test-data/validate_signature_rsa diff --git a/Cargo.toml b/Cargo.toml index 917593ac..34e30bca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,7 @@ license = "MIT" description = "Rust SDK for CKB" homepage = "https://github.com/nervosnetwork/ckb-sdk-rust" repository = "https://github.com/nervosnetwork/ckb-sdk-rust" +exclude = ["/test-data"] [dependencies] serde = { version = "1.0", features = ["derive"] } @@ -52,7 +53,7 @@ sha3 = "0.10.1" enum-repr-derive = "0.2.0" # for feature test -rand = { version = "0.7.3", optional = true } +rand = { version = "0.7.3" } ckb-mock-tx-types = "0.115.0-rc2" ckb-chain-spec = "0.115.0-rc2" @@ -60,16 +61,17 @@ sparse-merkle-tree = "0.6.1" lazy_static = "1.3.0" [features] -default = ["default-tls", "test", "rand"] +default = ["default-tls"] default-tls = ["reqwest/default-tls"] native-tls-vendored = ["reqwest/native-tls-vendored"] rustls-tls = ["reqwest/rustls-tls"] test = [] [dev-dependencies] -clap = { version = "=4.4.18", features = [ - "derive", -] } # TODO clap v4.5 requires rustc v1.74.0+ +clap = { version = "4.4.18", features = ["derive"] } httpmock = "0.6" async-global-executor = "2.3.1" -hex = "0.4" + + +[target.'cfg(unix)'.dev-dependencies] +openssl = "0.10" diff --git a/src/lib.rs b/src/lib.rs index f4745518..4854259f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,10 +9,8 @@ pub mod types; pub mod unlock; pub mod util; -#[cfg(feature = "test")] pub mod test_util; -#[cfg(feature = "test")] #[cfg(test)] mod tests; diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 2e6c1a3c..b7801177 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -44,13 +44,18 @@ const ACCOUNT3_KEY: H256 = const ACCOUNT3_ARG: H160 = h160!("0xdabe88a65760c662ee3f07dee162409f7b20b694"); const FEE_RATE: u64 = 1000; -const GENESIS_JSON: &str = include_str!("../test-data/genesis_block.json"); -const SUDT_BIN: &[u8] = include_bytes!("../test-data/simple_udt"); -const ACP_BIN: &[u8] = include_bytes!("../test-data/anyone_can_pay"); -const CHEQUE_BIN: &[u8] = include_bytes!("../test-data/ckb-cheque-script"); -const ALWAYS_SUCCESS_BIN: &[u8] = include_bytes!("../test-data/always_success"); -const OMNILOCK_BIN: &[u8] = include_bytes!("../test-data/omni_lock"); -// const ALWAYS_SUCCESS_BIN_DL: &[u8] = include_bytes!("../test-data/always_success_dl"); +const GENESIS_JSON: &str = include_str!("../../test-data/genesis_block.json"); +const SUDT_BIN: &[u8] = include_bytes!("../../test-data/simple_udt"); +const ACP_BIN: &[u8] = include_bytes!("../../test-data/anyone_can_pay"); +const CHEQUE_BIN: &[u8] = include_bytes!("../../test-data/ckb-cheque-script"); +const ALWAYS_SUCCESS_BIN: &[u8] = include_bytes!("../../test-data/always_success"); +// https://github.com/XuJiandong/ckb-production-scripts/commit/f692e01ead9378093b57b47023f3408e4c35349f +#[cfg(not(unix))] +const ALWAYS_SUCCESS_DL_BIN: &[u8] = include_bytes!("../../test-data/always_success_dl"); +const OMNILOCK_BIN: &[u8] = include_bytes!("../../test-data/omni_lock"); +// https://github.com/nervosnetwork/ckb-production-scripts/blob/410b16c499a8888781d9ab03160eeef93182d8e6/c/validate_signature_rsa.c +#[cfg(unix)] +const RSA_DL_BIN: &[u8] = include_bytes!("../../test-data/validate_signature_rsa"); fn build_sighash_script(args: H160) -> Script { Script::new_builder() @@ -76,13 +81,23 @@ fn build_always_success_script() -> Script { .build() } -// fn build_always_success_script_dl() -> Script { -// let data_hash = H256::from(blake2b_256(ALWAYS_SUCCESS_BIN_DL)); -// Script::new_builder() -// .code_hash(data_hash.pack()) -// .hash_type(ScriptHashType::Data1.into()) -// .build() -// } +#[cfg(not(unix))] +fn build_always_success_dl_script() -> Script { + let data_hash = H256::from(blake2b_256(ALWAYS_SUCCESS_DL_BIN)); + Script::new_builder() + .code_hash(data_hash.pack()) + .hash_type(ScriptHashType::Data1.into()) + .build() +} + +#[cfg(unix)] +fn build_rsa_script_dl() -> Script { + let data_hash = H256::from(blake2b_256(RSA_DL_BIN)); + Script::new_builder() + .code_hash(data_hash.pack()) + .hash_type(ScriptHashType::Data1.into()) + .build() +} fn build_dao_script() -> Script { Script::new_builder() diff --git a/src/tests/transaction/omnilock.rs b/src/tests/transaction/omnilock.rs index 990e5014..2511644a 100644 --- a/src/tests/transaction/omnilock.rs +++ b/src/tests/transaction/omnilock.rs @@ -456,24 +456,163 @@ fn test_omnilock_owner_lock_tranfer(cobuild: bool) { ctx.verify(tx, FEE_RATE).unwrap(); } +#[cfg(unix)] +mod rsa_dl_test { + use super::test_omnilock_dl_exec; + use crate::{ + tests::build_rsa_script_dl, + traits::{Signer, SignerError}, + unlock::omni_lock::{ExecDlConfig, Preimage}, + util::blake160, + }; + + use ckb_types::core::TransactionView; + use openssl::{ + hash::MessageDigest, + pkey::{PKey, Private, Public}, + rsa::Rsa, + sign::Signer as RSASigner, + }; + + #[derive(Clone)] + struct RSASinger { + key: PKey, + } + + impl Signer for RSASinger { + fn match_id(&self, id: &[u8]) -> bool { + let rsa_script = build_rsa_script_dl(); + let public_key_pem: Vec = self.key.public_key_to_pem().unwrap(); + let rsa_pubkey = PKey::public_key_from_pem(&public_key_pem).unwrap(); + let signning_pubkey = rsa_signning_prepare_pubkey(&rsa_pubkey); + + let preimage = Preimage::new_with_dl(rsa_script, blake160(&signning_pubkey)); + id.len() == 20 && id == preimage.auth().as_bytes() + } + + fn sign( + &self, + id: &[u8], + message: &[u8], + _recoverable: bool, + _tx: &TransactionView, + ) -> Result { + if !self.match_id(id) { + return Err(SignerError::IdNotFound); + } + Ok(bytes::Bytes::from(rsa_sign(message, &self.key))) + } + } + + fn rsa_signning_prepare_pubkey(pubkey: &PKey) -> Vec { + let mut sig = vec![ + 1, // algorithm id + 1, // key size, 1024 + 0, // padding, PKCS# 1.5 + 6, // hash type SHA256 + ]; + + let pubkey2 = pubkey.rsa().unwrap(); + let mut e = pubkey2.e().to_vec(); + let mut n = pubkey2.n().to_vec(); + e.reverse(); + n.reverse(); + + while e.len() < 4 { + e.push(0); + } + while n.len() < 128 { + n.push(0); + } + sig.append(&mut e); // 4 bytes E + sig.append(&mut n); // N + + sig + } + + pub fn rsa_sign(msg: &[u8], key: &PKey) -> Vec { + let pem: Vec = key.public_key_to_pem().unwrap(); + let pubkey = PKey::public_key_from_pem(&pem).unwrap(); + + let mut sig = rsa_signning_prepare_pubkey(&pubkey); + + let mut signer = RSASigner::new(MessageDigest::sha256(), key).unwrap(); + signer.update(msg).unwrap(); + sig.extend(signer.sign_to_vec().unwrap()); // sig + + sig + } + + #[test] + fn test_omnilock_dl() { + let rsa_script = build_rsa_script_dl(); + let bits = 1024; + let rsa = Rsa::generate(bits).unwrap(); + let rsa_private_key = PKey::from_rsa(rsa).unwrap(); + let public_key_pem: Vec = rsa_private_key.public_key_to_pem().unwrap(); + let rsa_pubkey = PKey::public_key_from_pem(&public_key_pem).unwrap(); + let signning_pubkey = rsa_signning_prepare_pubkey(&rsa_pubkey); + + let preimage = Preimage::new_with_dl(rsa_script, blake160(&signning_pubkey)); + let config = ExecDlConfig::new(preimage, 264); + let signer = RSASinger { + key: rsa_private_key, + }; + test_omnilock_dl_exec(config.clone(), signer.clone(), false); + test_omnilock_dl_exec(config, signer.clone(), true); + } +} + #[derive(Clone)] struct DummySinger {} impl Signer for DummySinger { fn match_id(&self, id: &[u8]) -> bool { - let always_success_script = build_always_success_script(); - let preimage = - Preimage::new_with_exec(always_success_script, 0, [0; 8], blake160(&[0u8; 20])); - id.len() == 20 && id == preimage.auth().as_bytes() + let (preimage, preimage_dl) = if cfg!(unix) { + let always_success_script = build_always_success_script(); + + ( + Preimage::new_with_exec( + always_success_script.clone(), + 0, + [0; 8], + blake160(&[0u8; 20]), + ), + Preimage::new_with_exec(always_success_script, 0, [0; 8], blake160(&[0u8; 20])), + ) + } else { + #[cfg(not(unix))] + { + use crate::tests::build_always_success_dl_script; + let always_success_script_dl = build_always_success_dl_script(); + let always_success_script = build_always_success_script(); + ( + Preimage::new_with_exec( + always_success_script.clone(), + 0, + [0; 8], + blake160(&[0u8; 20]), + ), + Preimage::new_with_dl(always_success_script_dl, H160::from([0u8; 20])), + ) + } + #[cfg(unix)] + unreachable!() + }; + + id.len() == 20 && (id == preimage.auth().as_bytes() || id == preimage_dl.auth().as_bytes()) } fn sign( &self, - _id: &[u8], + id: &[u8], _message: &[u8], _recoverable: bool, _tx: &TransactionView, ) -> Result { + if !self.match_id(id) { + return Err(SignerError::IdNotFound); + } Ok(bytes::Bytes::from(vec![0; 65])) } } @@ -484,34 +623,63 @@ fn test_omnilock_exec() { let preimage = Preimage::new_with_exec(always_success_script, 0, [0; 8], blake160(&[0u8; 20])); let config = ExecDlConfig::new(preimage, 65); - test_omnilock_dl_exec(config.clone(), false); - test_omnilock_dl_exec(config, true) + test_omnilock_dl_exec(config.clone(), DummySinger {}, false); + test_omnilock_dl_exec(config, DummySinger {}, true) } -#[ignore] +#[cfg(not(unix))] #[test] fn test_omnilock_dl() { - // let always_success_script = build_always_success_script_dl(); - // let preimage = Preimage::new_with_dl(always_success_script, blake160(&[0u8; 20])); - // test_omnilock_dl_exec(preimage) + use crate::tests::build_always_success_dl_script; + let always_success_script = build_always_success_dl_script(); + let preimage = Preimage::new_with_dl(always_success_script, H160::from([0u8; 20])); + let config = ExecDlConfig::new(preimage, 65); + + test_omnilock_dl_exec(config.clone(), DummySinger {}, false); + test_omnilock_dl_exec(config, DummySinger {}, true) } -fn test_omnilock_dl_exec(config: ExecDlConfig, cobuild: bool) { +#[cfg(unix)] +fn dl_exec_cfg(config: ExecDlConfig) -> (OmniLockConfig, &'static [u8]) { + use crate::tests::RSA_DL_BIN; + if config.preimage().len() == 32 + 1 + 1 + 8 + 20 { + ( + OmniLockConfig::new_with_exec_preimage(config), + ALWAYS_SUCCESS_BIN, + ) + } else { + (OmniLockConfig::new_with_dl_preimage(config), RSA_DL_BIN) + } +} + +#[cfg(not(unix))] +fn dl_exec_cfg(config: ExecDlConfig) -> (OmniLockConfig, &'static [u8]) { + use crate::tests::ALWAYS_SUCCESS_DL_BIN; + if config.preimage().len() == 32 + 1 + 1 + 8 + 20 { + ( + OmniLockConfig::new_with_exec_preimage(config), + ALWAYS_SUCCESS_BIN, + ) + } else { + ( + OmniLockConfig::new_with_dl_preimage(config), + ALWAYS_SUCCESS_DL_BIN, + ) + } +} + +fn test_omnilock_dl_exec(config: ExecDlConfig, signer: T, cobuild: bool) { let network_info = NetworkInfo::testnet(); let receiver = build_sighash_script(ACCOUNT2_ARG); - let mut cfg = if config.preimage().len() == 32 + 1 + 1 + 8 + 20 { - OmniLockConfig::new_with_exec_preimage(config) - } else { - OmniLockConfig::new_with_dl_preimage(config) - }; + let (mut cfg, bin) = dl_exec_cfg(config); cfg.enable_cobuild(cobuild); let sender = build_omnilock_script(&cfg); - let sign_context = SignContexts::new_omnilock_exec_dl_custom(DummySinger {}, cfg.clone()); + let sign_context = SignContexts::new_omnilock_exec_dl_custom(signer, cfg.clone()); let (ctx, outpoints) = init_context( - vec![(OMNILOCK_BIN, true), (ALWAYS_SUCCESS_BIN, true)], + vec![(OMNILOCK_BIN, true), (bin, true)], vec![(sender.clone(), Some(300 * ONE_CKB))], ); diff --git a/src/tests/tx_builder/cycle.rs b/src/tests/tx_builder/cycle.rs index 2fa3753b..dd67eb18 100644 --- a/src/tests/tx_builder/cycle.rs +++ b/src/tests/tx_builder/cycle.rs @@ -22,7 +22,7 @@ use crate::{ ScriptGroup, ScriptId, }; -const CYCLE_BIN: &[u8] = include_bytes!("../../test-data/cycle"); +const CYCLE_BIN: &[u8] = include_bytes!("../../../test-data/cycle"); pub struct CycleUnlocker { loops: u64, diff --git a/src/transaction/signer/omnilock.rs b/src/transaction/signer/omnilock.rs index 51863208..e00b3de6 100644 --- a/src/transaction/signer/omnilock.rs +++ b/src/transaction/signer/omnilock.rs @@ -1,6 +1,4 @@ -use std::collections::HashMap; - -use ckb_types::{core, packed}; +use ckb_types::core; use crate::{ traits::{ @@ -117,56 +115,3 @@ impl CKBScriptSigner for OmnilockSigner { } } } - -struct InputsProvider<'a> { - inputs: &'a HashMap, -} - -impl<'a> crate::traits::TransactionDependencyProvider for InputsProvider<'a> { - /// For verify certain cell belong to certain transaction - fn get_transaction( - &self, - _tx_hash: &packed::Byte32, - ) -> Result { - Err(crate::traits::TransactionDependencyError::NotFound( - "not support".to_string(), - )) - } - /// For get the output information of inputs or cell_deps, those cell should be live cell - fn get_cell( - &self, - out_point: &packed::OutPoint, - ) -> Result { - self.inputs.get(out_point).map(|a| a.0.clone()).ok_or( - crate::traits::TransactionDependencyError::NotFound("not found".to_string()), - ) - } - /// For get the output data information of inputs or cell_deps - fn get_cell_data( - &self, - out_point: &packed::OutPoint, - ) -> Result { - self.inputs.get(out_point).map(|a| a.1.clone()).ok_or( - crate::traits::TransactionDependencyError::NotFound("not found".to_string()), - ) - } - /// For get the header information of header_deps - fn get_header( - &self, - _block_hash: &packed::Byte32, - ) -> Result { - Err(crate::traits::TransactionDependencyError::NotFound( - "not support".to_string(), - )) - } - - /// For get_block_extension - fn get_block_extension( - &self, - _block_hash: &packed::Byte32, - ) -> Result, crate::traits::TransactionDependencyError> { - Err(crate::traits::TransactionDependencyError::NotFound( - "not support".to_string(), - )) - } -} diff --git a/src/types/address.rs b/src/types/address.rs index 4fa6ad26..fbfb7db8 100644 --- a/src/types/address.rs +++ b/src/types/address.rs @@ -555,6 +555,8 @@ mod old_addr { #[cfg(test)] mod test { + use crate::util::hex_decode; + use super::*; use ckb_types::{h160, h256}; @@ -651,7 +653,7 @@ mod test { assert_eq!(addr.payload().hash_type(), ScriptHashType::Type); assert_eq!( addr.payload().args().as_ref(), - hex::decode("0c4bec5862af847a2d852cb939c6dfb70c25e52e").unwrap() + hex_decode("0c4bec5862af847a2d852cb939c6dfb70c25e52e".as_bytes()) ); } @@ -678,9 +680,9 @@ mod test { let mut data = vec![0u8; 23]; data[0] = 0x01; data[1] = CodeHashIndex::Sighash as u8; - data[2..].copy_from_slice( - &hex::decode("4fb2be2e5d0c1a3b8694f832350a33c1685d477a33").unwrap(), - ); + data[2..].copy_from_slice(&hex_decode( + "4fb2be2e5d0c1a3b8694f832350a33c1685d477a33".as_bytes(), + )); let variant = bech32::Variant::Bech32; let addr = bech32::encode("ckb", data.to_base32(), variant).unwrap(); let expected_addr = "ckb1qyqylv479ewscx3ms620sv34pgeuz6zagaarxdzvx03"; @@ -712,7 +714,7 @@ mod test { fn test_invalid_old_full_address() { // INVALID bech32 encoding { - let args = hex::decode("4fb2be2e5d0c1a3b86").unwrap(); + let args = hex_decode("4fb2be2e5d0c1a3b86".as_bytes()); let mut data = vec![0u8; 33 + args.len()]; data[0] = AddressType::FullData as u8; data[1..33].copy_from_slice( @@ -751,7 +753,7 @@ mod test { ] { let code_hash = h256!("0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8"); - let args = hex::decode("4fb2be2e5d0c1a3b86").unwrap(); + let args = hex_decode("4fb2be2e5d0c1a3b86".as_bytes()); let mut data = vec![0u8; 34 + args.len()]; data[0] = 0x00; data[1..33].copy_from_slice(code_hash.as_bytes()); diff --git a/src/unlock/omni_lock.rs b/src/unlock/omni_lock.rs index 8ea1e862..05ade729 100644 --- a/src/unlock/omni_lock.rs +++ b/src/unlock/omni_lock.rs @@ -688,10 +688,16 @@ impl OmniLockConfig { } } + /// Enable cobuild's build transaction standards pub fn enable_cobuild(&mut self, enable: bool) { self.enable_cobuild = enable } + /// Set cobuild message value + pub fn cobuild_message(&mut self, message: Option) { + self.cobuild_message = message.map(|i| i.as_bytes()); + } + /// Set the admin cofiguration, and set the OmniLockFlags::ADMIN flag. /// # Arguments /// * `admin_config` The new admin config. @@ -740,6 +746,7 @@ impl OmniLockConfig { self.info_cell = None; } + /// Set multisignature config pub fn set_multisig_config(&mut self, multisig_config: Option) { self.multisig_config = multisig_config; } @@ -885,7 +892,6 @@ impl OmniLockConfig { omni_sig[..config_data.len()].copy_from_slice(&config_data); OmniLockWitnessLock::new_builder().signature(Some(Bytes::from(omni_sig)).pack()) } - // IdentityFlag::OwnerLock => OmniLockWitnessLock::new_builder(), IdentityFlag::Solana => OmniLockWitnessLock::new_builder() .signature(Some(Bytes::from(vec![0u8; 96])).pack()), IdentityFlag::Dl | IdentityFlag::Exec => { diff --git a/src/unlock/signer.rs b/src/unlock/signer.rs index dc204a34..d13eac0a 100644 --- a/src/unlock/signer.rs +++ b/src/unlock/signer.rs @@ -751,7 +751,7 @@ impl ScriptSigner for OmniLockScriptSigner { if args.len() != self.config.get_args_len() { return false; } - dbg!(1); + if self.unlock_mode == OmniUnlockMode::Admin { if let Some(admin_config) = self.config.get_admin_config() { if args.len() < 54 { @@ -785,7 +785,9 @@ impl ScriptSigner for OmniLockScriptSigner { | IdentityFlag::EthereumDisplaying | IdentityFlag::Tron | IdentityFlag::Solana - | IdentityFlag::Eos => self + | IdentityFlag::Eos + | IdentityFlag::Dl + | IdentityFlag::Exec => self .signer .match_id(self.config.id().auth_content().as_ref()), IdentityFlag::Multisig => { @@ -803,7 +805,6 @@ impl ScriptSigner for OmniLockScriptSigner { // should not reach here, return true for compatible reason true } - _ => todo!("other auth type not supported yet"), } } diff --git a/src/util.rs b/src/util.rs index 036dec89..7e510620 100644 --- a/src/util.rs +++ b/src/util.rs @@ -254,6 +254,12 @@ pub fn hex_encode(message: &[u8]) -> String { String::from_utf8(res).unwrap() } +pub fn hex_decode(message: &[u8]) -> Vec { + let mut res = vec![0; message.len() / 2]; + faster_hex::hex_decode(message, &mut res).unwrap(); + res +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/test-data/Makefile b/test-data/Makefile similarity index 100% rename from src/test-data/Makefile rename to test-data/Makefile diff --git a/src/test-data/always_success b/test-data/always_success similarity index 100% rename from src/test-data/always_success rename to test-data/always_success diff --git a/test-data/always_success_dl b/test-data/always_success_dl new file mode 100755 index 0000000000000000000000000000000000000000..0113a2e498dc3e56bea0a2702f2d891bb09c6ae9 GIT binary patch literal 4904 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 EPx68%n*aa+ literal 0 HcmV?d00001