@airgap/crypto
Version:
The @airgap/crypto packages provides common crypto functionalities.
44 lines • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.bytesDecodeNode = exports.bytesEncodeNode = void 0;
var factory_1 = require("./factory");
function bytesEncodeNode(node) {
return {
type: 'bytes',
secretKey: encodeKey(node, 'secretKey'),
publicKey: encodeKey(node, 'publicKey')
};
}
exports.bytesEncodeNode = bytesEncodeNode;
function encodeKey(node, keyType) {
var depth = Buffer.alloc(1);
depth.writeUInt8(node.depth);
var parentFingerprint = Buffer.alloc(4);
parentFingerprint.writeUInt32BE(node.parentFingerprint);
var index = Buffer.alloc(4);
index.writeUInt32BE(node.index);
var chainCode = node.chainCode;
var key = node[keyType];
return Buffer.concat([depth, parentFingerprint, index, chainCode, key]);
}
function bytesDecodeNode(node) {
var xprvDecoded = decodeKey(node.secretKey);
var xpubDecoded = decodeKey(node.publicKey);
return (0, factory_1.newDerivationNodeFromKeys)(xprvDecoded, xpubDecoded);
}
exports.bytesDecodeNode = bytesDecodeNode;
function decodeKey(buffer) {
var depth = buffer.readUInt8(0);
var parentFingerprint = buffer.readUInt32BE(1);
var index = buffer.readUInt32BE(5);
var chainCode = buffer.slice(9, 41);
var key = buffer.slice(41);
return {
depth: depth,
parentFingerprint: parentFingerprint,
index: index,
chainCode: chainCode,
key: key
};
}
//# sourceMappingURL=bytes.js.map