diff --git a/.gitignore b/.gitignore index a5d8b92..0607fd4 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,5 @@ dkms.conf .DS_Store build/ .vscode/ +target/ +Cargo.lock diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..ba769cd --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,7 @@ +[workspace] +resolver = "2" +members = [ + "tests/sphincsplus_rust", + "tools/ckb-sphincs-tools", + "tools/ckb-sphincs-utils" +] diff --git a/Makefile b/Makefile index d1d0bbd..3633b45 100644 --- a/Makefile +++ b/Makefile @@ -75,6 +75,7 @@ BUILDER_DOCKER := nervos/ckb-riscv-gnu-toolchain@sha256:7601a814be2595ad471288fe all: build/sphincsplus_lock all-via-docker: + rm -rf build/ docker run --rm -v `pwd`:/code ${BUILDER_DOCKER} bash -c "cd /code && make PARAMS=$(PARAMS) THASH=$(THASH)" build/convert_asm: c/ref/fips202_asm.S @@ -87,4 +88,4 @@ build/sphincsplus_lock: c/ckb-sphincsplus-lock.c $(SOURCES) $(HEADERS) $(OBJCOPY) --strip-debug --strip-all $@ clean: - rm -rf build/sphincsplus_lock \ No newline at end of file + rm -rf build/ \ No newline at end of file diff --git a/README.md b/README.md index 4e753d3..d1528ef 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Find out more information about different [parameters](https://github.com/sphinc * Note: Default hash type: **shake-128f-simple** (Verify cycles: about 49.6M) ## Tool -This tool is to **convert a default Lock(SECP256K1/blake160) to quantum resistant lock script.**. +This tool is to **migrate Cells from default lock(SECP256K1/blake160) to quantum resistant lock.** Follow steps below: @@ -55,11 +55,11 @@ Follow steps below: We can get a set of key files, including public and private keys. * If the contract you compile does not use the default value, it needs to be the same here. * Need to save this file. -4. Convert a SECP256K1/blake160 lock script to quantum resistant lock script. +4. Update a Cell's Lock Script from SECP256K1/blake160 to quantum resistant. ``` shell cargo run -- cc_to_sphincsplus --tx_hash --tx_index --key_file key.json --prikey ``` -5. Convert a quantum resistant lock script to SECP256K1/blake160 lock script. +5. Update a Cell's Lock Script from quantum resistant to SECP256K1/blake160. ``` shell cargo run -- cc_to_secp --tx_hash --tx_index --key_file key.json --lock_arg --sp_tx_hash --sp_tx_index --fee 10000 ``` @@ -81,8 +81,8 @@ Follow steps below: [CKB Explorer](https://pudge.explorer.nervos.org/transaction/0x35f51257673c7a7edd009fa2166e6f8645156207c9da38202f04ba4d94d9e519) | parameter | value | | --------- | ------------------------------------------------------------------ | -| code_hash | 0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8 | -| hash_type | type | +| code_hash | 0x989ab456455509a1c2ad1cb8116b7d209df228144445c741b101ec3e55ee8351 | +| hash_type | data1 | | tx_hash | 0x35f51257673c7a7edd009fa2166e6f8645156207c9da38202f04ba4d94d9e519 | | index | 0 | | dep_type | code | diff --git a/tools/ckb-sphincs-tools/src/main.rs b/tools/ckb-sphincs-tools/src/main.rs index 60d2330..54ec5d1 100644 --- a/tools/ckb-sphincs-tools/src/main.rs +++ b/tools/ckb-sphincs-tools/src/main.rs @@ -64,8 +64,11 @@ fn main() { Some(("signature", sub_matches)) => { let key_file = sub_matches.get_one::("key_file").expect("required"); let message = - H256::from_trimmed_str(sub_matches.get_one::("message").expect("required")) - .unwrap(); + H256::from_trimmed_str( + sub_matches.get_one::("message").expect("required") + .trim_start_matches("0x") + .trim_start_matches('0') + ).unwrap(); sub_sign::sub_sign( sub_gen_key::parse_key_file(PathBuf::from(key_file)), message, @@ -81,9 +84,17 @@ fn main() { sub_conversion::cc_to_sphincsplus( sub_gen_key::parse_key_file(PathBuf::from(key_file)), &ckb_rpc, - H256::from_trimmed_str(tx_hash).unwrap(), + H256::from_trimmed_str( + tx_hash + .trim_start_matches("0x") + .trim_start_matches('0') + ).unwrap(), tx_index.parse::().unwrap(), - H256::from_trimmed_str(prikey).unwrap(), + H256::from_trimmed_str( + prikey + .trim_start_matches("0x") + .trim_start_matches('0') + ).unwrap(), ); } Some(("cc_to_secp", sub_matches)) => { @@ -107,10 +118,18 @@ fn main() { sub_conversion::cc_to_def_lock_script( sub_gen_key::parse_key_file(PathBuf::from(key_file)), &ckb_rpc, - H256::from_trimmed_str(tx_hash).unwrap(), + H256::from_trimmed_str( + tx_hash + .trim_start_matches("0x") + .trim_start_matches('0') + ).unwrap(), tx_index.parse::().unwrap(), &str_to_bytes(&lock_arg), - H256::from_trimmed_str(sp_tx_hash).unwrap(), + H256::from_trimmed_str( + sp_tx_hash + .trim_start_matches("0x") + .trim_start_matches('0') + ).unwrap(), sp_tx_index.parse::().unwrap(), fee.clone(), );