summaryrefslogtreecommitdiff
path: root/packages/frontend/src/scripts/2fa.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-12-27 14:36:33 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-12-27 14:36:33 +0900
commit9384f5399da39e53855beb8e7f8ded1aa56bf72e (patch)
treece5959571a981b9c4047da3c7b3fd080aa44222c /packages/frontend/src/scripts/2fa.ts
parentwip: retention for dashboard (diff)
downloadsharkey-9384f5399da39e53855beb8e7f8ded1aa56bf72e.tar.gz
sharkey-9384f5399da39e53855beb8e7f8ded1aa56bf72e.tar.bz2
sharkey-9384f5399da39e53855beb8e7f8ded1aa56bf72e.zip
rename: client -> frontend
Diffstat (limited to 'packages/frontend/src/scripts/2fa.ts')
-rw-r--r--packages/frontend/src/scripts/2fa.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/packages/frontend/src/scripts/2fa.ts b/packages/frontend/src/scripts/2fa.ts
new file mode 100644
index 0000000000..62a38ff02a
--- /dev/null
+++ b/packages/frontend/src/scripts/2fa.ts
@@ -0,0 +1,33 @@
+export function byteify(string: string, encoding: 'ascii' | 'base64' | 'hex') {
+ switch (encoding) {
+ case 'ascii':
+ return Uint8Array.from(string, c => c.charCodeAt(0));
+ case 'base64':
+ return Uint8Array.from(
+ atob(
+ string
+ .replace(/-/g, '+')
+ .replace(/_/g, '/'),
+ ),
+ c => c.charCodeAt(0),
+ );
+ case 'hex':
+ return new Uint8Array(
+ string
+ .match(/.{1,2}/g)
+ .map(byte => parseInt(byte, 16)),
+ );
+ }
+}
+
+export function hexify(buffer: ArrayBuffer) {
+ return Array.from(new Uint8Array(buffer))
+ .reduce(
+ (str, byte) => str + byte.toString(16).padStart(2, '0'),
+ '',
+ );
+}
+
+export function stringify(buffer: ArrayBuffer) {
+ return String.fromCharCode(... new Uint8Array(buffer));
+}