Verify Signatures should take bridge as state, and split arguments.
Bridge state is represented by the #[state] struct in the main file, and so processor functions no longer receive it as part of context. Instead it's passed as an arg. Change-Id: I0492290a597e0778d5c52162447fa09f68a91a9b
This commit is contained in:
parent
bcf7be93d6
commit
a5f285f1bd
|
@ -1,6 +1,6 @@
|
|||
use anchor_lang::{prelude::*, solana_program};
|
||||
|
||||
use crate::{accounts, VerifySig, VerifySigsData};
|
||||
use crate::{accounts, anchor_bridge::Bridge, VerifySig, VerifySigsData, MAX_LEN_GUARDIAN_KEYS};
|
||||
use byteorder::ByteOrder;
|
||||
use sha3::Digest;
|
||||
use std::io::Write;
|
||||
|
@ -22,9 +22,14 @@ struct SecpInstructionPart<'a> {
|
|||
msg_size: u16,
|
||||
}
|
||||
|
||||
pub fn verify_signatures(ctx: Context<VerifySig>, data: VerifySigsData) -> ProgramResult {
|
||||
let sig_infos: Vec<SigInfo> = data
|
||||
.signers
|
||||
pub fn verify_signatures(
|
||||
bridge: &mut Bridge,
|
||||
ctx: Context<VerifySig>,
|
||||
hash: [u8; 32],
|
||||
signers: [i8; MAX_LEN_GUARDIAN_KEYS],
|
||||
initial_creation: bool,
|
||||
) -> ProgramResult {
|
||||
let sig_infos: Vec<SigInfo> = signers
|
||||
.iter()
|
||||
.enumerate()
|
||||
.filter_map(|(i, p)| {
|
||||
|
@ -128,7 +133,7 @@ pub fn verify_signatures(ctx: Context<VerifySig>, data: VerifySigsData) -> Progr
|
|||
return Err(ProgramError::InvalidArgument);
|
||||
};
|
||||
let msg_hash: [u8; 32] = h.finalize().into();
|
||||
if msg_hash != data.hash {
|
||||
if msg_hash != hash {
|
||||
return Err(ProgramError::InvalidArgument);
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@ pub const MAX_LEN_GUARDIAN_KEYS: usize = 20;
|
|||
|
||||
#[derive(Accounts)]
|
||||
pub struct VerifySig<'info> {
|
||||
pub bridge: AccountInfo<'info>,
|
||||
pub system: AccountInfo<'info>,
|
||||
pub instruction_sysvar: AccountInfo<'info>,
|
||||
pub bridge_info: ProgramState<'info, BridgeInfo>,
|
||||
|
@ -89,9 +88,15 @@ pub mod anchor_bridge {
|
|||
data.config,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn verify_signatures(ctx: Context<VerifySig>, data: VerifySigsData) -> ProgramResult {
|
||||
api::verify_signatures(ctx, data)
|
||||
pub fn verify_signatures(&mut self, ctx: Context<VerifySig>, data: VerifySigsData) -> ProgramResult {
|
||||
api::verify_signatures(
|
||||
self,
|
||||
ctx,
|
||||
data.hash,
|
||||
data.signers,
|
||||
data.initial_creation,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue