Rename key field in Key to key_data

This commit is contained in:
Shing Him Ng 2024-07-14 18:12:24 -05:00
parent 9477ddc57b
commit 02e7933fe4
5 changed files with 30 additions and 30 deletions

View File

@ -84,7 +84,7 @@ macro_rules! impl_psbtmap_ser_de_serialize {
#[rustfmt::skip]
macro_rules! impl_psbt_insert_pair {
($slf:ident.$unkeyed_name:ident <= <$raw_key:ident: _>|<$raw_value:ident: $unkeyed_value_type:ty>) => {
if $raw_key.key.is_empty() {
if $raw_key.key_data.is_empty() {
if $slf.$unkeyed_name.is_none() {
let val: $unkeyed_value_type = $crate::psbt::serialize::Deserialize::deserialize(&$raw_value)?;
$slf.$unkeyed_name = Some(val)
@ -96,8 +96,8 @@ macro_rules! impl_psbt_insert_pair {
}
};
($slf:ident.$keyed_name:ident <= <$raw_key:ident: $keyed_key_type:ty>|<$raw_value:ident: $keyed_value_type:ty>) => {
if !$raw_key.key.is_empty() {
let key_val: $keyed_key_type = $crate::psbt::serialize::Deserialize::deserialize(&$raw_key.key)?;
if !$raw_key.key_data.is_empty() {
let key_val: $keyed_key_type = $crate::psbt::serialize::Deserialize::deserialize(&$raw_key.key_data)?;
match $slf.$keyed_name.entry(key_val) {
$crate::prelude::btree_map::Entry::Vacant(empty_key) => {
let val: $keyed_value_type = $crate::psbt::serialize::Deserialize::deserialize(&$raw_value)?;
@ -114,10 +114,10 @@ macro_rules! impl_psbt_insert_pair {
#[rustfmt::skip]
macro_rules! psbt_insert_hash_pair {
(&mut $slf:ident.$map:ident <= $raw_key:ident|$raw_value:ident|$hash:path|$hash_type_error:path) => {
if $raw_key.key.is_empty() {
if $raw_key.key_data.is_empty() {
return Err(psbt::Error::InvalidKey($raw_key));
}
let key_val: $hash = Deserialize::deserialize(&$raw_key.key)?;
let key_val: $hash = Deserialize::deserialize(&$raw_key.key_data)?;
match $slf.$map.entry(key_val) {
btree_map::Entry::Vacant(empty_key) => {
let val: Vec<u8> = Deserialize::deserialize(&$raw_value)?;
@ -142,7 +142,7 @@ macro_rules! impl_psbt_get_pair {
$rv.push($crate::psbt::raw::Pair {
key: $crate::psbt::raw::Key {
type_value: $unkeyed_typeval,
key: vec![],
key_data: vec![],
},
value: $crate::psbt::serialize::Serialize::serialize($unkeyed_name),
});
@ -153,7 +153,7 @@ macro_rules! impl_psbt_get_pair {
$rv.push($crate::psbt::raw::Pair {
key: $crate::psbt::raw::Key {
type_value: $keyed_typeval,
key: $crate::psbt::serialize::Serialize::serialize(key),
key_data: $crate::psbt::serialize::Serialize::serialize(key),
},
value: $crate::psbt::serialize::Serialize::serialize(val),
});

View File

@ -24,7 +24,7 @@ impl Map for Psbt {
let mut rv: Vec<raw::Pair> = Default::default();
rv.push(raw::Pair {
key: raw::Key { type_value: PSBT_GLOBAL_UNSIGNED_TX, key: vec![] },
key: raw::Key { type_value: PSBT_GLOBAL_UNSIGNED_TX, key_data: vec![] },
value: {
// Manually serialized to ensure 0-input txs are serialized
// without witnesses.
@ -39,7 +39,7 @@ impl Map for Psbt {
for (xpub, (fingerprint, derivation)) in &self.xpub {
rv.push(raw::Pair {
key: raw::Key { type_value: PSBT_GLOBAL_XPUB, key: xpub.encode().to_vec() },
key: raw::Key { type_value: PSBT_GLOBAL_XPUB, key_data: xpub.encode().to_vec() },
value: {
let mut ret = Vec::with_capacity(4 + derivation.len() * 4);
ret.extend(fingerprint.as_bytes());
@ -52,7 +52,7 @@ impl Map for Psbt {
// Serializing version only for non-default value; otherwise test vectors fail
if self.version > 0 {
rv.push(raw::Pair {
key: raw::Key { type_value: PSBT_GLOBAL_VERSION, key: vec![] },
key: raw::Key { type_value: PSBT_GLOBAL_VERSION, key_data: vec![] },
value: self.version.to_le_bytes().to_vec(),
});
}
@ -84,7 +84,7 @@ impl Psbt {
match pair.key.type_value {
PSBT_GLOBAL_UNSIGNED_TX => {
// key has to be empty
if pair.key.key.is_empty() {
if pair.key.key_data.is_empty() {
// there can only be one unsigned transaction
if tx.is_none() {
let vlen: usize = pair.value.len();
@ -111,8 +111,8 @@ impl Psbt {
}
}
PSBT_GLOBAL_XPUB => {
if !pair.key.key.is_empty() {
let xpub = Xpub::decode(&pair.key.key)
if !pair.key.key_data.is_empty() {
let xpub = Xpub::decode(&pair.key.key_data)
.map_err(|_| Error::XPubKey(
"Can't deserialize ExtendedPublicKey from global XPUB key data"
))?;
@ -149,7 +149,7 @@ impl Psbt {
}
PSBT_GLOBAL_VERSION => {
// key has to be empty
if pair.key.key.is_empty() {
if pair.key.key_data.is_empty() {
// there can only be one version
if version.is_none() {
let vlen: usize = pair.value.len();

View File

@ -1438,7 +1438,7 @@ mod tests {
#[test]
fn serialize_then_deserialize_psbtkvpair() {
let expected = raw::Pair {
key: raw::Key { type_value: 0u8, key: vec![42u8, 69u8] },
key: raw::Key { type_value: 0u8, key_data: vec![42u8, 69u8] },
value: vec![69u8, 42u8, 4u8],
};
@ -1489,7 +1489,7 @@ mod tests {
}],
};
let unknown: BTreeMap<raw::Key, Vec<u8>> =
vec![(raw::Key { type_value: 1, key: vec![0, 1] }, vec![3, 4, 5])]
vec![(raw::Key { type_value: 1, key_data: vec![0, 1] }, vec![3, 4, 5])]
.into_iter()
.collect();
let key_source = ("deadbeef".parse().unwrap(), "0'/1".parse().unwrap());
@ -1629,14 +1629,14 @@ mod tests {
}
#[test]
#[should_panic(expected = "DuplicateKey(Key { type_value: 0, key: [] })")]
#[should_panic(expected = "DuplicateKey(Key { type_value: 0, key_data: [] })")]
fn invalid_vector_5() {
hex_psbt("70736274ff0100750200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf60000000000feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e1300000100fda5010100000000010289a3c71eab4d20e0371bbba4cc698fa295c9463afa2e397f8533ccb62f9567e50100000017160014be18d152a9b012039daf3da7de4f53349eecb985ffffffff86f8aa43a71dff1448893a530a7237ef6b4608bbb2dd2d0171e63aec6a4890b40100000017160014fe3e9ef1a745e974d902c4355943abcb34bd5353ffffffff0200c2eb0b000000001976a91485cff1097fd9e008bb34af709c62197b38978a4888ac72fef84e2c00000017a914339725ba21efd62ac753a9bcd067d6c7a6a39d05870247304402202712be22e0270f394f568311dc7ca9a68970b8025fdd3b240229f07f8a5f3a240220018b38d7dcd314e734c9276bd6fb40f673325bc4baa144c800d2f2f02db2765c012103d2e15674941bad4a996372cb87e1856d3652606d98562fe39c5e9e7e413f210502483045022100d12b852d85dcd961d2f5f4ab660654df6eedcc794c0c33ce5cc309ffb5fce58d022067338a8e0e1725c197fb1a88af59f51e44e4255b20167c8684031c05d1f2592a01210223b72beef0965d10be0778efecd61fcac6f79a4ea169393380734464f84f2ab30000000001003f0200000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff010000000000000000036a010000000000000000").unwrap();
}
#[cfg(feature = "base64")]
#[test]
#[should_panic(expected = "DuplicateKey(Key { type_value: 0, key: [] })")]
#[should_panic(expected = "DuplicateKey(Key { type_value: 0, key_data: [] })")]
fn invalid_vector_5_base64() {
Psbt::from_str("cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAQA/AgAAAAH//////////////////////////////////////////wAAAAAA/////wEAAAAAAAAAAANqAQAAAAAAAAAA").unwrap();
}
@ -1850,7 +1850,7 @@ mod tests {
);
let mut unknown: BTreeMap<raw::Key, Vec<u8>> = BTreeMap::new();
let key: raw::Key = raw::Key { type_value: 0x0fu8, key: hex!("010203040506070809") };
let key: raw::Key = raw::Key { type_value: 0x0fu8, key_data: hex!("010203040506070809") };
let value: Vec<u8> = hex!("0102030405060708090a0b0c0d0e0f");
unknown.insert(key, value);

View File

@ -27,7 +27,7 @@ pub struct Key {
pub type_value: u8,
/// The key data itself in raw byte form.
#[cfg_attr(feature = "serde", serde(with = "crate::serde_utils::hex_bytes"))]
pub key: Vec<u8>,
pub key_data: Vec<u8>,
}
/// A PSBT key-value pair in its raw byte form.
@ -69,7 +69,7 @@ where
impl fmt::Display for Key {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "type: {:#x}, key: {:x}", self.type_value, self.key.as_hex())
write!(f, "type: {:#x}, key: {:x}", self.type_value, self.key_data.as_hex())
}
}
@ -93,25 +93,25 @@ impl Key {
let type_value: u8 = Decodable::consensus_decode(r)?;
let mut key = Vec::with_capacity(key_byte_size as usize);
let mut key_data = Vec::with_capacity(key_byte_size as usize);
for _ in 0..key_byte_size {
key.push(Decodable::consensus_decode(r)?);
key_data.push(Decodable::consensus_decode(r)?);
}
Ok(Key { type_value, key })
Ok(Key { type_value, key_data })
}
}
impl Serialize for Key {
fn serialize(&self) -> Vec<u8> {
let mut buf = Vec::new();
VarInt::from(self.key.len() + 1)
VarInt::from(self.key_data.len() + 1)
.consensus_encode(&mut buf)
.expect("in-memory writers don't error");
self.type_value.consensus_encode(&mut buf).expect("in-memory writers don't error");
for key in &self.key {
for key in &self.key_data {
key.consensus_encode(&mut buf).expect("in-memory writers don't error");
}
@ -177,7 +177,7 @@ where
Subtype: Copy + From<u8> + Into<u8>,
{
/// Constructs full [Key] corresponding to this proprietary key type
pub fn to_key(&self) -> Key { Key { type_value: 0xFC, key: serialize(self) } }
pub fn to_key(&self) -> Key { Key { type_value: 0xFC, key_data: serialize(self) } }
}
impl<Subtype> TryFrom<Key> for ProprietaryKey<Subtype>
@ -196,6 +196,6 @@ where
return Err(Error::InvalidProprietaryKey);
}
Ok(deserialize(&key.key)?)
Ok(deserialize(&key.key_data)?)
}
}

View File

@ -244,7 +244,7 @@ fn serde_regression_psbt() {
}],
};
let unknown: BTreeMap<raw::Key, Vec<u8>> =
vec![(raw::Key { type_value: 9, key: vec![0, 1] }, vec![3, 4, 5])].into_iter().collect();
vec![(raw::Key { type_value: 9, key_data: vec![0, 1] }, vec![3, 4, 5])].into_iter().collect();
let key_source = ("deadbeef".parse().unwrap(), "0'/1".parse().unwrap());
let keypaths: BTreeMap<secp256k1::PublicKey, KeySource> = vec![(
"0339880dc92394b7355e3d0439fa283c31de7590812ea011c4245c0674a685e883".parse().unwrap(),
@ -323,7 +323,7 @@ fn serde_regression_psbt() {
#[test]
fn serde_regression_raw_pair() {
let pair = Pair {
key: Key { type_value: 1u8, key: vec![0u8, 1u8, 2u8, 3u8] },
key: Key { type_value: 1u8, key_data: vec![0u8, 1u8, 2u8, 3u8] },
value: vec![0u8, 1u8, 2u8, 3u8],
};
let got = serialize(&pair).unwrap();