summaryrefslogtreecommitdiff
path: root/src/client/scripts/2fa.ts
diff options
context:
space:
mode:
authorSatsuki Yanagi <17376330+u1-liquid@users.noreply.github.com>2020-05-09 08:20:22 +0900
committerGitHub <noreply@github.com>2020-05-09 08:20:22 +0900
commit234294d564f49b1926ebf4a74d418e419ea4da71 (patch)
treee69b661b9e2e79792104e431255622bc9a0b53d1 /src/client/scripts/2fa.ts
parentbrotli圧縮の無効化など Resolve #6325 (#6326) (diff)
downloadsharkey-234294d564f49b1926ebf4a74d418e419ea4da71.tar.gz
sharkey-234294d564f49b1926ebf4a74d418e419ea4da71.tar.bz2
sharkey-234294d564f49b1926ebf4a74d418e419ea4da71.zip
WebAuthnでログインできないのを修正 (#6327)
Resolve #6319
Diffstat (limited to 'src/client/scripts/2fa.ts')
-rw-r--r--src/client/scripts/2fa.ts34
1 files changed, 31 insertions, 3 deletions
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));
}