Skip to main content

VerifyMessage

VerifyMessage verifies a signature over a msg. The signature must be zbase32 encoded and signed by an active node in the resident node's channel database. In addition to returning the validity of the signature, VerifyMessage also returns the recovered pubkey from the signature.

Source: lightning.proto

gRPC

rpc VerifyMessage (VerifyMessageRequest) returns (VerifyMessageResponse);

REST

HTTP MethodPath
POST /v1/verifymessage

Code Samples

const fs = require('fs');
const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');

const GRPC_HOST = 'localhost:10009'
const MACAROON_PATH = 'LND_DIR/data/chain/bitcoin/regtest/admin.macaroon'
const TLS_PATH = 'LND_DIR/tls.cert'

const loaderOptions = {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true,
};
const packageDefinition = protoLoader.loadSync('lightning.proto', loaderOptions);
const lnrpc = grpc.loadPackageDefinition(packageDefinition).lnrpc;
process.env.GRPC_SSL_CIPHER_SUITES = 'HIGH+ECDSA';
const tlsCert = fs.readFileSync(TLS_PATH);
const sslCreds = grpc.credentials.createSsl(tlsCert);
const macaroon = fs.readFileSync(MACAROON_PATH).toString('hex');
const macaroonCreds = grpc.credentials.createFromMetadataGenerator(function(args, callback) {
let metadata = new grpc.Metadata();
metadata.add('macaroon', macaroon);
callback(null, metadata);
});
let creds = grpc.credentials.combineChannelCredentials(sslCreds, macaroonCreds);
let client = new lnrpc.Lightning(GRPC_HOST, creds);
let request = {
msg: <bytes>,
signature: <string>,
};
client.verifyMessage(request, function(err, response) {
console.log(response);
});
// Console output:
// {
// "valid": <bool>,
// "pubkey": <string>,
// }

Messages

lnrpc.VerifyMessageRequest

Source: lightning.proto

FieldgRPC TypeREST TypeREST Placement
msg
bytesstringbody
signature
stringstringbody

lnrpc.VerifyMessageResponse

Source: lightning.proto

FieldgRPC TypeREST Type
valid
boolboolean
pubkey
stringstring