transaction with the signature as defined within the passed SignDescriptor.</p><divclass="fullcomment"><divclass="comment cmt"><p>ComputeInputScript generates a complete InputIndex for the passed
transaction with the signature as defined within the passed SignDescriptor.
derivation between the ephemeral public key in the request and the node's
key specified in the key_desc parameter.</p><divclass="fullcomment"><divclass="comment cmt"><p>DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key
derivation between the ephemeral public key in the request and the node's
key specified in the key_desc parameter. Either a key locator or a raw
public key is expected in the key_desc, if neither is supplied, defaults to
the node's identity private key:
P_shared = privKeyNode * ephemeralPubkey
The resulting shared public key is serialized in the compressed format and
hashed with sha256, resulting in the final key length of 256bit.
</p></div></div></li><liclass="indented0 "name="signrpc.Signer#muSig2Cleanup"group="Ungrouped"fullComment="yes"data-isabs="true"visbl="pub"><aid="muSig2Cleanup(in:signrpc.MuSig2CleanupRequest):scala.concurrent.Future[signrpc.MuSig2CleanupResponse]"class="anchorToMember"></a><aid="muSig2Cleanup(MuSig2CleanupRequest):Future[MuSig2CleanupResponse]"class="anchorToMember"></a><spanclass="permalink"><ahref="../signrpc/Signer.html#muSig2Cleanup(in:signrpc.MuSig2CleanupRequest):scala.concurrent.Future[signrpc.MuSig2CleanupResponse]"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">abstract </span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name">muSig2Cleanup</span><spanclass="params">(<spanname="in">in: <ahref="MuSig2CleanupRequest.html"name="signrpc.MuSig2CleanupRequest"id="signrpc.MuSig2CleanupRequest"class="extype">MuSig2CleanupRequest</a></span>)</span><spanclass="result">: <ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/Future.html#scala.concurrent.Future"name="scala.concurrent.Future"id="scala.concurrent.Future"class="extype">Future</a>[<ahref="MuSig2CleanupResponse.html"name="signrpc.MuSig2CleanupResponse"id="signrpc.MuSig2CleanupResponse"class="extype">MuSig2CleanupResponse</a>]</span></span><pclass="shortcomment cmt">MuSig2Cleanup (experimental!) allows a caller to clean up a session early in
cases where it's obvious that the signing session won't succeed and the
resources can be released.</p><divclass="fullcomment"><divclass="comment cmt"><p>MuSig2Cleanup (experimental!) allows a caller to clean up a session early in
cases where it's obvious that the signing session won't succeed and the
resources can be released.
NOTE: The MuSig2 BIP is not final yet and therefore this API must be
considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
releases. Backward compatibility is not guaranteed!
</p></div></div></li><liclass="indented0 "name="signrpc.Signer#muSig2CombineKeys"group="Ungrouped"fullComment="yes"data-isabs="true"visbl="pub"><aid="muSig2CombineKeys(in:signrpc.MuSig2CombineKeysRequest):scala.concurrent.Future[signrpc.MuSig2CombineKeysResponse]"class="anchorToMember"></a><aid="muSig2CombineKeys(MuSig2CombineKeysRequest):Future[MuSig2CombineKeysResponse]"class="anchorToMember"></a><spanclass="permalink"><ahref="../signrpc/Signer.html#muSig2CombineKeys(in:signrpc.MuSig2CombineKeysRequest):scala.concurrent.Future[signrpc.MuSig2CombineKeysResponse]"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">abstract </span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name">muSig2CombineKeys</span><spanclass="params">(<spanname="in">in: <ahref="MuSig2CombineKeysRequest.html"name="signrpc.MuSig2CombineKeysRequest"id="signrpc.MuSig2CombineKeysRequest"class="extype">MuSig2CombineKeysRequest</a></span>)</span><spanclass="result">: <ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/Future.html#scala.concurrent.Future"name="scala.concurrent.Future"id="scala.concurrent.Future"class="extype">Future</a>[<ahref="MuSig2CombineKeysResponse.html"name="signrpc.MuSig2CombineKeysResponse"id="signrpc.MuSig2CombineKeysResponse"class="extype">MuSig2CombineKeysResponse</a>]</span></span><pclass="shortcomment cmt">MuSig2CombineKeys (experimental!) is a stateless helper RPC that can be used
to calculate the combined MuSig2 public key from a list of all participating
signers' public keys.</p><divclass="fullcomment"><divclass="comment cmt"><p>MuSig2CombineKeys (experimental!) is a stateless helper RPC that can be used
to calculate the combined MuSig2 public key from a list of all participating
signers' public keys. This RPC is completely stateless and deterministic and
does not create any signing session. It can be used to determine the Taproot
public key that should be put in an on-chain output once all public keys are
known. A signing session is only needed later when that output should be
_spent_ again.
NOTE: The MuSig2 BIP is not final yet and therefore this API must be
considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
releases. Backward compatibility is not guaranteed!
</p></div></div></li><liclass="indented0 "name="signrpc.Signer#muSig2CombineSig"group="Ungrouped"fullComment="yes"data-isabs="true"visbl="pub"><aid="muSig2CombineSig(in:signrpc.MuSig2CombineSigRequest):scala.concurrent.Future[signrpc.MuSig2CombineSigResponse]"class="anchorToMember"></a><aid="muSig2CombineSig(MuSig2CombineSigRequest):Future[MuSig2CombineSigResponse]"class="anchorToMember"></a><spanclass="permalink"><ahref="../signrpc/Signer.html#muSig2CombineSig(in:signrpc.MuSig2CombineSigRequest):scala.concurrent.Future[signrpc.MuSig2CombineSigResponse]"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">abstract </span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name">muSig2CombineSig</span><spanclass="params">(<spanname="in">in: <ahref="MuSig2CombineSigRequest.html"name="signrpc.MuSig2CombineSigRequest"id="signrpc.MuSig2CombineSigRequest"class="extype">MuSig2CombineSigRequest</a></span>)</span><spanclass="result">: <ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/Future.html#scala.concurrent.Future"name="scala.concurrent.Future"id="scala.concurrent.Future"class="extype">Future</a>[<ahref="MuSig2CombineSigResponse.html"name="signrpc.MuSig2CombineSigResponse"id="signrpc.MuSig2CombineSigResponse"class="extype">MuSig2CombineSigResponse</a>]</span></span><pclass="shortcomment cmt">MuSig2CombineSig (experimental!) combines the given partial signature(s)
with the local one, if it already exists.</p><divclass="fullcomment"><divclass="comment cmt"><p>MuSig2CombineSig (experimental!) combines the given partial signature(s)
with the local one, if it already exists. Once a partial signature of all
participants is registered, the final signature will be combined and
returned.
NOTE: The MuSig2 BIP is not final yet and therefore this API must be
considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
releases. Backward compatibility is not guaranteed!
</p></div></div></li><liclass="indented0 "name="signrpc.Signer#muSig2CreateSession"group="Ungrouped"fullComment="yes"data-isabs="true"visbl="pub"><aid="muSig2CreateSession(in:signrpc.MuSig2SessionRequest):scala.concurrent.Future[signrpc.MuSig2SessionResponse]"class="anchorToMember"></a><aid="muSig2CreateSession(MuSig2SessionRequest):Future[MuSig2SessionResponse]"class="anchorToMember"></a><spanclass="permalink"><ahref="../signrpc/Signer.html#muSig2CreateSession(in:signrpc.MuSig2SessionRequest):scala.concurrent.Future[signrpc.MuSig2SessionResponse]"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">abstract </span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name">muSig2CreateSession</span><spanclass="params">(<spanname="in">in: <ahref="MuSig2SessionRequest.html"name="signrpc.MuSig2SessionRequest"id="signrpc.MuSig2SessionRequest"class="extype">MuSig2SessionRequest</a></span>)</span><spanclass="result">: <ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/Future.html#scala.concurrent.Future"name="scala.concurrent.Future"id="scala.concurrent.Future"class="extype">Future</a>[<ahref="MuSig2SessionResponse.html"name="signrpc.MuSig2SessionResponse"id="signrpc.MuSig2SessionResponse"class="extype">MuSig2SessionResponse</a>]</span></span><pclass="shortcomment cmt">MuSig2CreateSession (experimental!) creates a new MuSig2 signing session
using the local key identified by the key locator.</p><divclass="fullcomment"><divclass="comment cmt"><p>MuSig2CreateSession (experimental!) creates a new MuSig2 signing session
using the local key identified by the key locator. The complete list of all
public keys of all signing parties must be provided, including the public
key of the local signing key. If nonces of other parties are already known,
they can be submitted as well to reduce the number of RPC calls necessary
later on.
NOTE: The MuSig2 BIP is not final yet and therefore this API must be
considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
releases. Backward compatibility is not guaranteed!
</p></div></div></li><liclass="indented0 "name="signrpc.Signer#muSig2RegisterNonces"group="Ungrouped"fullComment="yes"data-isabs="true"visbl="pub"><aid="muSig2RegisterNonces(in:signrpc.MuSig2RegisterNoncesRequest):scala.concurrent.Future[signrpc.MuSig2RegisterNoncesResponse]"class="anchorToMember"></a><aid="muSig2RegisterNonces(MuSig2RegisterNoncesRequest):Future[MuSig2RegisterNoncesResponse]"class="anchorToMember"></a><spanclass="permalink"><ahref="../signrpc/Signer.html#muSig2RegisterNonces(in:signrpc.MuSig2RegisterNoncesRequest):scala.concurrent.Future[signrpc.MuSig2RegisterNoncesResponse]"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">abstract </span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name">muSig2RegisterNonces</span><spanclass="params">(<spanname="in">in: <ahref="MuSig2RegisterNoncesRequest.html"name="signrpc.MuSig2RegisterNoncesRequest"id="signrpc.MuSig2RegisterNoncesRequest"class="extype">MuSig2RegisterNoncesRequest</a></span>)</span><spanclass="result">: <ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/Future.html#scala.concurrent.Future"name="scala.concurrent.Future"id="scala.concurrent.Future"class="extype">Future</a>[<ahref="MuSig2RegisterNoncesResponse.html"name="signrpc.MuSig2RegisterNoncesResponse"id="signrpc.MuSig2RegisterNoncesResponse"class="extype">MuSig2RegisterNoncesResponse</a>]</span></span><pclass="shortcomment cmt">MuSig2RegisterNonces (experimental!) registers one or more public nonces of
other signing participants for a session identified by its ID.</p><divclass="fullcomment"><divclass="comment cmt"><p>MuSig2RegisterNonces (experimental!) registers one or more public nonces of
other signing participants for a session identified by its ID. This RPC can
be called multiple times until all nonces are registered.
NOTE: The MuSig2 BIP is not final yet and therefore this API must be
considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
releases. Backward compatibility is not guaranteed!
</p></div></div></li><liclass="indented0 "name="signrpc.Signer#muSig2Sign"group="Ungrouped"fullComment="yes"data-isabs="true"visbl="pub"><aid="muSig2Sign(in:signrpc.MuSig2SignRequest):scala.concurrent.Future[signrpc.MuSig2SignResponse]"class="anchorToMember"></a><aid="muSig2Sign(MuSig2SignRequest):Future[MuSig2SignResponse]"class="anchorToMember"></a><spanclass="permalink"><ahref="../signrpc/Signer.html#muSig2Sign(in:signrpc.MuSig2SignRequest):scala.concurrent.Future[signrpc.MuSig2SignResponse]"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">abstract </span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name">muSig2Sign</span><spanclass="params">(<spanname="in">in: <ahref="MuSig2SignRequest.html"name="signrpc.MuSig2SignRequest"id="signrpc.MuSig2SignRequest"class="extype">MuSig2SignRequest</a></span>)</span><spanclass="result">: <ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/Future.html#scala.concurrent.Future"name="scala.concurrent.Future"id="scala.concurrent.Future"class="extype">Future</a>[<ahref="MuSig2SignResponse.html"name="signrpc.MuSig2SignResponse"id="signrpc.MuSig2SignResponse"class="extype">MuSig2SignResponse</a>]</span></span><pclass="shortcomment cmt">MuSig2Sign (experimental!) creates a partial signature using the local
signing key that was specified when the session was created.</p><divclass="fullcomment"><divclass="comment cmt"><p>MuSig2Sign (experimental!) creates a partial signature using the local
signing key that was specified when the session was created. This can only
be called when all public nonces of all participants are known and have been
registered with the session. If this node isn't responsible for combining
all the partial signatures, then the cleanup flag should be set, indicating
that the session can be removed from memory once the signature was produced.
NOTE: The MuSig2 BIP is not final yet and therefore this API must be
considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
releases. Backward compatibility is not guaranteed!
</p></div></div></li><liclass="indented0 "name="signrpc.Signer#signMessage"group="Ungrouped"fullComment="yes"data-isabs="true"visbl="pub"><aid="signMessage(in:signrpc.SignMessageReq):scala.concurrent.Future[signrpc.SignMessageResp]"class="anchorToMember"></a><aid="signMessage(SignMessageReq):Future[SignMessageResp]"class="anchorToMember"></a><spanclass="permalink"><ahref="../signrpc/Signer.html#signMessage(in:signrpc.SignMessageReq):scala.concurrent.Future[signrpc.SignMessageResp]"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">abstract </span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name">signMessage</span><spanclass="params">(<spanname="in">in: <ahref="SignMessageReq.html"name="signrpc.SignMessageReq"id="signrpc.SignMessageReq"class="extype">SignMessageReq</a></span>)</span><spanclass="result">: <ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/Future.html#scala.concurrent.Future"name="scala.concurrent.Future"id="scala.concurrent.Future"class="extype">Future</a>[<ahref="SignMessageResp.html"name="signrpc.SignMessageResp"id="signrpc.SignMessageResp"class="extype">SignMessageResp</a>]</span></span><pclass="shortcomment cmt">SignMessage signs a message with the key specified in the key locator.</p><divclass="fullcomment"><divclass="comment cmt"><p>SignMessage signs a message with the key specified in the key locator. The
</p></div></div></li><liclass="indented0 "name="signrpc.Signer#signOutputRaw"group="Ungrouped"fullComment="yes"data-isabs="true"visbl="pub"><aid="signOutputRaw(in:signrpc.SignReq):scala.concurrent.Future[signrpc.SignResp]"class="anchorToMember"></a><aid="signOutputRaw(SignReq):Future[SignResp]"class="anchorToMember"></a><spanclass="permalink"><ahref="../signrpc/Signer.html#signOutputRaw(in:signrpc.SignReq):scala.concurrent.Future[signrpc.SignResp]"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">abstract </span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name">signOutputRaw</span><spanclass="params">(<spanname="in">in: <ahref="SignReq.html"name="signrpc.SignReq"id="signrpc.SignReq"class="extype">SignReq</a></span>)</span><spanclass="result">: <ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/Future.html#scala.concurrent.Future"name="scala.concurrent.Future"id="scala.concurrent.Future"class="extype">Future</a>[<ahref="SignResp.html"name="signrpc.SignResp"id="signrpc.SignResp"class="extype">SignResp</a>]</span></span><pclass="shortcomment cmt">SignOutputRaw is a method that can be used to generated a signature for a
set of inputs/outputs to a transaction.</p><divclass="fullcomment"><divclass="comment cmt"><p>SignOutputRaw is a method that can be used to generated a signature for a
set of inputs/outputs to a transaction. Each request specifies details
concerning how the outputs should be signed, which keys they should be
signed with, and also any optional tweaks. The return value is a fixed
64-byte signature (the same format as we use on the wire in Lightning).
If we are unable to sign using the specified keys, then an error will be
</p></div></div></li><liclass="indented0 "name="signrpc.Signer#verifyMessage"group="Ungrouped"fullComment="yes"data-isabs="true"visbl="pub"><aid="verifyMessage(in:signrpc.VerifyMessageReq):scala.concurrent.Future[signrpc.VerifyMessageResp]"class="anchorToMember"></a><aid="verifyMessage(VerifyMessageReq):Future[VerifyMessageResp]"class="anchorToMember"></a><spanclass="permalink"><ahref="../signrpc/Signer.html#verifyMessage(in:signrpc.VerifyMessageReq):scala.concurrent.Future[signrpc.VerifyMessageResp]"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">abstract </span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name">verifyMessage</span><spanclass="params">(<spanname="in">in: <ahref="VerifyMessageReq.html"name="signrpc.VerifyMessageReq"id="signrpc.VerifyMessageReq"class="extype">VerifyMessageReq</a></span>)</span><spanclass="result">: <ahref="https://www.scala-lang.org/api/2.13.8/scala/concurrent/Future.html#scala.concurrent.Future"name="scala.concurrent.Future"id="scala.concurrent.Future"class="extype">Future</a>[<ahref="VerifyMessageResp.html"name="signrpc.VerifyMessageResp"id="signrpc.VerifyMessageResp"class="extype">VerifyMessageResp</a>]</span></span><pclass="shortcomment cmt">VerifyMessage verifies a signature over a message using the public key