diff --git a/block-builder/src/app/storage/memory_storage.rs b/block-builder/src/app/storage/memory_storage.rs index df45605f..3064ee96 100644 --- a/block-builder/src/app/storage/memory_storage.rs +++ b/block-builder/src/app/storage/memory_storage.rs @@ -200,7 +200,14 @@ impl Storage for InMemoryStorage { "memo not found for block_id: {block_id}" )))?; - // verify signature + // Verify pubkey membership + if !memo.pubkeys.contains(&signature.pubkey) { + return Err(StorageError::AddSignatureError(format!( + "pubkey not found in memo for block_id: {block_id}" + ))); + } + + // Verify signature signature .verify(&memo.block_sign_payload, memo.pubkey_hash) .map_err(|e| { diff --git a/block-builder/src/app/storage/redis_storage.rs b/block-builder/src/app/storage/redis_storage.rs index c07eab76..ea41d345 100644 --- a/block-builder/src/app/storage/redis_storage.rs +++ b/block-builder/src/app/storage/redis_storage.rs @@ -470,6 +470,13 @@ impl Storage for RedisStorage { let memo: ProposalMemo = serde_json::from_str(&serialized_memo)?; + // Verify pubkey membership + if !memo.pubkeys.contains(&signature.pubkey) { + return Err(StorageError::AddSignatureError(format!( + "pubkey not found in memo for block_id: {block_id}" + ))); + } + // Verify signature signature .verify(&memo.block_sign_payload, memo.pubkey_hash)