diff --git a/lib/primitives/keyring.js b/lib/primitives/keyring.js index 5c3f6ed8..f657bf5b 100644 --- a/lib/primitives/keyring.js +++ b/lib/primitives/keyring.js @@ -251,6 +251,37 @@ class KeyRing { return new this().fromScript(key, script, compress); } + /** + * Get ith public key from multisig script. + * @private + * @param {Script} script + * @param {Number} i + * @returns {KeyRing} + */ + + fromMultisigScript(script, i) { + assert(script instanceof Script, 'Non-script passed.'); + assert(script.isMultisig(), 'Script must be multisig'); + + const n = script.getSmall(-2); + assert(i >= 1 && i <= n, 'Requested `i`th key, `n` available'); + + this.fromKey(script.code[i].toData()); + + return this; + } + + /** + * Instantiate keyring from ith key in multisig script. + * @param {Script} script + * @param {Number} i + * @returns {KeyRing} + */ + + static fromMultisigScript(script, i) { + return new this().fromMultisigScript(script, i); + } + /** * Calculate WIF serialization size. * @returns {Number}