diff --git a/ts/Bytes.ts b/ts/Bytes.ts index 1934cc9eac..6baff3ed26 100644 --- a/ts/Bytes.ts +++ b/ts/Bytes.ts @@ -26,6 +26,10 @@ export function toBase64(data: Uint8Array): string { return bytes.toBase64(data); } +export function toBase64url(data: Uint8Array): string { + return bytes.toBase64url(data); +} + export function toHex(data: Uint8Array): string { return bytes.toHex(data); } diff --git a/ts/context/Bytes.ts b/ts/context/Bytes.ts index d6bfb95f2b..c6177031a1 100644 --- a/ts/context/Bytes.ts +++ b/ts/context/Bytes.ts @@ -25,6 +25,10 @@ export class Bytes { return Buffer.from(data).toString('base64'); } + public toBase64url(data: Uint8Array): string { + return Buffer.from(data).toString('base64url'); + } + public toHex(data: Uint8Array): string { return Buffer.from(data).toString('hex'); } diff --git a/ts/state/selectors/items.ts b/ts/state/selectors/items.ts index 4bd4b2dbe5..d5c1e664e7 100644 --- a/ts/state/selectors/items.ts +++ b/ts/state/selectors/items.ts @@ -115,7 +115,7 @@ export const getUsernameLink = createSelector( const content = Bytes.concatenate([entropy, serverId]); return contactByEncryptedUsernameRoute - .toWebUrl({ encryptedUsername: Bytes.toBase64(content) }) + .toWebUrl({ encryptedUsername: Bytes.toBase64url(content) }) .toString(); } ); diff --git a/ts/test-mock/pnp/username_test.ts b/ts/test-mock/pnp/username_test.ts index 0e4762666f..d08f0c89fa 100644 --- a/ts/test-mock/pnp/username_test.ts +++ b/ts/test-mock/pnp/username_test.ts @@ -345,7 +345,7 @@ describe('pnp/username', function (this: Mocha.Suite) { encryptedUsername: Buffer.concat([ entropy, uuidToBytes(serverId), - ]).toString('base64'), + ]).toString('base64url'), }) .toString();