From a5f285f1bd2ab4a525c2796367cc21b16f99f16b Mon Sep 17 00:00:00 2001 From: Reisen Date: Thu, 29 Apr 2021 11:07:58 +0000 Subject: [PATCH] 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 --- .../anchor-bridge/src/api/verify_signatures.rs | 15 ++++++++++----- .../programs/anchor-bridge/src/lib.rs | 13 +++++++++---- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/solana/anchor-bridge/programs/anchor-bridge/src/api/verify_signatures.rs b/solana/anchor-bridge/programs/anchor-bridge/src/api/verify_signatures.rs index 7e2bf8e5..9c35ba11 100644 --- a/solana/anchor-bridge/programs/anchor-bridge/src/api/verify_signatures.rs +++ b/solana/anchor-bridge/programs/anchor-bridge/src/api/verify_signatures.rs @@ -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, data: VerifySigsData) -> ProgramResult { - let sig_infos: Vec = data - .signers +pub fn verify_signatures( + bridge: &mut Bridge, + ctx: Context, + hash: [u8; 32], + signers: [i8; MAX_LEN_GUARDIAN_KEYS], + initial_creation: bool, +) -> ProgramResult { + let sig_infos: Vec = signers .iter() .enumerate() .filter_map(|(i, p)| { @@ -128,7 +133,7 @@ pub fn verify_signatures(ctx: Context, 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); } diff --git a/solana/anchor-bridge/programs/anchor-bridge/src/lib.rs b/solana/anchor-bridge/programs/anchor-bridge/src/lib.rs index 9f473e75..2b35c16e 100644 --- a/solana/anchor-bridge/programs/anchor-bridge/src/lib.rs +++ b/solana/anchor-bridge/programs/anchor-bridge/src/lib.rs @@ -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, data: VerifySigsData) -> ProgramResult { - api::verify_signatures(ctx, data) + pub fn verify_signatures(&mut self, ctx: Context, data: VerifySigsData) -> ProgramResult { + api::verify_signatures( + self, + ctx, + data.hash, + data.signers, + data.initial_creation, + ) + } } }