From b2325799159bc53a8d283cfe2134e933d20184b8 Mon Sep 17 00:00:00 2001 From: Claus-Peter Huebner Date: Wed, 25 Oct 2023 16:34:53 +0200 Subject: [PATCH] next try with publicKey-hex-string treatment --- backend/src/federation/authenticateCommunities.ts | 7 +++---- .../src/federation/client/1_0/AuthenticationClient.ts | 3 +-- backend/src/util/utilities.ts | 7 ------- .../graphql/api/1_0/resolver/AuthenticationResolver.ts | 9 +++++---- federation/src/util/utilities.ts | 6 ------ 5 files changed, 9 insertions(+), 23 deletions(-) delete mode 100644 federation/src/util/utilities.ts diff --git a/backend/src/federation/authenticateCommunities.ts b/backend/src/federation/authenticateCommunities.ts index 829c48ea2..30831fc4a 100644 --- a/backend/src/federation/authenticateCommunities.ts +++ b/backend/src/federation/authenticateCommunities.ts @@ -6,7 +6,6 @@ import { CONFIG } from '@/config' // eslint-disable-next-line camelcase import { AuthenticationClient as V1_0_AuthenticationClient } from '@/federation/client/1_0/AuthenticationClient' import { backendLogger as logger } from '@/server/logger' -import { stringToHex } from '@/util/utilities' import { OpenConnectionArgs } from './client/1_0/model/OpenConnectionArgs' import { AuthenticationClientFactory } from './client/AuthenticationClientFactory' @@ -21,7 +20,7 @@ export async function startCommunityAuthentication( }) const foreignCom = await DbCommunity.findOneByOrFail({ publicKey: foreignFedCom.publicKey }) logger.debug( - 'Authentication: started for foreignFedCom:', + 'Authentication: started with foreignFedCom:', foreignFedCom.endPoint, foreignFedCom.publicKey.toString('hex'), ) @@ -38,14 +37,14 @@ export async function startCommunityAuthentication( // eslint-disable-next-line camelcase if (client instanceof V1_0_AuthenticationClient) { const args = new OpenConnectionArgs() - args.publicKey = homeCom.publicKey.toString() + args.publicKey = homeCom.publicKey.toString('hex') // TODO encrypt url with foreignCom.publicKey and sign it with homeCom.privateKey args.url = homeFedCom.endPoint.endsWith('/') ? homeFedCom.endPoint : homeFedCom.endPoint + '/' + homeFedCom.apiVersion logger.debug( 'Authentication: before client.openConnection() args:', - args.publicKey, + homeCom.publicKey.toString('hex'), args.url, ) if (await client.openConnection(args)) { diff --git a/backend/src/federation/client/1_0/AuthenticationClient.ts b/backend/src/federation/client/1_0/AuthenticationClient.ts index 03f2e15d6..bff61104e 100644 --- a/backend/src/federation/client/1_0/AuthenticationClient.ts +++ b/backend/src/federation/client/1_0/AuthenticationClient.ts @@ -2,7 +2,6 @@ import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCom import { GraphQLClient } from 'graphql-request' import { backendLogger as logger } from '@/server/logger' -import { stringToHex } from '@/util/utilities' import { OpenConnectionArgs } from './model/OpenConnectionArgs' import { openConnection } from './query/openConnection' @@ -30,7 +29,7 @@ export class AuthenticationClient { logger.debug( `Authentication: openConnection at ${this.endpoint} for args:`, args.url, - stringToHex(args.publicKey), + args.publicKey, ) try { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment diff --git a/backend/src/util/utilities.ts b/backend/src/util/utilities.ts index fcf0c6143..904c86226 100644 --- a/backend/src/util/utilities.ts +++ b/backend/src/util/utilities.ts @@ -15,10 +15,3 @@ export const decimalSeparatorByLanguage = (a: Decimal, language: string): string export const fullName = (firstName: string, lastName: string): string => [firstName, lastName].filter(Boolean).join(' ') - -export function stringToHex(str: string): string { - return str - .split('') - .map((char) => char.charCodeAt(0).toString(16).padStart(2, '0')) - .join('') -} diff --git a/federation/src/graphql/api/1_0/resolver/AuthenticationResolver.ts b/federation/src/graphql/api/1_0/resolver/AuthenticationResolver.ts index d36ec7a10..77c093ae6 100644 --- a/federation/src/graphql/api/1_0/resolver/AuthenticationResolver.ts +++ b/federation/src/graphql/api/1_0/resolver/AuthenticationResolver.ts @@ -9,7 +9,6 @@ import { startAuthentication, startOpenConnectionCallback } from '../util/authen import { OpenConnectionCallbackArgs } from '../model/OpenConnectionCallbackArgs' import { CONFIG } from '@/config' import { AuthenticationArgs } from '../model/AuthenticationArgs' -import { stringToHex } from '@/util/utilities' @Resolver() // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -19,19 +18,21 @@ export class AuthenticationResolver { @Arg('data') args: OpenConnectionArgs, ): Promise { + const pubKeyBuf = Buffer.from(args.publicKey, 'hex') logger.debug( `Authentication: openConnection() via apiVersion=1_0 ...`, args, args.url, - stringToHex(args.publicKey), + args.publicKey, + pubKeyBuf.toString('hex'), ) // first find with args.publicKey the community, which starts openConnection request const requestedCom = await DbCommunity.findOneBy({ - publicKey: Buffer.from(args.publicKey), + publicKey: pubKeyBuf, // Buffer.from(args.publicKey), }) if (!requestedCom) { - throw new LogError(`unknown requesting community with publicKey`, stringToHex(args.publicKey)) + throw new LogError(`unknown requesting community with publicKey`, pubKeyBuf.toString('hex')) } logger.debug(`Authentication: found requestedCom:`, requestedCom) // no await to respond immediatly and invoke callback-request asynchron diff --git a/federation/src/util/utilities.ts b/federation/src/util/utilities.ts deleted file mode 100644 index 215a52559..000000000 --- a/federation/src/util/utilities.ts +++ /dev/null @@ -1,6 +0,0 @@ -export function stringToHex(str: string): string { - return str - .split('') - .map((char) => char.charCodeAt(0).toString(16).padStart(2, '0')) - .join('') -}