iceshrimp-legacy/packages/client/src/scripts/2fa.ts

27 lines
701 B
TypeScript
Raw Normal View History

2023-01-13 05:40:33 +01:00
export function byteify(string: string, encoding: "ascii" | "base64" | "hex") {
switch (encoding) {
2023-01-13 05:40:33 +01:00
case "ascii":
return Uint8Array.from(string, (c) => c.charCodeAt(0));
case "base64":
return Uint8Array.from(
2023-01-13 05:40:33 +01:00
atob(string.replace(/-/g, "+").replace(/_/g, "/")),
(c) => c.charCodeAt(0),
);
2023-01-13 05:40:33 +01:00
case "hex":
return new Uint8Array(
2023-01-13 05:40:33 +01:00
string.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)),
);
}
}
export function hexify(buffer: ArrayBuffer) {
2023-01-13 05:40:33 +01:00
return Array.from(new Uint8Array(buffer)).reduce(
(str, byte) => str + byte.toString(16).padStart(2, "0"),
"",
);
}
export function stringify(buffer: ArrayBuffer) {
2023-01-13 05:40:33 +01:00
return String.fromCharCode(...new Uint8Array(buffer));
}