ledger-qrl-js
Version:
Node API for Ledger Nano S - QRL app
325 lines (307 loc) • 9.31 kB
JavaScript
/********************************************************************************
* QRL Wallet - Ledger JS Wrapper Library
********************************************************************************/
var Q = require('q')
let TIMEOUT
// Include connection bus
if (typeof ledger === 'undefined') {
ledger = require('../src')
comm = ledger.Comm_node
browser = false
TIMEOUT = 28000 // ms
}
else {
browser = true
comm = ledger.comm_u2f
TIMEOUT = 28 // seconds
}
// Constants
const LIBRARY_VERSION = '0.4.3'
// Create object to store all library functions in
var QrlLedger = {}
/**
* function
* version: reports current library version
*/
QrlLedger.library_version = async function() {
return LIBRARY_VERSION
}
/**
* function
* ledger_app_version: reports current version of qrl app on ledger device
*/
QrlLedger.app_version = function() {
console.log('-- Calling ledger.qrl().get_version() --')
return comm.create_async(TIMEOUT, true).then(
function (comm) {
try {
let qrl = new ledger.qrl(comm)
return qrl.get_version().then(
function (result) {
// Success
console.log('---- Success calling ledger.qrl().get_version() ----')
console.log(result)
comm.close_async()
return result
},
function (response) {
// Error
console.log('---- Error calling ledger.qrl().get_version() ----')
console.log(response)
comm.close_async()
return response
}
);
} catch(e) {
console.log('---- Caught Error calling ledger.qrl().get_version() ----')
console.log(e)
comm.close_async()
return e
}
}
)
}
QrlLedger.get_state = function() {
console.log('-- Calling ledger.qrl().get_state() --')
return comm.create_async(TIMEOUT, true).then(
function (comm) {
try {
let qrl = new ledger.qrl(comm)
return qrl.get_state().then(
function (result) {
// Success
console.log('---- Success calling ledger.qrl().get_state() ----')
console.log(result)
comm.close_async()
return result
},
function (response) {
// Error
console.log('---- Error calling ledger.qrl().get_state() ----')
console.log(response)
comm.close_async()
return response
}
);
} catch(e) {
console.log('---- Caught Error calling ledger.qrl().get_state() ----')
console.log(e)
comm.close_async()
return e
}
}
)
}
QrlLedger.publickey = function() {
console.log('-- Calling ledger.qrl().publickey() --')
return comm.create_async(TIMEOUT, true).then(
function (comm) {
try {
let qrl = new ledger.qrl(comm)
return qrl.publickey().then(
function (result) {
// Success
console.log('---- Success calling ledger.qrl().publickey() ----')
console.log(result)
comm.close_async()
return result
},
function (response) {
// Error
console.log('---- Error calling ledger.qrl().publickey() ----')
console.log(response)
comm.close_async()
return response
}
);
} catch(e) {
console.log('---- Caught Error calling ledger.qrl().publickey() ----')
console.log(e)
comm.close_async()
return e
}
}
)
}
QrlLedger.sign = function(txn) {
console.log('-- Calling ledger.qrl().signSend(txn) --')
return comm.create_async(TIMEOUT, true).then(
function (comm) {
try {
let qrl = new ledger.qrl(comm)
return qrl.signSend(txn).then(
function (result) {
// Success
console.log('---- Success calling ledger.qrl().signSend(txn) ----')
console.log(result)
comm.close_async()
return result
},
function (response) {
// Error
console.log('---- Error calling ledger.qrl().signSend(txn) ----')
console.log(response)
comm.close_async()
return response
}
);
} catch(e) {
console.log('---- Caught Error calling ledger.qrl().signSend(txn) ----')
console.log(e)
comm.close_async()
return e
}
}
)
}
QrlLedger.signNext = function() {
console.log('-- Calling ledger.qrl().signNext() --')
return comm.create_async(TIMEOUT, true).then(
function (comm) {
try {
let qrl = new ledger.qrl(comm)
return qrl.signNext().then(
function (result) {
// Success
console.log('---- Success calling ledger.qrl().signNext() ----')
console.log(result)
comm.close_async()
return result
},
function (response) {
// Error
console.log('---- Error calling ledger.qrl().signNext() ----')
console.log(response)
comm.close_async()
return response
}
);
} catch(e) {
console.log('---- Caught Error calling ledger.qrl().signNext() ----')
console.log(e)
comm.close_async()
return e
}
}
)
}
QrlLedger.createTx = function(source_addr, fee, dest_addr, dest_amount) {
console.log('-- Calling ledger.qrl().createTx(source_addr, fee, dest_addr, dest_amount) --')
return comm.create_async(TIMEOUT, true).then(
function (comm) {
try {
let qrl = new ledger.qrl(comm)
let response = qrl.createTx(source_addr, fee, dest_addr, dest_amount)
console.log('---- Success calling ledger.qrl().createTx(source_addr, fee, dest_addr, dest_amount) ----')
console.log(response)
comm.close_async()
return response
} catch(e) {
console.log('---- Caught Error calling ledger.qrl().createTx(source_addr, fee, dest_addr, dest_amount) ----')
console.log(e)
comm.close_async()
return e
}
}
)
}
QrlLedger.createMessageTx = function(source_addr, fee, message) {
console.log('-- Calling ledger.qrl().createMessageTx(source_addr, fee, message) --')
return comm.create_async(TIMEOUT, true).then(
function (comm) {
try {
let qrl = new ledger.qrl(comm)
let response = qrl.createMessageTx(source_addr, fee, message)
console.log('---- Success calling ledger.qrl().createMessageTx(source_addr, fee, message) ----')
console.log(response)
comm.close_async()
return response
} catch(e) {
console.log('---- Caught Error calling ledger.qrl().createMessageTx(source_addr, fee, message) ----')
console.log(e)
comm.close_async()
return e
}
}
)
}
QrlLedger.retrieveSignature = function(txn) {
console.log('-- Calling ledger.qrl().retrieveSignature(txn) --')
return comm.create_async(TIMEOUT, true).then(
function (comm) {
try {
let qrl = new ledger.qrl(comm)
return qrl.retrieveSignature(txn).then(
function (result) {
// Success
console.log('---- Success calling ledger.qrl().retrieveSignature(txn) ----')
console.log(result)
comm.close_async()
return result
},
function (response) {
// Error
console.log('---- Error calling ledger.qrl().retrieveSignature(txn) ----')
console.log(response)
comm.close_async()
return response
}
);
} catch(e) {
console.log('---- Caught Error calling ledger.qrl().retrieveSignature(txn) ----')
console.log(e)
comm.close_async()
return e
}
}
)
}
QrlLedger.setIdx = function(idx) {
console.log('-- Calling ledger.qrl().setIdx(idx) --')
return comm.create_async(TIMEOUT, true).then(
function (comm) {
try {
let qrl = new ledger.qrl(comm)
return qrl.setIdx(idx).then(
function (result) {
// Success
console.log('---- Success calling ledger.qrl().setIdx(idx) ----')
console.log(result)
comm.close_async()
return result
}
)
} catch(e) {
console.log('---- Caught Error calling ledger.qrl().setIdx(idx) ----')
console.log(e)
comm.close_async()
return e
}
}
)
}
QrlLedger.viewAddress = function() {
console.log('-- Calling ledger.qrl().viewAddress() --')
return comm.create_async(TIMEOUT, true).then(
function (comm) {
try {
let qrl = new ledger.qrl(comm)
return qrl.viewAddress().then(
function (result) {
// Success
console.log('---- Success calling qrl.viewAddress() ----')
console.log(result)
comm.close_async()
return result
}
)
} catch(e) {
console.log('---- Caught Error calling ledger.qrl().viewAddress() ----')
console.log(e)
comm.close_async()
return e
}
}
)
}
module.exports = QrlLedger