@secux/app-btc
Version:
SecuX Hardware Wallet BTC API
18 lines (15 loc) • 4.54 kB
JavaScript
"use strict";
/*!
Copyright 2022 SecuX Technology Inc
Copyright Chen Wei-En
Copyright Wu Tsung-Yu
Licensed under the Apache License, Version 2.0 (the License);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an AS IS BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/var _BufferReader_buffer,__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(receiver,state,value,kind,f){if("m"===kind)throw new TypeError("Private method is not writable");if("a"===kind&&!f)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof state?receiver!==state||!f:!state.has(receiver))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===kind?f.call(receiver,value):f?f.value=value:state.set(receiver,value),value},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(receiver,state,kind,f){if("a"===kind&&!f)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof state?receiver!==state||!f:!state.has(receiver))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===kind?f:"a"===kind?f.call(receiver):f?f.value:state.get(receiver)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.BufferWriter=exports.BufferReader=void 0;const varuint=require("varuint-bitcoin"),bignumber_js_1=require("bignumber.js");exports.BufferWriter=class{constructor(buffer,offset=0){this.buffer=buffer,this.offset=offset}writeUInt8(i){this.offset=this.buffer.writeUInt8(i,this.offset)}writeInt32(i){this.offset=this.buffer.writeInt32LE(i,this.offset)}writeUInt32(i){this.offset=this.buffer.writeUInt32LE(i,this.offset)}writeUInt64(i){this.offset=function(buffer,value,offset){const num=new bignumber_js_1.BigNumber(value);verifuint(num.toNumber());return Buffer.from(num.toString(16).padStart(16,"0"),"hex").reverse().copy(buffer,offset),offset+8}(this.buffer,i,this.offset)}writeVarInt(i){varuint.encode(i,this.buffer,this.offset),this.offset+=varuint.encode.bytes}writeSlice(slice){if(this.buffer.length<this.offset+slice.length)throw new Error("Cannot write slice out of bounds");this.offset+=slice.copy(this.buffer,this.offset)}writeVarSlice(slice){this.writeVarInt(slice.length),this.writeSlice(slice)}writeVector(vector){this.writeVarInt(vector.length),vector.forEach((buf=>this.writeVarSlice(buf)))}};function verifuint(value){if("number"!=typeof value)throw new Error("cannot write a non-number as a number");if(value<0)throw new Error("specified a negative value for writing an unsigned value");if(Math.floor(value)!==value)throw new Error("value has a fractional component")}exports.BufferReader=class{constructor(buffer,offset=0){_BufferReader_buffer.set(this,void 0),__classPrivateFieldSet(this,_BufferReader_buffer,Buffer.from([...buffer]),"f"),this.offset=offset}readUInt8(){const result=__classPrivateFieldGet(this,_BufferReader_buffer,"f").readUInt8(this.offset);return this.offset+=1,result}readInt32(){const result=__classPrivateFieldGet(this,_BufferReader_buffer,"f").readInt32LE(this.offset);return this.offset+=4,result}readUInt32(){const result=__classPrivateFieldGet(this,_BufferReader_buffer,"f").readUInt32LE(this.offset);return this.offset+=4,result}readUInt64(){const result=function(buffer,offset){const str=buffer.slice(offset,offset+8).reverse().toString("hex"),value=new bignumber_js_1.BigNumber(str,16);return verifuint(value.toNumber()),value}(__classPrivateFieldGet(this,_BufferReader_buffer,"f"),this.offset);return this.offset+=8,result}readVarInt(){const vi=varuint.decode(__classPrivateFieldGet(this,_BufferReader_buffer,"f"),this.offset);return this.offset+=varuint.decode.bytes,vi}readSlice(n){if(__classPrivateFieldGet(this,_BufferReader_buffer,"f").length<this.offset+n)throw new Error("Cannot read slice out of bounds");const result=__classPrivateFieldGet(this,_BufferReader_buffer,"f").slice(this.offset,this.offset+n);return this.offset+=n,result}readVarSlice(){return this.readSlice(this.readVarInt())}readVector(){const count=this.readVarInt(),vector=[];for(let i=0;i<count;i++)vector.push(this.readVarSlice());return vector}},_BufferReader_buffer=new WeakMap;