From 3d9a2957dee6e98f115ddc1fa21ad54e9f5cfdf9 Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Thu, 7 Apr 2022 19:58:01 -0400 Subject: [PATCH] fix: chat key validation --- src/app/global/utils.nim | 3 +++ src/app_service/common/conversion.nim | 2 +- src/app_service/service/contacts/service.nim | 1 - ui/imports/utils/Utils.qml | 5 +++-- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/app/global/utils.nim b/src/app/global/utils.nim index a2b29ae294..3945f07e79 100644 --- a/src/app/global/utils.nim +++ b/src/app/global/utils.nim @@ -147,3 +147,6 @@ QtObject: proc getCompressedPk*(self: Utils, publicKey: string): string {.slot.} = procs_from_accounts.compressPk(publicKey) + + proc isCompressedPubKey*(self: Utils, publicKey: string): bool {.slot.} = + conversion.isCompressedPubKey(publicKey) diff --git a/src/app_service/common/conversion.nim b/src/app_service/common/conversion.nim index 1efa946aa9..a5acff5cbd 100644 --- a/src/app_service/common/conversion.nim +++ b/src/app_service/common/conversion.nim @@ -4,7 +4,7 @@ from web3 import Address, fromHex const CompressedKeyChars* = {'0'..'9', 'A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','m','n','o','p','q','r','s','t','u','v','w','x','y','z'} proc isCompressedPubKey*(strPubKey: string): bool = - return strPubKey.startsWith("z") and strPubKey.len == 49 and allCharsInSet(strPubKey, CompressedKeyChars) + return strPubKey.startsWith("zQ3") and allCharsInSet(strPubKey, CompressedKeyChars) proc parseAddress*(strAddress: string): Address = fromHex(Address, strAddress) diff --git a/src/app_service/service/contacts/service.nim b/src/app_service/service/contacts/service.nim index 6cf5c4892e..94a282b644 100644 --- a/src/app_service/service/contacts/service.nim +++ b/src/app_service/service/contacts/service.nim @@ -17,7 +17,6 @@ import ../../../backend/utils as status_utils export contacts_dto, status_update_dto, contact_details const PK_LENGTH_0X_INCLUDED = 132 -const PK_LENGTH_COMPRESSED = 49 include async_tasks diff --git a/ui/imports/utils/Utils.qml b/ui/imports/utils/Utils.qml index 2878d08790..b6f3a1c5b5 100644 --- a/ui/imports/utils/Utils.qml +++ b/ui/imports/utils/Utils.qml @@ -6,6 +6,8 @@ import shared 1.0 import StatusQ.Core.Theme 0.1 QtObject { + property var globalUtilsInst: globalUtils + function isHex(value) { return /^(-0x|0x)?[0-9a-fA-F]*$/i.test(value) } @@ -15,8 +17,7 @@ QtObject { } function isChatKey(value) { - return (startsWith0x(value) && isHex(value) && value.length === 132) || - /^z[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{48}$/.test(value) + return (startsWith0x(value) && isHex(value) && value.length === 132) || globalUtilsInst.isCompressedPubKey(value) } function isValidETHNamePrefix(value) {