From 4933024ea5c713ba5529c757e960755154337de0 Mon Sep 17 00:00:00 2001 From: Ian Mustafa Date: Mon, 8 Dec 2025 18:15:56 +0700 Subject: [PATCH 1/2] Adjust signature canonicalization to reflect the docs --- src/helpers/signature.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/helpers/signature.ts b/src/helpers/signature.ts index e99e1ea..532433a 100644 --- a/src/helpers/signature.ts +++ b/src/helpers/signature.ts @@ -103,7 +103,7 @@ export function canonicalizeObject(data: T): unknown { * @returns The canonical JSON string. */ export function canonicalize(data: unknown, timestamp: number, nonce: string): string { - const body = canonicalizeObject(data) + const body = JSON.stringify(canonicalizeObject(data)) return JSON.stringify({ timestamp, nonce, @@ -119,8 +119,9 @@ export function canonicalize(data: unknown, timestamp: number, nonce: string): s * @returns The signature. */ export function sign(data: unknown, timestamp: number, nonce: string, secretKey: string): string { + const canned = canonicalize(data, timestamp, nonce) return createHmac('sha256', secretKey) - .update(canonicalize(data, timestamp, nonce), 'utf8') + .update(canned, 'utf8') .digest('hex') } From e421df1d4a22eb08e3e523441f1ca6bf66b20013 Mon Sep 17 00:00:00 2001 From: Ian Mustafa Date: Mon, 8 Dec 2025 18:45:06 +0700 Subject: [PATCH 2/2] Apply verification on devices endpoint --- src/modules/device/router.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/device/router.ts b/src/modules/device/router.ts index 8f7eb3b..515a777 100644 --- a/src/modules/device/router.ts +++ b/src/modules/device/router.ts @@ -26,6 +26,7 @@ export const router = new Elysia({ return { status: 'internal_error', message: 'Server error' } } }, { + verifyKey: true, body: deviceCommandBody, response: deviceCommandResponseSchema, detail: { @@ -56,6 +57,7 @@ export const router = new Elysia({ return { status: 'internal_error', message: 'Server error' } } }, { + verifyKey: true, query: deviceQueryParams, response: deviceQueryResponseSchema, detail: {