From 234294d564f49b1926ebf4a74d418e419ea4da71 Mon Sep 17 00:00:00 2001 From: Satsuki Yanagi <17376330+u1-liquid@users.noreply.github.com> Date: Sat, 9 May 2020 08:20:22 +0900 Subject: WebAuthnでログインできないのを修正 (#6327) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolve #6319 --- src/client/scripts/2fa.ts | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) (limited to 'src/client/scripts') diff --git a/src/client/scripts/2fa.ts b/src/client/scripts/2fa.ts index e431361aac..00363cffa6 100644 --- a/src/client/scripts/2fa.ts +++ b/src/client/scripts/2fa.ts @@ -1,5 +1,33 @@ -export function hexifyAB(buffer) { +export function byteify(data: string, encoding: 'ascii' | 'base64' | 'hex') { + switch (encoding) { + case 'ascii': + return Uint8Array.from(data, c => c.charCodeAt(0)); + case 'base64': + return Uint8Array.from( + atob( + data + .replace(/-/g, '+') + .replace(/_/g, '/') + ), + c => c.charCodeAt(0) + ); + case 'hex': + return new Uint8Array( + data + .match(/.{1,2}/g) + .map(byte => parseInt(byte, 16)) + ); + } +} + +export function hexify(buffer: ArrayBuffer) { return Array.from(new Uint8Array(buffer)) - .map(item => item.toString(16).padStart(2, '0')) - .join(''); + .reduce( + (str, byte) => str + byte.toString(16).padStart(2, '0'), + '' + ); +} + +export function stringify(buffer: ArrayBuffer) { + return String.fromCharCode(... new Uint8Array(buffer)); } -- cgit v1.2.3-freya