@airgap/crypto
Version:
The @airgap/crypto packages provides common crypto functionalities.
50 lines • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeDerivative = exports.encodeDerivative = void 0;
var coinlib_core_1 = require("@airgap/coinlib-core");
var bip32_1 = require("./utils/bip32");
var bytes_1 = require("./utils/bytes");
var factory_1 = require("./utils/factory");
var hex_1 = require("./utils/hex");
var zip32_1 = require("./utils/zip32");
function encodeDerivative(type, derivative, bip39VersionOrUndefined) {
var node = (0, factory_1.newDerivationNodeFromDerivative)(derivative);
return encodeNode(type, node, bip39VersionOrUndefined);
}
exports.encodeDerivative = encodeDerivative;
function encodeNode(type, node, bip39VersionOrUndefined) {
switch (type) {
case 'bytes':
return (0, bytes_1.bytesEncodeNode)(node);
case 'hex':
return (0, hex_1.hexEncodeNode)(node);
case 'bip32':
return (0, bip32_1.bip32EncodeNode)(node, bip39VersionOrUndefined);
case 'zip32':
return (0, zip32_1.zip32EncodeNode)(node);
default:
(0, coinlib_core_1.assertNever)(type);
throw new Error('Unsupported encoding type');
}
}
function decodeDerivative(node) {
var decodedNode = decodeNode(node);
return (0, factory_1.newCryptoDerivativeFromNode)(decodedNode);
}
exports.decodeDerivative = decodeDerivative;
function decodeNode(node) {
switch (node.type) {
case 'bytes':
return (0, bytes_1.bytesDecodeNode)(node);
case 'hex':
return (0, hex_1.hexDecodeNode)(node);
case 'bip32':
return (0, bip32_1.bip32DecodeNode)(node);
case 'zip32':
return (0, zip32_1.zip32DecodeNode)(node);
default:
(0, coinlib_core_1.assertNever)(node);
throw new Error('Unsupported encoded node type');
}
}
//# sourceMappingURL=encoding.js.map