Skip to content

Commit ec1f2cc

Browse files
committed
feat(sdk): migrates signTypedData to Ox
1 parent 85e2193 commit ec1f2cc

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

packages/thirdweb/src/utils/signatures/sign-message.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import type { Prettify } from "../type-utils.js";
99
type Message = Prettify<
1010
| string
1111
| {
12-
raw: Hex | Uint8Array;
13-
}
12+
raw: Hex | Uint8Array;
13+
}
1414
>;
1515
export type SignMessageOptions = {
1616
message: Message;
@@ -65,9 +65,9 @@ export function signMessage(
6565
? options.message.raw
6666
: ox__Hex.fromString(options.message),
6767
);
68-
return ox__Signature.toHex(
69-
ox__Secp256k1.sign({ payload, privateKey: options.privateKey }),
70-
);
68+
69+
const signature = ox__Secp256k1.sign({ payload, privateKey: options.privateKey }),
70+
return ox__Signature.toHex(signature);
7171
}
7272
if ("account" in options) {
7373
const { message, account } = options;
Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
import type { TypedData } from "abitype";
2-
import { type TypedDataDefinition, hashTypedData } from "viem";
31
import type { Hex } from "../encoding/hex.js";
4-
import { parseTypedData } from "./helpers/parseTypedData.js";
5-
import { sign } from "./sign.js";
6-
import { signatureToHex } from "./signature-to-hex.js";
2+
import * as ox__TypedData from "ox/TypedData";
3+
import * as ox__Secp256k1 from "ox/Secp256k1";
4+
import * as ox__Hex from "ox/Hex";
5+
import * as ox__Signature from "ox/Signature";
76

87
export type SignTypedDataOptions<
9-
typedData extends TypedData | Record<string, unknown> = TypedData,
8+
typedData extends
9+
| ox__TypedData.TypedData
10+
| Record<string, unknown> = ox__TypedData.TypedData,
1011
primaryType extends keyof typedData | "EIP712Domain" = keyof typedData,
11-
> = TypedDataDefinition<typedData, primaryType> & {
12+
> = ox__TypedData.Definition<typedData, primaryType> & {
1213
privateKey: Hex;
1314
};
1415

@@ -28,17 +29,18 @@ export type SignTypedDataOptions<
2829
* @utils
2930
*/
3031
export function signTypedData<
31-
const typedData extends TypedData | Record<string, unknown>,
32+
const typedData extends ox__TypedData.TypedData | Record<string, unknown>,
3233
primaryType extends keyof typedData | "EIP712Domain",
3334
>(options: SignTypedDataOptions<typedData, primaryType>): Hex {
3435
const { privateKey, ...typedData } =
3536
options as unknown as SignTypedDataOptions;
3637

37-
const parsedTypeData = parseTypedData(typedData);
38+
const payload = ox__TypedData.getSignPayload(typedData);
3839

39-
const signature = sign({
40-
hash: hashTypedData(parsedTypeData), // TODO: Implement native hashTypedData
41-
privateKey,
40+
const signature = ox__Secp256k1.sign({
41+
payload,
42+
privateKey: ox__Hex.fromString(privateKey),
4243
});
43-
return signatureToHex(signature);
44+
45+
return ox__Signature.toHex(signature);
4446
}

0 commit comments

Comments
 (0)