Skip to content

Commit d0de245

Browse files
committed
fix: enforce privateKey format precondition on createEvmServerWallet
1 parent c6d74c4 commit d0de245

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

src/sdk/core/evm/server-wallet.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { WalletClient } from 'viem'
2+
import { mainnet } from 'viem/chains'
23
import { beforeEach, describe, expect, it, type Mock, vi } from 'vitest'
34

45
import { CapabilityNotSupportedError } from '../errors'
@@ -126,4 +127,23 @@ describe('createEvmServerWallet', () => {
126127
})
127128
expect(bundle.Provider).toBeUndefined()
128129
})
130+
131+
it('throws when privateKey is not 0x-prefixed', () => {
132+
expect(() =>
133+
createEvmServerWallet({
134+
privateKey:
135+
'abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234' as `0x${string}`,
136+
chain: mainnet,
137+
}),
138+
).toThrow('privateKey must be a 0x-prefixed 66-character hex string')
139+
})
140+
141+
it('throws when privateKey is wrong length', () => {
142+
expect(() =>
143+
createEvmServerWallet({
144+
privateKey: '0xabcd' as `0x${string}`,
145+
chain: mainnet,
146+
}),
147+
).toThrow('privateKey must be a 0x-prefixed 66-character hex string')
148+
})
129149
})

src/sdk/core/evm/server-wallet.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ export interface EvmServerWalletConfig {
4141
* @invariant getStatus().connected === true (always connected)
4242
*/
4343
export function createEvmServerWallet(config: EvmServerWalletConfig): WalletAdapterBundle {
44+
if (!config.privateKey.startsWith('0x') || config.privateKey.length !== 66) {
45+
throw new Error(
46+
'createEvmServerWallet: privateKey must be a 0x-prefixed 66-character hex string.',
47+
)
48+
}
4449
const account = privateKeyToAccount(config.privateKey)
4550
const walletClient = createWalletClient({
4651
account,

0 commit comments

Comments
 (0)