swc/crates/swc_bundler/tests/.cache/deno/bfc728960b621688ce2f4614e845571538a2eb25.ts
2021-11-09 20:42:49 +09:00

73 lines
1.6 KiB
TypeScript

// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/helper.ts
export function str2bytes(str: string): Uint8Array {
const encoder = new TextEncoder();
return encoder.encode(str);
}
export function hex(bytes: Uint8Array): string {
let output = "";
for (const b of bytes) output += b.toString(16).padStart(2, "0");
return output;
}
export function xor(a: Uint8Array, b: Uint8Array) {
const c = new Uint8Array(a.length);
for (let i = 0; i < c.length; i++) {
c[i] = a[i] ^ b[i % b.length];
}
return c;
}
export function concat(...arg: (Uint8Array | number[])[]) {
const length = arg.reduce((a, b) => a + b.length, 0);
const c = new Uint8Array(length);
let ptr = 0;
for (let i = 0; i < arg.length; i++) {
c.set(arg[i], ptr);
ptr += arg[i].length;
}
return c;
}
export function bignum_to_byte(n: bigint): number[] {
const bytes = [];
while (n > 0) {
bytes.push(Number(n & 255n));
n = n >> 8n;
}
bytes.reverse();
return bytes;
}
export function random_bytes(length: number): Uint8Array {
const n = new Uint8Array(length);
for (let i = 0; i < length; i++) n[i] = ((Math.random() * 254) | 0) + 1;
return n;
}
export function get_key_size(n: bigint): number {
const size_list = [64n, 128n, 256n, 512n, 1024n];
for (const size of size_list) {
if (n < (1n << size * 8n)) return Number(size);
}
return 2048;
}
export function base64_to_binary(b: string): Uint8Array {
let binaryString = window.atob(b);
let len = binaryString.length;
let bytes = new Uint8Array(len);
for (var i = 0; i < len; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
return bytes;
}