Documentation Index Fetch the complete documentation index at: https://injectivelabs-mintlify-jp-developers-first-half-1777019423.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
On this page, we’ll provide an example of how to sign and verify arbitrary data as per the ADR-036 specification on Cosmos.
You can use the generateArbitrarySignDoc function from @injectivelabs/sdk-ts to generate ADR-36 compatible signDoc. You can then use it to sign/verify using a browser wallet or in a CLI environment. Make sure you are using the latest package versions.
Sign and verify using a browser wallet like Keplr
( async () => {
const message = "Offline Sign Message Example" ;
const signer = 'inj1...'
const chainId = 'injective-1'
// Sign Arbitrary Data
const signature = await window . keplr . signArbitrary ( chainId , signer , message )
// Verify Arbitrary Data
const result = await window . keplr . verifyArbitrary ( chainId , signer , message , signature )
if ( result ) {
console . log ( "Signature is valid" );
}
})();
Sign and verify using PrivateKey in a CLI environment
import { config } from "dotenv" ;
import { PrivateKey } from "@injectivelabs/sdk-ts/core/accounts" ;
import { generateArbitrarySignDoc } from "@injectivelabs/sdk-ts/core/tx" ;
config ();
( async () => {
const { privateKey } = PrivateKey . generate ();
const injectiveAddress = privateKey . toBech32 ();
const publicKey = privateKey . toPublicKey ();
const message = "Offline Sign Message Example" ;
const { signDocBuff } = generateArbitrarySignDoc ( message , injectiveAddress );
const signature = await privateKey . sign ( signDocBuff );
const signatureInHex = Buffer . from ( signature ). toString ( "hex" );
if (
PrivateKey . verifyArbitrarySignature ({
signature: signatureInHex ,
signDoc: signDocBuff ,
publicKey: publicKey . toHex (),
})
) {
console . log ( "Signature is valid" );
}
})();