diff --git a/packages/protocol/tests/helpers/calculate.ts b/packages/protocol/tests/helpers/calculate.ts index 0442c322d..2f7f6dd6b 100644 --- a/packages/protocol/tests/helpers/calculate.ts +++ b/packages/protocol/tests/helpers/calculate.ts @@ -1,10 +1,12 @@ import type { Hex } from 'viem' -import { encodePacked, keccak256, toHex } from 'viem' +import { encodePacked, isHex, keccak256, stringToHex, toHex } from 'viem' -export function calculateAtomId(atomData: Hex) { +export function calculateAtomId(atomData: string | Hex) { const salt = keccak256(toHex('ATOM_SALT')) + // Convert to hex if it's not already hex-encoded, ensuring safe input to keccak256 + const hexData = isHex(atomData) ? atomData : stringToHex(atomData) return keccak256( - encodePacked(['bytes32', 'bytes'], [salt, keccak256(atomData)]), + encodePacked(['bytes32', 'bytes'], [salt, keccak256(hexData)]), ) } diff --git a/packages/sdk/src/utils/calculate-atom-id.ts b/packages/sdk/src/utils/calculate-atom-id.ts index 82ef46161..5a63857cc 100644 --- a/packages/sdk/src/utils/calculate-atom-id.ts +++ b/packages/sdk/src/utils/calculate-atom-id.ts @@ -1,14 +1,16 @@ import type { Hex } from 'viem' -import { encodePacked, keccak256, toHex } from 'viem' +import { encodePacked, isHex, keccak256, stringToHex, toHex } from 'viem' /** * Computes an atom ID by hashing the atom data with the ATOM_SALT. - * @param atomData Raw atom data as hex. + * @param atomData Raw atom data as string or hex. * @returns Keccak256 hash representing the atom ID. */ -export function calculateAtomId(atomData: Hex) { +export function calculateAtomId(atomData: string | Hex) { const salt = keccak256(toHex('ATOM_SALT')) + // Convert to hex if it's not already hex-encoded, ensuring safe input to keccak256 + const hexData = isHex(atomData) ? atomData : stringToHex(atomData) return keccak256( - encodePacked(['bytes32', 'bytes'], [salt, keccak256(atomData)]), + encodePacked(['bytes32', 'bytes'], [salt, keccak256(hexData)]), ) }