Skip to main content
Module

x/god_crypto/src/helper.ts

Pure Javascript/Typescript Crypto Implementation for Deno. AES, RSA, HMAC, and TOTP
Very Popular
Go to Latest
File
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;}