Program address nits (#10261)

automerge
This commit is contained in:
Jack May 2020-05-26 19:32:19 -07:00 committed by GitHub
parent 3f0995d3b4
commit 2ee0c48980
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 8 deletions

View File

@ -1,5 +1,5 @@
use crate::{
hash::{hashv, Hasher},
hash::{hash, hashv, Hasher},
program_utils::DecodeError,
};
use num_derive::{FromPrimitive, ToPrimitive};
@ -84,7 +84,10 @@ impl Pubkey {
))
}
pub fn create_program_address(seeds: &[&str], owner: &Pubkey) -> Result<Pubkey, PubkeyError> {
pub fn create_program_address(
seeds: &[&str],
program_id: &Pubkey,
) -> Result<Pubkey, PubkeyError> {
let mut hasher = Hasher::default();
for seed in seeds.iter() {
if seed.len() > MAX_SEED_LEN {
@ -92,9 +95,9 @@ impl Pubkey {
}
hasher.hash(seed.as_ref());
}
hasher.hashv(&[owner.as_ref(), "ProgramDerivedAddress".as_ref()]);
hasher.hashv(&[program_id.as_ref(), "ProgramDerivedAddress".as_ref()]);
Ok(Pubkey::new(hashv(&[hasher.result().as_ref()]).as_ref()))
Ok(Pubkey::new(hash(hasher.result().as_ref()).as_ref()))
}
#[cfg(not(feature = "program"))]
@ -242,7 +245,7 @@ mod tests {
fn test_create_program_address() {
let exceeded_seed = from_utf8(&[127; MAX_SEED_LEN + 1]).unwrap();
let max_seed = from_utf8(&[0; MAX_SEED_LEN]).unwrap();
let program_id = Pubkey::new(b"BPFLoader11111111111111111111111");
let program_id = Pubkey::from_str("BPFLoader1111111111111111111111111111111111").unwrap();
assert_eq!(
Pubkey::create_program_address(&[exceeded_seed], &program_id),
@ -255,19 +258,19 @@ mod tests {
assert!(Pubkey::create_program_address(&[max_seed], &Pubkey::new_rand(),).is_ok());
assert_eq!(
Pubkey::create_program_address(&[""], &program_id),
Ok("FXjJsFsMXM8LFXynZvEkED7yECADnaEgAzWD6yyg91QG"
Ok("CsdSsqp6Upkh2qajhZMBM8xT4GAyDNSmcV37g4pN8rsc"
.parse()
.unwrap())
);
assert_eq!(
Pubkey::create_program_address(&[""], &program_id),
Ok("MAuKBzPvme5QmCNALp5iAEasZeazkpRyCZbwtJVkJEG"
Ok("A8mYnN8Pfx7Nn6f8RoQgsPNtAGAWmmKSBCDfyDvE6sXF"
.parse()
.unwrap())
);
assert_eq!(
Pubkey::create_program_address(&["Talking", "Squirrels"], &program_id),
Ok("3beXgJ9MfstiGfzav45bicJ7ygiwUEoCfsM4W94EuRii"
Ok("CawYq8Rmj4JRR992wVnGEFUjMEkmtmcFgEL4iS1qPczu"
.parse()
.unwrap())
);