Skip to main content

CheckMacaroonPermissions

CheckMacaroonPermissions checks whether the provided macaroon contains all the provided permissions. If the macaroon is valid (e.g. all caveats are satisfied), and all permissions provided in the request are met, then this RPC returns true.

Source: lightning.proto

gRPC

rpc CheckMacaroonPermissions (CheckMacPermRequest) returns (CheckMacPermResponse);

REST

HTTP MethodPath
POST /v1/macaroon/checkpermissions

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 = {
macaroon: <bytes>,
permissions: <MacaroonPermission>,
fullMethod: <string>,
check_default_perms_from_full_method: <bool>,
};
client.checkMacaroonPermissions(request, function(err, response) {
console.log(response);
});
// Console output:
// {
// "valid": <bool>,
// }

Messages

lnrpc.CheckMacPermRequest

Source: lightning.proto

FieldgRPC TypeREST TypeREST Placement
macaroon
bytesstringbody
permissions
MacaroonPermission[]arraybody
fullMethod
stringstringbody
check_default_perms_from_full_method
boolbooleanbody

lnrpc.CheckMacPermResponse

Source: lightning.proto

FieldgRPC TypeREST Type
valid
boolboolean

Nested Messages

lnrpc.MacaroonPermission

FieldgRPC TypeREST Type
entity
stringstring
action
stringstring