]> git.ardis.lu - alu.bz/commitdiff
Delete unnecessary hex string parsing
authorArdis Lu <ardisglu@gmail.com>
Sat, 23 Sep 2023 05:13:46 +0000 (22:13 -0700)
committerArdis Lu <ardisglu@gmail.com>
Sat, 23 Sep 2023 05:13:46 +0000 (22:13 -0700)
noble-secp256k1 already has logic to parse hex strings into Uint8Array

functions/api.js

index 8d403da17c0c7a9886abe2dad96be5ba00f6db2b..e00f98437dcb1c5a97e48c3f2fb5cc204fcd5499 100644 (file)
@@ -74,8 +74,7 @@ export async function onRequestPost({ request, env }) {
     const message = `Sign this message to confirm you want to create https://alu.bz/${shortUrl} to redirect to ${fullUrl}.`; // Must match frontend exactly
     const personalMessage = `\x19Ethereum Signed Message:\n${message.length}${message}`; // ERC-191
     const personalMessageHash = keccak256(new TextEncoder().encode(personalMessage));
-    const signatureBytes = Uint8Array.from(signature.substring(2).match(/.{2}/g), v => parseInt(v, 16));
-    const signatureObj = Signature.fromCompact(signatureBytes.slice(0, 64)).addRecoveryBit(signatureBytes[64] === 27 ? 0 : 1);
+    const signatureObj = Signature.fromCompact(signature.substring(2, 130)).addRecoveryBit(signature.slice(-2) === '1b' ? 0 : 1);
     const signingPublicKey = signatureObj.recoverPublicKey(personalMessageHash);
     const signingAddress = `0x${[...keccak256(signingPublicKey.toRawBytes(false).slice(1)).slice(-20)].map(v => v.toString(16).padStart(2, '0')).join('')}`;
     const nftCount = await getNftCount(signingAddress);
This page took 0.04799 seconds and 4 git commands to generate.