From d003a39cc940de83f6b11f318c76b8c92d0df64c Mon Sep 17 00:00:00 2001 From: Daniel Sinclair Date: Mon, 23 Mar 2026 18:50:41 -0400 Subject: [PATCH 1/2] Add Calibur to EIP-7702 delegator whitelist Add Uniswap Wallet's EIP-7702 delegator contract (Calibur) to the on-device whitelist, allowing Ledger users to delegate their EOA to the Calibur implementation with a recognizable name shown on the device display. The contract is deployed at the same deterministic address across all supported chains, so a single chain_id = 0 (CHAIN_ID_ALL) entry covers them all. The address was verified byte-by-byte against the upstream deployment: 0x000000009B1D0aF20D8C6d0A44e162d11F9b8f00 Source and audits: https://github.com/Uniswap/calibur https://github.com/Uniswap/calibur/tree/main/audits --- src/features/sign_authorization_eip7702/whitelist_7702.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/features/sign_authorization_eip7702/whitelist_7702.c b/src/features/sign_authorization_eip7702/whitelist_7702.c index b47b2b843d..6c91fa211f 100644 --- a/src/features/sign_authorization_eip7702/whitelist_7702.c +++ b/src/features/sign_authorization_eip7702/whitelist_7702.c @@ -27,6 +27,10 @@ static const eip7702_whitelist_t EIP7702_WHITELIST[] = { .name = "Simple7702Account", .address = {0x4C, 0xd2, 0x41, 0xE8, 0xd1, 0x51, 0x0e, 0x30, 0xb2, 0x07, 0x63, 0x97, 0xaf, 0xc7, 0x50, 0x8A, 0xe5, 0x9C, 0x66, 0xc9}}, + {.chain_id = 0, + .name = "Calibur", + .address = {0x00, 0x00, 0x00, 0x00, 0x9B, 0x1D, 0x0a, 0xF2, 0x0D, 0x8C, + 0x6d, 0x0A, 0x44, 0xe1, 0x62, 0xd1, 0x1F, 0x9b, 0x8f, 0x00}}, }; const char *get_delegate_name(const uint64_t *chain_id, const uint8_t *address) { From 981556d3c62c560aa7fd9644d8cfa4ec3f78228d Mon Sep 17 00:00:00 2001 From: Daniel Sinclair Date: Mon, 23 Mar 2026 18:50:53 -0400 Subject: [PATCH 2/2] Add RainbowCalibur to EIP-7702 delegator whitelist Add Rainbow Wallet's EIP-7702 delegator contract (Calibur) to the on-device whitelist, enabling Ledger users to delegate their EOA to the RainbowCalibur implementation with a recognizable name shown on the device display. The contract is deployed at the same deterministic address across all supported chains, so a single chain_id = 0 (CHAIN_ID_ALL) entry covers them all. The address was verified byte-by-byte against the upstream deployment: 0x612373D7003d694220f7800EeaF8E3924c0951D3 Source and audits: https://github.com/Uniswap/calibur https://github.com/Uniswap/calibur/tree/main/audits --- src/features/sign_authorization_eip7702/whitelist_7702.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/features/sign_authorization_eip7702/whitelist_7702.c b/src/features/sign_authorization_eip7702/whitelist_7702.c index 6c91fa211f..81fccc0859 100644 --- a/src/features/sign_authorization_eip7702/whitelist_7702.c +++ b/src/features/sign_authorization_eip7702/whitelist_7702.c @@ -31,6 +31,10 @@ static const eip7702_whitelist_t EIP7702_WHITELIST[] = { .name = "Calibur", .address = {0x00, 0x00, 0x00, 0x00, 0x9B, 0x1D, 0x0a, 0xF2, 0x0D, 0x8C, 0x6d, 0x0A, 0x44, 0xe1, 0x62, 0xd1, 0x1F, 0x9b, 0x8f, 0x00}}, + {.chain_id = 0, + .name = "RainbowCalibur", + .address = {0x61, 0x23, 0x73, 0xD7, 0x00, 0x3d, 0x69, 0x42, 0x20, 0xf7, + 0x80, 0x0E, 0xea, 0xF8, 0xE3, 0x92, 0x4c, 0x09, 0x51, 0xD3}}, }; const char *get_delegate_name(const uint64_t *chain_id, const uint8_t *address) {