UNPKG

better-auth

Version:

The most comprehensive authentication framework for TypeScript.

1 lines 1.3 kB
{"version":3,"file":"hashing.mjs","names":[],"sources":["../../src/utils/hashing.ts"],"sourcesContent":["import { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { utf8ToBytes } from \"@noble/hashes/utils.js\";\n\n/**\n * TS implementation of ERC-55 (\"Mixed-case checksum address encoding\") using @noble/hashes\n * @param address - The address to convert to a checksum address\n * @returns The checksummed address\n */\nexport function toChecksumAddress(address: string) {\n\taddress = address.toLowerCase().replace(\"0x\", \"\");\n\t// Hash the address (treat it as UTF-8) and return as a hex string\n\tconst hash = [...keccak_256(utf8ToBytes(address))]\n\t\t.map((v) => v.toString(16).padStart(2, \"0\"))\n\t\t.join(\"\");\n\tlet ret = \"0x\";\n\n\tfor (let i = 0; i < 40; i++) {\n\t\tif (parseInt(hash[i]!, 16) >= 8) {\n\t\t\tret += address[i]!.toUpperCase();\n\t\t} else {\n\t\t\tret += address[i]!;\n\t\t}\n\t}\n\n\treturn ret;\n}\n"],"mappings":";;;;;;;;;AAQA,SAAgB,kBAAkB,SAAiB;AAClD,WAAU,QAAQ,aAAa,CAAC,QAAQ,MAAM,GAAG;CAEjD,MAAM,OAAO,CAAC,GAAG,WAAW,YAAY,QAAQ,CAAC,CAAC,CAChD,KAAK,MAAM,EAAE,SAAS,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAC3C,KAAK,GAAG;CACV,IAAI,MAAM;AAEV,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IACvB,KAAI,SAAS,KAAK,IAAK,GAAG,IAAI,EAC7B,QAAO,QAAQ,GAAI,aAAa;KAEhC,QAAO,QAAQ;AAIjB,QAAO"}