Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions packages/solana/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,15 @@ export class TurnkeySigner {
tx: Transaction | VersionedTransaction,
fromAddress: string,
organizationId?: string,
timestampMs?: number,
) {
const fromKey = new PublicKey(fromAddress);
const messageToSign: Buffer = this.getMessageToSign(tx);
const signRawPayloadResult = await this.signRawPayload(
messageToSign.toString("hex"),
fromAddress,
organizationId ?? this.organizationId,
timestampMs,
);
const signature = `${signRawPayloadResult?.r}${signRawPayloadResult?.s}`;

Expand All @@ -84,11 +86,13 @@ export class TurnkeySigner {
message: Uint8Array,
fromAddress: string,
organizationId?: string,
timestampMs?: number,
): Promise<Uint8Array> {
const signRawPayloadResult = await this.signRawPayload(
Buffer.from(message).toString("hex"),
fromAddress,
organizationId,
timestampMs,
);
return Buffer.from(
`${signRawPayloadResult?.r}${signRawPayloadResult?.s}`,
Expand All @@ -107,6 +111,7 @@ export class TurnkeySigner {
tx: Transaction | VersionedTransaction,
fromAddress: string,
organizationId?: string,
timestampMs?: number,
): Promise<Transaction | VersionedTransaction> {
const payloadToSign = Buffer.from(
tx.serialize({
Expand All @@ -119,6 +124,7 @@ export class TurnkeySigner {
payloadToSign,
fromAddress,
organizationId,
timestampMs,
);

const decodedTransaction = Buffer.from(signedTransaction, "hex");
Expand All @@ -135,12 +141,13 @@ export class TurnkeySigner {
unsignedTransaction: string,
signWith: string,
organizationId?: string,
timestampMs?: number
) {
if (this.client instanceof TurnkeyClient) {
const response = await this.client.signTransaction({
type: "ACTIVITY_TYPE_SIGN_TRANSACTION_V2",
organizationId: organizationId ?? this.organizationId,
timestampMs: String(Date.now()),
timestampMs: timestampMs ? String(timestampMs) : String(Date.now()),
parameters: {
signWith,
unsignedTransaction,
Expand Down Expand Up @@ -175,12 +182,13 @@ export class TurnkeySigner {
payload: string,
signWith: string,
organizationId?: string,
timestampMs?: number,
) {
if (this.client instanceof TurnkeyClient) {
const response = await this.client.signRawPayload({
type: "ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2",
organizationId: organizationId ?? this.organizationId,
timestampMs: String(Date.now()),
timestampMs: timestampMs ? String(timestampMs) : String(Date.now()),
parameters: {
signWith,
payload,
Expand Down Expand Up @@ -221,12 +229,13 @@ export class TurnkeySigner {
payloads: string[],
signWith: string,
organizationId?: string,
timestampMs?: number,
) {
if (this.client instanceof TurnkeyClient) {
const response = await this.client.signRawPayloads({
type: "ACTIVITY_TYPE_SIGN_RAW_PAYLOADS",
organizationId: organizationId ?? this.organizationId,
timestampMs: String(Date.now()),
timestampMs: timestampMs ? String(timestampMs) : String(Date.now()),
parameters: {
signWith,
payloads,
Expand Down
25 changes: 19 additions & 6 deletions packages/viem/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,8 @@ export function createAccountWithAddress(input: {
transaction: TTransactionSerializable,
options?: {
serializer?:
| SerializeTransactionFn<TTransactionSerializable>
| undefined;
| SerializeTransactionFn<TTransactionSerializable>
| undefined;
},
): Promise<Hex> {
const serializer: SerializeTransactionFn<TTransactionSerializable> =
Expand Down Expand Up @@ -300,8 +300,8 @@ export async function createApiKeyAccount(
transaction: TTransactionSerializable,
options?: {
serializer?:
| SerializeTransactionFn<TTransactionSerializable>
| undefined;
| SerializeTransactionFn<TTransactionSerializable>
| undefined;
},
): Promise<Hex> {
const serializer: SerializeTransactionFn<TTransactionSerializable> =
Expand Down Expand Up @@ -338,6 +338,7 @@ export async function signAuthorization(
parameters: TSignAuthorizationParameters,
organizationId: string,
signWith: string,
timestampMs?: number,
): Promise<SignAuthorizationReturnType> {
const { chainId, nonce, to = "object" } = parameters;
const address = parameters.contractAddress ?? parameters.address;
Expand All @@ -360,6 +361,7 @@ export async function signAuthorization(
organizationId,
signWith,
to,
timestampMs,
);

if (to === "object")
Expand All @@ -379,13 +381,16 @@ export async function signMessage(
message: SignableMessage,
organizationId: string,
signWith: string,
timestampMs?: number,
): Promise<Hex> {
const hashedMessage = hashMessage(message);
const signedMessage = await signMessageWithErrorWrapping(
client,
hashedMessage,
organizationId,
signWith,
undefined,
timestampMs,
);
return `${signedMessage}` as Hex;
}
Expand Down Expand Up @@ -435,6 +440,7 @@ export async function signTypedData(
data: TypedData | { [key: string]: unknown },
organizationId: string,
signWith: string,
timestampMs?: number,
): Promise<Hex> {
const hashToSign = hashTypedData(data as HashTypedDataParameters);

Expand All @@ -444,6 +450,7 @@ export async function signTypedData(
organizationId,
signWith,
"hex",
timestampMs,
)) as Hex;
}

Expand All @@ -452,6 +459,7 @@ async function signTransactionWithErrorWrapping(
unsignedTransaction: string,
organizationId: string,
signWith: string,
timestampMs?: number
): Promise<Hex> {
let signedTx: string;
try {
Expand All @@ -460,6 +468,7 @@ async function signTransactionWithErrorWrapping(
unsignedTransaction,
organizationId,
signWith,
timestampMs,
);
} catch (error: any) {
// Wrap Turnkey error in Viem-specific error
Expand Down Expand Up @@ -492,6 +501,7 @@ async function signTransactionImpl(
unsignedTransaction: string,
organizationId: string,
signWith: string,
timestampMs?: number
): Promise<string> {
if (client instanceof TurnkeyClient) {
const { activity } = await client.signTransaction({
Expand All @@ -502,7 +512,7 @@ async function signTransactionImpl(
type: "TRANSACTION_TYPE_ETHEREUM",
unsignedTransaction: unsignedTransaction,
},
timestampMs: String(Date.now()), // millisecond timestamp
timestampMs: timestampMs ? String(timestampMs) : String(Date.now()), // millisecond timestamp
});

assertActivityCompleted(activity);
Expand Down Expand Up @@ -530,6 +540,7 @@ async function signMessageWithErrorWrapping(
organizationId: string,
signWith: string,
to?: TSignatureFormat,
timestampMs?: number,
): Promise<TSignMessageResult> {
let signedMessage: TSignMessageResult;

Expand All @@ -540,6 +551,7 @@ async function signMessageWithErrorWrapping(
organizationId,
signWith,
to,
timestampMs,
);
} catch (error: any) {
// Wrap Turnkey error in Viem-specific error
Expand Down Expand Up @@ -573,6 +585,7 @@ async function signMessageImpl(
organizationId: string,
signWith: string,
to?: TSignatureFormat,
timestampMs?: number,
): Promise<TSignMessageResult> {
let result: TSignature;

Expand All @@ -586,7 +599,7 @@ async function signMessageImpl(
encoding: "PAYLOAD_ENCODING_HEXADECIMAL",
hashFunction: "HASH_FUNCTION_NO_OP",
},
timestampMs: String(Date.now()), // millisecond timestamp
timestampMs: timestampMs ? String(timestampMs) : String(Date.now()), // millisecond timestamp
});

assertActivityCompleted(activity);
Expand Down