Skip to content

Commit

Permalink
Require a pre-built NetworkId when deriving SS58Address
Browse files Browse the repository at this point in the history
  • Loading branch information
doom committed May 31, 2024
1 parent a5bf37e commit a6c5f85
Showing 1 changed file with 4 additions and 15 deletions.
19 changes: 4 additions & 15 deletions rust/tw_ss58_address/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,7 @@ impl SS58Address {
})
}

pub fn from_public_key(key: &PublicKey, network: u16) -> AddressResult<Self> {
let network = NetworkId::try_from(network)?;

pub fn from_public_key(key: &PublicKey, network: NetworkId) -> AddressResult<Self> {
Ok(Self {
key: key.as_slice().to_owned(),
network,
Expand Down Expand Up @@ -311,28 +309,19 @@ mod tests {
let key_hex = "92fd9c237030356e26cfcc4568dc71055d5ec92dfe0ff903767e00611971bad3";
let key = PublicKey::try_from(key_hex).expect("error creating test public key");

let addr = SS58Address::from_public_key(&key, 0).expect("error creating address");
let addr = SS58Address::from_public_key(&key, NetworkId::POLKADOT).expect("error creating address");
assert_eq!(addr.network().value(), 0);
assert_eq!(addr.key_bytes(), key.as_slice());

let addr = SS58Address::from_public_key(&key, 5).expect("error creating address");
let addr = SS58Address::from_public_key(&key, NetworkId::new_unchecked(5)).expect("error creating address");
assert_eq!(addr.network().value(), 5);
assert_eq!(addr.key_bytes(), key.as_slice());

let addr = SS58Address::from_public_key(&key, 172).expect("error creating address");
let addr = SS58Address::from_public_key(&key, NetworkId::new_unchecked(172)).expect("error creating address");
assert_eq!(addr.network().value(), 172);
assert_eq!(addr.key_bytes(), key.as_slice());
}

#[test]
fn test_address_from_public_key_with_invalid_network() {
let key_hex = "92fd9c237030356e26cfcc4568dc71055d5ec92dfe0ff903767e00611971bad3";
let key = PublicKey::try_from(key_hex).expect("error creating test public key");

let res = SS58Address::from_public_key(&key, 32771);
assert_eq!(res, Err(AddressError::InvalidInput));
}

#[test]
fn test_as_base58_string() {
fn test_case(repr: &str) {
Expand Down

0 comments on commit a6c5f85

Please sign in to comment.