From e9e935d6c4d5e3dc512e2eed03bc6c01ca03d38f Mon Sep 17 00:00:00 2001 From: Varun Narravula Date: Wed, 14 Jan 2026 20:19:09 -0800 Subject: [PATCH] feat(fingerprint): add platform fingerprint hash --- server/db/pg/schema/schema.ts | 3 ++- server/db/sqlite/schema/schema.ts | 3 ++- server/routers/olm/handleOlmPingMessage.ts | 6 ++++-- server/routers/olm/handleOlmRegisterMessage.ts | 6 ++++-- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/server/db/pg/schema/schema.ts b/server/db/pg/schema/schema.ts index 714f17c8..27f4e71e 100644 --- a/server/db/pg/schema/schema.ts +++ b/server/db/pg/schema/schema.ts @@ -790,7 +790,8 @@ export const fingerprints = pgTable("fingerprints", { kernelVersion: text("kernelVersion"), arch: text("arch"), deviceModel: text("deviceModel"), - serialNumber: text("serialNumber") + serialNumber: text("serialNumber"), + platformFingerprint: varchar("platformFingerprint") }); export const olmSessions = pgTable("clientSession", { diff --git a/server/db/sqlite/schema/schema.ts b/server/db/sqlite/schema/schema.ts index f967b2d2..7b6e4f2d 100644 --- a/server/db/sqlite/schema/schema.ts +++ b/server/db/sqlite/schema/schema.ts @@ -509,7 +509,8 @@ export const fingerprints = sqliteTable("fingerprints", { kernelVersion: text("kernelVersion"), arch: text("arch"), deviceModel: text("deviceModel"), - serialNumber: text("serialNumber") + serialNumber: text("serialNumber"), + platformFingerprint: text("platformFingerprint") }); export const twoFactorBackupCodes = sqliteTable("twoFactorBackupCodes", { diff --git a/server/routers/olm/handleOlmPingMessage.ts b/server/routers/olm/handleOlmPingMessage.ts index ab300361..0985419f 100644 --- a/server/routers/olm/handleOlmPingMessage.ts +++ b/server/routers/olm/handleOlmPingMessage.ts @@ -196,7 +196,8 @@ export const handleOlmPingMessage: MessageHandler = async (context) => { kernelVersion: fingerprint.kernelVersion, arch: fingerprint.arch, deviceModel: fingerprint.deviceModel, - serialNumber: fingerprint.serialNumber + serialNumber: fingerprint.serialNumber, + platformFingerprint: fingerprint.platformFingerprint }); } else { await db @@ -211,7 +212,8 @@ export const handleOlmPingMessage: MessageHandler = async (context) => { kernelVersion: fingerprint.kernelVersion, arch: fingerprint.arch, deviceModel: fingerprint.deviceModel, - serialNumber: fingerprint.serialNumber + serialNumber: fingerprint.serialNumber, + platformFingerprint: fingerprint.platformFingerprint }) .where(eq(fingerprints.olmId, olm.olmId)); } diff --git a/server/routers/olm/handleOlmRegisterMessage.ts b/server/routers/olm/handleOlmRegisterMessage.ts index 99f891d7..4ea99b9d 100644 --- a/server/routers/olm/handleOlmRegisterMessage.ts +++ b/server/routers/olm/handleOlmRegisterMessage.ts @@ -319,7 +319,8 @@ export const handleOlmRegisterMessage: MessageHandler = async (context) => { kernelVersion: fingerprint.kernelVersion, arch: fingerprint.arch, deviceModel: fingerprint.deviceModel, - serialNumber: fingerprint.serialNumber + serialNumber: fingerprint.serialNumber, + platformFingerprint: fingerprint.platformFingerprint }); } else { await db @@ -334,7 +335,8 @@ export const handleOlmRegisterMessage: MessageHandler = async (context) => { kernelVersion: fingerprint.kernelVersion, arch: fingerprint.arch, deviceModel: fingerprint.deviceModel, - serialNumber: fingerprint.serialNumber + serialNumber: fingerprint.serialNumber, + platformFingerprint: fingerprint.platformFingerprint }) .where(eq(fingerprints.olmId, olm.olmId)); }