public override Script GenerateScriptSig(Script scriptPubKey, IKeyRepository keyRepo, ISigner signer) { var offer = SolverScriptBuilder.ExtractOfferScriptParameters(scriptPubKey); var key = keyRepo.FindKey(offer.FulfillKey.ScriptPubKey) ?? keyRepo.FindKey(offer.RedeemKey.ScriptPubKey); if (key == null) { return(null); } var sig = signer.Sign(key); return(new Script(Op.GetPushOp(sig.ToBytes()))); }
public override Script GenerateScriptSig(Network network, Script scriptPubKey, IKeyRepository keyRepo, ISigner signer) { var multiSigParams = PayToMultiSigTemplate.Instance.ExtractScriptPubKeyParameters(scriptPubKey); var signatures = new TransactionSignature[multiSigParams.PubKeys.Length]; var keys = multiSigParams .PubKeys .Select(p => keyRepo.FindKey(p.ScriptPubKey)) .ToArray(); var sigCount = 0; for (var i = 0; i < keys.Length; i++) { if (sigCount == multiSigParams.SignatureCount) { break; } if (keys[i] != null) { var sig = signer.Sign(keys[i]); signatures[i] = sig; sigCount++; } } IEnumerable <TransactionSignature> sigs = signatures; if (sigCount == multiSigParams.SignatureCount) { sigs = sigs.Where(s => s != TransactionSignature.Empty && s != null); } return(PayToMultiSigTemplate.Instance.GenerateScriptSig(sigs)); }
public override Script GenerateScriptSig(Script scriptPubKey, IKeyRepository keyRepo, ISigner signer) { var multiSigParams = PayToMultiSigTemplate.Instance.ExtractScriptPubKeyParameters(scriptPubKey); TransactionSignature[] signatures = new TransactionSignature[multiSigParams.PubKeys.Length]; var keys = multiSigParams .PubKeys .Select(p => keyRepo.FindKey(p.ScriptPubKey)) .ToArray(); int sigCount = 0; for(int i = 0 ; i < keys.Length ; i++) { if(sigCount == multiSigParams.SignatureCount) break; if(keys[i] != null) { var sig = signer.Sign(keys[i]); signatures[i] = sig; sigCount++; } } IEnumerable<TransactionSignature> sigs = signatures; if(sigCount == multiSigParams.SignatureCount) { sigs = sigs.Where(s => s != TransactionSignature.Empty && s != null); } return PayToMultiSigTemplate.Instance.GenerateScriptSig(sigs); }
public override Script GenerateScriptSig(Script scriptPubKey, IKeyRepository keyRepo, ISigner signer) { var key = keyRepo.FindKey(scriptPubKey); if(key == null) return null; var sig = signer.Sign(key); return PayToPubkeyTemplate.Instance.GenerateScriptSig(sig); }
public override Script GenerateScriptSig(Script scriptPubKey, IKeyRepository keyRepo, ISigner signer) { var multiSigParams = EscrowScriptBuilder.ExtractEscrowScriptPubKeyParameters(scriptPubKey); TransactionSignature[] signatures = new TransactionSignature[2]; var keys = multiSigParams .EscrowKeys .Select(p => keyRepo.FindKey(p.ScriptPubKey)) .ToArray(); if (keys.All(k => k == null)) { var redeem = keyRepo.FindKey(multiSigParams.RedeemKey.ScriptPubKey); if (redeem == null) { return(null); } return(new Script(Op.GetPushOp(signer.Sign(redeem).ToBytes()))); } int sigCount = 0; for (int i = 0; i < keys.Length; i++) { if (sigCount == 2) { break; } if (keys[i] != null) { var sig = signer.Sign(keys[i]); signatures[i] = sig; sigCount++; } } IEnumerable <TransactionSignature> sigs = signatures; if (sigCount == 2) { sigs = sigs.Where(s => s != TransactionSignature.Empty && s != null); } return(EscrowScriptBuilder.GenerateScriptSig(sigs.ToArray())); }
public override Script GenerateScriptSig(Script scriptPubKey, IKeyRepository keyRepo, ISigner signer) { var parameters = PayToPubkeyHashTemplate.Instance.ExtractScriptPubKeyParameters(scriptPubKey); var key = keyRepo.FindKey(parameters.ScriptPubKey); if(key == null) return null; var sig = signer.Sign(key); return PayToPubkeyHashTemplate.Instance.GenerateScriptSig(sig, key.PubKey); }
public override Script GenerateScriptSig(Script scriptPubKey, IKeyRepository keyRepo, ISigner signer) { var key = keyRepo.FindKey(scriptPubKey); if (key == null) { return(null); } var sig = signer.Sign(key); return(PayToPubkeyTemplate.Instance.GenerateScriptSig(sig)); }
public override Script GenerateScriptSig(Network network, Script scriptPubKey, IKeyRepository keyRepo, ISigner signer) { Key key = keyRepo.FindKey(scriptPubKey); if (key == null) { return(null); } TransactionSignature sig = signer.Sign(key); return(PayToPubkeyTemplate.Instance.GenerateScriptSig(sig)); }
public override Script GenerateScriptSig(Script scriptPubKey, IKeyRepository keyRepo, ISigner signer) { var parameters = PayToPubkeyHashTemplate.Instance.ExtractScriptPubKeyParameters(scriptPubKey); var key = keyRepo.FindKey(parameters.ScriptPubKey); if (key == null) { return(null); } var sig = signer.Sign(key); return(PayToPubkeyHashTemplate.Instance.GenerateScriptSig(sig, key)); }
public override Script GenerateScriptSig(Network network, Script scriptPubKey, IKeyRepository keyRepo, ISigner signer) { KeyId parameters = PayToPubkeyHashTemplate.Instance.ExtractScriptPubKeyParameters(scriptPubKey); Key key = keyRepo.FindKey(parameters.ScriptPubKey); if (key == null) { return(null); } TransactionSignature sig = signer.Sign(key); return(PayToPubkeyHashTemplate.Instance.GenerateScriptSig(sig, key.PubKey)); }
/// <inheritdoc /> public override Script GenerateScriptSig(Network network, Script scriptPubKey, IKeyRepository keyRepo, ISigner signer) { ColdStakingScriptTemplate.Instance.ExtractScriptPubKeyParameters(scriptPubKey, out KeyId hotKey, out KeyId coldKey); // The scriptPubKey will be different depending on whether we are spending or cold staking. Key key = keyRepo.FindKey((this.usesColdPubKey ? coldKey : hotKey).ScriptPubKey); if (key == null) { return(null); } TransactionSignature sig = signer.Sign(key); return(ColdStakingScriptTemplate.Instance.GenerateScriptSig(sig, this.usesColdPubKey, key.PubKey)); }
public override void Sign(InputSigningContext inputSigningContext, IKeyRepository keyRepository, ISigner signer) { var scriptCode = inputSigningContext.Coin.GetScriptCode(); var key = keyRepository.FindKey(scriptCode) as PubKey; if (key == null) { return; } var sig = signer.Sign(key) as TransactionSignature; if (sig is null) { return; } inputSigningContext.Input.PartialSigs.TryAdd(key, sig); }
public override void Sign(InputSigningContext inputSigningContext, IKeyRepository keyRepository, ISigner signer) { var executedScript = inputSigningContext.Coin.GetScriptCode(); var parameters = PayToPubkeyHashTemplate.Instance.ExtractScriptPubKeyParameters(executedScript); var key = keyRepository.FindKey(parameters.ScriptPubKey) as PubKey; if (key == null) { return; } var sig = signer.Sign(key) as TransactionSignature; if (sig is null) { return; } inputSigningContext.Input.PartialSigs.TryAdd(key, sig); }
public override void Sign(InputSigningContext inputSigningContext, IKeyRepository keyRepository, ISigner signer) { var pk = keyRepository.FindKey(inputSigningContext.Coin.TxOut.ScriptPubKey) as TaprootFullPubKey; if (pk is null) { return; } var signature = signer.Sign(pk) as TaprootSignature; if (signature is null) { return; } inputSigningContext.Input.TaprootInternalKey = pk.InternalKey; inputSigningContext.Input.TaprootKeySignature = signature; inputSigningContext.Input.TaprootMerkleRoot = pk.MerkleRoot; }