rerumcupiditate
Version:
ledger and trezor hd sign and export coin address.
52 lines (50 loc) • 1.55 kB
text/typescript
import { Signature } from "../model/utils";
import { Utxos } from "../model/btc";
const Bitcore = require('bitcore-lib');
/**
* 构造多签交易签名消息
* @param signMsg
* @param inputs
*/
function getMutiSignSignature(signMsg: Array<any>, utxos: Utxos) {
try {
const signatures: Array<Signature> = new Array<Signature>();
signMsg.forEach((item, index) => {
signatures.push({
txid: utxos[index].txid,
sign: item
});
})
return signatures;
} catch (error) {
throw new Error(`构造多签交易签名消息失败,错误信息:${error.message}`);
}
}
/**
* 构造交易签名消息-返回后端
* @param signMsg 签名消息
* @param isTrezor 是否trezor
*/
function getSignature(signMsg: any, isTrezor: boolean): Array<Signature> {
try {
const signatures: Array<Signature> = new Array<Signature>();
const tx: any = new Bitcore.Transaction(signMsg);
tx.inputs.forEach((vin) => {
let sign: string = vin.script.chunks[0].buf.toString('hex');
if (isTrezor) {
sign = sign.substring(0, sign.length - 2);
}
signatures.push({
txid: vin.prevTxId.toString('hex'),
sign: sign
});
});
return signatures;
} catch (error) {
throw new Error(`构造交易签名消息失败,错误信息:${error.message}`);
}
}
export {
getSignature,
getMutiSignSignature
}