From a23756949f84831c9bcaea95455468643b3212ca Mon Sep 17 00:00:00 2001 From: PG Herveou Date: Wed, 11 Sep 2024 18:27:46 +0200 Subject: [PATCH] Bump parity-common (#11) * Test parity-common master * ump parity-common crates to upcoming version --- Cargo.toml | 6 +++--- src/decoder.rs | 12 ++++++------ src/encoder.rs | 20 ++++++++++---------- tests/decode_test.rs | 10 +++++----- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 47eb8d8..b4a96cd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ethabi-decode" -version = "1.0.0" +version = "1.1.0" authors = ["Vincent Geddes Result { let slice = peek(slices, offset)?; - let result = DecodeResult { token: Token::Int(slice.clone().into()), new_offset: offset + 1 }; + let result = DecodeResult { token: Token::Int(U256::from_big_endian(slice)), new_offset: offset + 1 }; Ok(result) } ParamKind::Uint(_) => { let slice = peek(slices, offset)?; - let result = DecodeResult { token: Token::Uint(slice.clone().into()), new_offset: offset + 1 }; + let result = DecodeResult { token: Token::Uint(U256::from_big_endian(slice)), new_offset: offset + 1 }; Ok(result) } @@ -221,7 +221,7 @@ fn decode_param(param: &ParamKind, slices: &[Word], offset: usize) -> Result Vec { let mut result = vec![pad_u32(bytes.len() as u32)]; @@ -138,7 +138,6 @@ pub fn encode_function(signature: &str, inputs: &[Token]) -> Vec { signed.to_vec().into_iter().chain(encoded.into_iter()).collect() } - fn encode_token(token: &Token) -> Mediate { match *token { Token::Address(ref address) => { @@ -149,8 +148,8 @@ fn encode_token(token: &Token) -> Mediate { Token::Bytes(ref bytes) => Mediate::Prefixed(pad_bytes(bytes)), Token::String(ref s) => Mediate::Prefixed(pad_bytes(s.as_ref())), Token::FixedBytes(ref bytes) => Mediate::Raw(pad_fixed_bytes(bytes)), - Token::Int(int) => Mediate::Raw(vec![int.into()]), - Token::Uint(uint) => Mediate::Raw(vec![uint.into()]), + Token::Int(int) => Mediate::Raw(vec![int.to_big_endian()]), + Token::Uint(uint) => Mediate::Raw(vec![uint.to_big_endian()]), Token::Bool(b) => { let mut value = [0u8; 32]; if b { @@ -187,7 +186,7 @@ fn encode_token(token: &Token) -> Mediate { #[cfg(test)] mod tests { - use crate::{encode, encode_function, util::pad_u32, Token}; + use crate::{encode, encode_function, util::pad_u32, Token, U256}; use hex_literal::hex; #[test] @@ -505,7 +504,7 @@ mod tests { fn encode_uint() { let mut uint = [0u8; 32]; uint[31] = 4; - let encoded = encode(&vec![Token::Uint(uint.into())]); + let encoded = encode(&vec![Token::Uint(U256::from_big_endian(&uint))]); let expected = hex!("0000000000000000000000000000000000000000000000000000000000000004"); assert_eq!(encoded, expected); } @@ -514,7 +513,7 @@ mod tests { fn encode_int() { let mut int = [0u8; 32]; int[31] = 4; - let encoded = encode(&vec![Token::Int(int.into())]); + let encoded = encode(&vec![Token::Int(U256::from_big_endian(&int))]); let expected = hex!("0000000000000000000000000000000000000000000000000000000000000004"); assert_eq!(encoded, expected); } @@ -706,7 +705,7 @@ mod tests { #[test] fn encode_complex_tuple() { - let uint = Token::Uint([0x11u8; 32].into()); + let uint = Token::Uint(U256::from_big_endian(&[0x11u8; 32])); let string = Token::String("gavofyork".into()); let address1 = Token::Address([0x11u8; 20].into()); let address2 = Token::Address([0x22u8; 20].into()); @@ -832,14 +831,15 @@ mod tests { let mut uint = [0u8; 32]; uint[31] = 69; - let encoded = encode_function(signature, &[Token::Uint(uint.into()), Token::Bool(true)]); + let encoded = encode_function(signature, &[Token::Uint(U256::from_big_endian(&uint)), Token::Bool(true)]); let expected = hex!( " cdcd77c000000000000000000000000000000000000000000000000000000000 0000004500000000000000000000000000000000000000000000000000000000 00000001 " - ).to_vec(); + ) + .to_vec(); assert_eq!(encoded, expected); } } diff --git a/tests/decode_test.rs b/tests/decode_test.rs index 1ed0387..1897125 100644 --- a/tests/decode_test.rs +++ b/tests/decode_test.rs @@ -6,7 +6,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use ethabi_decode::{decode, ParamKind, Token}; +use ethabi_decode::{decode, ParamKind, Token, U256}; use hex_literal::hex; use paste; @@ -100,7 +100,7 @@ test_encode_decode! { test_encode_decode! { name: int, types: [ParamKind::Int(32)], - tokens: [Token::Int([0x11u8; 32].into())], + tokens: [Token::Int(U256::from_big_endian(&[0x11u8; 32]))], data: "1111111111111111111111111111111111111111111111111111111111111111" } test_encode_decode! { @@ -109,7 +109,7 @@ test_encode_decode! { tokens: { let mut int = [0u8; 32]; int[31] = 4; - [Token::Int(int.into())] + [Token::Int(U256::from_big_endian(&int))] }, data: "0000000000000000000000000000000000000000000000000000000000000004" } @@ -118,7 +118,7 @@ test_encode_decode! { test_encode_decode! { name: uint, types: [ParamKind::Uint(32)], - tokens: [Token::Uint([0x11u8; 32].into())], + tokens: [Token::Uint(U256::from_big_endian(&[0x11u8; 32]))], data: "1111111111111111111111111111111111111111111111111111111111111111" } test_encode_decode! { @@ -127,7 +127,7 @@ test_encode_decode! { tokens: { let mut uint = [0u8; 32]; uint[31] = 4; - [Token::Uint(uint.into())] + [Token::Uint(U256::from_big_endian(&uint))] }, data: "0000000000000000000000000000000000000000000000000000000000000004" }