/// <summary> /// Adds a new sha256Hash signature to this transaction by revealing preimage. /// </summary> /// <param name="preimage">the sha256 hash of preimage should be equal to signer hash</param> public void Sign(byte[] preimage) { Signature signature = new Signature { InnerValue = preimage ?? throw new ArgumentNullException(nameof(preimage), "preimage cannot be null") }; byte[] hash = Util.Hash(preimage); int length = hash.Length; byte[] signatureHintBytes = hash.Skip(length - 4).Take(4).ToArray(); SignatureHint signatureHint = new SignatureHint { InnerValue = signatureHintBytes }; DecoratedSignature decoratedSignature = new DecoratedSignature { Hint = signatureHint, Signature = signature }; Signatures.Add(decoratedSignature); }
public static DecoratedSignature Decode(IByteReader stream) { DecoratedSignature decodedDecoratedSignature = new DecoratedSignature(); decodedDecoratedSignature.Hint = SignatureHint.Decode(stream); decodedDecoratedSignature.Signature = Signature.Decode(stream); return decodedDecoratedSignature; }
public static DecoratedSignature Decode(XdrDataInputStream stream) { DecoratedSignature decodedDecoratedSignature = new DecoratedSignature(); decodedDecoratedSignature.Hint = SignatureHint.Decode(stream); decodedDecoratedSignature.Signature = Signature.Decode(stream); return(decodedDecoratedSignature); }
public static DecoratedSignature Decode(IByteReader stream) { DecoratedSignature decodedDecoratedSignature = new DecoratedSignature(); decodedDecoratedSignature.Hint = SignatureHint.Decode(stream); decodedDecoratedSignature.Signature = Signature.Decode(stream); return(decodedDecoratedSignature); }
public static void Encode(XdrDataOutputStream stream, TransactionV0Envelope encodedTransactionV0Envelope) { TransactionV0.Encode(stream, encodedTransactionV0Envelope.Tx); int signaturessize = encodedTransactionV0Envelope.Signatures.Length; stream.WriteInt(signaturessize); for (int i = 0; i < signaturessize; i++) { DecoratedSignature.Encode(stream, encodedTransactionV0Envelope.Signatures[i]); } }
public static void Encode(IByteWriter stream, TransactionEnvelope encodedTransactionEnvelope) { Transaction.Encode(stream, encodedTransactionEnvelope.Tx); int signaturessize = encodedTransactionEnvelope.Signatures.Length; XdrEncoding.EncodeInt32(signaturessize, stream); for (int i = 0; i < signaturessize; i++) { DecoratedSignature.Encode(stream, encodedTransactionEnvelope.Signatures[i]); } }
public static TransactionV0Envelope Decode(XdrDataInputStream stream) { TransactionV0Envelope decodedTransactionV0Envelope = new TransactionV0Envelope(); decodedTransactionV0Envelope.Tx = TransactionV0.Decode(stream); int signaturessize = stream.ReadInt(); decodedTransactionV0Envelope.Signatures = new DecoratedSignature[signaturessize]; for (int i = 0; i < signaturessize; i++) { decodedTransactionV0Envelope.Signatures[i] = DecoratedSignature.Decode(stream); } return(decodedTransactionV0Envelope); }
public static TransactionEnvelope Decode(IByteReader stream) { TransactionEnvelope decodedTransactionEnvelope = new TransactionEnvelope(); decodedTransactionEnvelope.Tx = Transaction.Decode(stream); int signaturessize = XdrEncoding.DecodeInt32(stream); decodedTransactionEnvelope.Signatures = new DecoratedSignature[signaturessize]; for (int i = 0; i < signaturessize; i++) { decodedTransactionEnvelope.Signatures[i] = DecoratedSignature.Decode(stream); } return(decodedTransactionEnvelope); }
private string CreateEnvelopeXdrBase64(StellarBase.Generated.Transaction tx, DecoratedSignature signature) { var txEnvelope = new TransactionEnvelope { Tx = tx, Signatures = new[] { signature } }; var writer = new ByteWriter(); TransactionEnvelope.Encode(writer, txEnvelope); var data = writer.ToArray(); return(Convert.ToBase64String(data)); }
public static void Encode(XdrDataOutputStream stream, DecoratedSignature encodedDecoratedSignature) { SignatureHint.Encode(stream, encodedDecoratedSignature.Hint); Signature.Encode(stream, encodedDecoratedSignature.Signature); }
public static void Encode(IByteWriter stream, DecoratedSignature encodedDecoratedSignature) { SignatureHint.Encode(stream, encodedDecoratedSignature.Hint); Signature.Encode(stream, encodedDecoratedSignature.Signature); }