@btc-vision/transaction
Version:
OPNet transaction library allows you to create and sign transactions for the OPNet network.
51 lines • 1.81 kB
JavaScript
import { createPrivateKey, createPublicKey } from '@btc-vision/ecpair';
/**
* Wraps an untweaked UniversalSigner as PsbtParallelKeyPair.
* Used for script-path signing (raw private key needed).
*/
export function toParallelKeyPair(signer) {
return {
publicKey: signer.publicKey,
getPrivateKey() {
if (!signer.privateKey) {
throw new Error('Signer does not have a private key');
}
return createPrivateKey(signer.privateKey);
},
sign(hash, lowR) {
return signer.sign(hash, lowR);
},
signSchnorr(hash) {
if (!signer.signSchnorr) {
throw new Error('Signer does not support Schnorr signing');
}
return signer.signSchnorr(hash);
},
};
}
/**
* Creates a hybrid adapter with untweaked publicKey (for PSBT input matching)
* but tweaked privateKey (for correct key-path Schnorr signatures).
* Uses createPrivateKey/createPublicKey for branded type validation.
*/
export function toTweakedParallelKeyPair(untweakedSigner, tweakedSigner) {
return {
publicKey: createPublicKey(untweakedSigner.publicKey),
getPrivateKey() {
if (!tweakedSigner.privateKey) {
throw new Error('Tweaked signer does not have a private key');
}
return createPrivateKey(tweakedSigner.privateKey);
},
sign(hash, lowR) {
return tweakedSigner.sign(hash, lowR);
},
signSchnorr(hash) {
if (!tweakedSigner.signSchnorr) {
throw new Error('Tweaked signer does not support Schnorr signing');
}
return tweakedSigner.signSchnorr(hash);
},
};
}
//# sourceMappingURL=ParallelSignerAdapter.js.map