Prerequisites
You need Web3 libraries configured with Para authentication.Setup Web3 Libraries
Verify Personal Signatures
- Ethers.js
- Viem
- Wagmi
Copy
Ask AI
import { ethers } from "ethers";
async function verifyPersonalSignature(
message: string,
signature: string,
signerAddress: string
) {
const recoveredAddress = ethers.verifyMessage(message, signature);
const isValid = recoveredAddress.toLowerCase() === signerAddress.toLowerCase();
console.log("Signature valid:", isValid);
return isValid;
}
Copy
Ask AI
import { verifyMessage } from "viem";
async function verifyPersonalSignature(
address: `0x${string}`,
message: string,
signature: `0x${string}`
) {
const isValid = await verifyMessage({
address,
message,
signature,
});
console.log("Signature valid:", isValid);
return isValid;
}
Copy
Ask AI
import { useVerifyMessage } from "wagmi";
function VerifyPersonalSignature({
address,
message,
signature,
}: {
address: `0x${string}`;
message: string;
signature: `0x${string}`;
}) {
const { data: isValid, isLoading } = useVerifyMessage({
address,
message,
signature,
});
if (isLoading) return <div>Verifying signature...</div>;
return <div>Signature valid: {isValid ? "Yes" : "No"}</div>;
}
Verify Typed Data Signatures (EIP-712)
- Ethers.js
- Viem
- Wagmi
Copy
Ask AI
import { ethers } from "ethers";
async function verifyTypedDataSignature(
domain: any,
types: any,
value: any,
signature: string,
signerAddress: string
) {
const recoveredAddress = ethers.verifyTypedData(domain, types, value, signature);
const isValid = recoveredAddress.toLowerCase() === signerAddress.toLowerCase();
console.log("Signature valid:", isValid);
return isValid;
}
Copy
Ask AI
import { verifyTypedData } from "viem";
async function verifyTypedDataSignature(
address: `0x${string}`,
domain: any,
types: any,
primaryType: string,
message: any,
signature: `0x${string}`
) {
const isValid = await verifyTypedData({
address,
domain,
types,
primaryType,
message,
signature,
});
console.log("Signature valid:", isValid);
return isValid;
}
Copy
Ask AI
import { useVerifyTypedData } from "wagmi";
function VerifyTypedDataSignature({
address,
domain,
types,
primaryType,
message,
signature,
}: {
address: `0x${string}`;
domain: any;
types: any;
primaryType: string;
message: any;
signature: `0x${string}`;
}) {
const { data: isValid, isLoading } = useVerifyTypedData({
address,
domain,
types,
primaryType,
message,
signature,
});
if (isLoading) return <div>Verifying typed data signature...</div>;
return <div>Typed Data Signature valid: {isValid ? "Yes" : "No"}</div>;
}