@bitgo/utxo-lib
Version:
Client-side Bitcoin JavaScript library
74 lines • 12.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProprietaryKeyValuesFromUnknownKeyValues = getProprietaryKeyValuesFromUnknownKeyValues;
exports.deleteProprietaryKeyValuesFromUnknownKeyValues = deleteProprietaryKeyValuesFromUnknownKeyValues;
exports.updateProprietaryKeyValuesFromUnknownKeyValues = updateProprietaryKeyValuesFromUnknownKeyValues;
exports.addProprietaryKeyValuesFromUnknownKeyValues = addProprietaryKeyValuesFromUnknownKeyValues;
const proprietaryKeyVal_1 = require("bip174/src/lib/proprietaryKeyVal");
function getProprietaryKeyValuesFromUnknownKeyValues(psbtField, keySearch) {
if (!psbtField.unknownKeyVals?.length) {
return [];
}
if (keySearch && keySearch.subtype === undefined && Buffer.isBuffer(keySearch.keydata)) {
throw new Error('invalid proprietary key search filter combination. subtype is required');
}
const keyVals = psbtField.unknownKeyVals.map(({ key, value }, i) => {
return { key: (0, proprietaryKeyVal_1.decodeProprietaryKey)(key), value };
});
return keyVals.filter((keyVal) => {
return (keySearch === undefined ||
(keySearch.identifier === keyVal.key.identifier &&
(keySearch.subtype === undefined ||
(keySearch.subtype === keyVal.key.subtype &&
(!Buffer.isBuffer(keySearch.keydata) || keySearch.keydata.equals(keyVal.key.keydata))))));
});
}
function deleteProprietaryKeyValuesFromUnknownKeyValues(psbtField, keysToDelete) {
if (!psbtField.unknownKeyVals?.length) {
return;
}
if (keysToDelete && keysToDelete.subtype === undefined && Buffer.isBuffer(keysToDelete.keydata)) {
throw new Error('invalid proprietary key search filter combination. subtype is required');
}
psbtField.unknownKeyVals = psbtField.unknownKeyVals.filter((keyValue, i) => {
const key = (0, proprietaryKeyVal_1.decodeProprietaryKey)(keyValue.key);
return !(keysToDelete === undefined ||
(keysToDelete.identifier === key.identifier &&
(keysToDelete.subtype === undefined ||
(keysToDelete.subtype === key.subtype &&
(!Buffer.isBuffer(keysToDelete.keydata) || keysToDelete.keydata.equals(key.keydata))))));
});
}
function updateProprietaryKeyValuesFromUnknownKeyValues(keyValueData, psbtField) {
if (!psbtField.unknownKeyVals?.length) {
return;
}
const key = (0, proprietaryKeyVal_1.encodeProprietaryKey)(keyValueData.key);
const { value } = keyValueData;
const ukvIndex = psbtField.unknownKeyVals.findIndex((ukv) => ukv.key.equals(key));
if (ukvIndex <= -1) {
throw new Error(`The Key-Value pair does not exist within the PSBT.`);
}
psbtField.unknownKeyVals[ukvIndex] = { key, value };
}
function addProprietaryKeyValuesFromUnknownKeyValues(psbt, entry, index, keyValueData) {
if (index < 0) {
throw new Error('Not a valid index within the PSBT to add proprietary key value.');
}
if (entry === 'input') {
psbt.addUnknownKeyValToInput(index, {
key: (0, proprietaryKeyVal_1.encodeProprietaryKey)(keyValueData.key),
value: keyValueData.value,
});
}
else if (entry === 'output') {
psbt.addUnknownKeyValToOutput(index, {
key: (0, proprietaryKeyVal_1.encodeProprietaryKey)(keyValueData.key),
value: keyValueData.value,
});
}
else {
throw new Error("Not a valid PSBT entry, only valid for 'input' or 'output'.");
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcHJpZXRhcnlLZXlWYWxVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9Qcm9wcmlldGFyeUtleVZhbFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBd0JBLGtHQXVCQztBQUVELHdHQXFCQztBQUVELHdHQWVDO0FBRUQsa0dBc0JDO0FBOUdELHdFQUE4RztBQXVCOUcsU0FBZ0IsMkNBQTJDLENBQ3pELFNBQWlDLEVBQ2pDLFNBQWdDO0lBRWhDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdkYsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBQSx3Q0FBb0IsRUFBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQy9CLE9BQU8sQ0FDTCxTQUFTLEtBQUssU0FBUztZQUN2QixDQUFDLFNBQVMsQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVO2dCQUM3QyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEtBQUssU0FBUztvQkFDOUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxH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QUM7U0FBTSxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFO1lBQ25DLEdBQUcsRUFBRSxJQUFBLHdDQUFvQixFQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7WUFDM0MsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHNidElucHV0LCBQc2J0T3V0cHV0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBkZWNvZGVQcm9wcmlldGFyeUtleSwgZW5jb2RlUHJvcHJpZXRhcnlLZXksIFByb3ByaWV0YXJ5S2V5IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvcHJvcHJpZXRhcnlLZXlWYWwnO1xuaW1wb3J0IHsgVXR4b1BzYnQgfSBmcm9tICcuL1V0eG9Qc2J0JztcblxuLyoqXG4gKiBQc2J0IHByb3ByaWV0YXJ5IGtleWRhdGEgb2JqZWN0IHNlYXJjaCBmaWVsZHMuXG4gKiA8Y29tcGFjdCBzaXplIHVpbnQgaWRlbnRpZmllciBsZW5ndGg+IDxieXRlcyBpZGVudGlmaWVyPiA8Y29tcGFjdCBzaXplIHVpbnQgc3VidHlwZT4gPGJ5dGVzIHN1YmtleWRhdGE+XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHJpZXRhcnlLZXlTZWFyY2gge1xuICBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIHN1YnR5cGU/OiBudW1iZXI7XG4gIGtleWRhdGE/OiBCdWZmZXI7XG4gIGlkZW50aWZpZXJFbmNvZGluZz86IEJ1ZmZlckVuY29kaW5nO1xufVxuLyoqXG4gKiBQc2J0IHByb3ByaWV0YXJ5IGtleWRhdGEgb2JqZWN0LlxuICogPGNvbXBhY3Qgc2l6ZSB1aW50IGlkZW50aWZpZXIgbGVuZ3RoPiA8Ynl0ZXMgaWRlbnRpZmllcj4gPGNvbXBhY3Qgc2l6ZSB1aW50IHN1YnR5cGU+IDxieXRlcyBzdWJrZXlkYXRhPlxuICogPT4gPGJ5dGVzIHZhbHVlZGF0YT5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9wcmlldGFyeUtleVZhbHVlIHtcbiAga2V5OiBQcm9wcmlldGFyeUtleTtcbiAgdmFsdWU6IEJ1ZmZlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3ByaWV0YXJ5S2V5VmFsdWVzRnJvbVVua25vd25LZXlWYWx1ZXMoXG4gIHBzYnRGaWVsZDogUHNidElucHV0IHwgUHNidE91dHB1dCxcbiAga2V5U2VhcmNoPzogUHJvcHJpZXRhcnlLZXlTZWFyY2hcbik6IFByb3ByaWV0YXJ5S2V5VmFsdWVbXSB7XG4gIGlmICghcHNidEZpZWxkLnVua25vd25LZXlWYWxzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpZiAoa2V5U2VhcmNoICYmIGtleVNlYXJjaC5zdWJ0eXBlID09PSB1bmRlZmluZWQgJiYgQnVmZmVyLmlzQnVmZmVyKGtleVNlYXJjaC5rZXlkYXRhKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwcm9wcmlldGFyeSBrZXkgc2VhcmNoIGZpbHRlciBjb21iaW5hdGlvbi4gc3VidHlwZSBpcyByZXF1aXJlZCcpO1xuICB9XG4gIGNvbnN0IGtleVZhbHMgPSBwc2J0RmllbGQudW5rbm93bktleVZhbHMubWFwKCh7IGtleSwgdmFsdWUgfSwgaSkgPT4ge1xuICAgIHJldHVybiB7IGtleTogZGVjb2RlUHJvcHJpZXRhcnlLZXkoa2V5KSwgdmFsdWUgfTtcbiAgfSk7XG4gIHJldHVybiBrZXlWYWxzLmZpbHRlcigoa2V5VmFsKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGtleVNlYXJjaCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAoa2V5U2VhcmNoLmlkZW50aWZpZXIgPT09IGtleVZhbC5rZXkuaWRlbnRpZmllciAmJlxuICAgICAgICAoa2V5U2VhcmNoLnN1YnR5cGUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIChrZXlTZWFyY2guc3VidHlwZSA9PT0ga2V5VmFsLmtleS5zdWJ0eXBlICYmXG4gICAgICAgICAgICAoIUJ1ZmZlci5pc0J1ZmZlcihrZXlTZWFyY2gua2V5ZGF0YSkgfHwga2V5U2VhcmNoLmtleWRhdGEuZXF1YWxzKGtleVZhbC5rZXkua2V5ZGF0YSkpKSkpXG4gICAgKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wcmlldGFyeUtleVZhbHVlc0Zyb21Vbmtub3duS2V5VmFsdWVzKFxuICBwc2J0RmllbGQ6IFBzYnRJbnB1dCB8IFBzYnRPdXRwdXQsXG4gIGtleXNUb0RlbGV0ZT86IFByb3ByaWV0YXJ5S2V5U2VhcmNoXG4pOiB2b2lkIHtcbiAgaWYgKCFwc2J0RmllbGQudW5rbm93bktleVZhbHM/Lmxlbmd0aCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChrZXlzVG9EZWxldGUgJiYga2V5c1RvRGVsZXRlLnN1YnR5cGUgPT09IHVuZGVmaW5lZCAmJiBCdWZmZXIuaXNCdWZmZXIoa2V5c1RvRGVsZXRlLmtleWRhdGEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHByb3ByaWV0YXJ5IGtleSBzZWFyY2ggZmlsdGVyIGNvbWJpbmF0aW9uLiBzdWJ0eXBlIGlzIHJlcXVpcmVkJyk7XG4gIH1cbiAgcHNidEZpZWxkLnVua25vd25LZXlWYWxzID0gcHNidEZpZWxkLnVua25vd25LZXlWYWxzLmZpbHRlcigoa2V5VmFsdWUsIGkpID0+IHtcbiAgICBjb25zdCBrZXkgPSBkZWNvZGVQcm9wcmlldGFyeUtleShrZXlWYWx1ZS5rZXkpO1xuICAgIHJldHVybiAhKFxuICAgICAga2V5c1RvRGVsZXRlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIChrZXlzVG9EZWxldGUuaWRlbnRpZmllciA9PT0ga2V5LmlkZW50aWZpZXIgJiZcbiAgICAgICAgKGtleXNUb0RlbGV0ZS5zdWJ0eXBlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoa2V5c1RvRGVsZXRlLnN1YnR5cGUgPT09IGtleS5zdWJ0eXBlICYmXG4gICAgICAgICAgICAoIUJ1ZmZlci5pc0J1ZmZlcihrZXlzVG9EZWxldGUua2V5ZGF0YSkgfHwga2V5c1RvRGVsZXRlLmtleWRhdGEuZXF1YWxzKGtleS5rZXlkYXRhKSkpKSlcbiAgICApO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVByb3ByaWV0YXJ5S2V5VmFsdWVzRnJvbVVua25vd25LZXlWYWx1ZXMoXG4gIGtleVZhbHVlRGF0YTogUHJvcHJpZXRhcnlLZXlWYWx1ZSxcbiAgcHNidEZpZWxkOiBQc2J0SW5wdXQgfCBQc2J0T3V0cHV0XG4pOiB2b2lkIHtcbiAgaWYgKCFwc2J0RmllbGQudW5rbm93bktleVZhbHM/Lmxlbmd0aCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGtleSA9IGVuY29kZVByb3ByaWV0YXJ5S2V5KGtleVZhbHVlRGF0YS5rZXkpO1xuICBjb25zdCB7IHZhbHVlIH0gPSBrZXlWYWx1ZURhdGE7XG4gIGNvbnN0IHVrdkluZGV4ID0gcHNidEZpZWxkLnVua25vd25LZXlWYWxzLmZpbmRJbmRleCgodWt2KSA9PiB1a3Yua2V5LmVxdWFscyhrZXkpKTtcbiAgaWYgKHVrdkluZGV4IDw9IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgS2V5LVZhbHVlIHBhaXIgZG9lcyBub3QgZXhpc3Qgd2l0aGluIHRoZSBQU0JULmApO1xuICB9XG4gIHBzYnRGaWVsZC51bmtub3duS2V5VmFsc1t1a3ZJbmRleF0gPSB7IGtleSwgdmFsdWUgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFByb3ByaWV0YXJ5S2V5VmFsdWVzRnJvbVVua25vd25LZXlWYWx1ZXMoXG4gIHBzYnQ6IFV0eG9Qc2J0LFxuICBlbnRyeTogc3RyaW5nLFxuICBpbmRleDogbnVtYmVyLFxuICBrZXlWYWx1ZURhdGE6IFByb3ByaWV0YXJ5S2V5VmFsdWVcbik6IHZvaWQge1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSB2YWxpZCBpbmRleCB3aXRoaW4gdGhlIFBTQlQgdG8gYWRkIHByb3ByaWV0YXJ5IGtleSB2YWx1ZS4nKTtcbiAgfVxuICBpZiAoZW50cnkgPT09ICdpbnB1dCcpIHtcbiAgICBwc2J0LmFkZFVua25vd25LZXlWYWxUb0lucHV0KGluZGV4LCB7XG4gICAgICBrZXk6IGVuY29kZVByb3ByaWV0YXJ5S2V5KGtleVZhbHVlRGF0YS5rZXkpLFxuICAgICAgdmFsdWU6IGtleVZhbHVlRGF0YS52YWx1ZSxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChlbnRyeSA9PT0gJ291dHB1dCcpIHtcbiAgICBwc2J0LmFkZFVua25vd25LZXlWYWxUb091dHB1dChpbmRleCwge1xuICAgICAga2V5OiBlbmNvZGVQcm9wcmlldGFyeUtleShrZXlWYWx1ZURhdGEua2V5KSxcbiAgICAgIHZhbHVlOiBrZXlWYWx1ZURhdGEudmFsdWUsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGEgdmFsaWQgUFNCVCBlbnRyeSwgb25seSB2YWxpZCBmb3IgJ2lucHV0JyBvciAnb3V0cHV0Jy5cIik7XG4gIH1cbn1cbiJdfQ==