diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 25c6a531..0f71b232 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -660,11 +660,6 @@ fn inner_process_remaining_instruction( #[no_mangle] pub unsafe extern "C" fn use_tests(acc: &AccountInfo) { test_ptoken_domain_data(acc, acc, acc); - let _ = - test_validate_owner(unsafe { &*(acc as *const AccountInfo as *const [AccountInfo; 2]) }); - let _ = test_validate_owner_multisig(unsafe { - &*(acc as *const AccountInfo as *const [AccountInfo; 5]) - }); let acc4 = unsafe { &*(acc as *const AccountInfo as *const [AccountInfo; 4]) }; let idata8 = unsafe { &*(acc as *const AccountInfo as *const [u8; 8]) }; let _ = test_process_burn_multisig_n1(acc4, idata8); @@ -779,8 +774,6 @@ include!("../../specs/shared/test_process_transfer.rs"); include!("../../specs/shared/test_process_transfer_multisig.rs"); include!("../../specs/shared/test_process_amount_to_ui_amount.rs"); include!("../../specs/shared/test_process_ui_amount_to_amount.rs"); -include!("../../specs/shared/test_validate_owner.rs"); -include!("../../specs/shared/test_validate_owner_multisig.rs"); // Withdraw Excess Lamports test harnesses (p-token specific) include!("../../specs/withdraw-p-token.rs"); diff --git a/p-token/test-properties/proofs.md b/p-token/test-properties/proofs.md index dbf02eab..9f9d656a 100644 --- a/p-token/test-properties/proofs.md +++ b/p-token/test-properties/proofs.md @@ -3,8 +3,6 @@ Proofs to run with `run-proofs.sh -a`: | Start symbol name | |------------------------------------------------| | test_ptoken_domain_data | -| test_validate_owner | -| test_validate_owner_multisig | | test_process_approve | | test_process_approve_checked | | test_process_withdraw_excess_lamports_account | diff --git a/specs/shared/inner_test_validate_owner.rs b/specs/shared/inner_test_validate_owner.rs index f2724186..96168b0e 100644 --- a/specs/shared/inner_test_validate_owner.rs +++ b/specs/shared/inner_test_validate_owner.rs @@ -1,66 +1,3 @@ -/// Computes the expected result of mod.rs::validate_owner. -#[inline(never)] -fn expected_validate_owner_result( - expected_owner: &Pubkey, - owner_account_info: &AccountInfo, - tx_signers: &[AccountInfo], - maybe_multisig_is_initialised: Option>, -) -> Result<(), ProgramError> { - if expected_owner != key!(owner_account_info) { - return Err(ProgramError::Custom(4)); - } - // We add the `maybe_multisig_is_initialised.is_some()` to not branch vacuously in the - // non-multisig cases - else if maybe_multisig_is_initialised.is_some() - && owner_account_info.data_len() == Multisig::LEN - && (owner!(owner_account_info) == &PROGRAM_ID) - { - // Guaranteed to succeed by `cheatcode_is_multisig` - let multisig_is_initialised = maybe_multisig_is_initialised.unwrap(); - if multisig_is_initialised.is_err() { - return Err(ProgramError::InvalidAccountData); - } else if !multisig_is_initialised.unwrap() { - return Err(ProgramError::UninitializedAccount); - } else { - let multisig = get_multisig(owner_account_info); - - // Single loop matching the implementation's validate_owner: - // outer over tx_signers, inner over registered keys, with - // matched[position] to prevent double-counting and to skip - // unsigned detection when a position was already claimed. - let mut num_signers: usize = 0; - let mut matched = [false; MAX_SIGNERS as usize]; - - for potential_signer in tx_signers.iter() { - for (position, registered_key) in - multisig.signers[0..multisig.n as usize].iter().enumerate() - { - if registered_key == key!(potential_signer) && !matched[position] { - if !is_signer!(potential_signer) { - return Err(ProgramError::MissingRequiredSignature); - } - matched[position] = true; - num_signers += 1; - } - } - } - - // Check if we have enough signers - if num_signers < multisig.m as usize { - return Err(ProgramError::MissingRequiredSignature); - } - - return Ok(()); - } - } - // Non-multisig case - check if owner_account_info.is_signer() - else if !is_signer!(owner_account_info) { - return Err(ProgramError::MissingRequiredSignature); - } - - Ok(()) -} - /// This function encapsulates the specification of validating the signature /// requirements In particular, code from mod.rs::validate_owner is checked #[inline(never)] diff --git a/specs/shared/test_validate_owner.rs b/specs/shared/test_validate_owner.rs deleted file mode 100644 index c6fcdb4f..00000000 --- a/specs/shared/test_validate_owner.rs +++ /dev/null @@ -1,33 +0,0 @@ -/// accounts[0] // Source Account Info (provides expected_owner) -/// accounts[1] // Owner Info -#[inline(never)] -fn test_validate_owner( - accounts: &[AccountInfo; 2], -) -> ProgramResult { - cheatcode_account!(&accounts[0]); // Source Account - cheatcode_account!(&accounts[1]); // Owner - - //-Initial State----------------------------------------------------------- - let src_old = get_account(&accounts[0]); - let expected_owner = src_old.owner; - let maybe_multisig_is_initialised = None; - - //-Process Instruction----------------------------------------------------- - let result = expected_validate_owner_result( - &expected_owner, - &accounts[1], - &accounts[2..], - maybe_multisig_is_initialised.clone(), - ); - - //-Assert Postconditions--------------------------------------------------- - inner_test_validate_owner( - &expected_owner, - &accounts[1], - &accounts[2..], - maybe_multisig_is_initialised, - result.clone(), - )?; - - result -} diff --git a/specs/shared/test_validate_owner_multisig.rs b/specs/shared/test_validate_owner_multisig.rs deleted file mode 100644 index fa1a55ec..00000000 --- a/specs/shared/test_validate_owner_multisig.rs +++ /dev/null @@ -1,45 +0,0 @@ -/// accounts[0] // Source Account Info (provides expected_owner) -/// accounts[1] // Owner Info (multisig) -/// accounts[2..4] // Signers -#[inline(never)] -fn test_validate_owner_multisig( - accounts: &[AccountInfo; 5], -) -> ProgramResult { - cheatcode_account!(&accounts[0]); // Source Account - cheatcode_multisig!(&accounts[1]); // Owner (multisig) - - #[cfg(feature = "assumptions")] - { - let multisig = get_multisig(&accounts[1]); - if multisig.m < 1 || multisig.m > MAX_SIGNERS_U8 { - return Ok(()); - } - if multisig.n < 1 || multisig.n > MAX_SIGNERS_U8 { - return Ok(()); - } - } - - //-Initial State----------------------------------------------------------- - let src_old = get_account(&accounts[0]); - let expected_owner = src_old.owner; - let maybe_multisig_is_initialised = Some(get_multisig(&accounts[1]).is_initialized()); - - //-Process Instruction----------------------------------------------------- - let result = expected_validate_owner_result( - &expected_owner, - &accounts[1], - &accounts[2..], - maybe_multisig_is_initialised.clone(), - ); - - //-Assert Postconditions--------------------------------------------------- - inner_test_validate_owner( - &expected_owner, - &accounts[1], - &accounts[2..], - maybe_multisig_is_initialised, - result.clone(), - )?; - - result -}